Description:
added more user for codejom registration
Commit status:
[Not Reviewed]
References:
Comments:
0 Commit comments 0 Inline Comments
Unresolved TODOs:
There are no unresolved TODOs
Add another comment

r224:a42bdb5b1634 - - 5 files changed: 75 inserted, 16 deleted

@@ -1,75 +1,81
1 + # -*- coding: undecided -*-
1 require 'digest/sha1'
2 require 'digest/sha1'
2
3
3 class User < ActiveRecord::Base
4 class User < ActiveRecord::Base
4
5
5 has_and_belongs_to_many :roles
6 has_and_belongs_to_many :roles
6
7
7 has_many :test_requests, :order => "submitted_at DESC"
8 has_many :test_requests, :order => "submitted_at DESC"
8
9
9 has_many :messages,
10 has_many :messages,
10 :class_name => "Message",
11 :class_name => "Message",
11 :foreign_key => "sender_id",
12 :foreign_key => "sender_id",
12 :order => 'created_at DESC'
13 :order => 'created_at DESC'
13
14
14 has_many :replied_messages,
15 has_many :replied_messages,
15 :class_name => "Message",
16 :class_name => "Message",
16 :foreign_key => "receiver_id",
17 :foreign_key => "receiver_id",
17 :order => 'created_at DESC'
18 :order => 'created_at DESC'
18
19
19 has_many :test_pair_assignments, :dependent => :delete_all
20 has_many :test_pair_assignments, :dependent => :delete_all
20 has_many :submission_statuses
21 has_many :submission_statuses
21
22
22 has_one :contest_stat, :class_name => "UserContestStat"
23 has_one :contest_stat, :class_name => "UserContestStat"
23
24
24 belongs_to :site
25 belongs_to :site
25 belongs_to :country
26 belongs_to :country
26
27
27 # For Code Jom
28 # For Code Jom
28 has_one :codejom_status
29 has_one :codejom_status
29
30
30 named_scope :activated_users, :conditions => {:activated => true}
31 named_scope :activated_users, :conditions => {:activated => true}
31
32
32 validates_presence_of :login
33 validates_presence_of :login
33 validates_uniqueness_of :login
34 validates_uniqueness_of :login
34 validates_format_of :login, :with => /^[\_A-Za-z0-9]+$/
35 validates_format_of :login, :with => /^[\_A-Za-z0-9]+$/
35 - validates_length_of :login, :within => 3..30
36 + validates_length_of :login, :within => 3..20
36
37
37 validates_presence_of :full_name
38 validates_presence_of :full_name
38 validates_length_of :full_name, :minimum => 1
39 validates_length_of :full_name, :minimum => 1
40 +
41 + validates_presence_of :member1_full_name
42 + validates_length_of :member1_full_name, :minimum => 1
39
43
40 validates_presence_of :password, :if => :password_required?
44 validates_presence_of :password, :if => :password_required?
41 validates_length_of :password, :within => 4..20, :if => :password_required?
45 validates_length_of :password, :within => 4..20, :if => :password_required?
42 validates_confirmation_of :password, :if => :password_required?
46 validates_confirmation_of :password, :if => :password_required?
43
47
44 validates_format_of :email,
48 validates_format_of :email,
45 :with => /\A([^@\s]+)@((?:[-a-z0-9]+\.)+[a-z]{2,})\Z/i,
49 :with => /\A([^@\s]+)@((?:[-a-z0-9]+\.)+[a-z]{2,})\Z/i,
46 :if => :email_validation?
50 :if => :email_validation?
47 validate :uniqueness_of_email_from_activated_users,
51 validate :uniqueness_of_email_from_activated_users,
48 :if => :email_validation?
52 :if => :email_validation?
49 validate :enough_time_interval_between_same_email_registrations,
53 validate :enough_time_interval_between_same_email_registrations,
50 :if => :email_validation?
54 :if => :email_validation?
51
55
56 + validate :school_names_for_high_school_users
57 +
52 # these are for ytopc
58 # these are for ytopc
53 # disable for now
59 # disable for now
54 #validates_presence_of :province
60 #validates_presence_of :province
55
61
56 attr_accessor :password
62 attr_accessor :password
57
63
58 before_save :encrypt_new_password
64 before_save :encrypt_new_password
59 before_save :assign_default_site
65 before_save :assign_default_site
60
66
61 def self.authenticate(login, password)
67 def self.authenticate(login, password)
62 user = find_by_login(login)
68 user = find_by_login(login)
63 return user if user && user.authenticated?(password)
69 return user if user && user.authenticated?(password)
64 end
70 end
65
71
66 def authenticated?(password)
72 def authenticated?(password)
67 if self.activated
73 if self.activated
68 hashed_password == User.encrypt(password,self.salt)
74 hashed_password == User.encrypt(password,self.salt)
69 else
75 else
70 false
76 false
71 end
77 end
72 end
78 end
73
79
74 def admin?
80 def admin?
75 self.roles.detect {|r| r.name == 'admin' }
81 self.roles.detect {|r| r.name == 'admin' }
@@ -274,25 +280,36
274 user = User.activated_users.find_by_email(self.email)
280 user = User.activated_users.find_by_email(self.email)
275 if user and (user.login != self.login)
281 if user and (user.login != self.login)
276 self.errors.add_to_base("Email has already been taken")
282 self.errors.add_to_base("Email has already been taken")
277 end
283 end
278 end
284 end
279
285
280 def enough_time_interval_between_same_email_registrations
286 def enough_time_interval_between_same_email_registrations
281 return if !self.new_record?
287 return if !self.new_record?
282 return if self.activated
288 return if self.activated
283 open_user = User.find_by_email(self.email,
289 open_user = User.find_by_email(self.email,
284 :order => 'created_at DESC')
290 :order => 'created_at DESC')
285 if open_user and open_user.created_at and
291 if open_user and open_user.created_at and
286 (open_user.created_at > Time.now.gmtime - 5.minutes)
292 (open_user.created_at > Time.now.gmtime - 5.minutes)
287 self.errors.add_to_base("There are already unactivated registrations with this e-mail address (please wait for 5 minutes)")
293 self.errors.add_to_base("There are already unactivated registrations with this e-mail address (please wait for 5 minutes)")
288 end
294 end
289 end
295 end
290
296
291 def email_validation?
297 def email_validation?
292 begin
298 begin
293 return VALIDATE_USER_EMAILS
299 return VALIDATE_USER_EMAILS
294 rescue
300 rescue
295 return false
301 return false
296 end
302 end
297 end
303 end
304 +
305 +
306 + def school_names_for_high_school_users
307 + if self.high_school
308 + if (self.member1_school_name=='' or
309 + (self.member2_full_name!='' and self.member2_school_name=='') or
310 + (self.member3_full_name!='' and self.member3_school_name==''))
311 + self.errors.add_to_base("ΰΉ‚ΰΈ›ΰΈ£ΰΈ”ΰΈ£ΰΈ°ΰΈšΰΈΈΰΈŠΰΈ·ΰΉˆΰΈ­ΰΉ‚ΰΈ£ΰΈ‡ΰΉ€ΰΈ£ΰΈ΅ΰΈ’ΰΈ™ΰΈͺำหรับΰΈͺΰΈ‘ΰΈ²ΰΈŠΰΈ΄ΰΈΰΉƒΰΈ™ΰΈ—ΰΈ΅ΰΈ‘ΰΈ—ΰΈΈΰΈΰΈ„ΰΈ™")
312 + end
313 + end
314 + end
298 end
315 end
@@ -1,35 +1,34
1 - content_for :head do
1 - content_for :head do
2 = javascript_include_tag :defaults
2 = javascript_include_tag :defaults
3 %script{:type => 'text/javascript', :src => '/javascripts/announcement_refresh.js'}
3 %script{:type => 'text/javascript', :src => '/javascripts/announcement_refresh.js'}
4
4
5 = user_title_bar(@user)
5 = user_title_bar(@user)
6
6
7 - if @announcements.length!=0
7 - if @announcements.length!=0
8 .announcementbox
8 .announcementbox
9 %span{:class => 'title'}
9 %span{:class => 'title'}
10 Announcements
10 Announcements
11 #announcementbox-body
11 #announcementbox-body
12 = render :partial => 'announcement', :collection => @announcements
12 = render :partial => 'announcement', :collection => @announcements
13
13
14 %hr/
14 %hr/
15
15
16 - if (Configuration.contest_mode?) and (@user.site!=nil) and (@user.site.started!=true)
16 - if (Configuration.contest_mode?) and (@user.site!=nil) and (@user.site.started!=true)
17 %p=t 'main.start_soon'
17 %p=t 'main.start_soon'
18
18
19 - if Configuration.show_tasks_to?(@user)
19 - if Configuration.show_tasks_to?(@user)
20 .problem-list
20 .problem-list
21 = render :partial => 'problem_title', :collection => @problems, :as => :problem
21 = render :partial => 'problem_title', :collection => @problems, :as => :problem
22 .problem-content
22 .problem-content
23 - - if @current_problem_id==nil
23 + %span{:id => "problem-panel-filler", :style => (@current_problem_id!=nil) ? "display:none" : ""}
24 - %span{:id => "problem-panel-filler"}
24 + %b Welcome to Code Jom
25 - %b Welcome to Code Jom
25 + %br/
26 - %br/
26 + Choose problems from the list on the right.
27 - Choose problems from the list on the right.
28 = render :partial => 'problem', :collection => @problems
27 = render :partial => 'problem', :collection => @problems
29
28
30 %br{:clear=>'both'}/
29 %br{:clear=>'both'}/
31 %hr/
30 %hr/
32
31
33 :javascript
32 :javascript
34 Announcement.registerRefreshEventTimer();
33 Announcement.registerRefreshEventTimer();
35
34
@@ -11,29 +11,62
11 - form_for :user, @user, :url => { :action => 'register' } do |f|
11 - form_for :user, @user, :url => { :action => 'register' } do |f|
12 %tr
12 %tr
13 %td{:align => "right"}
13 %td{:align => "right"}
14 = "#{t 'login_label'}:"
14 = "#{t 'login_label'}:"
15 %td= f.text_field :login
15 %td= f.text_field :login
16 %tr
16 %tr
17 %td
17 %td
18 %td
18 %td
19 %small
19 %small
20 =t 'registration.login_guide'
20 =t 'registration.login_guide'
21 %tr
21 %tr
22 %td{:align => "right"}
22 %td{:align => "right"}
23 = "#{t 'full_name_label'}:"
23 = "#{t 'full_name_label'}:"
24 %td= f.text_field :full_name
24 %td= f.text_field :full_name
25 %tr
25 %tr
26 %td{:align => "right"}
26 %td{:align => "right"}
27 = "#{t 'email_label'}:"
27 = "#{t 'email_label'}:"
28 %td= f.text_field :email
28 %td= f.text_field :email
29 %tr
29 %tr
30 %td
30 %td
31 %td
31 %td
32 %small
32 %small
33 =t 'registration.email_guide'
33 =t 'registration.email_guide'
34 %tr
34 %tr
35 + %td{:align => "right"}
36 + ประเภทการΰΈͺΰΈ‘ΰΈ±ΰΈ„ΰΈ£:
37 + %td
38 + =select :user, :high_school, [['ΰΈ£ΰΈ°ΰΈ”ΰΈ±ΰΈšΰΈ‘ΰΈ±ΰΈ˜ΰΈ’ΰΈ‘ΰΈ¨ΰΈΆΰΈΰΈ©ΰΈ²',true], ['ΰΈšΰΈΈΰΈ„ΰΈ„ΰΈ₯ΰΈ—ΰΈ±ΰΉˆΰΈ§ΰΉ„ΰΈ›',false]]
39 + %tr
40 + %td{:align => "right"}
41 + ชื่อ-ΰΈ™ΰΈ²ΰΈ‘ΰΈͺกุΰΈ₯ΰΈͺΰΈ‘ΰΈ²ΰΈŠΰΈ΄ΰΈΰΈ„ΰΈ™ΰΉΰΈ£ΰΈ:
42 + %td
43 + = f.text_field :member1_full_name
44 + &nbsp;&nbsp;ΰΉ‚ΰΈ£ΰΈ‡ΰΉ€ΰΈ£ΰΈ΅ΰΈ’ΰΈ™:
45 + = f.text_field :member1_school_name
46 + %tr
47 + %td{:align => "right"}
48 + ชื่อ-ΰΈ™ΰΈ²ΰΈ‘ΰΈͺกุΰΈ₯ΰΈͺΰΈ‘ΰΈ²ΰΈŠΰΈ΄ΰΈΰΈ„ΰΈ™ΰΈ—ΰΈ΅ΰΉˆΰΈͺΰΈ­ΰΈ‡:
49 + %td
50 + = f.text_field :member2_full_name
51 + &nbsp;&nbsp;ΰΉ‚ΰΈ£ΰΈ‡ΰΉ€ΰΈ£ΰΈ΅ΰΈ’ΰΈ™:
52 + = f.text_field :member2_school_name
53 + %tr
54 + %td{:align => "right"}
55 + ชื่อ-ΰΈ™ΰΈ²ΰΈ‘ΰΈͺกุΰΈ₯ΰΈͺΰΈ‘ΰΈ²ΰΈŠΰΈ΄ΰΈΰΈ„ΰΈ™ΰΈ—ΰΈ΅ΰΉˆΰΈͺΰΈ²ΰΈ‘:
56 + %td
57 + = f.text_field :member3_full_name
58 + &nbsp;&nbsp;ΰΉ‚ΰΈ£ΰΈ‡ΰΉ€ΰΈ£ΰΈ΅ΰΈ’ΰΈ™:
59 + = f.text_field :member3_school_name
60 + %tr
61 + %td
62 + %td
63 + %small
64 + ΰΈ ΰΈ²ΰΈ’ΰΉƒΰΈ™ΰΈ—ΰΈ΅ΰΈ‘ΰΉ„ΰΈ‘ΰΉˆΰΈˆΰΈ³ΰΉ€ΰΈ›ΰΉ‡ΰΈ™ΰΈ•ΰΉ‰ΰΈ­ΰΈ‡ΰΈ‘ΰΈ΅ΰΈͺΰΈ‘ΰΈ²ΰΈŠΰΈ΄ΰΈΰΈ„ΰΈ£ΰΈš 3 ΰΈ„ΰΈ™
65 +
66 +
67 + %tr
35 %td/
68 %td/
36 %td
69 %td
37 = submit_tag((t 'registration.register'), :name => 'commit')
70 = submit_tag((t 'registration.register'), :name => 'commit')
38 = submit_tag((t 'cancel'), :name => 'cancel')
71 = submit_tag((t 'cancel'), :name => 'cancel')
39
72
@@ -1,33 +1,33
1 # Sample localization file for English. Add more files in this directory for other locales.
1 # Sample localization file for English. Add more files in this directory for other locales.
2 # See http://github.com/svenfuchs/rails-i18n/tree/master/rails%2Flocale for starting points.
2 # See http://github.com/svenfuchs/rails-i18n/tree/master/rails%2Flocale for starting points.
3
3
4 th:
4 th:
5 cancel: 'ฒกเΰΈ₯ิก'
5 cancel: 'ฒกเΰΈ₯ิก'
6
6
7 login_label: 'ΰΈŠΰΈ·ΰΉˆΰΈ­ΰΉ€ΰΈ‚ΰΉ‰ΰΈ²ΰΉƒΰΈŠΰΉ‰ΰΈ£ΰΈ°ΰΈšΰΈš (login)'
7 login_label: 'ΰΈŠΰΈ·ΰΉˆΰΈ­ΰΉ€ΰΈ‚ΰΉ‰ΰΈ²ΰΉƒΰΈŠΰΉ‰ΰΈ£ΰΈ°ΰΈšΰΈš (login)'
8 - full_name_label: 'ΰΈŠΰΈ·ΰΉˆΰΈ­ΰΉ€ΰΈ•ΰΉ‡ΰΈ‘'
8 + full_name_label: 'ΰΈŠΰΈ·ΰΉˆΰΈ­ΰΈ—ΰΈ΅ΰΈ‘'
9 - email_label: 'E-mail'
9 + email_label: 'E-mail ΰΈͺΰΈ³ΰΈ«ΰΈ£ΰΈ±ΰΈšΰΈ•ΰΈ΄ΰΈ”ΰΈ•ΰΉˆΰΈ­'
10 password_label: 'ΰΈ£ΰΈ«ΰΈ±ΰΈͺΰΈœΰΉˆΰΈ²ΰΈ™'
10 password_label: 'ΰΈ£ΰΈ«ΰΈ±ΰΈͺΰΈœΰΉˆΰΈ²ΰΈ™'
11
11
12 go_ahead_to: "ΰΉ„ΰΈ›ΰΈ’ΰΈ±ΰΈ‡"
12 go_ahead_to: "ΰΉ„ΰΈ›ΰΈ’ΰΈ±ΰΈ‡"
13 go_back_to: "กΰΈ₯ΰΈ±ΰΈšΰΉ„ΰΈ›ΰΈ’ΰΈ±ΰΈ‡"
13 go_back_to: "กΰΈ₯ΰΈ±ΰΈšΰΉ„ΰΈ›ΰΈ’ΰΈ±ΰΈ‡"
14 login_page: "ΰΈ«ΰΈ™ΰΉ‰ΰΈ²ΰΉ€ΰΈ‚ΰΉ‰ΰΈ²ΰΉƒΰΈŠΰΉ‰ΰΈ£ΰΈ°ΰΈšΰΈš"
14 login_page: "ΰΈ«ΰΈ™ΰΉ‰ΰΈ²ΰΉ€ΰΈ‚ΰΉ‰ΰΈ²ΰΉƒΰΈŠΰΉ‰ΰΈ£ΰΈ°ΰΈšΰΈš"
15 home_page: "หน้าแรก"
15 home_page: "หน้าแรก"
16
16
17 menu:
17 menu:
18 main: 'ΰΈ«ΰΈ™ΰΉ‰ΰΈ²ΰΈ«ΰΈ₯ัก'
18 main: 'ΰΈ«ΰΈ™ΰΉ‰ΰΈ²ΰΈ«ΰΈ₯ัก'
19 messages: 'ΰΈ‚ΰΉ‰ΰΈ­ΰΈ„ΰΈ§ΰΈ²ΰΈ‘'
19 messages: 'ΰΈ‚ΰΉ‰ΰΈ­ΰΈ„ΰΈ§ΰΈ²ΰΈ‘'
20 tasks: 'ΰΉ‚ΰΈˆΰΈ—ΰΈ’ΰΉŒ'
20 tasks: 'ΰΉ‚ΰΈˆΰΈ—ΰΈ’ΰΉŒ'
21 submissions: 'ΰΉ‚ΰΈ›ΰΈ£ΰΉΰΈΰΈ£ΰΈ‘ΰΈ—ΰΈ΅ΰΉˆΰΈͺΰΉˆΰΈ‡'
21 submissions: 'ΰΉ‚ΰΈ›ΰΈ£ΰΉΰΈΰΈ£ΰΈ‘ΰΈ—ΰΈ΅ΰΉˆΰΈͺΰΉˆΰΈ‡'
22 test: 'ΰΈ—ΰΈ”ΰΈͺΰΈ­ΰΈšΰΉ‚ΰΈ›ΰΈ£ΰΉΰΈΰΈ£ΰΈ‘'
22 test: 'ΰΈ—ΰΈ”ΰΈͺΰΈ­ΰΈšΰΉ‚ΰΈ›ΰΈ£ΰΉΰΈΰΈ£ΰΈ‘'
23 help: 'ΰΈ„ΰΈ§ΰΈ²ΰΈ‘ΰΈŠΰΉˆΰΈ§ΰΈ’ΰΉ€ΰΈ«ΰΈ₯ΰΈ·ΰΈ­'
23 help: 'ΰΈ„ΰΈ§ΰΈ²ΰΈ‘ΰΈŠΰΉˆΰΈ§ΰΈ’ΰΉ€ΰΈ«ΰΈ₯ΰΈ·ΰΈ­'
24 settings: 'ΰΉ€ΰΈ›ΰΈ₯ΰΈ΅ΰΉˆΰΈ’ΰΈ™ΰΈ£ΰΈ«ΰΈ±ΰΈͺΰΈœΰΉˆΰΈ²ΰΈ™'
24 settings: 'ΰΉ€ΰΈ›ΰΈ₯ΰΈ΅ΰΉˆΰΈ’ΰΈ™ΰΈ£ΰΈ«ΰΈ±ΰΈͺΰΈœΰΉˆΰΈ²ΰΈ™'
25 log_out: 'ออกจากระบบ'
25 log_out: 'ออกจากระบบ'
26
26
27 title_bar:
27 title_bar:
28 current_time: "ΰΉ€ΰΈ§ΰΈ₯ΰΈ²ΰΈ›ΰΈ±ΰΈˆΰΈˆΰΈΈΰΈšΰΈ±ΰΈ™ΰΈ„ΰΈ·ΰΈ­"
28 current_time: "ΰΉ€ΰΈ§ΰΈ₯ΰΈ²ΰΈ›ΰΈ±ΰΈˆΰΈˆΰΈΈΰΈšΰΈ±ΰΈ™ΰΈ„ΰΈ·ΰΈ­"
29 remaining_time: "ΰΉ€ΰΈ«ΰΈ₯ΰΈ·ΰΈ­ΰΉ€ΰΈ§ΰΈ₯าอมก"
29 remaining_time: "ΰΉ€ΰΈ«ΰΈ₯ΰΈ·ΰΈ­ΰΉ€ΰΈ§ΰΈ₯าอมก"
30 contest_not_started: "ΰΈ’ΰΈ±ΰΈ‡ΰΉ„ΰΈ‘ΰΉˆΰΉ€ΰΈ£ΰΈ΄ΰΉˆΰΈ‘ΰΉΰΈ‚ΰΉˆΰΈ‡ΰΈ‚ΰΈ±ΰΈ™"
30 contest_not_started: "ΰΈ’ΰΈ±ΰΈ‡ΰΉ„ΰΈ‘ΰΉˆΰΉ€ΰΈ£ΰΈ΄ΰΉˆΰΈ‘ΰΉΰΈ‚ΰΉˆΰΈ‡ΰΈ‚ΰΈ±ΰΈ™"
31
31
32 login:
32 login:
33 message: 'กรุณา login ΰΉ€ΰΈžΰΈ·ΰΉˆΰΈ­ΰΉ€ΰΈ‚ΰΉ‰ΰΈ²ΰΈͺู่ระบบ'
33 message: 'กรุณา login ΰΉ€ΰΈžΰΈ·ΰΉˆΰΈ­ΰΉ€ΰΈ‚ΰΉ‰ΰΈ²ΰΈͺู่ระบบ'
@@ -35,57 +35,57
35 participation: 'ΰΈ•ΰΉ‰ΰΈ­ΰΈ‡ΰΈΰΈ²ΰΈ£ΰΉ€ΰΈ‚ΰΉ‰ΰΈ²ΰΈ£ΰΉˆΰΈ§ΰΈ‘?'
35 participation: 'ΰΈ•ΰΉ‰ΰΈ­ΰΈ‡ΰΈΰΈ²ΰΈ£ΰΉ€ΰΈ‚ΰΉ‰ΰΈ²ΰΈ£ΰΉˆΰΈ§ΰΈ‘?'
36 please: 'กรุณา'
36 please: 'กรุณา'
37 register: 'ΰΈ₯ΰΈ‡ΰΈ—ΰΈ°ΰΉ€ΰΈšΰΈ΅ΰΈ’ΰΈ™'
37 register: 'ΰΈ₯ΰΈ‡ΰΈ—ΰΈ°ΰΉ€ΰΈšΰΈ΅ΰΈ’ΰΈ™'
38 forget_password: 'ΰΈ₯ΰΈ·ΰΈ‘ΰΈ£ΰΈ«ΰΈ±ΰΈͺΰΈœΰΉˆΰΈ²ΰΈ™?'
38 forget_password: 'ΰΈ₯ΰΈ·ΰΈ‘ΰΈ£ΰΈ«ΰΈ±ΰΈͺΰΈœΰΉˆΰΈ²ΰΈ™?'
39
39
40 main:
40 main:
41 start_soon: "ΰΈΰΈ²ΰΈ£ΰΉΰΈ‚ΰΉˆΰΈ‡ΰΈ‚ΰΈ±ΰΈ™ΰΈΰΈ³ΰΈ₯ΰΈ±ΰΈ‡ΰΈˆΰΈ°ΰΉ€ΰΈ£ΰΈ΄ΰΉˆΰΈ‘ ΰΈΰΈ£ΰΈΈΰΈ“ΰΈ²ΰΈ£ΰΈ­ΰΈΰΉˆΰΈ­ΰΈ™"
41 start_soon: "ΰΈΰΈ²ΰΈ£ΰΉΰΈ‚ΰΉˆΰΈ‡ΰΈ‚ΰΈ±ΰΈ™ΰΈΰΈ³ΰΈ₯ΰΈ±ΰΈ‡ΰΈˆΰΈ°ΰΉ€ΰΈ£ΰΈ΄ΰΉˆΰΈ‘ ΰΈΰΈ£ΰΈΈΰΈ“ΰΈ²ΰΈ£ΰΈ­ΰΈΰΉˆΰΈ­ΰΈ™"
42 specified_in_header: "ΰΈ£ΰΈ°ΰΈšΰΈΈΰΈ—ΰΈ΅ΰΉˆΰΈ«ΰΈ±ΰΈ§ΰΉ‚ΰΈ›ΰΈ£ΰΉΰΈΰΈ£ΰΈ‘ΰΉΰΈ₯ΰΉ‰ΰΈ§"
42 specified_in_header: "ΰΈ£ΰΈ°ΰΈšΰΈΈΰΈ—ΰΈ΅ΰΉˆΰΈ«ΰΈ±ΰΈ§ΰΉ‚ΰΈ›ΰΈ£ΰΉΰΈΰΈ£ΰΈ‘ΰΉΰΈ₯ΰΉ‰ΰΈ§"
43
43
44 problem_desc: "ΰΈ­ΰΉˆΰΈ²ΰΈ™"
44 problem_desc: "ΰΈ­ΰΉˆΰΈ²ΰΈ™"
45 submitted_at: "ΰΈͺΰΉˆΰΈ‡ΰΉ€ΰΈ‘ΰΈ·ΰΉˆΰΈ­ΰΉ€ΰΈ§ΰΈ₯ΰΈ²"
45 submitted_at: "ΰΈͺΰΉˆΰΈ‡ΰΉ€ΰΈ‘ΰΈ·ΰΉˆΰΈ­ΰΉ€ΰΈ§ΰΈ₯ΰΈ²"
46 graded_at: "ΰΈ•ΰΈ£ΰΈ§ΰΈˆΰΉ€ΰΈ‘ΰΈ·ΰΉˆΰΈ­ΰΉ€ΰΈ§ΰΈ₯ΰΈ²"
46 graded_at: "ΰΈ•ΰΈ£ΰΈ§ΰΈˆΰΉ€ΰΈ‘ΰΈ·ΰΉˆΰΈ­ΰΉ€ΰΈ§ΰΈ₯ΰΈ²"
47 score: "คะแนน: "
47 score: "คะแนน: "
48 cmp_msg: "ผΰΈ₯ΰΈ„ΰΈ­ΰΈ‘ΰΉ„ΰΈžΰΈ₯์"
48 cmp_msg: "ผΰΈ₯ΰΈ„ΰΈ­ΰΈ‘ΰΉ„ΰΈžΰΈ₯์"
49 src_link: "ΰΈ•ΰΉ‰ΰΈ™ΰΈ‰ΰΈšΰΈ±ΰΈš"
49 src_link: "ΰΈ•ΰΉ‰ΰΈ™ΰΈ‰ΰΈšΰΈ±ΰΈš"
50 submissions_link: "การΰΈͺΰΉˆΰΈ‡ΰΈ„ΰΈ£ΰΈ±ΰΉ‰ΰΈ‡ΰΈ­ΰΈ·ΰΉˆΰΈ™ ΰΉ†"
50 submissions_link: "การΰΈͺΰΉˆΰΈ‡ΰΈ„ΰΈ£ΰΈ±ΰΉ‰ΰΈ‡ΰΈ­ΰΈ·ΰΉˆΰΈ™ ΰΉ†"
51
51
52 test:
52 test:
53 title: "ΰΈ—ΰΈ”ΰΈͺΰΈ­ΰΈšΰΉ‚ΰΈ›ΰΈ£ΰΉΰΈΰΈ£ΰΈ‘ΰΈšΰΈ™ΰΈͺΰΈ ΰΈ²ΰΈžΰΉΰΈ§ΰΈ”ΰΈ₯ΰΉ‰ΰΈ­ΰΈ‘ΰΈ‚ΰΈ­ΰΈ‡ΰΉ€ΰΈ„ΰΈ£ΰΈ·ΰΉˆΰΈ­ΰΈ‡ΰΈ•ΰΈ£ΰΈ§ΰΈˆ"
53 title: "ΰΈ—ΰΈ”ΰΈͺΰΈ­ΰΈšΰΉ‚ΰΈ›ΰΈ£ΰΉΰΈΰΈ£ΰΈ‘ΰΈšΰΈ™ΰΈͺΰΈ ΰΈ²ΰΈžΰΉΰΈ§ΰΈ”ΰΈ₯ΰΉ‰ΰΈ­ΰΈ‘ΰΈ‚ΰΈ­ΰΈ‡ΰΉ€ΰΈ„ΰΈ£ΰΈ·ΰΉˆΰΈ­ΰΈ‡ΰΈ•ΰΈ£ΰΈ§ΰΈˆ"
54 intro: "ΰΈ„ΰΈΈΰΈ“ΰΈͺΰΈ²ΰΈ‘ΰΈ²ΰΈ£ΰΈ–ΰΈ—ΰΈ”ΰΈ₯ΰΈ­ΰΈ‡ΰΈΰΈ²ΰΈ£ΰΈ—ΰΈ³ΰΈ‡ΰΈ²ΰΈ™ΰΈ‚ΰΈ­ΰΈ‡ΰΉ‚ΰΈ›ΰΈ£ΰΉΰΈΰΈ£ΰΈ‘ΰΈ—ΰΈ΅ΰΉˆΰΉ€ΰΈ‚ΰΈ΅ΰΈ’ΰΈ™ΰΈΰΈ±ΰΈšΰΈ‚ΰΉ‰ΰΈ­ΰΈ‘ΰΈΉΰΈ₯ΰΈŠΰΈΈΰΈ”ΰΈ—ΰΈ”ΰΈͺΰΈ­ΰΈšΰΈ‚ΰΈ­ΰΈ‡ΰΈ„ΰΈΈΰΈ“ΰΉ€ΰΈ­ΰΈ‡ΰΉƒΰΈ™ΰΈͺΰΈ ΰΈ²ΰΈžΰΉΰΈ§ΰΈ”ΰΈ₯ΰΉ‰ΰΈ­ΰΈ‘ΰΈˆΰΈ£ΰΈ΄ΰΈ‡ΰΈ‚ΰΈ­ΰΈ‡ΰΈΰΈ²ΰΈ£ΰΈ•ΰΈ£ΰΈ§ΰΈˆΰΉ‚ΰΈ›ΰΈ£ΰΉΰΈΰΈ£ΰΈ‘ΰΉ„ΰΈ”ΰΉ‰ ΰΉ‚ΰΈ”ΰΈ’ΰΉ€ΰΈ₯ือกโปรแกรฑΰΈͺΰΉˆΰΈ‡ΰΉΰΈ₯ΰΉ‰ΰΈ§ΰΈ—ΰΈ΅ΰΉˆΰΈ”ΰΉ‰ΰΈ²ΰΈ™ΰΈ₯ΰΉˆΰΈ²ΰΈ‡ΰΈžΰΈ£ΰΉ‰ΰΈ­ΰΈ‘ΰΈ—ΰΈ±ΰΉ‰ΰΈ‡ΰΈͺΰΉˆΰΈ‡ΰΉΰΈŸΰΉ‰ΰΈ‘ΰΈ‚ΰΉ‰ΰΈ­ΰΈ‘ΰΈΉΰΈ₯ΰΈŠΰΈΈΰΈ”ΰΈ—ΰΈ”ΰΈͺΰΈ­ΰΈšΰΈ—ΰΈ΅ΰΉˆΰΈ•ΰΉ‰ΰΈ­ΰΈ‡ΰΈΰΈ²ΰΈ£ΰΉƒΰΈ«ΰΉ‰ΰΈ—ΰΈ³ΰΈ‡ΰΈ²ΰΈ™ΰΈ”ΰΉ‰ΰΈ§ΰΈ’"
54 intro: "ΰΈ„ΰΈΈΰΈ“ΰΈͺΰΈ²ΰΈ‘ΰΈ²ΰΈ£ΰΈ–ΰΈ—ΰΈ”ΰΈ₯ΰΈ­ΰΈ‡ΰΈΰΈ²ΰΈ£ΰΈ—ΰΈ³ΰΈ‡ΰΈ²ΰΈ™ΰΈ‚ΰΈ­ΰΈ‡ΰΉ‚ΰΈ›ΰΈ£ΰΉΰΈΰΈ£ΰΈ‘ΰΈ—ΰΈ΅ΰΉˆΰΉ€ΰΈ‚ΰΈ΅ΰΈ’ΰΈ™ΰΈΰΈ±ΰΈšΰΈ‚ΰΉ‰ΰΈ­ΰΈ‘ΰΈΉΰΈ₯ΰΈŠΰΈΈΰΈ”ΰΈ—ΰΈ”ΰΈͺΰΈ­ΰΈšΰΈ‚ΰΈ­ΰΈ‡ΰΈ„ΰΈΈΰΈ“ΰΉ€ΰΈ­ΰΈ‡ΰΉƒΰΈ™ΰΈͺΰΈ ΰΈ²ΰΈžΰΉΰΈ§ΰΈ”ΰΈ₯ΰΉ‰ΰΈ­ΰΈ‘ΰΈˆΰΈ£ΰΈ΄ΰΈ‡ΰΈ‚ΰΈ­ΰΈ‡ΰΈΰΈ²ΰΈ£ΰΈ•ΰΈ£ΰΈ§ΰΈˆΰΉ‚ΰΈ›ΰΈ£ΰΉΰΈΰΈ£ΰΈ‘ΰΉ„ΰΈ”ΰΉ‰ ΰΉ‚ΰΈ”ΰΈ’ΰΉ€ΰΈ₯ือกโปรแกรฑΰΈͺΰΉˆΰΈ‡ΰΉΰΈ₯ΰΉ‰ΰΈ§ΰΈ—ΰΈ΅ΰΉˆΰΈ”ΰΉ‰ΰΈ²ΰΈ™ΰΈ₯ΰΉˆΰΈ²ΰΈ‡ΰΈžΰΈ£ΰΉ‰ΰΈ­ΰΈ‘ΰΈ—ΰΈ±ΰΉ‰ΰΈ‡ΰΈͺΰΉˆΰΈ‡ΰΉΰΈŸΰΉ‰ΰΈ‘ΰΈ‚ΰΉ‰ΰΈ­ΰΈ‘ΰΈΉΰΈ₯ΰΈŠΰΈΈΰΈ”ΰΈ—ΰΈ”ΰΈͺΰΈ­ΰΈšΰΈ—ΰΈ΅ΰΉˆΰΈ•ΰΉ‰ΰΈ­ΰΈ‡ΰΈΰΈ²ΰΈ£ΰΉƒΰΈ«ΰΉ‰ΰΈ—ΰΈ³ΰΈ‡ΰΈ²ΰΈ™ΰΈ”ΰΉ‰ΰΈ§ΰΈ’"
55 disabled_at_end_announcement: "<b>ΰΈ«ΰΈ‘ΰΈ²ΰΈ’ΰΉ€ΰΈ«ΰΈ•ΰΈΈ:</b> ΰΈ£ΰΈ°ΰΈšΰΈšΰΈ—ΰΈ”ΰΈͺΰΈ­ΰΈšΰΉ‚ΰΈ›ΰΈ£ΰΉΰΈΰΈ£ΰΈ‘ΰΈˆΰΈ°ΰΈ«ΰΈ’ΰΈΈΰΈ”ΰΈ—ΰΈ³ΰΈ‡ΰΈ²ΰΈ™ΰΉƒΰΈ™ΰΈŠΰΉˆΰΈ§ΰΈ‡ΰΉ€ΰΈ§ΰΈ₯ΰΈ² 30 ΰΈ™ΰΈ²ΰΈ—ΰΈ΅ΰΈͺΰΈΈΰΈ”ΰΈ—ΰΉ‰ΰΈ²ΰΈ’ΰΈ‚ΰΈ­ΰΈ‡ΰΈΰΈ²ΰΈ£ΰΉΰΈ‚ΰΉˆΰΈ‡ΰΈ‚ΰΈ±ΰΈ™"
55 disabled_at_end_announcement: "<b>ΰΈ«ΰΈ‘ΰΈ²ΰΈ’ΰΉ€ΰΈ«ΰΈ•ΰΈΈ:</b> ΰΈ£ΰΈ°ΰΈšΰΈšΰΈ—ΰΈ”ΰΈͺΰΈ­ΰΈšΰΉ‚ΰΈ›ΰΈ£ΰΉΰΈΰΈ£ΰΈ‘ΰΈˆΰΈ°ΰΈ«ΰΈ’ΰΈΈΰΈ”ΰΈ—ΰΈ³ΰΈ‡ΰΈ²ΰΈ™ΰΉƒΰΈ™ΰΈŠΰΉˆΰΈ§ΰΈ‡ΰΉ€ΰΈ§ΰΈ₯ΰΈ² 30 ΰΈ™ΰΈ²ΰΈ—ΰΈ΅ΰΈͺΰΈΈΰΈ”ΰΈ—ΰΉ‰ΰΈ²ΰΈ’ΰΈ‚ΰΈ­ΰΈ‡ΰΈΰΈ²ΰΈ£ΰΉΰΈ‚ΰΉˆΰΈ‡ΰΈ‚ΰΈ±ΰΈ™"
56
56
57 registration:
57 registration:
58 title: "ΰΈ₯ΰΈ‡ΰΈ—ΰΈ°ΰΉ€ΰΈšΰΈ΅ΰΈ’ΰΈ™ΰΈœΰΈΉΰΉ‰ΰΉƒΰΈŠΰΉ‰ΰΉƒΰΈ«ΰΈ‘ΰΉˆ"
58 title: "ΰΈ₯ΰΈ‡ΰΈ—ΰΈ°ΰΉ€ΰΈšΰΈ΅ΰΈ’ΰΈ™ΰΈœΰΈΉΰΉ‰ΰΉƒΰΈŠΰΉ‰ΰΉƒΰΈ«ΰΈ‘ΰΉˆ"
59 - description: "ในการΰΈ₯ΰΈ‡ΰΈ—ΰΈ°ΰΉ€ΰΈšΰΈ΅ΰΈ’ΰΈ™ ΰΉƒΰΈ«ΰΉ‰ΰΈœΰΈΉΰΉ‰ΰΈͺΰΈ™ΰΉƒΰΈˆΰΉ€ΰΈ‚ΰΉ‰ΰΈ²ΰΈ£ΰΉˆΰΈ§ΰΈ‘ΰΈΰΈ²ΰΈ£ΰΉΰΈ‚ΰΉˆΰΈ‡ΰΈ‚ΰΈ±ΰΈ™ΰΈΰΈ£ΰΈ­ΰΈΰΈ‚ΰΉ‰ΰΈ­ΰΈ‘ΰΈΉΰΈ₯ΰΈ”ΰΉ‰ΰΈ²ΰΈ™ΰΈ₯ΰΉˆΰΈ²ΰΈ‡ ΰΈˆΰΈ²ΰΈΰΈ™ΰΈ±ΰΉ‰ΰΈ™ΰΈ£ΰΈ°ΰΈšΰΈšΰΈˆΰΈ°ΰΈͺΰΉˆΰΈ‡ e-mail ΰΉ„ΰΈ›ΰΈ’ΰΈ±ΰΈ‡ e-mail ΰΈ—ΰΈ΅ΰΉˆΰΈ£ΰΈ°ΰΈšΰΈΈΰΉ€ΰΈžΰΈ·ΰΉˆΰΈ­ΰΉƒΰΈ«ΰΉ‰ΰΈ’ΰΈ·ΰΈ™ΰΈ’ΰΈ±ΰΈ™ΰΈ•ΰΈ±ΰΈ§ΰΈ•ΰΈ™ΰΉΰΈ₯ΰΈ°ΰΉ€ΰΈ›ΰΈ΄ΰΈ”ΰΉƒΰΈŠΰΉ‰ΰΈšΰΈ±ΰΈΰΈŠΰΈ΅ΰΈœΰΈΉΰΉ‰ΰΉƒΰΈŠΰΉ‰<br/>ΰΉƒΰΈ™ΰΈΰΈ£ΰΈ“ΰΈ΅ΰΈ—ΰΈ΅ΰΉˆΰΈœΰΈΉΰΉ‰ΰΉ€ΰΈ‚ΰΉ‰ΰΈ²ΰΉΰΈ‚ΰΉˆΰΈ‡ΰΈ‚ΰΈ±ΰΈ™ΰΉ€ΰΈ›ΰΉ‡ΰΈ™ΰΈ™ΰΈ±ΰΈΰΉ€ΰΈ£ΰΈ΅ΰΈ’ΰΈ™ ΰΈ£ΰΈšΰΈΰΈ§ΰΈ™ΰΈŠΰΉˆΰΈ§ΰΈ’ΰΉƒΰΈ«ΰΉ‰ΰΈ‚ΰΉ‰ΰΈ­ΰΈ‘ΰΈΉΰΈ₯ΰΉ€ΰΈΰΈ΅ΰΉˆΰΈ’ΰΈ§ΰΈΰΈ±ΰΈšΰΉ‚ΰΈ£ΰΈ‡ΰΉ€ΰΈ£ΰΈ΅ΰΈ’ΰΈ™ΰΉΰΈ₯ΰΈ°ΰΈˆΰΈ±ΰΈ‡ΰΈ«ΰΈ§ΰΈ±ΰΈ”ΰΈ”ΰΉ‰ΰΈ§ΰΈ’"
59 + description: "ในการΰΈ₯ΰΈ‡ΰΈ—ΰΈ°ΰΉ€ΰΈšΰΈ΅ΰΈ’ΰΈ™ ΰΉƒΰΈ«ΰΉ‰ΰΈœΰΈΉΰΉ‰ΰΈͺΰΈ™ΰΉƒΰΈˆΰΉ€ΰΈ‚ΰΉ‰ΰΈ²ΰΈ£ΰΉˆΰΈ§ΰΈ‘ΰΈΰΈ²ΰΈ£ΰΉΰΈ‚ΰΉˆΰΈ‡ΰΈ‚ΰΈ±ΰΈ™ΰΈΰΈ£ΰΈ­ΰΈΰΈ‚ΰΉ‰ΰΈ­ΰΈ‘ΰΈΉΰΈ₯ΰΈ”ΰΉ‰ΰΈ²ΰΈ™ΰΈ₯ΰΉˆΰΈ²ΰΈ‡ ΰΈˆΰΈ²ΰΈΰΈ™ΰΈ±ΰΉ‰ΰΈ™ΰΈ£ΰΈ°ΰΈšΰΈšΰΈˆΰΈ°ΰΈͺΰΉˆΰΈ‡ e-mail ΰΉ„ΰΈ›ΰΈ’ΰΈ±ΰΈ‡ e-mail ΰΈ—ΰΈ΅ΰΉˆΰΈ£ΰΈ°ΰΈšΰΈΈΰΉ€ΰΈžΰΈ·ΰΉˆΰΈ­ΰΉƒΰΈ«ΰΉ‰ΰΈ’ΰΈ·ΰΈ™ΰΈ’ΰΈ±ΰΈ™ΰΈ•ΰΈ±ΰΈ§ΰΈ•ΰΈ™ΰΉΰΈ₯ΰΈ°ΰΉ€ΰΈ›ΰΈ΄ΰΈ”ΰΉƒΰΈŠΰΉ‰ΰΈšΰΈ±ΰΈΰΈŠΰΈ΅ΰΈœΰΈΉΰΉ‰ΰΉƒΰΈŠΰΉ‰<br/>ΰΉƒΰΈ™ΰΈΰΈ£ΰΈ“ΰΈ΅ΰΈ—ΰΈ΅ΰΉˆΰΈœΰΈΉΰΉ‰ΰΉ€ΰΈ‚ΰΉ‰ΰΈ²ΰΉΰΈ‚ΰΉˆΰΈ‡ΰΈ‚ΰΈ±ΰΈ™ΰΉ€ΰΈ›ΰΉ‡ΰΈ™ΰΈ™ΰΈ±ΰΈΰΉ€ΰΈ£ΰΈ΅ΰΈ’ΰΈ™ ΰΈ£ΰΈšΰΈΰΈ§ΰΈ™ΰΈŠΰΉˆΰΈ§ΰΈ’ΰΉƒΰΈ«ΰΉ‰ΰΈ‚ΰΉ‰ΰΈ­ΰΈ‘ΰΈΉΰΈ₯ΰΉ€ΰΈΰΈ΅ΰΉˆΰΈ’ΰΈ§ΰΈΰΈ±ΰΈšΰΉ‚ΰΈ£ΰΈ‡ΰΉ€ΰΈ£ΰΈ΅ΰΈ’ΰΈ™ΰΈ”ΰΉ‰ΰΈ§ΰΈ’"
60
60
61 successful_title: "การΰΈ₯ΰΈ‡ΰΈ—ΰΈ°ΰΉ€ΰΈšΰΈ΅ΰΈ’ΰΈ™ΰΉ€ΰΈͺΰΈ£ΰΉ‡ΰΈˆΰΉ€ΰΈ£ΰΈ΅ΰΈ’ΰΈšΰΈ£ΰΉ‰ΰΈ­ΰΈ’"
61 successful_title: "การΰΈ₯ΰΈ‡ΰΈ—ΰΈ°ΰΉ€ΰΈšΰΈ΅ΰΈ’ΰΈ™ΰΉ€ΰΈͺΰΈ£ΰΉ‡ΰΈˆΰΉ€ΰΈ£ΰΈ΅ΰΈ’ΰΈšΰΈ£ΰΉ‰ΰΈ­ΰΈ’"
62
62
63 - login_guide: "ΰΉƒΰΈŠΰΉ‰ΰΉ„ΰΈ”ΰΉ‰ΰΉ€ΰΈ‰ΰΈžΰΈ²ΰΈ° a-z, A-Z, 0-9 แΰΈ₯ΰΈ° _ ΰΈ„ΰΈ§ΰΈ²ΰΈ‘ΰΈ’ΰΈ²ΰΈ§ΰΉ„ΰΈ‘ΰΉˆΰΉ€ΰΈΰΈ΄ΰΈ™ 20 ตัวอักษร"
63 + login_guide: "ΰΉƒΰΈŠΰΉ‰ΰΉ„ΰΈ”ΰΉ‰ΰΉ€ΰΈ‰ΰΈžΰΈ²ΰΈ° a-z, A-Z, 0-9 แΰΈ₯ΰΈ° _ ΰΈ„ΰΈ§ΰΈ²ΰΈ‘ΰΈ’ΰΈ²ΰΈ§ΰΉ„ΰΈ‘ΰΉˆΰΉ€ΰΈΰΈ΄ΰΈ™ 20 ตัวอักษร ΰΈŠΰΈ·ΰΉˆΰΈ­ΰΈ™ΰΈ΅ΰΉ‰ΰΈˆΰΈ°ΰΉƒΰΈŠΰΉ‰ΰΉΰΈͺดงในกระดานแΰΈͺΰΈ”ΰΈ‡ΰΈœΰΈ₯"
64 email_guide: "ΰΈΰΈ£ΰΈΈΰΈ“ΰΈ²ΰΈ•ΰΈ£ΰΈ§ΰΈˆΰΈͺอบ e-mail ΰΈ—ΰΈ΅ΰΉˆΰΉƒΰΈͺΰΉˆΰΉƒΰΈ«ΰΉ‰ΰΈ–ΰΈΉΰΈΰΈ•ΰΉ‰ΰΈ­ΰΈ‡<br/>ΰΈ„ΰΈΈΰΈ“ΰΈˆΰΈ°ΰΈ•ΰΉ‰ΰΈ­ΰΈ‡ΰΈ’ΰΈ·ΰΈ™ΰΈ’ΰΈ±ΰΈ™ΰΈΰΈ²ΰΈ£ΰΈ₯ΰΈ‡ΰΈ—ΰΈ°ΰΉ€ΰΈšΰΈ΅ΰΈ’ΰΈ™ΰΈœΰΉˆΰΈ²ΰΈ™ΰΈ—ΰΈ²ΰΈ‡ΰΈ‚ΰΉ‰ΰΈ­ΰΈ‘ΰΈΉΰΈ₯ΰΈ—ΰΈ΅ΰΉˆΰΈˆΰΈ°ΰΈͺΰΉˆΰΈ‡ΰΉƒΰΈ«ΰΉ‰ΰΈ—ΰΈ²ΰΈ‡ e-mail"
64 email_guide: "ΰΈΰΈ£ΰΈΈΰΈ“ΰΈ²ΰΈ•ΰΈ£ΰΈ§ΰΈˆΰΈͺอบ e-mail ΰΈ—ΰΈ΅ΰΉˆΰΉƒΰΈͺΰΉˆΰΉƒΰΈ«ΰΉ‰ΰΈ–ΰΈΉΰΈΰΈ•ΰΉ‰ΰΈ­ΰΈ‡<br/>ΰΈ„ΰΈΈΰΈ“ΰΈˆΰΈ°ΰΈ•ΰΉ‰ΰΈ­ΰΈ‡ΰΈ’ΰΈ·ΰΈ™ΰΈ’ΰΈ±ΰΈ™ΰΈΰΈ²ΰΈ£ΰΈ₯ΰΈ‡ΰΈ—ΰΈ°ΰΉ€ΰΈšΰΈ΅ΰΈ’ΰΈ™ΰΈœΰΉˆΰΈ²ΰΈ™ΰΈ—ΰΈ²ΰΈ‡ΰΈ‚ΰΉ‰ΰΈ­ΰΈ‘ΰΈΉΰΈ₯ΰΈ—ΰΈ΅ΰΉˆΰΈˆΰΈ°ΰΈͺΰΉˆΰΈ‡ΰΉƒΰΈ«ΰΉ‰ΰΈ—ΰΈ²ΰΈ‡ e-mail"
65 register: "ΰΈ₯ΰΈ‡ΰΈ—ΰΈ°ΰΉ€ΰΈšΰΈ΅ΰΈ’ΰΈ™"
65 register: "ΰΈ₯ΰΈ‡ΰΈ—ΰΈ°ΰΉ€ΰΈšΰΈ΅ΰΈ’ΰΈ™"
66
66
67 - email_body: "ΰΈͺΰΈ§ΰΈ±ΰΈͺΰΈ”ΰΈ΅ΰΈ„ΰΈ£ΰΈ±ΰΈš {{full_name}},
67 + email_body: "ΰΈͺΰΈ§ΰΈ±ΰΈͺΰΈ”ΰΈ΅ ΰΈ—ΰΈ΅ΰΈ‘ {{full_name}},
68
68
69 ΰΈ„ΰΈΈΰΈ“ΰΉ„ΰΈ”ΰΉ‰ΰΈ₯ΰΈ‡ΰΈ—ΰΈ°ΰΉ€ΰΈšΰΈ΅ΰΈ’ΰΈ™ΰΉ€ΰΈ‚ΰΉ‰ΰΈ²ΰΈ£ΰΉˆΰΈ§ΰΈ‘ΰΈΰΈ²ΰΈ£ΰΉΰΈ‚ΰΉˆΰΈ‡ΰΈ‚ΰΈ±ΰΈ™ {{contest_name}}
69 ΰΈ„ΰΈΈΰΈ“ΰΉ„ΰΈ”ΰΉ‰ΰΈ₯ΰΈ‡ΰΈ—ΰΈ°ΰΉ€ΰΈšΰΈ΅ΰΈ’ΰΈ™ΰΉ€ΰΈ‚ΰΉ‰ΰΈ²ΰΈ£ΰΉˆΰΈ§ΰΈ‘ΰΈΰΈ²ΰΈ£ΰΉΰΈ‚ΰΉˆΰΈ‡ΰΈ‚ΰΈ±ΰΈ™ {{contest_name}}
70
70
71 ΰΈšΰΈ±ΰΈΰΈŠΰΈ΅ΰΉ€ΰΈ‚ΰΉ‰ΰΈ²ΰΉƒΰΈŠΰΉ‰ΰΈ‚ΰΈ­ΰΈ‡ΰΈ„ΰΈΈΰΈ“ΰΈ„ΰΈ·ΰΈ­: {{login}}
71 ΰΈšΰΈ±ΰΈΰΈŠΰΈ΅ΰΉ€ΰΈ‚ΰΉ‰ΰΈ²ΰΉƒΰΈŠΰΉ‰ΰΈ‚ΰΈ­ΰΈ‡ΰΈ„ΰΈΈΰΈ“ΰΈ„ΰΈ·ΰΈ­: {{login}}
72
72
73 ΰΈ£ΰΈ«ΰΈ±ΰΈͺΰΈœΰΉˆΰΈ²ΰΈ™ΰΈ„ΰΈ·ΰΈ­: {{password}}
73 ΰΈ£ΰΈ«ΰΈ±ΰΈͺΰΈœΰΉˆΰΈ²ΰΈ™ΰΈ„ΰΈ·ΰΈ­: {{password}}
74
74
75 กรุณาเข้าΰΈ₯ΰΈ΄ΰΈ‡ΰΈΰΉŒΰΈ•ΰΉˆΰΈ­ΰΉ„ΰΈ›ΰΈ™ΰΈ΅ΰΉ‰:
75 กรุณาเข้าΰΈ₯ΰΈ΄ΰΈ‡ΰΈΰΉŒΰΈ•ΰΉˆΰΈ­ΰΉ„ΰΈ›ΰΈ™ΰΈ΅ΰΉ‰:
76
76
77 {{activation_url}}
77 {{activation_url}}
78
78
79 ΰΉ€ΰΈžΰΈ·ΰΉˆΰΈ­ΰΉ€ΰΈ›ΰΈ΄ΰΈ”ΰΉƒΰΈŠΰΉ‰ΰΈ‡ΰΈ²ΰΈ™ΰΈšΰΈ±ΰΈΰΈŠΰΈ΅ΰΈ‚ΰΈ­ΰΈ‡ΰΈ„ΰΈΈΰΈ“
79 ΰΉ€ΰΈžΰΈ·ΰΉˆΰΈ­ΰΉ€ΰΈ›ΰΈ΄ΰΈ”ΰΉƒΰΈŠΰΉ‰ΰΈ‡ΰΈ²ΰΈ™ΰΈšΰΈ±ΰΈΰΈŠΰΈ΅ΰΈ‚ΰΈ­ΰΈ‡ΰΈ„ΰΈΈΰΈ“
80
80
81 ΰΈ–ΰΉ‰ΰΈ²ΰΈ„ΰΈΈΰΈ“ΰΉ„ΰΈ‘ΰΉˆΰΉƒΰΈŠΰΉ‰ΰΈ„ΰΈ™ΰΈ—ΰΈ΅ΰΉˆΰΈ₯ΰΈ‡ΰΈ—ΰΈ°ΰΉ€ΰΈšΰΈ΅ΰΈ’ΰΈ™ กรุณาΰΈ₯ΰΈ°ΰΈ—ΰΈ΄ΰΉ‰ΰΈ‡ e-mail ΰΈ‰ΰΈšΰΈ±ΰΈšΰΈ™ΰΈ΅ΰΉ‰
81 ΰΈ–ΰΉ‰ΰΈ²ΰΈ„ΰΈΈΰΈ“ΰΉ„ΰΈ‘ΰΉˆΰΉƒΰΈŠΰΉ‰ΰΈ„ΰΈ™ΰΈ—ΰΈ΅ΰΉˆΰΈ₯ΰΈ‡ΰΈ—ΰΈ°ΰΉ€ΰΈšΰΈ΅ΰΈ’ΰΈ™ กรุณาΰΈ₯ΰΈ°ΰΈ—ΰΈ΄ΰΉ‰ΰΈ‡ e-mail ΰΈ‰ΰΈšΰΈ±ΰΈšΰΈ™ΰΈ΅ΰΉ‰
82 แΰΈ₯ΰΈ°ΰΉΰΈˆΰΉ‰ΰΈ‡ΰΈ„ΰΈ§ΰΈ²ΰΈ‘ΰΈœΰΈ΄ΰΈ”ΰΈžΰΈ₯ΰΈ²ΰΈ”ΰΈ™ΰΈ΅ΰΉ‰ΰΈΰΈ±ΰΈš {{admin_email}}
82 แΰΈ₯ΰΈ°ΰΉΰΈˆΰΉ‰ΰΈ‡ΰΈ„ΰΈ§ΰΈ²ΰΈ‘ΰΈœΰΈ΄ΰΈ”ΰΈžΰΈ₯ΰΈ²ΰΈ”ΰΈ™ΰΈ΅ΰΉ‰ΰΈΰΈ±ΰΈš {{admin_email}}
83
83
84 ΰΈ‚ΰΈ­ΰΈšΰΈ„ΰΈΈΰΈ“ΰΈ‘ΰΈ²ΰΈ!"
84 ΰΈ‚ΰΈ­ΰΈšΰΈ„ΰΈΈΰΈ“ΰΈ‘ΰΈ²ΰΈ!"
85
85
86 email_sent: "ΰΉ€ΰΈ£ΰΈ²ΰΉ„ΰΈ”ΰΉ‰ΰΈͺΰΉˆΰΈ‡ΰΈ‚ΰΉ‰ΰΈ­ΰΈ‘ΰΈΉΰΈ₯ΰΈͺΰΈ³ΰΈ«ΰΈ£ΰΈ±ΰΈšΰΈ’ΰΈ·ΰΈ™ΰΈ’ΰΈ±ΰΈ™ΰΉ„ΰΈ›ΰΉƒΰΈ«ΰΉ‰ΰΈ„ΰΈΈΰΈ“ΰΉΰΈ₯ΰΉ‰ΰΈ§ (ΰΉ‚ΰΈ›ΰΈ£ΰΈ”ΰΈ­ΰΈ’ΰΉˆΰΈ²ΰΈ₯ΰΈ·ΰΈ‘ΰΈ•ΰΈ£ΰΈ§ΰΈˆΰΈ”ΰΈΉΰΉƒΰΈ™ΰΈͺΰΉˆΰΈ§ΰΈ™ Junk mail ΰΈ”ΰΉ‰ΰΈ§ΰΈ’)"
86 email_sent: "ΰΉ€ΰΈ£ΰΈ²ΰΉ„ΰΈ”ΰΉ‰ΰΈͺΰΉˆΰΈ‡ΰΈ‚ΰΉ‰ΰΈ­ΰΈ‘ΰΈΉΰΈ₯ΰΈͺΰΈ³ΰΈ«ΰΈ£ΰΈ±ΰΈšΰΈ’ΰΈ·ΰΈ™ΰΈ’ΰΈ±ΰΈ™ΰΉ„ΰΈ›ΰΉƒΰΈ«ΰΉ‰ΰΈ„ΰΈΈΰΈ“ΰΉΰΈ₯ΰΉ‰ΰΈ§ (ΰΉ‚ΰΈ›ΰΈ£ΰΈ”ΰΈ­ΰΈ’ΰΉˆΰΈ²ΰΈ₯ΰΈ·ΰΈ‘ΰΈ•ΰΈ£ΰΈ§ΰΈˆΰΈ”ΰΈΉΰΉƒΰΈ™ΰΈͺΰΉˆΰΈ§ΰΈ™ Junk mail ΰΈ”ΰΉ‰ΰΈ§ΰΈ’)"
87 email_verify_at: "ΰΈΰΈ£ΰΈΈΰΈ“ΰΈ²ΰΈ•ΰΈ£ΰΈ§ΰΈˆΰΈͺΰΈ­ΰΈšΰΈ—ΰΈ΅ΰΉˆ {{email}} ΰΈžΰΈ£ΰΉ‰ΰΈ­ΰΈ‘ΰΈ—ΰΈ±ΰΉ‰ΰΈ‡ΰΈ’ΰΈ·ΰΈ™ΰΈ’ΰΈ±ΰΈ™"
87 email_verify_at: "ΰΈΰΈ£ΰΈΈΰΈ“ΰΈ²ΰΈ•ΰΈ£ΰΈ§ΰΈˆΰΈͺΰΈ­ΰΈšΰΈ—ΰΈ΅ΰΉˆ {{email}} ΰΈžΰΈ£ΰΉ‰ΰΈ­ΰΈ‘ΰΈ—ΰΈ±ΰΉ‰ΰΈ‡ΰΈ’ΰΈ·ΰΈ™ΰΈ’ΰΈ±ΰΈ™"
88
88
89 activation_sucessful_title: "ΰΈšΰΈ±ΰΈ“ΰΈŠΰΈ΅ΰΈœΰΈΉΰΉ‰ΰΉƒΰΈŠΰΉ‰ΰΉ„ΰΈ”ΰΉ‰ΰΈ£ΰΈ±ΰΈšΰΈΰΈ²ΰΈ£ΰΈ’ΰΈ·ΰΈ™ΰΈ’ΰΈ±ΰΈ™ΰΉΰΈ₯ΰΉ‰ΰΈ§"
89 activation_sucessful_title: "ΰΈšΰΈ±ΰΈ“ΰΈŠΰΈ΅ΰΈœΰΈΉΰΉ‰ΰΉƒΰΈŠΰΉ‰ΰΉ„ΰΈ”ΰΉ‰ΰΈ£ΰΈ±ΰΈšΰΈΰΈ²ΰΈ£ΰΈ’ΰΈ·ΰΈ™ΰΈ’ΰΈ±ΰΈ™ΰΉΰΈ₯ΰΉ‰ΰΈ§"
90 account_activated: "ΰΈšΰΈ±ΰΈΰΈŠΰΈ΅ΰΈœΰΈΉΰΉ‰ΰΉƒΰΈŠΰΉ‰ΰΈ‚ΰΈ­ΰΈ‡ΰΈ„ΰΈΈΰΈ“ΰΈžΰΈ£ΰΉ‰ΰΈ­ΰΈ‘ΰΉƒΰΈŠΰΉ‰ΰΈ‡ΰΈ²ΰΈ™ΰΉΰΈ₯ΰΉ‰ΰΈ§"
90 account_activated: "ΰΈšΰΈ±ΰΈΰΈŠΰΈ΅ΰΈœΰΈΉΰΉ‰ΰΉƒΰΈŠΰΉ‰ΰΈ‚ΰΈ­ΰΈ‡ΰΈ„ΰΈΈΰΈ“ΰΈžΰΈ£ΰΉ‰ΰΈ­ΰΈ‘ΰΉƒΰΈŠΰΉ‰ΰΈ‡ΰΈ²ΰΈ™ΰΉΰΈ₯ΰΉ‰ΰΈ§"
91
91
@@ -114,25 +114,28
114 ΰΈ£ΰΈ«ΰΈ±ΰΈͺΰΈœΰΉˆΰΈ²ΰΈ™ΰΈ„ΰΈ·ΰΈ­: {{password}}
114 ΰΈ£ΰΈ«ΰΈ±ΰΈͺΰΈœΰΉˆΰΈ²ΰΈ™ΰΈ„ΰΈ·ΰΈ­: {{password}}
115
115
116 ΰΈ–ΰΉ‰ΰΈ²ΰΈ„ΰΈΈΰΈ“ΰΉ„ΰΈ‘ΰΉˆΰΉ„ΰΈ”ΰΉ‰ΰΈ‚ΰΈ­ΰΈ£ΰΈ«ΰΈ±ΰΈͺΰΈœΰΉˆΰΈ²ΰΈ™ΰΉƒΰΈ«ΰΈ‘ΰΉˆ ΰΈ«ΰΈ£ΰΈ·ΰΈ­ΰΉ„ΰΈ‘ΰΉˆΰΉƒΰΈŠΰΉˆΰΈ„ΰΈ™ΰΈ—ΰΈ΅ΰΉˆΰΈ₯ΰΈ‡ΰΈ—ΰΈ°ΰΉ€ΰΈšΰΈ΅ΰΈ’ΰΈ™ กรุณาΰΈ₯ΰΈ°ΰΈ—ΰΈ΄ΰΉ‰ΰΈ‡ e-mail ΰΈ‰ΰΈšΰΈ±ΰΈšΰΈ™ΰΈ΅ΰΉ‰
116 ΰΈ–ΰΉ‰ΰΈ²ΰΈ„ΰΈΈΰΈ“ΰΉ„ΰΈ‘ΰΉˆΰΉ„ΰΈ”ΰΉ‰ΰΈ‚ΰΈ­ΰΈ£ΰΈ«ΰΈ±ΰΈͺΰΈœΰΉˆΰΈ²ΰΈ™ΰΉƒΰΈ«ΰΈ‘ΰΉˆ ΰΈ«ΰΈ£ΰΈ·ΰΈ­ΰΉ„ΰΈ‘ΰΉˆΰΉƒΰΈŠΰΉˆΰΈ„ΰΈ™ΰΈ—ΰΈ΅ΰΉˆΰΈ₯ΰΈ‡ΰΈ—ΰΈ°ΰΉ€ΰΈšΰΈ΅ΰΈ’ΰΈ™ กรุณาΰΈ₯ΰΈ°ΰΈ—ΰΈ΄ΰΉ‰ΰΈ‡ e-mail ΰΈ‰ΰΈšΰΈ±ΰΈšΰΈ™ΰΈ΅ΰΉ‰
117 แΰΈ₯ΰΈ°ΰΉΰΈˆΰΉ‰ΰΈ‡ΰΈ„ΰΈ§ΰΈ²ΰΈ‘ΰΈœΰΈ΄ΰΈ”ΰΈžΰΈ₯ΰΈ²ΰΈ”ΰΈ™ΰΈ΅ΰΉ‰ΰΈΰΈ±ΰΈš {{admin_email}}
117 แΰΈ₯ΰΈ°ΰΉΰΈˆΰΉ‰ΰΈ‡ΰΈ„ΰΈ§ΰΈ²ΰΈ‘ΰΈœΰΈ΄ΰΈ”ΰΈžΰΈ₯ΰΈ²ΰΈ”ΰΈ™ΰΈ΅ΰΉ‰ΰΈΰΈ±ΰΈš {{admin_email}}
118
118
119 ΰΈ‚ΰΈ­ΰΈšΰΈ„ΰΈΈΰΈ“ΰΈ‘ΰΈ²ΰΈ!"
119 ΰΈ‚ΰΈ­ΰΈšΰΈ„ΰΈΈΰΈ“ΰΈ‘ΰΈ²ΰΈ!"
120
120
121 help:
121 help:
122 how_to_submit: "วิธมการΰΈͺΰΉˆΰΈ‡ΰΉ‚ΰΈ›ΰΈ£ΰΉΰΈΰΈ£ΰΈ‘"
122 how_to_submit: "วิธมการΰΈͺΰΉˆΰΈ‡ΰΉ‚ΰΈ›ΰΈ£ΰΉΰΈΰΈ£ΰΈ‘"
123 must_specify_language: "ΰΈ„ΰΈΈΰΈ“<b>ΰΈ•ΰΉ‰ΰΈ­ΰΈ‡</b>ΰΈ£ΰΈ°ΰΈšΰΈΈΰΈ ΰΈ²ΰΈ©ΰΈ²ΰΉ‚ΰΈ›ΰΈ£ΰΉΰΈΰΈ£ΰΈ‘ΰΈ—ΰΈ΅ΰΉˆΰΉƒΰΈŠΰΉ‰ΰΈ—ΰΈ΅ΰΉˆΰΈ•ΰΈ­ΰΈ™ΰΈ•ΰΉ‰ΰΈ™ΰΈ‚ΰΈ­ΰΈ‡ΰΈ£ΰΈ«ΰΈ±ΰΈͺโปรแกรฑ (source code) ΰΈ™ΰΈ­ΰΈΰΈˆΰΈ²ΰΈΰΈ™ΰΈ΅ΰΉ‰ΰΈ„ΰΈΈΰΈ“ΰΈ­ΰΈ²ΰΈˆΰΈˆΰΈ°ΰΈ£ΰΈ°ΰΈšΰΈΈΰΉ‚ΰΈˆΰΈ—ΰΈ’ΰΉŒΰΈ—ΰΈ΅ΰΉˆΰΈ•ΰΉ‰ΰΈ­ΰΈ‡ΰΈΰΈ²ΰΈ£ΰΈͺΰΉˆΰΈ‡ΰΉ„ΰΈ”ΰΉ‰ΰΈ”ΰΉ‰ΰΈ§ΰΈ’"
123 must_specify_language: "ΰΈ„ΰΈΈΰΈ“<b>ΰΈ•ΰΉ‰ΰΈ­ΰΈ‡</b>ΰΈ£ΰΈ°ΰΈšΰΈΈΰΈ ΰΈ²ΰΈ©ΰΈ²ΰΉ‚ΰΈ›ΰΈ£ΰΉΰΈΰΈ£ΰΈ‘ΰΈ—ΰΈ΅ΰΉˆΰΉƒΰΈŠΰΉ‰ΰΈ—ΰΈ΅ΰΉˆΰΈ•ΰΈ­ΰΈ™ΰΈ•ΰΉ‰ΰΈ™ΰΈ‚ΰΈ­ΰΈ‡ΰΈ£ΰΈ«ΰΈ±ΰΈͺโปรแกรฑ (source code) ΰΈ™ΰΈ­ΰΈΰΈˆΰΈ²ΰΈΰΈ™ΰΈ΅ΰΉ‰ΰΈ„ΰΈΈΰΈ“ΰΈ­ΰΈ²ΰΈˆΰΈˆΰΈ°ΰΈ£ΰΈ°ΰΈšΰΈΈΰΉ‚ΰΈˆΰΈ—ΰΈ’ΰΉŒΰΈ—ΰΈ΅ΰΉˆΰΈ•ΰΉ‰ΰΈ­ΰΈ‡ΰΈΰΈ²ΰΈ£ΰΈͺΰΉˆΰΈ‡ΰΉ„ΰΈ”ΰΉ‰ΰΈ”ΰΉ‰ΰΈ§ΰΈ’"
124 list_available_language: "ΰΈ ΰΈ²ΰΈ©ΰΈ²ΰΉ‚ΰΈ›ΰΈ£ΰΉΰΈΰΈ£ΰΈ‘ΰΈ—ΰΈ΅ΰΉˆΰΈͺΰΈ²ΰΈ‘ΰΈ²ΰΈ£ΰΈ–ΰΈ£ΰΈ°ΰΈšΰΈΈΰΉ„ΰΈ”ΰΉ‰ΰΈ„ΰΈ·ΰΈ­ <tt>C</tt>, <tt>C++</tt>, แΰΈ₯ΰΈ° <tt>Pascal</tt> ΰΈ”ΰΉ‰ΰΈ²ΰΈ™ΰΈ₯ΰΉˆΰΈ²ΰΈ‡ΰΉΰΈͺΰΈ”ΰΈ‡ΰΈ•ΰΈ±ΰΈ§ΰΈ­ΰΈ’ΰΉˆΰΈ²ΰΈ‡ΰΈ‚ΰΈ­ΰΈ‡ΰΈΰΈ²ΰΈ£ΰΈ£ΰΈ°ΰΈšΰΈΈΰΈͺΰΈ³ΰΈ«ΰΈ£ΰΈ±ΰΈšΰΈ ΰΈ²ΰΈ©ΰΈ²ΰΈ•ΰΉˆΰΈ²ΰΈ‡ ΰΉ†"
124 list_available_language: "ΰΈ ΰΈ²ΰΈ©ΰΈ²ΰΉ‚ΰΈ›ΰΈ£ΰΉΰΈΰΈ£ΰΈ‘ΰΈ—ΰΈ΅ΰΉˆΰΈͺΰΈ²ΰΈ‘ΰΈ²ΰΈ£ΰΈ–ΰΈ£ΰΈ°ΰΈšΰΈΈΰΉ„ΰΈ”ΰΉ‰ΰΈ„ΰΈ·ΰΈ­ <tt>C</tt>, <tt>C++</tt>, แΰΈ₯ΰΈ° <tt>Pascal</tt> ΰΈ”ΰΉ‰ΰΈ²ΰΈ™ΰΈ₯ΰΉˆΰΈ²ΰΈ‡ΰΉΰΈͺΰΈ”ΰΈ‡ΰΈ•ΰΈ±ΰΈ§ΰΈ­ΰΈ’ΰΉˆΰΈ²ΰΈ‡ΰΈ‚ΰΈ­ΰΈ‡ΰΈΰΈ²ΰΈ£ΰΈ£ΰΈ°ΰΈšΰΈΈΰΈͺΰΈ³ΰΈ«ΰΈ£ΰΈ±ΰΈšΰΈ ΰΈ²ΰΈ©ΰΈ²ΰΈ•ΰΉˆΰΈ²ΰΈ‡ ΰΉ†"
125 accept_only_language_specified: "ระบบจะ<b>ΰΉ„ΰΈ‘ΰΉˆΰΈ£ΰΈ±ΰΈš</b>ΰΉ‚ΰΈ›ΰΈ£ΰΉΰΈΰΈ£ΰΈ‘ΰΈ—ΰΈ΅ΰΉˆΰΈͺΰΉˆΰΈ‡ΰΈ–ΰΉ‰ΰΈ²ΰΈ„ΰΈΈΰΈ“ΰΉ„ΰΈ‘ΰΉˆΰΉ„ΰΈ”ΰΉ‰ΰΈ£ΰΈ°ΰΈšΰΈΈΰΈ ΰΈ²ΰΈ©ΰΈ²ΰΈ—ΰΈ΅ΰΉˆΰΉƒΰΈŠΰΉ‰"
125 accept_only_language_specified: "ระบบจะ<b>ΰΉ„ΰΈ‘ΰΉˆΰΈ£ΰΈ±ΰΈš</b>ΰΉ‚ΰΈ›ΰΈ£ΰΉΰΈΰΈ£ΰΈ‘ΰΈ—ΰΈ΅ΰΉˆΰΈͺΰΉˆΰΈ‡ΰΈ–ΰΉ‰ΰΈ²ΰΈ„ΰΈΈΰΈ“ΰΉ„ΰΈ‘ΰΉˆΰΉ„ΰΈ”ΰΉ‰ΰΈ£ΰΈ°ΰΈšΰΈΈΰΈ ΰΈ²ΰΈ©ΰΈ²ΰΈ—ΰΈ΅ΰΉˆΰΉƒΰΈŠΰΉ‰"
126 specifying_task: "ΰΈ™ΰΈ­ΰΈΰΈˆΰΈ²ΰΈΰΈ™ΰΈ΅ΰΉ‰ ΰΈ„ΰΈΈΰΈ“ΰΈ’ΰΈ±ΰΈ‡ΰΈͺΰΈ²ΰΈ‘ΰΈ²ΰΈ£ΰΈ–ΰΈ£ΰΈ°ΰΈšΰΈΈΰΈŠΰΈ·ΰΉˆΰΈ­ΰΈ‚ΰΈ­ΰΈ‡ΰΉ‚ΰΈˆΰΈ—ΰΈ’ΰΉŒΰΈ—ΰΈ΅ΰΉˆΰΈ•ΰΉ‰ΰΈ­ΰΈ‡ΰΈΰΈ²ΰΈ£ΰΈͺΰΉˆΰΈ‡ΰΉ€ΰΈžΰΈ΄ΰΉˆΰΈ‘ΰΉ€ΰΈ•ΰΈ΄ΰΈ‘ΰΉ„ΰΈ”ΰΉ‰ ΰΉƒΰΈ™ΰΈΰΈ²ΰΈ£ΰΈ£ΰΈ°ΰΈšΰΈΈΰΉƒΰΈ«ΰΉ‰ΰΉƒΰΈͺ่ <tt>TASK:</tt> <i>taskname</i> ΰΈ„ΰΈΈΰΈ“ΰΈͺΰΈ²ΰΈ‘ΰΈ²ΰΈ£ΰΈ–ΰΈ•ΰΈ£ΰΈ§ΰΈˆΰΈͺΰΈ­ΰΈšΰΈŠΰΈ·ΰΉˆΰΈ­ΰΈ‚ΰΈ­ΰΈ‡ΰΉ‚ΰΈˆΰΈ—ΰΈ’ΰΉŒΰΉ„ΰΈ”ΰΉ‰ ΰΉ‚ΰΈ”ΰΈ’ΰΈˆΰΈ°ΰΉΰΈͺΰΈ”ΰΈ‡ΰΉƒΰΈ™ΰΈ§ΰΈ‡ΰΉ€ΰΈ₯ΰΉ‡ΰΈšΰΈ«ΰΈ₯ΰΈ±ΰΈ‡ΰΈŠΰΈ·ΰΉˆΰΈ­ΰΈ ΰΈ²ΰΈ©ΰΈ²ΰΉ„ΰΈ—ΰΈ’ΰΈ‚ΰΈ­ΰΈ‡ΰΉ‚ΰΈˆΰΈ—ΰΈ’ΰΉŒ"
126 specifying_task: "ΰΈ™ΰΈ­ΰΈΰΈˆΰΈ²ΰΈΰΈ™ΰΈ΅ΰΉ‰ ΰΈ„ΰΈΈΰΈ“ΰΈ’ΰΈ±ΰΈ‡ΰΈͺΰΈ²ΰΈ‘ΰΈ²ΰΈ£ΰΈ–ΰΈ£ΰΈ°ΰΈšΰΈΈΰΈŠΰΈ·ΰΉˆΰΈ­ΰΈ‚ΰΈ­ΰΈ‡ΰΉ‚ΰΈˆΰΈ—ΰΈ’ΰΉŒΰΈ—ΰΈ΅ΰΉˆΰΈ•ΰΉ‰ΰΈ­ΰΈ‡ΰΈΰΈ²ΰΈ£ΰΈͺΰΉˆΰΈ‡ΰΉ€ΰΈžΰΈ΄ΰΉˆΰΈ‘ΰΉ€ΰΈ•ΰΈ΄ΰΈ‘ΰΉ„ΰΈ”ΰΉ‰ ΰΉƒΰΈ™ΰΈΰΈ²ΰΈ£ΰΈ£ΰΈ°ΰΈšΰΈΈΰΉƒΰΈ«ΰΉ‰ΰΉƒΰΈͺ่ <tt>TASK:</tt> <i>taskname</i> ΰΈ„ΰΈΈΰΈ“ΰΈͺΰΈ²ΰΈ‘ΰΈ²ΰΈ£ΰΈ–ΰΈ•ΰΈ£ΰΈ§ΰΈˆΰΈͺΰΈ­ΰΈšΰΈŠΰΈ·ΰΉˆΰΈ­ΰΈ‚ΰΈ­ΰΈ‡ΰΉ‚ΰΈˆΰΈ—ΰΈ’ΰΉŒΰΉ„ΰΈ”ΰΉ‰ ΰΉ‚ΰΈ”ΰΈ’ΰΈˆΰΈ°ΰΉΰΈͺΰΈ”ΰΈ‡ΰΉƒΰΈ™ΰΈ§ΰΈ‡ΰΉ€ΰΈ₯ΰΉ‡ΰΈšΰΈ«ΰΈ₯ΰΈ±ΰΈ‡ΰΈŠΰΈ·ΰΉˆΰΈ­ΰΈ ΰΈ²ΰΈ©ΰΈ²ΰΉ„ΰΈ—ΰΈ’ΰΈ‚ΰΈ­ΰΈ‡ΰΉ‚ΰΈˆΰΈ—ΰΈ’ΰΉŒ"
127 example_cpp: "ΰΈ’ΰΈΰΈ•ΰΈ±ΰΈ§ΰΈ­ΰΈ’ΰΉˆΰΈ²ΰΈ‡ΰΉ€ΰΈŠΰΉˆΰΈ™ ΰΈ–ΰΉ‰ΰΈ²ΰΈ„ΰΈΈΰΈ“ΰΉƒΰΈŠΰΉ‰ΰΈ ΰΈ²ΰΈ©ΰΈ² <tt>C++</tt> ΰΈͺΰΈ³ΰΈ«ΰΈ£ΰΈ±ΰΈšΰΉ€ΰΈ‚ΰΈ΅ΰΈ’ΰΈ™ΰΉ‚ΰΈˆΰΈ—ΰΈ’ΰΉŒ <tt>mobiles</tt> ΰΈ•ΰΈ­ΰΈ™ΰΈ•ΰΉ‰ΰΈ™ΰΉ‚ΰΈ›ΰΈ£ΰΉΰΈΰΈ£ΰΈ‘ΰΈ„ΰΈΈΰΈ“ΰΈˆΰΈ°ΰΉƒΰΈͺΰΉˆΰΈ”ΰΈ±ΰΈ‡ΰΈ™ΰΈ΅ΰΉ‰"
127 example_cpp: "ΰΈ’ΰΈΰΈ•ΰΈ±ΰΈ§ΰΈ­ΰΈ’ΰΉˆΰΈ²ΰΈ‡ΰΉ€ΰΈŠΰΉˆΰΈ™ ΰΈ–ΰΉ‰ΰΈ²ΰΈ„ΰΈΈΰΈ“ΰΉƒΰΈŠΰΉ‰ΰΈ ΰΈ²ΰΈ©ΰΈ² <tt>C++</tt> ΰΈͺΰΈ³ΰΈ«ΰΈ£ΰΈ±ΰΈšΰΉ€ΰΈ‚ΰΈ΅ΰΈ’ΰΈ™ΰΉ‚ΰΈˆΰΈ—ΰΈ’ΰΉŒ <tt>mobiles</tt> ΰΈ•ΰΈ­ΰΈ™ΰΈ•ΰΉ‰ΰΈ™ΰΉ‚ΰΈ›ΰΈ£ΰΉΰΈΰΈ£ΰΈ‘ΰΈ„ΰΈΈΰΈ“ΰΈˆΰΈ°ΰΉƒΰΈͺΰΉˆΰΈ”ΰΈ±ΰΈ‡ΰΈ™ΰΈ΅ΰΉ‰"
128 example_pas: "ΰΈ–ΰΉ‰ΰΈ²ΰΈ„ΰΈΈΰΈ“ΰΉƒΰΈŠΰΉ‰ΰΈ ΰΈ²ΰΈ©ΰΈ² <tt>Pascal</tt> ΰΉ€ΰΈžΰΈ·ΰΉˆΰΈ­ΰΉ€ΰΈ‚ΰΈ΅ΰΈ’ΰΈ™ΰΉ‚ΰΈˆΰΈ—ΰΈ’ΰΉŒΰΈ‚ΰΉ‰ΰΈ­ΰΉ€ΰΈ”ΰΈ΅ΰΈ’ΰΈ§ΰΈΰΈ±ΰΈ™ ΰΈ„ΰΈΈΰΈ“ΰΈˆΰΈ°ΰΈ£ΰΈ°ΰΈšΰΈΈ"
128 example_pas: "ΰΈ–ΰΉ‰ΰΈ²ΰΈ„ΰΈΈΰΈ“ΰΉƒΰΈŠΰΉ‰ΰΈ ΰΈ²ΰΈ©ΰΈ² <tt>Pascal</tt> ΰΉ€ΰΈžΰΈ·ΰΉˆΰΈ­ΰΉ€ΰΈ‚ΰΈ΅ΰΈ’ΰΈ™ΰΉ‚ΰΈˆΰΈ—ΰΈ’ΰΉŒΰΈ‚ΰΉ‰ΰΈ­ΰΉ€ΰΈ”ΰΈ΅ΰΈ’ΰΈ§ΰΈΰΈ±ΰΈ™ ΰΈ„ΰΈΈΰΈ“ΰΈˆΰΈ°ΰΈ£ΰΈ°ΰΈšΰΈΈ"
129 ask_questions_at_messages: "ΰΈ–ΰΉ‰ΰΈ²ΰΈ‘ΰΈ΅ΰΈ›ΰΈ±ΰΈΰΈ«ΰΈ²ΰΉƒΰΈ™ΰΈΰΈ²ΰΈ£ΰΉƒΰΈŠΰΉ‰ΰΈ‡ΰΈ²ΰΈ™ΰΈͺΰΈ²ΰΈ‘ΰΈ²ΰΈ£ΰΈ–ΰΈͺΰΈ­ΰΈšΰΈ–ΰΈ²ΰΈ‘ΰΉ„ΰΈ”ΰΉ‰ΰΈ—ΰΈ΅ΰΉˆΰΈ«ΰΈ™ΰΉ‰ΰΈ²<a href=\"{{url}}\">{{message_link_name}}</a>"
129 ask_questions_at_messages: "ΰΈ–ΰΉ‰ΰΈ²ΰΈ‘ΰΈ΅ΰΈ›ΰΈ±ΰΈΰΈ«ΰΈ²ΰΉƒΰΈ™ΰΈΰΈ²ΰΈ£ΰΉƒΰΈŠΰΉ‰ΰΈ‡ΰΈ²ΰΈ™ΰΈͺΰΈ²ΰΈ‘ΰΈ²ΰΈ£ΰΈ–ΰΈͺΰΈ­ΰΈšΰΈ–ΰΈ²ΰΈ‘ΰΉ„ΰΈ”ΰΉ‰ΰΈ—ΰΈ΅ΰΉˆΰΈ«ΰΈ™ΰΉ‰ΰΈ²<a href=\"{{url}}\">{{message_link_name}}</a>"
130
130
131 activerecord:
131 activerecord:
132 attributes:
132 attributes:
133 user:
133 user:
134 login: "ΰΈŠΰΈ·ΰΉˆΰΈ­ΰΉ€ΰΈ‚ΰΉ‰ΰΈ²ΰΉƒΰΈŠΰΉ‰ΰΈ£ΰΈ°ΰΈšΰΈš"
134 login: "ΰΈŠΰΈ·ΰΉˆΰΈ­ΰΉ€ΰΈ‚ΰΉ‰ΰΈ²ΰΉƒΰΈŠΰΉ‰ΰΈ£ΰΈ°ΰΈšΰΈš"
135 full_name: "ΰΈŠΰΈ·ΰΉˆΰΈ­ΰΉ€ΰΈ•ΰΉ‡ΰΈ‘"
135 full_name: "ΰΈŠΰΈ·ΰΉˆΰΈ­ΰΉ€ΰΈ•ΰΉ‡ΰΈ‘"
136 email: "e-mail"
136 email: "e-mail"
137 province: "ΰΈˆΰΈ±ΰΈ‡ΰΈ«ΰΈ§ΰΈ±ΰΈ”"
137 province: "ΰΈˆΰΈ±ΰΈ‡ΰΈ«ΰΈ§ΰΈ±ΰΈ”"
138 -
138 + member1_full_name: "ชื่อ-ΰΈ™ΰΈ²ΰΈ‘ΰΈͺกุΰΈ₯ΰΈͺΰΈ‘ΰΈ²ΰΈŠΰΈ΄ΰΈΰΈ„ΰΈ™ΰΉΰΈ£ΰΈ"
139 + member2_full_name: "ชื่อ-ΰΈ™ΰΈ²ΰΈ‘ΰΈͺกุΰΈ₯ΰΈͺΰΈ‘ΰΈ²ΰΈŠΰΈ΄ΰΈΰΈ„ΰΈ™ΰΈ—ΰΈ΅ΰΉˆΰΈͺΰΈ­ΰΈ‡"
140 + member3_full_name: "ชื่อ-ΰΈ™ΰΈ²ΰΈ‘ΰΈͺกุΰΈ₯ΰΈͺΰΈ‘ΰΈ²ΰΈŠΰΈ΄ΰΈΰΈ„ΰΈ™ΰΈ—ΰΈ΅ΰΉˆΰΈͺΰΈ²ΰΈ‘"
141 + No newline at end of file
@@ -1,36 +1,36
1 # This file is auto-generated from the current state of the database. Instead of editing this file,
1 # This file is auto-generated from the current state of the database. Instead of editing this file,
2 # please use the migrations feature of Active Record to incrementally modify your database, and
2 # please use the migrations feature of Active Record to incrementally modify your database, and
3 # then regenerate this schema definition.
3 # then regenerate this schema definition.
4 #
4 #
5 # Note that this schema.rb definition is the authoritative source for your database schema. If you need
5 # Note that this schema.rb definition is the authoritative source for your database schema. If you need
6 # to create the application database on another system, you should be using db:schema:load, not running
6 # to create the application database on another system, you should be using db:schema:load, not running
7 # all the migrations from scratch. The latter is a flawed and unsustainable approach (the more migrations
7 # all the migrations from scratch. The latter is a flawed and unsustainable approach (the more migrations
8 # you'll amass, the slower it'll run and the greater likelihood for issues).
8 # you'll amass, the slower it'll run and the greater likelihood for issues).
9 #
9 #
10 # It's strongly recommended to check this file into your version control system.
10 # It's strongly recommended to check this file into your version control system.
11
11
12 - ActiveRecord::Schema.define(:version => 20100124191250) do
12 + ActiveRecord::Schema.define(:version => 20100126170609) do
13
13
14 create_table "announcements", :force => true do |t|
14 create_table "announcements", :force => true do |t|
15 t.string "author"
15 t.string "author"
16 t.text "body"
16 t.text "body"
17 t.boolean "published"
17 t.boolean "published"
18 t.datetime "created_at"
18 t.datetime "created_at"
19 t.datetime "updated_at"
19 t.datetime "updated_at"
20 t.boolean "frontpage", :default => false
20 t.boolean "frontpage", :default => false
21 t.boolean "contest_only", :default => false
21 t.boolean "contest_only", :default => false
22 t.string "title"
22 t.string "title"
23 end
23 end
24
24
25 create_table "codejom_statuses", :force => true do |t|
25 create_table "codejom_statuses", :force => true do |t|
26 t.integer "user_id"
26 t.integer "user_id"
27 t.boolean "alive"
27 t.boolean "alive"
28 t.integer "num_problems_passed"
28 t.integer "num_problems_passed"
29 t.datetime "created_at"
29 t.datetime "created_at"
30 t.datetime "updated_at"
30 t.datetime "updated_at"
31 end
31 end
32
32
33 create_table "configurations", :force => true do |t|
33 create_table "configurations", :force => true do |t|
34 t.string "key"
34 t.string "key"
35 t.string "value_type"
35 t.string "value_type"
36 t.string "value"
36 t.string "value"
@@ -202,40 +202,47
202 t.string "running_stat"
202 t.string "running_stat"
203 t.integer "status"
203 t.integer "status"
204 t.datetime "updated_at"
204 t.datetime "updated_at"
205 t.datetime "submitted_at"
205 t.datetime "submitted_at"
206 t.datetime "compiled_at"
206 t.datetime "compiled_at"
207 t.text "compiler_message"
207 t.text "compiler_message"
208 t.datetime "graded_at"
208 t.datetime "graded_at"
209 t.string "grader_comment"
209 t.string "grader_comment"
210 t.datetime "created_at"
210 t.datetime "created_at"
211 t.float "running_time"
211 t.float "running_time"
212 t.string "exit_status"
212 t.string "exit_status"
213 t.integer "memory_usage"
213 t.integer "memory_usage"
214 end
214 end
215
215
216 add_index "test_requests", ["user_id", "problem_id"], :name => "index_test_requests_on_user_id_and_problem_id"
216 add_index "test_requests", ["user_id", "problem_id"], :name => "index_test_requests_on_user_id_and_problem_id"
217
217
218 create_table "user_contest_stats", :force => true do |t|
218 create_table "user_contest_stats", :force => true do |t|
219 t.integer "user_id"
219 t.integer "user_id"
220 t.datetime "started_at"
220 t.datetime "started_at"
221 t.datetime "created_at"
221 t.datetime "created_at"
222 t.datetime "updated_at"
222 t.datetime "updated_at"
223 end
223 end
224
224
225 create_table "users", :force => true do |t|
225 create_table "users", :force => true do |t|
226 - t.string "login", :limit => 50
226 + t.string "login", :limit => 50
227 t.string "full_name"
227 t.string "full_name"
228 t.string "hashed_password"
228 t.string "hashed_password"
229 - t.string "salt", :limit => 5
229 + t.string "salt", :limit => 5
230 t.string "alias"
230 t.string "alias"
231 t.string "email"
231 t.string "email"
232 t.integer "site_id"
232 t.integer "site_id"
233 t.integer "country_id"
233 t.integer "country_id"
234 - t.boolean "activated", :default => false
234 + t.boolean "activated", :default => false
235 t.datetime "created_at"
235 t.datetime "created_at"
236 t.datetime "updated_at"
236 t.datetime "updated_at"
237 + t.string "member1_full_name"
238 + t.string "member2_full_name"
239 + t.string "member3_full_name"
240 + t.boolean "high_school"
241 + t.string "member1_school_name"
242 + t.string "member2_school_name"
243 + t.string "member3_school_name"
237 end
244 end
238
245
239 add_index "users", ["login"], :name => "index_users_on_login", :unique => true
246 add_index "users", ["login"], :name => "index_users_on_login", :unique => true
240
247
241 end
248 end
You need to be logged in to leave comments. Login now