';
- $result.="\n\t\t\t".'Specify a section: | '.
- "\n\t\t\t".''.$sec_select."\n\t\t\t".' | ';
+ if ($see_all || (!§ion_restricted())) {
+ $result.="\n\t\t\t".''.&mt('Specify a section:').' | '.
+ "\n\t\t\t".''.$sec_select."\n\t\t\t".' | ';
+ } else {
+ $result.="\n\t\t\t".''.&mt('Grading section:').' | '.
+ "\n\t\t\t".''.$env{'request.course.sec'}."\n\t\t\t".' | ';
+ }
$result.="\n\t\t\t".''.' ';
@@ -280,12 +340,47 @@ sub add_grading_button {
$result.=&Apache::loncommon::studentbrowser_javascript();
$result.= ''."\n";
}
+ $result .= ''."\n";
+ return $result;
+}
+
+sub add_slotlist_button {
+ my (undef,$cid,$udom,$uname)=&Apache::lonnet::whichuser();
+ if (($uname ne $env{'user.name'}) || ($udom ne $env{'user.domain'})) {
+ return;
+ }
+ my $symb=&Apache::lonnet::symbread();
+ my $result;
+ if (&Apache::lonnet::allowed('mgq',$env{'request.course.id'}) ||
+ &Apache::lonnet::allowed('mgq',$env{'request.course.id'}.'/'.$env{'request.course.sec'})) {
+ $result = '';
+ my $target_id =
+ &Apache::lonstathelpers::make_target_id({symb => $symb,
+ part => '0'});
+ if (!§ion_restricted()) {
+ $result.='';
+ }
+ }
return $result;
}
sub add_request_another_attempt_button {
my ($text)=@_;
- if (!$text) { $text="Request another attempt"; }
+ my (undef,$cid,$udom,$uname)=&Apache::lonnet::whichuser();
+ if (($uname ne $env{'user.name'}) || ($udom ne $env{'user.domain'})) {
+ return;
+ }
+ if (!$text) { $text=&mt('Request another attempt'); }
my $result;
my $symb=&Apache::lonnet::symbread();
# not a slot access based resource
@@ -297,13 +392,14 @@ sub add_request_another_attempt_button {
my ($slot_name,$slot)=&Apache::slotrequest::check_for_reservation($symb);
my $action='get_reservation';
if ($slot_name) {
- $text="Change reservation.";
+ $text=&mt('Change reservation');
$action='change_reservation';
my $description=&Apache::slotrequest::get_description($slot_name,
$slot);
- $result.=(< Will be next available: $description
-STUFF
+ $result.=' '
+ .&mt('Will be next available:')
+ .' '.$description
+ .' ';
}
if ($env{'request.enc'}) { $symb=&Apache::lonenc::encrypted($symb); }
@@ -313,7 +409,7 @@ STUFF
''."\n\t\t".
''."\n\t\t".
''."\n\t".
+ $text.'" />'."\n\t".
''."\n";
return $result;
}
@@ -361,6 +457,7 @@ sub show_task {
( $status eq 'BANNED') ||
( $status eq 'UNAVAILABLE') ||
( $status eq 'NOT_IN_A_SLOT') ||
+ ( $status eq 'NOT_YET_VIEWED') ||
( $status eq 'NEEDS_CHECKIN') ||
( $status eq 'WAITING_FOR_GRADE') ||
( $status eq 'INVALID_ACCESS') ||
@@ -463,7 +560,7 @@ sub file_list {
my $file=$file_url.$partial_file;
$file=~s|/+|/|g;
&Apache::lonnet::allowuploaded('/adm/bridgetask',$file);
- $file_list.=' '.$file.
''."\n";
}
@@ -483,55 +580,79 @@ sub webgrade_standard_info {
my $file_list = &file_list($Apache::lonhomework::history{"resource.$version.0.bridgetask.portfiles"});
- my %lt=('done' => 'Next Item',
- 'stop' => 'Quit Grading',
- 'fail' => 'Fail Rest',
- 'cancel' => 'Cancel',
- );
- %lt=&Apache::lonlocal::texthash(%lt);
+ my %lt = &Apache::lonlocal::texthash(
+ 'done' => 'Next Item',
+ 'stop' => 'Quit Grading',
+ 'fail' => 'Fail Rest',
+ 'cancel' => 'Cancel',
+ 'submit' => 'Submit Grades',
+ );
my $result=<
INFO
- if (&grade_mode() eq 'regrade') {
+ if ($env{'request.state'} eq 'construct') {
$result.=<
+INFO
+ } else {
+ if (&grade_mode() eq 'regrade' && $env{'request.state'} ne 'construct') {
+ $result.=<
INFO
- }
+ }
- $result.=<
+INFO
+ }
+ $result.=<
$file_list
INFO
return $result;
+
}
sub done_screen {
my ($version) = @_;
- my $title=&Apache::lonnet::gettitle();
+ my $title=&Apache::lonnet::gettitle($env{'request.uri'});
my @files=split(',',$Apache::lonhomework::history{'resource.'.$version.'.0.bridgetask.portfiles'});
my (undef,undef,$domain,$user)= &Apache::lonnet::whichuser();
- my $files = '';
- my $msg;
- foreach my $file (@files) {
- my $url="/uploaded/$domain/$user/portfolio$file";
- if (! &Apache::lonnet::stat_file($url)) {
- $file = &mt(' Nonexistent file: '.
- '[_1]',$file);
- $msg .= "Submitted non-existant file $file \n";
- } else {
- $file = ''.$file.'';
- $msg .= "Submitted file $file \n";
- }
- $files .= '- '.$file.'
';
+ my ($msg,$files,$shown);
+ if (@files > 0) {
+ $files = '';
+ foreach my $file (@files) {
+ my $url="/uploaded/$domain/$user/portfolio$file";
+ if (! &Apache::lonnet::stat_file($url)) {
+ $file = ''
+ .&mt('[_1]Nonexistent file:[_2]'
+ ,' '
+ ,' '.$file.'');
+ $msg .= "".&mt('Submitted non-existent file [_1]',$file)." \n";
+ } else {
+ $file = ''.$file.'';
+ $msg .= "".&mt('Submitted file [_1]',$file)." \n";
+ }
+ $files .= '- '.$file.'
';
+ }
+ $files.=' ';
+ $shown = ''.&mt('Files submitted: [_1]',$files).' '
+ .''.&mt('You are now done with this Bridge Task').' '
+ .' '
+ .''.&mt('Logout').' '
+ .''.&mt('Change to a different course').' ';
+ } else {
+ $msg = &mt("Submission status: no files currently submitted, when 'Done' was indicated.");
+ $shown = ''.
+ &mt('You did not submit any files. Please try again.').''.
+ ' '.&mt('Back to Bridge Task').' ';
}
- $files.=' ';
- my $subject = "Submission message for $title";
+ my $subject = &mt('Submission message for [_1]',$title);
my ($message_status,$comment_status);
my $setting = $env{'course.'.$env{'request.course.id'}.'.task_messages'};
$setting =~ s/^\s*(\S*)\s*$/$1/;
@@ -550,17 +671,11 @@ sub done_screen {
$comment_status = ''.&mt('Message sent to instructor: [_1]',
$comment_status).' ';
}
- return <$title
- Files submitted: $files
- You are now done with this Bridge Task
-
- Logout
- Change to a different course
-$message_status
-$comment_status
-DONESCREEN
-
+
+ return "$title"
+ .$shown
+ .$message_status
+ .$comment_status;
}
sub start_Task {
@@ -590,36 +705,29 @@ sub start_Task {
&Apache::structuretags::page_start($target,$token,$tagstack,
$parstack,$parser,$safeeval,
$name,&style($target));
+
+ }
+ if ($target eq 'web' || $target eq 'grade' || $target eq 'answer' ||
+ $target eq 'tex') {
+ if ($env{'form.markaccess'}) {
+ my @interval=&Apache::lonnet::EXT("resource.0.interval");
+ my ($timelimit) = ($interval[0] =~ /^(\d+)/);
+ &Apache::lonnet::set_first_access($interval[1],$timelimit);
+ }
}
if ($target eq 'web' && $env{'request.state'} ne 'construct') {
if ($Apache::lonhomework::queuegrade
|| $Apache::lonhomework::modifygrades) {
- $result.='\n";
+ $result .= &add_grading_button();
my $symb=&Apache::lonnet::symbread();
- if (&Apache::lonnet::allowed('mgq',$env{'request.course.id'})) {
- $result.='';
- my $target_id =
- &Apache::lonstathelpers::make_target_id({symb => $symb,
- part => '0'});
- $result.='';
+ if (&Apache::lonnet::allowed('mgq',$env{'request.course.id'})
+ || &Apache::lonnet::allowed('mgq',$env{'request.course.id'}.'/'.$env{'request.course.sec'})) {
+ $result .= &add_slotlist_button();
}
}
}
- if ($target eq 'web' && $env{'request.state'} eq 'construct') {
+ if ($target =~/(web|webgrade)/ && $env{'request.state'} eq 'construct') {
$form_tag_start.=&Apache::structuretags::problem_web_to_edit_header($env{'form.rndseed'});
}
if ($target eq 'web'
@@ -629,19 +737,38 @@ sub start_Task {
my ($version,$previous)=&get_version();
($status,$accessmsg,my $slot_name,$slot) =
&Apache::lonhomework::check_slot_access('0','Task');
- if ($status eq 'CAN_ANSWER' && $version eq '') {
- # CAN_ANSWER mode, and no current version, unproctored access
+ if ((($status eq 'CAN_ANSWER') || ($status eq 'NOT_YET_VIEWED')) && ($version eq '')) {
+ # CAN_ANSWER or NOT_YET_VIEWED mode, and no current version, unproctored access
# thus self-checkedin
- &check_in('Task',undef,undef,$slot_name);
+ my $needsiptied;
+ if (ref($slot)) {
+ $needsiptied = $slot->{'iptied'};
+ }
+ my $check = &check_in('Task',undef,undef,$slot_name,$needsiptied);
+ if ($check =~ /^error:\s+(.*)$/) {
+ my $symb=&Apache::lonnet::symbread();
+ &Apache::lonnet::logthis("Error: $1 during self-checkin of version $version of Task (symb: $symb) using slot: $slot_name");
+ }
&add_to_queue('gradingqueue',{'type' => 'Task',
'time' => time,
'slot' => $slot_name});
($version,$previous)=&get_version();
}
-
- my $status_id =
- ($previous || $status eq 'SHOW_ANSWER') ? 'LC_task_feedback'
- : 'LC_task_take';
+ if (($target eq 'web') && ($version ne '') && ($slot_name ne '')) {
+ if (ref($slot) eq 'HASH') {
+ if ($slot->{'endtime'} > time()) {
+ $result .=
+ &Apache::lonhtmlcommon::set_due_date($slot->{'endtime'});
+ }
+ }
+ }
+
+ my $status_id = 'LC_task_take';
+ if ($previous && $target eq 'answer') {
+ $status_id = 'LC_task_answer';
+ } elsif ($previous || $status eq 'SHOW_ANSWER') {
+ $status_id = 'LC_task_feedback';
+ }
$result .= ''."\n";
push(@Apache::inputtags::status,$status);
@@ -659,26 +786,31 @@ sub start_Task {
}
my $msg;
if ($status eq 'UNAVAILABLE') {
- $msg.=' '.&mt('Unable to determine if this resource is open due to network problems. Please try again later.').'';
+ $msg.=' '.&mt('Unable to determine if this resource is open due to network problems. Please try again later.').' ';
} elsif ($status eq 'NOT_IN_A_SLOT') {
- $msg.=' '.&mt('You are not currently signed up to work at this time and/or place.').'';
- $msg.=&add_request_another_attempt_button("Sign up for time to work.");
+ $msg.=' '.&mt('You are not currently signed up to work at this time and/or place.').' ';
+ $msg.=&add_request_another_attempt_button("Sign up for time to work");
} elsif ($status eq 'NEEDS_CHECKIN') {
- $msg.=' '.&mt('You need the Proctor to validate you.').
- ''.&proctor_validation_screen($slot);
+ $msg.=' '.&mt('You need the Proctor to validate you.').
+ ' '.&proctor_validation_screen($slot);
} elsif ($status eq 'WAITING_FOR_GRADE') {
- $msg.=' '.&mt('Your submission is in the grading queue.').'';
+ $msg.=' '.&mt('Your submission is in the grading queue.').' ';
} elsif ($env{'form.donescreen'}) {
$result .= &done_screen($version);
- } elsif ($status ne 'NOT_YET_VIEWED') {
- $msg.=' '.&mt('Not open to be viewed').'';
+ } elsif ($status eq 'NOT_YET_VIEWED') {
+ my $symb=&Apache::lonnet::symbread();
+ $msg.=&Apache::structuretags::firstaccess_msg($accessmsg,$symb);
+ } elsif ($status eq 'NEED_DIFFERENT_IP') {
+#FIXME
+ } else {
+ $msg.=' '.&mt('Not open to be viewed').' ';
}
if ($status eq 'CLOSED' || $status eq 'INVALID_ACCESS') {
$msg.='The problem '.$accessmsg;
}
$result.=$msg.' ';
} elsif ($target eq 'tex') {
- $result.='\begin{document}\noindent \vskip 1 mm \begin{minipage}{\textwidth}\vskip 0 mm';
+ $result.='\noindent \vskip 1 mm \begin{minipage}{\textwidth}\vskip 0 mm';
if ($status eq 'UNAVAILABLE') {
$result.=&mt('Unable to determine if this resource is open due to network problems. Please try again later.').'\vskip 0 mm ';
} else {
@@ -723,8 +855,12 @@ sub start_Task {
if ($todo) {
&setup_env_for_other_user($todo,$safeeval);
my ($symb,$uname,$udom)=&decode_queue_key($todo);
- $result.="\n".' Found '.
- &Apache::lonnet::gettitle($symb).' for '.$uname.' at '.$udom.' |
';
+ if ($env{'request.state'} eq 'construct') {
+ $symb = $env{'request.uri'};
+ }
+ $result.="\n".' '.
+ &mt('Grading [_1] for [_2] at [_3]',
+ &Apache::lonnet::gettitle($symb),$uname,$udom).' ';
$form_tag_start.=
' ';
@@ -744,6 +880,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.").
@@ -790,15 +931,20 @@ sub start_Task {
$result.='';
}
- if ($env{'form.chosensections'}) {
- my @chosen_sections=
- &Apache::loncommon::get_env_multiple('form.chosensections');
+ if ($env{'form.chosensections'} || §ion_restricted()) {
+ my @chosen_sections = &get_allowed_sections();
foreach my $sec (@chosen_sections) {
$result.='';
}
}
if ($webgrade eq 'yes') { $result.=&webgrade_standard_info(); }
+ } elsif ($target eq 'webgrade'
+ && $env{'request.state'} eq 'construct') {
+ $result.=$form_tag_start;
+ $result.='';
+ $result.=&webgrade_standard_info();
}
if ($target eq 'webgrade') {
$result.="\n".'';
@@ -846,6 +992,12 @@ sub get_key_todo {
my ($target)=@_;
my $todo;
+ if ($env{'request.state'} eq 'construct') {
+ my ($symb,$cid,$udom,$uname) = &Apache::lonnet::whichuser();
+ my $gradingkey=&encode_queue_key($symb,$udom,$uname);
+ return ($gradingkey);
+ }
+
if (defined($env{'form.reviewasubmission'})) {
&Apache::lonxml::debug("review a submission....");
$env{'form.queue'}='reviewqueue';
@@ -876,7 +1028,14 @@ sub get_key_todo {
my $cdom = $env{'course.'.$cid.'.domain'};
my $uname = &LONCAPA::clean_username($env{'form.gradinguser'});
my $udom = &LONCAPA::clean_domain($env{'form.gradingdomain'});
-
+
+ if (§ion_restricted()) {
+ my $classlist=&get_limited_classlist();
+ if (!&allow_grade_user($classlist->{$uname.':'.$udom})) {
+ return (undef,'not_allowed',
+ &mt("Requested student ([_1]) is in a section you aren't allowed to grade.",$uname.':'.$udom));
+ }
+ }
my $gradingkey=&encode_queue_key($symb,$udom,$uname);
my $queue;
@@ -946,6 +1105,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');
}
@@ -991,13 +1152,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)
@@ -1027,18 +1192,25 @@ sub end_Task {
}
if ($status eq 'CAN_ANSWER' && !$previous &&
!$env{'form.donescreen'}) {
- $result.="\n".' '.
+ my ($portheader,$porttext);
+ if ($Apache::lonhomework::history{"resource.$version.0.bridgetask.portfiles"}) {
+ $portheader = &mt('Submit Additional Portfolio Files for Grading');
+ $porttext = &mt('Indicate which additional files from your portfolio are to be evaluated in grading this task.');
+ } else {
+ $portheader = &mt('Submit Portfolio Files for Grading');
+ $porttext = &mt('Indicate the files from your portfolio to be evaluated in grading this task.');
+ }
+ $result.="\n".''.&Apache::lonhtmlcommon::start_pick_box().
&Apache::inputtags::file_selector("$version.0",
"bridgetask","*",
'portfolioonly',
- '
- '.&mt('Submit Portfolio Files for Grading').'
- '.&mt('Indicate the files from your portfolio to be evaluated in grading this task.').' ').
- " ";
+ ' '.$portheader.''.
+ $porttext.' ').
+ &Apache::lonhtmlcommon::end_pick_box().' ';
}
if (!$previous && $status ne 'SHOW_ANSWER' &&
&show_task($status,$previous)) {
- $result.=&Apache::inputtags::gradestatus('0');
+ $result.=&Apache::inputtags::gradestatus('0',$target,1);
}
$result.='';
@@ -1046,18 +1218,18 @@ sub end_Task {
if (!$previous && $status ne 'SHOW_ANSWER' &&
&show_task($status,$previous)) {
my $action = &Apache::lonenc::check_encrypt($env{'request.uri'});
+ my $donetext = &mt('Done');
$result.=<
-
+
DONEBUTTON
}
if (&show_task($status,$previous) &&
$Apache::lonhomework::history{"resource.$version.0.status"} =~ /^(pass|fail)$/) {
my $bt_status=$Apache::lonhomework::history{"resource.$version.0.status"};
- my $title=&Apache::lonnet::gettitle();
-
+ my $title=&Apache::lonnet::gettitle($env{'request.uri'});
my $start_time;
my $slot_name=
@@ -1083,13 +1255,15 @@ DONEBUTTON
"\n";
if ($bt_status eq 'pass') {
- $status.='You passed the '.$title.' given on '.
- $start_time.'';
+ $status.=''
+ .&mt('You passed the [_1] given on [_2].',$title,$start_time)
+ .'';
$status.=$question_status;
}
if ($bt_status eq 'fail') {
- $status.='You did not pass the '.$title.' given on '.
- $start_time.'';
+ $status.=''
+ .&mt('You did not pass the [_1] given on [_2].',$title,$start_time)
+ .'';
$status.=$question_status;
if (!$previous) {
$status.=&add_request_another_attempt_button();
@@ -1115,7 +1289,9 @@ DONEBUTTON
}
$result.="\n \n".
&Apache::loncommon::end_page({'discussion' => 1});
- }
+ } elsif ($target eq 'answer') {
+ $result.="\n\n";
+ }
}
my $useslots = &Apache::lonnet::EXT("resource.0.useslots");
@@ -1126,13 +1302,16 @@ DONEBUTTON
} elsif (defined($Apache::lonhomework::history{"resource.$version.0.checkedin.slot"})) {
$queue_data{'slot'} = $Apache::lonhomework::history{"resource.$version.0.checkedin.slot"};
}
-
+
if ($target eq 'grade' && !$env{'form.webgrade'} && !$previous
&& $status eq 'CAN_ANSWER') {
my $award='SUBMITTED';
+ my $uploadedflag=0;
+ my $totalsize=0;
+ my @deletions = &Apache::loncommon::get_env_multiple('form.HWFILE'.$version.'_0_bridgetask_delete');
&Apache::essayresponse::file_submission("$version.0",'bridgetask',
- 'portfiles',\$award);
+ \$award,\$uploadedflag,\$totalsize,\@deletions);
if ($award eq 'SUBMITTED' &&
$Apache::lonhomework::results{"resource.$version.0.bridgetask.portfiles"}) {
$Apache::lonhomework::results{"resource.0.tries"}=
@@ -1145,7 +1324,9 @@ DONEBUTTON
$Apache::lonhomework::results{"resource.0.submission"}=
$Apache::lonhomework::results{"resource.$version.0.submission"}='';
} else {
- delete($Apache::lonhomework::results{"resource.$version.0.bridgetask.portfiles"});
+ unless($uploadedflag) {
+ delete($Apache::lonhomework::results{"resource.$version.0.bridgetask.portfiles"});
+ }
$award = '';
}
&Apache::lonhomework::showhash(%Apache::lonhomework::results);
@@ -1248,38 +1429,64 @@ DONEBUTTON
$Apache::lonhomework::results{"resource.$version.0.solved"};
}
&minimize_storage();
- &Apache::structuretags::finalize_storage();
-
- # 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');
+ my ($canstore,$domain,$name,$symb,$courseid);
+ ($symb,$courseid,$domain,$name) = &Apache::lonnet::whichuser();
+
+ if ($env{'form.gradingkey'}) {
+ my $todo=&unescape($env{'form.gradingkey'});
+ my ($keysymb,$uname,$udom)=&decode_queue_key($todo);
+ if ($symb eq $keysymb) {
+ if (($domain eq $udom) && ($name eq $uname)) {
+ $canstore = 1;
+ }
+ }
+ }
+ if ($canstore) {
+ &Apache::structuretags::finalize_storage();
+ my @interval = &Apache::lonnet::EXT("resource.0.interval");
+ if ($interval[0] =~ /^\d+/ && $interval[1] eq 'resource') {
+ my $key=$courseid."\0".$symb;
+ my %times=&Apache::lonnet::get('firstaccesstimes',
+ [$key],$domain,$name);
+ if ($times{$key}) {
+ my $delresult.=&Apache::lonnet::del('firstaccesstimes',
+ [$key],$domain,$name);
+ }
+ }
+ # 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 occured and hasn't yet been stored
+ # instance generation occurred and hasn't yet been stored
&Apache::structuretags::finalize_storage();
}
} elsif ($target eq 'webgrade') {
@@ -1335,6 +1542,13 @@ DONEBUTTON
}
&Apache::structuretags::reset_problem_globals('Task');
undef($Apache::lonhomework::parsing_a_task);
+ if ( ($target eq 'grade' && $env{'form.webgrade'}) ||
+ $target eq 'webgrade') {
+ delete($env{'form.grade_symb'});
+ delete($env{'form.grade_domain'});
+ delete($env{'form.grade_username'});
+ delete($env{'form.grade_courseid'});
+ }
return $result;
}
@@ -1493,11 +1707,11 @@ sub get_limited_classlist {
}
}
- if (ref($sections) && !grep('all',@{ $sections })) {
+ if (ref($sections) && !grep {$_ eq 'all'} (@{ $sections })) {
foreach my $student (keys(%$classlist)) {
my $section =
$classlist->{$student}[&Apache::loncoursedata::CL_SECTION()];
- if (! grep($section,@{ $sections })) {
+ if (! grep {$_ eq $section} (@{ $sections })) {
delete($classlist->{$student});
}
}
@@ -1513,14 +1727,15 @@ sub show_queue {
my $cnum=$env{'course.'.$cid.'.num'};
my $cdom=$env{'course.'.$cid.'.domain'};
- my @chosen_sections=
- &Apache::loncommon::get_env_multiple('form.chosensections');
+ my @chosen_sections = &get_allowed_sections();
my $classlist = &get_limited_classlist(\@chosen_sections);
if (!(grep(/^all$/,@chosen_sections))) {
- $result.=' Showing only sections '.join(', ',@chosen_sections).
- '. '."\n";
+ $result.=''
+ .&mt('Showing only sections [_1].'
+ ,''.join(', ',@chosen_sections).'')
+ ." \n";
}
my ($view,$view_section);
@@ -1534,27 +1749,33 @@ sub show_queue {
}
}
+ $result .=
+ ''.
+ &mt('Return to resource').' '.
+ "\n".&mt('Current Queue - [_1]',$queue)."";
my $regexp="^$symb\0";
my %queue=&Apache::lonnet::dump($queue,$cdom,$cnum,$regexp);
my ($tmp)=%queue;
if ($tmp=~/^error: 2 /) {
- return "\nCurrent Queue - $queue".
+ $result.=
&Apache::loncommon::start_data_table().
&Apache::loncommon::start_data_table_row().
''.&mt('Empty').' | '.
&Apache::loncommon::end_data_table_row().
&Apache::loncommon::end_data_table();
+ return $result;
}
my $title=&Apache::lonnet::gettitle($symb);
- $result.="\nCurrent Queue - $title $queue ".
+ $result.=
&Apache::loncommon::start_data_table().
&Apache::loncommon::start_data_table_header_row();
- if ($with_selects) { $result.="Status | | "; }
- $result.="user | data | ".
+ if ($with_selects) { $result.=''.&mt('Status').' | | '; }
+ $result.=''.&mt('User').' | '.&mt('Data').' | '.
&Apache::loncommon::end_data_table_header_row();
foreach my $key (sort(keys(%queue))) {
my ($symb,$uname,$udom) = &decode_queue_key($key);
- if (!defined($classlist->{$uname.':'.$udom})) { next; }
+ next if (!defined($classlist->{$uname.':'.$udom}));
+ next if (!&allow_grade_user($classlist->{$uname.':'.$udom}));
my $section = $classlist->{$uname.':'.$udom}[&Apache::loncoursedata::CL_SECTION()];
@@ -1596,7 +1817,7 @@ sub show_queue {
'start');
}
my $me=$env{'user.name'}.':'.$env{'user.domain'};
- $status=&mt('Locked by [_1] [_2]',$locker,$time);
+ $status=&mt('Locked by [_1] [_2]',''.$locker.'',$time);
if ($me eq $locker) {
($action,$description)=('resume',&mt('Resume'));
} else {
@@ -1612,7 +1833,7 @@ sub show_queue {
$result.=(< |
- |