diff --git a/config/.gitignore b/config/.gitignore --- a/config/.gitignore +++ b/config/.gitignore @@ -1,4 +1,4 @@ -environment.rb +application.rb database.yml tasks.yml diff --git a/config/application.rb b/config/application.rb deleted file mode 100644 --- a/config/application.rb +++ /dev/null @@ -1,62 +0,0 @@ -require File.expand_path('../boot', __FILE__) - -require 'rails/all' - -if defined?(Bundler) - # If you precompile assets before deploying to production, use this line - Bundler.require(*Rails.groups(:assets => %w(development test))) - # If you want your assets lazily compiled in production, use this line - # Bundler.require(:default, :assets, Rails.env) -end - -module CafeGrader - class Application < Rails::Application - # Settings in config/environments/* take precedence over those specified here. - # Application configuration should go into files in config/initializers - # -- all .rb files in that directory are automatically loaded. - - # Custom directories with classes and modules you want to be autoloadable. - # config.autoload_paths += %W(#{config.root}/extras) - - # Only load the plugins named here, in the order given (default is alphabetical). - # :all can be used as a placeholder for all plugins not explicitly named. - # config.plugins = [ :exception_notification, :ssl_requirement, :all ] - - # Activate observers that should always be running. - # config.active_record.observers = :cacher, :garbage_collector, :forum_observer - - # Set Time.zone default to the specified zone and make Active Record auto-convert to this zone. - # Run "rake -D time" for a list of tasks for finding time zone names. Default is UTC. - config.time_zone = 'UTC' - - # The default locale is :en and all translations from config/locales/*.rb,yml are auto loaded. - # config.i18n.load_path += Dir[Rails.root.join('my', 'locales', '*.{rb,yml}').to_s] - config.i18n.default_locale = :en - - # Configure the default encoding used in templates for Ruby 1.9. - config.encoding = "utf-8" - - # Configure sensitive parameters which will be filtered from the log file. - config.filter_parameters += [:password] - - # Enable escaping HTML in JSON. - config.active_support.escape_html_entities_in_json = true - - # Use SQL instead of Active Record's schema dumper when creating the database. - # This is necessary if your schema can't be completely dumped by the schema dumper, - # like if you have constraints or database-specific column types - # config.active_record.schema_format = :sql - - # Enforce whitelist mode for mass assignment. - # This will create an empty whitelist of attributes available for mass-assignment for all models - # in your app. As such, your models will need to explicitly whitelist or blacklist accessible - # parameters by using an attr_accessible or attr_protected declaration. - config.active_record.whitelist_attributes = false - - # Enable the asset pipeline - config.assets.enabled = true - - # Version of your assets, change this if you want to expire all your assets - config.assets.version = '1.0' - end -end diff --git a/config/application.rb.SAMPLE b/config/application.rb.SAMPLE new file mode 100644 --- /dev/null +++ b/config/application.rb.SAMPLE @@ -0,0 +1,63 @@ +require File.expand_path('../boot', __FILE__) + +require 'rails/all' + +if defined?(Bundler) + # If you precompile assets before deploying to production, use this line + Bundler.require(*Rails.groups(:assets => %w(development test))) + # If you want your assets lazily compiled in production, use this line + # Bundler.require(:default, :assets, Rails.env) +end + +module CafeGrader + class Application < Rails::Application + # Settings in config/environments/* take precedence over those specified here. + # Application configuration should go into files in config/initializers + # -- all .rb files in that directory are automatically loaded. + + # Custom directories with classes and modules you want to be autoloadable. + # config.autoload_paths += %W(#{config.root}/extras) + + # Only load the plugins named here, in the order given (default is alphabetical). + # :all can be used as a placeholder for all plugins not explicitly named. + # config.plugins = [ :exception_notification, :ssl_requirement, :all ] + + # Activate observers that should always be running. + # config.active_record.observers = :cacher, :garbage_collector, :forum_observer + + # Set Time.zone default to the specified zone and make Active Record auto-convert to this zone. + # Run "rake -D time" for a list of tasks for finding time zone names. Default is UTC. + config.time_zone = 'UTC' + + # The default locale is :en and all translations from config/locales/*.rb,yml are auto loaded. + # config.i18n.load_path += Dir[Rails.root.join('my', 'locales', '*.{rb,yml}').to_s] + #config.i18n.default_locale = :en + config.i18n.default_locale = :th + + # Configure the default encoding used in templates for Ruby 1.9. + config.encoding = "utf-8" + + # Configure sensitive parameters which will be filtered from the log file. + config.filter_parameters += [:password] + + # Enable escaping HTML in JSON. + config.active_support.escape_html_entities_in_json = true + + # Use SQL instead of Active Record's schema dumper when creating the database. + # This is necessary if your schema can't be completely dumped by the schema dumper, + # like if you have constraints or database-specific column types + # config.active_record.schema_format = :sql + + # Enforce whitelist mode for mass assignment. + # This will create an empty whitelist of attributes available for mass-assignment for all models + # in your app. As such, your models will need to explicitly whitelist or blacklist accessible + # parameters by using an attr_accessible or attr_protected declaration. + config.active_record.whitelist_attributes = false + + # Enable the asset pipeline + config.assets.enabled = true + + # Version of your assets, change this if you want to expire all your assets + config.assets.version = '1.0' + end +end diff --git a/config/environment.rb b/config/environment.rb new file mode 100644 --- /dev/null +++ b/config/environment.rb @@ -0,0 +1,5 @@ +# Load the rails application +require File.expand_path('../application', __FILE__) + +# Initialize the rails application +CafeGrader::Application.initialize! diff --git a/config/environment.rb.SAMPLE b/config/environment.rb.SAMPLE deleted file mode 100644 --- a/config/environment.rb.SAMPLE +++ /dev/null @@ -1,105 +0,0 @@ -# Be sure to restart your web server when you modify this file. - -# Uncomment below to force Rails into production mode when -# you don't control web/app server and can't set it the proper way -# ENV['RAILS_ENV'] ||= 'production' - -# Specifies gem version of Rails to use when vendor/rails is not present -RAILS_GEM_VERSION = '2.3.8' unless defined? RAILS_GEM_VERSION - -# Bootstrap the Rails environment, frameworks, and default configuration -require File.join(File.dirname(__FILE__), 'boot') - -Rails::Initializer.run do |config| - # Settings in config/environments/* take precedence over those specified here - - # Skip frameworks you're not going to use (only works if using vendor/rails) - # config.frameworks -= [ :action_web_service, :action_mailer ] - - # Only load the plugins named here, by default all plugins in vendor/plugins are loaded - # config.plugins = %W( exception_notification ssl_requirement ) - - # Add additional load paths for your own custom dirs - # config.load_paths += %W( #{RAILS_ROOT}/extras ) - - # Force all environments to use the same logger level - # (by default production uses :info, the others :debug) - # config.log_level = :debug - - # Use the database for sessions instead of the file system - # (create the session table with 'rake db:sessions:create') - config.action_controller.session_store = :active_record_store - - # Use SQL instead of Active Record's schema dumper when creating the test database. - # This is necessary if your schema can't be completely dumped by the schema dumper, - # like if you have constraints or database-specific column types - # config.active_record.schema_format = :sql - - # Activate observers that should always be running - # config.active_record.observers = :cacher, :garbage_collector - - # Make Active Record use UTC-base instead of local time - config.time_zone = 'UTC' - - # Setting locales - config.i18n.default_locale = 'en' - - # See Rails::Configuration for more options - - # ------------- - # Required gems - # ------------- - config.gem "haml" - config.gem "tmail" - config.gem "rdiscount", :lib => "rdiscount" - - # NOTES on rspec: if you wan to test with rspec, you have to install - # rspec yourself, just call: [sudo] gem install rspec-rails - -end - -# Add new inflection rules using the following format -# (all these examples are active by default): -# Inflector.inflections do |inflect| -# inflect.plural /^(ox)$/i, '\1en' -# inflect.singular /^(ox)en/i, '\1' -# inflect.irregular 'person', 'people' -# inflect.uncountable %w( fish sheep ) -# end - -# Add new mime types for use in respond_to blocks: -# Mime::Type.register "text/richtext", :rtf -# Mime::Type.register "application/x-mobile", :mobile - -# Include your application configuration below - -# If you want to manage graders through web interface, set the path to -# the grader directory below. This dir is where raw, ev, ev-exam, -# scripts reside. All grader scripts will be in -# #{GRADER_ROOT_DIR}/scripts. -GRADER_ROOT_DIR = '' - -# These are where inputs and outputs of test requests are stored -TEST_REQUEST_INPUT_FILE_DIR = RAILS_ROOT + '/data/test_request/input' -TEST_REQUEST_OUTPUT_FILE_DIR = RAILS_ROOT + '/data/test_request/output' - -# To use ANALYSIS MODE, provide the testcases/testruns breakdown, -# and the directory of the grading result (usually in judge's dir). -TASK_GRADING_INFO_FILENAME = RAILS_ROOT + '/config/tasks.yml' - -# TODO: change this to where results are kept. -GRADING_RESULT_DIR = 'RESULT-DIR' - -# Change this to allow importing testdata into database as test-pairs. -# This is mainly for Code Jom contest. -ALLOW_TEST_PAIR_IMPORT = false - -# Uncomment so that the system validates user e-mails -# VALIDATE_USER_EMAILS = true - -# Uncomment so that Apache X-Sendfile is used when delivering files -# (e.g., in /tasks/view). -# USE_APACHE_XSENDFILE = true - -# Uncomment so that configuration is read only once when the server is loaded -# CONFIGURATION_CACHE_ENABLED = true diff --git a/config/locales/en.yml b/config/locales/en.yml --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -72,27 +72,27 @@ email_guide: "Please make sure that your e-mail is correct.
You'll need to verify your account by email." register: "Register" - email_body: "Hello {{full_name}}, + email_body: "Hello %{full_name}, -You have registered for {{contest_name}} +You have registered for %{contest_name} -Your login is: {{login}} +Your login is: %{login} -Your password is: {{password}} +Your password is: %{password} Please follow the link: -{{activation_url}} +%{activation_url} to activate your user account. If you did not register, please ignore this e-mail -and report this event to {{admin_email}}. +and report this event to %{admin_email}. Thanks!" email_sent: "We have sent a confimation message to your e-mail. (Please also check the Junk mail box." - email_verify_at: "Please check at {{email}} and confirm." + email_verify_at: "Please check at %{email} and confirm." activation_sucessful_title: "User activated" account_activated: "Your account has been activated." @@ -104,7 +104,7 @@ email: title: "Errors in sending registration confirmation" expl: "

