Description:
add jquery to manage problem, now we can select a range of problem
Commit status:
[Not Reviewed]
References:
Diff options:
Comments:
0 Commit comments
0 Inline Comments
Unresolved TODOs:
There are no unresolved TODOs
r456:2cbe975cbc59 - - 11 files changed: 67 inserted, 63 deleted
file renamed from app/assets/javascripts/new.js to app/assets/javascripts/local_jquery.js |
@@ -12,7 +12,7 | |||
|
12 | 12 | @user = User.find(session[:user_id]) |
|
13 | 13 | @messages = Message.find_all_sent_by_user(@user) |
|
14 | 14 | end |
|
15 | - | |
|
15 | + | |
|
16 | 16 | def console |
|
17 | 17 | @user = User.find(session[:user_id]) |
|
18 | 18 | @messages = Message.find_all_system_unreplied_messages |
@@ -164,8 +164,12 | |||
|
164 | 164 | def do_manage |
|
165 | 165 | if params.has_key? 'change_date_added' |
|
166 | 166 | change_date_added |
|
167 |
- els |
|
|
167 | + elsif params.has_key? 'add_to_contest' | |
|
168 | 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 | 173 | end |
|
170 | 174 | redirect_to :action => 'manage' |
|
171 | 175 | end |
@@ -234,11 +238,19 | |||
|
234 | 238 | end |
|
235 | 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 | 249 | def get_problems_from_params |
|
238 | 250 | problems = [] |
|
239 | 251 | params.keys.each do |k| |
|
240 | 252 | if k.index('prob-')==0 |
|
241 | - name, id = k.split('-') | |
|
253 | + name, id, order = k.split('-') | |
|
242 | 254 | problems << Problem.find(id) |
|
243 | 255 | end |
|
244 | 256 | end |
@@ -21,7 +21,7 | |||
|
21 | 21 | Message.build_replying_message_hierarchy messages, replied_messages |
|
22 | 22 | return messages |
|
23 | 23 | end |
|
24 | - | |
|
24 | + | |
|
25 | 25 | def self.find_all_system_unreplied_messages |
|
26 | 26 | self.find(:all, |
|
27 | 27 | :conditions => 'ISNULL(receiver_id) ' + |
@@ -1,5 +1,38 | |||
|
1 | 1 | - content_for :head do |
|
2 | 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 | 37 | %h1 Manage problems |
|
5 | 38 | |
@@ -7,14 +40,19 | |||
|
7 | 40 | |
|
8 | 41 | = form_tag :action=>'do_manage' do |
|
9 | 42 | .submitbox |
|
10 | - What do you want to do? | |
|
43 | + What do you want to do to the selected problem? | |
|
11 | 44 | %br/ |
|
45 | + (You can shift-click to select a range of problems) | |
|
12 | 46 | %ul |
|
13 | 47 | %li |
|
14 | 48 | Change date added to |
|
15 | 49 | = select_date Date.current, :prefix => 'date_added' |
|
16 | 50 | |
|
17 | 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 | 57 | - if GraderConfiguration.multicontests? |
|
20 | 58 | %li |
@@ -23,19 +61,23 | |||
|
23 | 61 | = submit_tag 'Add', :name => 'add_to_contest' |
|
24 | 62 | |
|
25 | 63 | %table |
|
26 | - %tr | |
|
27 | - %th/ | |
|
64 | + %tr{style: "text-align: left;"} | |
|
65 | + %th= check_box_tag 'select_all' | |
|
28 | 66 | %th Name |
|
29 | 67 | %th Full name |
|
68 | + %th Available | |
|
30 | 69 | %th Date added |
|
31 | 70 | - if GraderConfiguration.multicontests? |
|
32 | 71 | %th Contests |
|
33 | 72 | |
|
73 | + - num = 0 | |
|
34 | 74 | - for problem in @problems |
|
75 | + - num += 1 | |
|
35 | 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 | 78 | %td= problem.name |
|
38 | 79 | %td= problem.full_name |
|
80 | + %td= problem.available | |
|
39 | 81 | %td= problem.date_added |
|
40 | 82 | - if GraderConfiguration.multicontests? |
|
41 | 83 | %td |
@@ -1,6 +1,6 | |||
|
1 | 1 | - content_for :header do |
|
2 | 2 | = stylesheet_link_tag 'tablesorter-theme.cafe' |
|
3 |
- = javascript_include_tag ' |
|
|
3 | + = javascript_include_tag 'local_jquery' | |
|
4 | 4 | |
|
5 | 5 | %script{:type=>"text/javascript"} |
|
6 | 6 | $(function () { |
@@ -1,5 +1,5 | |||
|
1 | 1 | - content_for :header do |
|
2 |
- = javascript_include_tag ' |
|
|
2 | + = javascript_include_tag 'local_jquery' | |
|
3 | 3 | |
|
4 | 4 | %script{:type=>"text/javascript"} |
|
5 | 5 | $(function () { |
@@ -1,5 +1,5 | |||
|
1 | 1 | - content_for :header do |
|
2 |
- = javascript_include_tag ' |
|
|
2 | + = javascript_include_tag 'local_jquery' | |
|
3 | 3 | = stylesheet_link_tag 'tablesorter-theme.cafe' |
|
4 | 4 | |
|
5 | 5 | %script{:type=>"text/javascript"} |
@@ -1,5 +1,5 | |||
|
1 | 1 | - content_for :header do |
|
2 |
- = javascript_include_tag ' |
|
|
2 | + = javascript_include_tag 'local_jquery' | |
|
3 | 3 | |
|
4 | 4 | %script{:type=>"text/javascript"} |
|
5 | 5 | $(function () { |
@@ -60,6 +60,6 | |||
|
60 | 60 | config.assets.version = '1.0' |
|
61 | 61 | |
|
62 | 62 | config.assets.precompile += ['announcement_refresh.js','effects.js','site_update.js','graders.css','problems.css'] |
|
63 |
- config.assets.precompile += [' |
|
|
63 | + config.assets.precompile += ['local_jquery.js','tablesorter-theme.cafe.css'] | |
|
64 | 64 | end |
|
65 | 65 | end |
deleted file |
You need to be logged in to leave comments.
Login now