diff --git a/app/views/problems/manage.html.haml b/app/views/problems/manage.html.haml --- a/app/views/problems/manage.html.haml +++ b/app/views/problems/manage.html.haml @@ -1,5 +1,38 @@ - content_for :head do = stylesheet_link_tag 'problems' + = javascript_include_tag 'local_jquery' + +:javascript + $(document).ready( function() { + function shiftclick(start,stop,value) { + $('tr input').each( function(id,input) { + var $input=$(input); + var iid=parseInt($input.attr('id').split('-')[2]); + if(iid>=start&&iid<=stop){ + $input.prop('checked',value) + } + }); + } + + $('tr input').click( function(e) { + if (e.shiftKey) { + stop = parseInt($(this).attr('id').split('-')[2]); + var orig_stop = stop + if (typeof start !== 'undefined') { + if (start > stop) { + var tmp = start; + start = stop; + stop = tmp; + } + shiftclick(start,stop,$(this).is(':checked') ) + } + start = orig_stop + } else { + start = parseInt($(this).attr('id').split('-')[2]); + } + }); + }); + %h1 Manage problems @@ -7,14 +40,19 @@ = form_tag :action=>'do_manage' do .submitbox - What do you want to do? + What do you want to do to the selected problem? %br/ + (You can shift-click to select a range of problems) %ul %li Change date added to = select_date Date.current, :prefix => 'date_added'     = submit_tag 'Change', :name => 'change_date_added' + %li + Set available to + = submit_tag 'True', :name => 'enable_problem' + = submit_tag 'False', :name => 'disable_problem' - if GraderConfiguration.multicontests? %li @@ -23,19 +61,23 @@ = submit_tag 'Add', :name => 'add_to_contest' %table - %tr - %th/ + %tr{style: "text-align: left;"} + %th= check_box_tag 'select_all' %th Name %th Full name + %th Available %th Date added - if GraderConfiguration.multicontests? %th Contests + - num = 0 - for problem in @problems + - num += 1 %tr{:id => "row-prob-#{problem.id}", :name=> "prob-#{problem.id}"} - %td= check_box_tag "prob-#{problem.id}" + %td= check_box_tag "prob-#{problem.id}-#{num}" %td= problem.name %td= problem.full_name + %td= problem.available %td= problem.date_added - if GraderConfiguration.multicontests? %td