Your user account has been created, but the system cannot send you the confirmation e-mail.

-Maybe there's a problem in the configuration. Please report the admin at {{email}}.
Thank you!" +Maybe there's a problem in the configuration. Please report the admin at %{email}.
Thank you!" activation: email_exists: "A user with this E-mail exists." invalid: "Your activation code is invalid. Please check again." @@ -114,29 +114,29 @@ instructions: "Please enter the e-mail address that you used to register." button_label: "Request new password" no_email: "No user with that e-mail address." - email_body: "Hello {{full_name}}, + email_body: "Hello %{full_name}, -You have requested for new password for {{contest_name}}. We have generated it for you: +You have requested for new password for %{contest_name}. We have generated it for you: -user name: {{login}} -password: {{password}} +user name: %{login} +password: %{password} If you didn't ask for new password or you're not the person who registered, -please ignore this e-mail and inform {{admin_email}} of this mistake. +please ignore this e-mail and inform %{admin_email} of this mistake. Thanks!" contest: notification: - email_subject: "[{{contest_title_name}}] You have been upgraded to {{contest_name}}" - email_body: "Congratulations {{full_name}}, + email_subject: "[%{contest_title_name}] You have been upgraded to %{contest_name}" + email_body: "Congratulations %{full_name}, -You have advanced to contest {{contest_name}} in {{contest_title_name}}. +You have advanced to contest %{contest_name} in %{contest_title_name}. You can now log-in and start participating in that contest. Cheers! --{{contest_title_name}} Admin" +-%{contest_title_name} Admin" help: how_to_submit: "How to submit" @@ -146,7 +146,7 @@ specifying_task: "Optionally, you can also specify the task with TASK: taskname. On the first page, the taskname for each task is shown in parentheses." example_cpp: "For example, suppose you are using C++ to write task mobiles, you put the following on top of your source code." example_pas: "If you are using Pascal to write the same task, you'll use" - ask_questions_at_messages: "If you have any problems, you can ask at [{{message_link_name}}]." + ask_questions_at_messages: "If you have any problems, you can ask at [%{message_link_name}]." activerecord: attributes: diff --git a/config/locales/th.rb b/config/locales/th.rb --- a/config/locales/th.rb +++ b/config/locales/th.rb @@ -1,3 +1,4 @@ +# -*- coding: utf-8 -*- # Thai translation for Ruby on Rails # original by Prem Sichanugrist (s@sikachu.com/sikandsak@gmail.com) # activerecord keys fixed by Jittat Fakcharoenphol (jittat@gmail.com) @@ -41,18 +42,18 @@ }, :distance_in_words => { :half_a_minute => 'ครึ่งนาทีที่ผ่านมา', - :less_than_x_seconds => 'น้อยกว่า {{count}} วินาที', - :x_seconds => '{{count}} วินาที', - :less_than_x_minutes => 'น้อยกว่า {{count}} วินาที', - :x_minutes => '{{count}} นาที', - :about_x_hours => 'ประมาณ {{count}} ชั่วโมง', - :x_hours => '{{count}} ชั่วโมง', - :about_x_days => 'ประมาณ {{count}} วัน', - :x_days => '{{count}} วัน', - :about_x_months => 'ประมาณ {{count}} เดือน', - :x_months => '{{count}} เดือน', - :about_x_years => 'ประมาณ {{count}} ปี', - :over_x_years => 'เกิน {{count}} ปี' + :less_than_x_seconds => 'น้อยกว่า %{count} วินาที', + :x_seconds => '%{count} วินาที', + :less_than_x_minutes => 'น้อยกว่า %{count} วินาที', + :x_minutes => '%{count} นาที', + :about_x_hours => 'ประมาณ %{count} ชั่วโมง', + :x_hours => '%{count} ชั่วโมง', + :about_x_days => 'ประมาณ %{count} วัน', + :x_days => '%{count} วัน', + :about_x_months => 'ประมาณ %{count} เดือน', + :x_months => '%{count} เดือน', + :about_x_years => 'ประมาณ %{count} ปี', + :over_x_years => 'เกิน %{count} ปี' } }, @@ -93,8 +94,8 @@ :errors => { :template => { :header => { - :one => "ไม่สามารถบันทึก {{model}} ได้เนื่องจากเกิดข้อผิดพลาด", - :other => "ไม่สามารถบันทึก {{model}} ได้เนื่องจากเกิด {{count}} ข้อผิดพลาด" + :one => "ไม่สามารถบันทึก %{model} ได้เนื่องจากเกิดข้อผิดพลาด", + :other => "ไม่สามารถบันทึก %{model} ได้เนื่องจากเกิด %{count} ข้อผิดพลาด" }, :body => "โปรดตรวจสอบข้อมูลที่คุณกรอกในช่องต่อไปนี้:" }, @@ -106,16 +107,16 @@ :accepted => "ต้องอยู่ในรูปแบบที่ยอมรับ", :empty => "ต้องไม้เว้นว่างเอาไว้", :blank => "ต้องไม่เว้นว่างเอาไว้", - :too_long => "ยาวเกินไป (ต้องไม่เกิน {{count}} ตัวอักษร)", - :too_short => "สั้นเกินไป (ต้องยาวกว่า {{count}} ตัวอักษร)", - :wrong_length => "มีความยาวไม่ถูกต้อง (ต้องมีความยาว {{count}} ตัวอักษร)", + :too_long => "ยาวเกินไป (ต้องไม่เกิน %{count} ตัวอักษร)", + :too_short => "สั้นเกินไป (ต้องยาวกว่า %{count} ตัวอักษร)", + :wrong_length => "มีความยาวไม่ถูกต้อง (ต้องมีความยาว %{count} ตัวอักษร)", :taken => "ถูกใช้ไปแล้ว", :not_a_number => "ไม่ใช่ตัวเลข", - :greater_than => "ต้องมากกว่า {{count}}", - :greater_than_or_equal_to => "ต้องมากกว่าหรือเท่ากับ {{count}}", - :equal_to => "ต้องเท่ากับ {{count}}", - :less_than => "ต้องน้อยกว่า {{count}}", - :less_than_or_equal_to => "ต้องน้อยกว่าหรือเท่ากับ {{count}}", + :greater_than => "ต้องมากกว่า %{count}", + :greater_than_or_equal_to => "ต้องมากกว่าหรือเท่ากับ %{count}", + :equal_to => "ต้องเท่ากับ %{count}", + :less_than => "ต้องน้อยกว่า %{count}", + :less_than_or_equal_to => "ต้องน้อยกว่าหรือเท่ากับ %{count}", :odd => "ต้องเป็นเลขคี่", :even => "ต้องเป็นเลขคู่" } diff --git a/config/locales/th.yml b/config/locales/th.yml --- a/config/locales/th.yml +++ b/config/locales/th.yml @@ -71,27 +71,27 @@ email_guide: "กรุณาตรวจสอบ e-mail ที่ใส่ให้ถูกต้อง
คุณจะต้องยืนยันการลงทะเบียนผ่านทางข้อมูลที่จะส่งให้ทาง e-mail" register: "ลงทะเบียน" - email_body: "สวัสดีครับ {{full_name}}, + email_body: "สวัสดีครับ %{full_name}, -คุณได้ลงทะเบียนเข้าร่วมการแข่งขัน {{contest_name}} +คุณได้ลงทะเบียนเข้าร่วมการแข่งขัน %{contest_name} -บัญชีเข้าใช้ของคุณคือ: {{login}} +บัญชีเข้าใช้ของคุณคือ: %{login} -รหัสผ่านคือ: {{password}} +รหัสผ่านคือ: %{password} กรุณาเข้าลิงก์ต่อไปนี้: -{{activation_url}} +%{activation_url} เพื่อเปิดใช้งานบัญชีของคุณ ถ้าคุณไม่ใช่คนที่ลงทะเบียน กรุณาละทิ้ง e-mail ฉบับนี้ -และแจ้งความผิดพลาดนี้กับ {{admin_email}} ด้วย +และแจ้งความผิดพลาดนี้กับ %{admin_email} ด้วย ขอบคุณมาก!" email_sent: "เราได้ส่งข้อมูลสำหรับยืนยันไปให้คุณแล้ว (โปรดอย่าลืมตรวจดูในส่วน Junk mail ด้วย)" - email_verify_at: "กรุณาตรวจสอบที่ {{email}} พร้อมทั้งยืนยัน" + email_verify_at: "กรุณาตรวจสอบที่ %{email} พร้อมทั้งยืนยัน" activation_sucessful_title: "บัณชีผู้ใช้ได้รับการยืนยันแล้ว" account_activated: "บัญชีผู้ใช้ของคุณพร้อมใช้งานแล้ว" @@ -103,7 +103,7 @@ email: title: "เกิดปัญหาระหว่างการส่ง e-mail เพื่อยืนยันการสมัคร" expl: "

