--- loncom/homework/bridgetask.pm 2010/08/23 03:24:01 1.252 +++ loncom/homework/bridgetask.pm 2010/09/27 20:59:41 1.254 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA # definition of tags that give a structure to a document # -# $Id: bridgetask.pm,v 1.252 2010/08/23 03:24:01 raeburn Exp $ +# $Id: bridgetask.pm,v 1.254 2010/09/27 20:59:41 raeburn Exp $ # # Copyright Michigan State University Board of Trustees # @@ -784,6 +784,11 @@ sub start_Task { $result.=''.&mt("Stopped grading.").''.$back; } elsif ($status_code eq 'cancel') { $result.=''.&mt("Cancelled grading.").''.$back; + } elsif ($status_code eq 'terminated') { + $result.= ''.&mt('Terminated grading').'
'. + ''. + &mt('Grading for [_1] has not been saved because of a grading key mismatch.', + ''.$env{'form.terminated'}.'').'
'.$back; } elsif ($status_code eq 'never_versioned') { $result.=''. &mt("Requested user has never accessed the task."). @@ -1004,6 +1009,8 @@ sub get_key_todo { return (undef,'stop'); } elsif ($env{'form.cancel'}) { return (undef,'cancel'); + } elsif ($env{'form.terminated'}) { + return (undef, 'terminated'); } elsif ($env{'form.next'}) { return (undef,'select_user'); } @@ -1049,13 +1056,17 @@ sub get_key_todo { if ($env{'form.queuemode'} ne 'selected') { # don't get something new from the queue if they hit the stop button - if (!(($env{'form.cancel'} || $env{'form.stop'}) + if (!(($env{'form.cancel'} || $env{'form.stop'} || $env{'form.terminated'}) && $target eq 'webgrade') && !$env{'form.gradingaction'}) { &Apache::lonxml::debug("Getting anew $queue"); return (&get_from_queue($queue)); } else { - return (undef,'stop'); + if ($env{'form.terminated'}) { + return (undef,'terminated'); + } else { + return (undef,'stop'); + } } } return (undef,undef) @@ -1320,9 +1331,9 @@ DONEBUTTON $Apache::lonhomework::results{"resource.$version.0.solved"}; } &minimize_storage(); - my $canstore; + my ($canstore,$domain,$name); if ($env{'form.gradingkey'}) { - my ($symb,$courseid,$domain,$name) = + (my $symb,my $courseid,$domain,$name) = &Apache::lonnet::whichuser(); my $todo=&unescape($env{'form.gradingkey'}); my ($keysymb,$uname,$udom)=&decode_queue_key($todo); @@ -1334,39 +1345,38 @@ DONEBUTTON } if ($canstore) { &Apache::structuretags::finalize_storage(); - } else { - $result .= '
'. - &mt('Information extracted from the current gradingkey was for a different BT or user from those for which grading data are to be stored.').' '.&mt('No grading changes stored.').'

'; - } - - # data stored, now handle queue - if ($review) { - if ($env{'form.queue'} eq 'reviewqueue') { - &check_queue_unlock($env{'form.queue'}); - &Apache::lonxml::debug(" still needs review not changing status."); - } else { - if ($env{'form.queue'} ne 'none') { - &move_between_queues($env{'form.queue'},'reviewqueue'); + # data stored, now handle queue + if ($review) { + if ($env{'form.queue'} eq 'reviewqueue') { + &check_queue_unlock($env{'form.queue'}); + &Apache::lonxml::debug(" still needs review not changing status."); } else { - &add_to_queue('reviewqueue',\%queue_data); + if ($env{'form.queue'} ne 'none') { + &move_between_queues($env{'form.queue'},'reviewqueue'); + } else { + &add_to_queue('reviewqueue',\%queue_data); + } } - } - } elsif ($ungraded) { - if ($env{'form.queue'} eq 'reviewqueue') { - &Apache::lonxml::debug("moving back."); - &move_between_queues($env{'form.queue'}, - 'gradingqueue'); - } elsif ($env{'form.queue'} eq 'none' ) { - &add_to_queue('gradingqueue',\%queue_data); - } else { - &check_queue_unlock($env{'form.queue'}); - } - } elsif ($mandatory_failed) { - &remove_from_queue($env{'form.queue'}); - } else { - &remove_from_queue($env{'form.queue'}); - } - } + } elsif ($ungraded) { + if ($env{'form.queue'} eq 'reviewqueue') { + &Apache::lonxml::debug("moving back."); + &move_between_queues($env{'form.queue'}, + 'gradingqueue'); + } elsif ($env{'form.queue'} eq 'none' ) { + &add_to_queue('gradingqueue',\%queue_data); + } else { + &check_queue_unlock($env{'form.queue'}); + } + } elsif ($mandatory_failed) { + &remove_from_queue($env{'form.queue'}); + } else { + &remove_from_queue($env{'form.queue'}); + } + } else { + &check_queue_unlock($env{'form.queue'}); + $env{'form.terminated'} = $name.':'.$domain; + } + } if (exists($Apache::lonhomework::results{'INTERNAL_store'})) { # instance generation occurred and hasn't yet been stored &Apache::structuretags::finalize_storage();