--- loncom/homework/bridgetask.pm 2005/10/01 03:27:44 1.59 +++ loncom/homework/bridgetask.pm 2005/10/01 04:52:21 1.64 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA # definition of tags that give a structure to a document # -# $Id: bridgetask.pm,v 1.59 2005/10/01 03:27:44 albertel Exp $ +# $Id: bridgetask.pm,v 1.64 2005/10/01 04:52:21 albertel Exp $ # # Copyright Michigan State University Board of Trustees # @@ -294,6 +294,7 @@ sub show_task { ( $status eq 'INVALID_ACCESS') )) { return 0; } + if ($env{'form.donescreen'}) { return 0; } return 1; } @@ -302,6 +303,38 @@ sub internal_location { return '<!-- LONCAPA_INTERNAL_ADD_TASK_STATUS'.$id.' -->'; } +sub submission_time_stamp { + my ($symb,$courseid,$udom,$uname)=&Apache::lonxml::whichuser(); + my $submissiontime; + my $version=$Apache::lonhomework::history{'resource.version'}; + for (my $v=$Apache::lonhomework::history{'version'};$v>0;$v--) { + if (defined($Apache::lonhomework::history{$v.':resource.'.$version.'.0.bridgetask.portfiles'})) { + $submissiontime=$Apache::lonhomework::history{$v.':timestamp'}; + } + } + my $result; + if ($submissiontime) { + my $slot_name=$Apache::lonhomework::history{'resource.'.$version.'.checkedin.slot'}; + my %slot=&Apache::lonnet::get_slot($slot_name); + my $diff = $slot{'endtime'} - $submissiontime; + my ($color,$when)=('red','after'); + if ($diff > 0) { ($color,$when)=('green','before'); } + my $info; + if ($diff%60) { $info=($diff%60).' seconds'; } + $diff=int($diff/60); + if ($diff%60) { $info=($diff%60).' minutes '.$info; } + $diff=int($diff/60); + if ($diff) { $info=$diff.' hours '.$info; } + $result='<p><font color="'.$color.'">'. + &mt('Student submitted [_1] [_2] the deadline. + (Submission was at [_3], end of period was [_4].)', + $info,$when,scalar(localtime($submissiontime)), + scalar(localtime($slot{'endtime'}))). + '</font></p>'; + } + return $result; +} + sub start_Task { my ($target,$token,$tagstack,$parstack,$parser,$safeeval)=@_; @@ -360,6 +393,18 @@ sub start_Task { '</h1>'.&proctor_validation_screen($slot); } elsif ($status eq 'WAITING_FOR_GRADE') { $msg.='<h1>'.&mt('Your submission is in the grading queue.').'</h1>'; + } elsif ($env{'form.donescreen'}) { + my $title=&Apache::lonnet::gettitle(); + my $files=$Apache::lonhomework::history{'resource.'.$version.'.0.bridgetask.portfiles'}; + $result.= $head_tag_start.'</head>'.$body_tag_start; + $result.=<<DONESCREEN; +<h2>$title</h2> +<p> Files submitted: $files </p> +<p> You are now done with the Bridge Task </p> +<hr /> +<p> <a href="/adm/logout">Logout</a> </p> +<p> <a href="/adm/roles">Change to a different course</a> </p> +DONESCREEN } elsif ($status ne 'NOT_YET_VIEWED') { $msg.='<h1>'.&mt('Not open to be viewed').'</h1>'; } @@ -446,6 +491,9 @@ sub start_Task { my $bodytext=&Apache::lonxml::get_all_text("/task",$parser); } if ($target eq 'webgrade' && defined($env{'form.queue'})) { + if ($webgrade eq 'yes') { + $result.=&submission_time_stamp(); + } $result.=$form_tag_start; $result.='<input type="hidden" name="webgrade" value="'. $webgrade.'" />'; @@ -455,6 +503,14 @@ sub start_Task { $result.='<input type="hidden" name="regrade" value="'. $env{'form.regrade'}.'" />'; } + if ($env{'form.chosensections'}) { + my @chosen_sections= + &Apache::loncommon::get_env_multiple('form.chosensections'); + foreach my $sec (@chosen_sections) { + $result.='<input type="hidden" name="chosensections" + value="'.$sec.'" />'; + } + } } } else { # page_start returned a starting result, delete it if we don't need it @@ -570,7 +626,8 @@ sub end_Task { if (&show_task($status,$previous)) { $result.=&Apache::lonxml::endredirection(); } - if ($status eq 'CAN_ANSWER' && !$previous) { + if ($status eq 'CAN_ANSWER' && !$previous && + !$env{'form.donescreen'}) { $result.="\n".'<table border="1">'. &Apache::inputtags::file_selector("$version.0", "bridgetask","*", @@ -580,6 +637,13 @@ sub end_Task { <p>'.&mt('Indicate the files from your portfolio to be evaluated in grading this task.').'</p>'). "</table>"; $result.=&Apache::inputtags::gradestatus('0'); + $result.='</form>'; + $result.=<<DONEBUTTON; +<form method="POST"> + <input type="hidden" name="donescreen" value="1" /> + <input type="submit" value="Done" /> +</form> +DONEBUTTON } if (&show_task($status,$previous) && $Apache::lonhomework::history{"resource.$version.status"} =~ /^(pass|fail)$/) { @@ -645,6 +709,8 @@ sub end_Task { $award; $Apache::lonhomework::results{"resource.0.submission"}= $Apache::lonhomework::results{"resource.$version.0.submission"}=''; + } else { + delete($Apache::lonhomework::results{"resource.$version.0.bridgetask.portfiles"}); } &Apache::lonhomework::showhash(%Apache::lonhomework::results); &Apache::structuretags::finalize_storage(); @@ -885,6 +951,10 @@ sub show_queue { &Apache::grades::init_perm(); my ($classlist,$section,$fullname)=&Apache::grades::getclasslist(\@chosen_sections,); &Apache::grades::reset_perm(); + if (!(grep(/^all$/,@chosen_sections))) { + $result.='<p> Showing only sections <tt>'.join(', ',@chosen_sections). + '</tt>.</p> '."\n"; + } my $regexp="^$symb\0"; my %queue=&Apache::lonnet::dump($queue,$cdom,$cnum,$regexp); @@ -924,6 +994,11 @@ sub show_queue { ($action,$description)=('unlock',&mt('Unlock')); } } + my $seclist; + foreach my $sec (@chosen_sections) { + $seclist.='<input type="hidden" name="chosensections" + value="'.$sec.'" />'; + } if (time > $slot_data{'endtime'}) { $result.=(<<FORM); <td> @@ -934,6 +1009,7 @@ sub show_queue { <input type="hidden" name="webgrade" value="no" /> <input type="hidden" name="queuemode" value="selected" /> <input type="submit" name="submit" value="$description" /> + $seclist </form> </td> FORM @@ -1138,13 +1214,19 @@ sub get_from_queue { sub select_user { my ($symb,$cid)=&Apache::lonxml::whichuser(); - my $result.='<table border="1">'; my @chosen_sections= &Apache::loncommon::get_env_multiple('form.chosensections'); &Apache::grades::init_perm(); my ($classlist,$section,$fullname)=&Apache::grades::getclasslist(\@chosen_sections,); &Apache::grades::reset_perm(); + + my $result; + if (!(grep(/^all$/,@chosen_sections))) { + $result.='<p> Showing only sections <tt>'.join(', ',@chosen_sections). + '</tt>.</p> '."\n"; + } + $result.='<table border="1">'; foreach my $student (sort {lc($$fullname{$a}) cmp lc($$fullname{$b}) } keys %$fullname) { my ($uname,$udom) = split(/:/,$student); @@ -1169,6 +1251,11 @@ sub select_user { $result.='<tr><td> </td><td>'.$fullname->{$student}. '</td><td>'; } else { + my $seclist; + foreach my $sec (@chosen_sections) { + $seclist.='<input type="hidden" name="chosensections" + value="'.$sec.'" />'; + } $result.=<<RESULT; <tr> <td> @@ -1177,7 +1264,8 @@ sub select_user { <input type="hidden" name="queue" value="$queue" /> <input type="hidden" name="webgrade" value="no" /> <input type="hidden" name="regrade" value="yes" /> - <input type="submit" name="submit" value="Regrade" /> + <input type="submit" name="submit" value="Regrade" /> + $seclist </form> <td>$fullname->{$student}</td> <td>