บัญชีผู้ใช้ของคุณถูกสร้างขึ้นแล้ว แต่ระบบไม่สามารถส่ง e-mail เพื่อยืนยันการสมัครได้

-อาจเกิดปัญหาในการตั้งค่าเริ่มต้นของระบบ กรุณาช่วยติดต่อผู้ดูแลระบบด้วยที่ {{email}}
ขอขอบคุณจากทีมงาน" +อาจเกิดปัญหาในการตั้งค่าเริ่มต้นของระบบ กรุณาช่วยติดต่อผู้ดูแลระบบด้วยที่ %{email}
ขอขอบคุณจากทีมงาน" activation: email_exists: "มีผู้ใช้ที่ใช้ e-mail นี้แล้ว" invalid: "รหัสสำหรับยืนยันผิดพลาด กรุณาตรวจสอบอีกครั้ง" @@ -113,28 +113,28 @@ instructions: "กรุณากรอก e-mail ที่ลงทะเบียน" button_label: "ขอรหัสผ่านใหม่" no_email: "ไม่มีบัญชีผู้ใช้ที่ใช้ e-mail ดังกล่าว" - email_body: "สวัสดีครับ {{full_name}}, + email_body: "สวัสดีครับ %{full_name}, -คุณได้ร้องขอรหัสผ่านใหม่ สำหรับการแข่งขัน {{contest_name}} ซึ่งเราได้สร้างให้คุณแล้ว ดังนี้ +คุณได้ร้องขอรหัสผ่านใหม่ สำหรับการแข่งขัน %{contest_name} ซึ่งเราได้สร้างให้คุณแล้ว ดังนี้ -บัญชีเข้าใช้ของคุณคือ: {{login}} -รหัสผ่านคือ: {{password}} +บัญชีเข้าใช้ของคุณคือ: %{login} +รหัสผ่านคือ: %{password} ถ้าคุณไม่ได้ขอรหัสผ่านใหม่ หรือไม่ใช่คนที่ลงทะเบียน กรุณาละทิ้ง e-mail ฉบับนี้ -และแจ้งความผิดพลาดนี้กับ {{admin_email}} ด้วย +และแจ้งความผิดพลาดนี้กับ %{admin_email} ด้วย ขอบคุณมาก!" contest: notification: - email_subject: "[{{contest_title_name}}] คุณได้รับการเลื่อนขั้นสู่ระดับ {{contest_name}}" - email_body: "ขอแสดงความยินดีด้วย คุณ{{full_name}} + email_subject: "[%{contest_title_name}] คุณได้รับการเลื่อนขั้นสู่ระดับ %{contest_name}" + email_body: "ขอแสดงความยินดีด้วย คุณ%{full_name} -คุณได้รับการเลื่อนขั้นให้สามารถแข่งขันในการแข่งขันระดับ {{contest_name}} ของ {{contest_title_name}} แล้ว +คุณได้รับการเลื่อนขั้นให้สามารถแข่งขันในการแข่งขันระดับ %{contest_name} ของ %{contest_title_name} แล้ว -คุณสามารถเข้าสู่ระบบเพื่อทำโจทย์ได้ทันที คุณสามารถแข่งในระดับ {{contest_name}} ได้จนกระทั่งการแข่งขันรอบนี้สิ้นสุดลง +คุณสามารถเข้าสู่ระบบเพื่อทำโจทย์ได้ทันที คุณสามารถแข่งในระดับ %{contest_name} ได้จนกระทั่งการแข่งขันรอบนี้สิ้นสุดลง --ทีมงาน {{contest_title_name}}" +-ทีมงาน %{contest_title_name}" help: @@ -145,7 +145,7 @@ specifying_task: "นอกจากนี้ คุณยังสามารถระบุชื่อของโจทย์ที่ต้องการส่งเพิ่มเติมได้ ในการระบุให้ใส่ TASK: taskname คุณสามารถตรวจสอบชื่อของโจทย์ได้ โดยจะแสดงในวงเล็บหลังชื่อภาษาไทยของโจทย์" example_cpp: "ยกตัวอย่างเช่น ถ้าคุณใช้ภาษา C++ สำหรับเขียนโจทย์ mobiles ตอนต้นโปรแกรมคุณจะใส่ดังนี้" example_pas: "ถ้าคุณใช้ภาษา Pascal เพื่อเขียนโจทย์ข้อเดียวกัน คุณจะระบุ" - ask_questions_at_messages: "ถ้ามีปัญหาในการใช้งานสามารถสอบถามได้ที่หน้า{{message_link_name}}" + ask_questions_at_messages: "ถ้ามีปัญหาในการใช้งานสามารถสอบถามได้ที่หน้า%{message_link_name}" activerecord: attributes: