Description:
add jquery to manage problem, now we can select a range of problem
Commit status:
[Not Reviewed]
References:
Comments:
0 Commit comments 0 Inline Comments
Unresolved TODOs:
There are no unresolved TODOs
Add another comment

r456:2cbe975cbc59 - - 9 files changed: 65 inserted, 61 deleted

file renamed from app/assets/javascripts/new.js to app/assets/javascripts/local_jquery.js
@@ -164,8 +164,12
164 def do_manage
164 def do_manage
165 if params.has_key? 'change_date_added'
165 if params.has_key? 'change_date_added'
166 change_date_added
166 change_date_added
167 - else params.has_key? 'add_to_contest'
167 + elsif params.has_key? 'add_to_contest'
168 add_to_contest
168 add_to_contest
169 + elsif params.has_key? 'enable_problem'
170 + set_available(true)
171 + elsif params.has_key? 'disable_problem'
172 + set_available(false)
169 end
173 end
170 redirect_to :action => 'manage'
174 redirect_to :action => 'manage'
171 end
175 end
@@ -234,11 +238,19
234 end
238 end
235 end
239 end
236
240
241 + def set_available(avail)
242 + problems = get_problems_from_params
243 + problems.each do |p|
244 + p.available = avail
245 + p.save
246 + end
247 + end
248 +
237 def get_problems_from_params
249 def get_problems_from_params
238 problems = []
250 problems = []
239 params.keys.each do |k|
251 params.keys.each do |k|
240 if k.index('prob-')==0
252 if k.index('prob-')==0
241 - name, id = k.split('-')
253 + name, id, order = k.split('-')
242 problems << Problem.find(id)
254 problems << Problem.find(id)
243 end
255 end
244 end
256 end
@@ -1,5 +1,38
1 - content_for :head do
1 - content_for :head do
2 = stylesheet_link_tag 'problems'
2 = stylesheet_link_tag 'problems'
3 + = javascript_include_tag 'local_jquery'
4 +
5 + :javascript
6 + $(document).ready( function() {
7 + function shiftclick(start,stop,value) {
8 + $('tr input').each( function(id,input) {
9 + var $input=$(input);
10 + var iid=parseInt($input.attr('id').split('-')[2]);
11 + if(iid>=start&&iid<=stop){
12 + $input.prop('checked',value)
13 + }
14 + });
15 + }
16 +
17 + $('tr input').click( function(e) {
18 + if (e.shiftKey) {
19 + stop = parseInt($(this).attr('id').split('-')[2]);
20 + var orig_stop = stop
21 + if (typeof start !== 'undefined') {
22 + if (start > stop) {
23 + var tmp = start;
24 + start = stop;
25 + stop = tmp;
26 + }
27 + shiftclick(start,stop,$(this).is(':checked') )
28 + }
29 + start = orig_stop
30 + } else {
31 + start = parseInt($(this).attr('id').split('-')[2]);
32 + }
33 + });
34 + });
35 +
3
36
4 %h1 Manage problems
37 %h1 Manage problems
5
38
@@ -7,14 +40,19
7
40
8 = form_tag :action=>'do_manage' do
41 = form_tag :action=>'do_manage' do
9 .submitbox
42 .submitbox
10 - What do you want to do?
43 + What do you want to do to the selected problem?
11 %br/
44 %br/
45 + (You can shift-click to select a range of problems)
12 %ul
46 %ul
13 %li
47 %li
14 Change date added to
48 Change date added to
15 = select_date Date.current, :prefix => 'date_added'
49 = select_date Date.current, :prefix => 'date_added'
16 &nbsp;&nbsp;&nbsp;
50 &nbsp;&nbsp;&nbsp;
17 = submit_tag 'Change', :name => 'change_date_added'
51 = submit_tag 'Change', :name => 'change_date_added'
52 + %li
53 + Set available to
54 + = submit_tag 'True', :name => 'enable_problem'
55 + = submit_tag 'False', :name => 'disable_problem'
18
56
19 - if GraderConfiguration.multicontests?
57 - if GraderConfiguration.multicontests?
20 %li
58 %li
@@ -23,19 +61,23
23 = submit_tag 'Add', :name => 'add_to_contest'
61 = submit_tag 'Add', :name => 'add_to_contest'
24
62
25 %table
63 %table
26 - %tr
64 + %tr{style: "text-align: left;"}
27 - %th/
65 + %th= check_box_tag 'select_all'
28 %th Name
66 %th Name
29 %th Full name
67 %th Full name
68 + %th Available
30 %th Date added
69 %th Date added
31 - if GraderConfiguration.multicontests?
70 - if GraderConfiguration.multicontests?
32 %th Contests
71 %th Contests
33
72
73 + - num = 0
34 - for problem in @problems
74 - for problem in @problems
75 + - num += 1
35 %tr{:id => "row-prob-#{problem.id}", :name=> "prob-#{problem.id}"}
76 %tr{:id => "row-prob-#{problem.id}", :name=> "prob-#{problem.id}"}
36 - %td= check_box_tag "prob-#{problem.id}"
77 + %td= check_box_tag "prob-#{problem.id}-#{num}"
37 %td= problem.name
78 %td= problem.name
38 %td= problem.full_name
79 %td= problem.full_name
80 + %td= problem.available
39 %td= problem.date_added
81 %td= problem.date_added
40 - if GraderConfiguration.multicontests?
82 - if GraderConfiguration.multicontests?
41 %td
83 %td
@@ -1,6 +1,6
1 - content_for :header do
1 - content_for :header do
2 = stylesheet_link_tag 'tablesorter-theme.cafe'
2 = stylesheet_link_tag 'tablesorter-theme.cafe'
3 - = javascript_include_tag 'new'
3 + = javascript_include_tag 'local_jquery'
4
4
5 %script{:type=>"text/javascript"}
5 %script{:type=>"text/javascript"}
6 $(function () {
6 $(function () {
@@ -1,5 +1,5
1 - content_for :header do
1 - content_for :header do
2 - = javascript_include_tag 'new'
2 + = javascript_include_tag 'local_jquery'
3
3
4 %script{:type=>"text/javascript"}
4 %script{:type=>"text/javascript"}
5 $(function () {
5 $(function () {
@@ -1,5 +1,5
1 - content_for :header do
1 - content_for :header do
2 - = javascript_include_tag 'new'
2 + = javascript_include_tag 'local_jquery'
3 = stylesheet_link_tag 'tablesorter-theme.cafe'
3 = stylesheet_link_tag 'tablesorter-theme.cafe'
4
4
5 %script{:type=>"text/javascript"}
5 %script{:type=>"text/javascript"}
@@ -1,5 +1,5
1 - content_for :header do
1 - content_for :header do
2 - = javascript_include_tag 'new'
2 + = javascript_include_tag 'local_jquery'
3
3
4 %script{:type=>"text/javascript"}
4 %script{:type=>"text/javascript"}
5 $(function () {
5 $(function () {
@@ -60,6 +60,6
60 config.assets.version = '1.0'
60 config.assets.version = '1.0'
61
61
62 config.assets.precompile += ['announcement_refresh.js','effects.js','site_update.js','graders.css','problems.css']
62 config.assets.precompile += ['announcement_refresh.js','effects.js','site_update.js','graders.css','problems.css']
63 - config.assets.precompile += ['new.js','tablesorter-theme.cafe.css']
63 + config.assets.precompile += ['local_jquery.js','tablesorter-theme.cafe.css']
64 end
64 end
65 end
65 end
deleted file
You need to be logged in to leave comments. Login now