--- loncom/homework/bridgetask.pm 2006/02/08 22:26:02 1.103 +++ loncom/homework/bridgetask.pm 2006/02/20 21:43:16 1.111 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA # definition of tags that give a structure to a document # -# $Id: bridgetask.pm,v 1.103 2006/02/08 22:26:02 albertel Exp $ +# $Id: bridgetask.pm,v 1.111 2006/02/20 21:43:16 albertel Exp $ # # Copyright Michigan State University Board of Trustees # @@ -188,19 +188,32 @@ sub add_grading_button { $result.='<input type="hidden" name="grade_target" value="webgrade" />'; if (&Apache::lonnet::allowed('mgq',$env{'request.course.id'})) { my ($entries,$ready,$locks)=&get_queue_counts('gradingqueue'); - $result.='<p>Specify a section: '.$sec_select.'</p>'; - $result.='<p>'.&mt("Grading Queue has [_1] entries. [_2] of them are ready to be graded and [_3] of them are currently being graded",$entries,$ready,$locks); + $result.='<table><tr>'; + $result.='<td rowspan="4">Specify a section: </td><td rowspan="4">'.$sec_select.'</td>'; + $result.='<td>'.' <input type="submit" name="reviewagrading" value="'. + &mt("Select an entry from the grading queue:").'" /> '; - $result.=' <input type="submit" name="reviewagrading" value="'. - &mt("Select an entry from the grading queue").'" /> </p>'."\n"; + $result.= &mt("[_1] entries, [_2] ready, [_3] being graded",$entries,$ready,$locks).' </td></tr>'."\n"; ($entries,$ready,$locks)=&get_queue_counts('reviewqueue'); - $result.='<p>'.&mt("Review Queue has [_1] entries. [_2] of them are ready to be graded and [_3] of them are currently being graded",$entries,$ready,$locks); - $result.=' <input type="submit" name="reviewasubmission" value="'. - &mt("Select an entry from the review queue").'" /> </p>'."\n"; - $result.=' <input type="submit" name="regradeasubmission" value="'. - &mt("Select a user to regrade.").'" /> </p>'."\n"; - } + $result.='<tr><td>'. + ' <input type="submit" name="reviewasubmission" value="'. + &mt("Select an entry from the review queue:").'" /> '; + $result.=&mt("[_1] entries, [_2] ready, [_3] being graded", + $entries,$ready,$locks).'</td></tr>'."\n"; + $result.='<tr><td> <input type="submit" name="regradeasubmission" value="'. + &mt("List of user's grade status").'" /> </td></tr></table>'."\n"; + $result.='<p> <input type="submit" name="regradeaspecificsubmission" value="'. + &mt("Regrade specific user:").'" />'."\n"; + $result.='<input type="text" size="12" name="gradinguser" />'; + $result.=&Apache::loncommon::select_dom_form($env{'user.domain'}, + 'gradingdomain'); + $result.=' '. + &Apache::loncommon::selectstudent_link('gradesubmission', + 'gradinguser', + 'gradingdomain'); + $result.=&Apache::loncommon::studentbrowser_javascript(); + } return $result; } @@ -368,7 +381,7 @@ sub webgrade_standard_info { $file=~s|/+|/|g; &Apache::lonnet::allowuploaded('/adm/bridgetask',$file); $file_list.='<li><nobr><a href="'.$file.'?rawmode=1" target="lonGRDs"><img src="'. - &Apache::loncommon::icon($file).'" border=0"> '.$file. + &Apache::loncommon::icon($file).'" border="0"> '.$file. '</a></nobr></li>'."\n"; } $file_list.="</ul>\n"; @@ -379,8 +392,10 @@ sub webgrade_standard_info { my $result=<<INFO; <div class="handininfo"> - <input type="submit" name="next" value="$lt{'done'}" /> - <input type="submit" name="stop" value="$lt{'stop'}" /> + <div class="maincontrols"> + <input type="submit" name="next" value="$lt{'done'}" /> + <input type="submit" name="stop" value="$lt{'stop'}" /> + </div> $file_list </div> INFO @@ -413,12 +428,21 @@ sub start_Task { $body_tag_start.=$uri.'">'.&add_grading_button()."</form>"; my $symb=&Apache::lonnet::symbread(); if (&Apache::lonnet::allowed('mgq',$env{'request.course.id'})) { - $body_tag_start.='<form method="POST" action="/adm/slotrequest">'. + $body_tag_start.='<form method="POST" name="slotrequest" action="/adm/slotrequest">'. '<input type="hidden" name="symb" value="'.$symb.'" />'. '<input type="hidden" name="command" value="showslots" />'. '<input type="submit" name="requestattempt" value="'. &mt('Show Slot list').'" />'. '</form>'; + my $target_id = + &Apache::lonstathelpers::make_target_id({symb => $symb, + part => '0'}); + $body_tag_start.='<form method="POST" name="gradingstatus" action="/adm/statistics">'. + '<input type="hidden" name="problemchoice" value="'.$target_id.'" />'. + '<input type="hidden" name="reportSelected" value="grading_analysis" />'. + '<input type="submit" name="grading" value="'. + &mt('Show Grading Status').'" />'. + '</form>'; } } } @@ -506,7 +530,7 @@ DONESCREEN $target eq 'webgrade') { my $webgrade='yes'; if ($target eq 'webgrade') { - $result.=$head_tag_start.$body_tag_start; + $result.=$head_tag_start.'</head>'.$body_tag_start; #$result.='<br />Review'.&show_queue('reviewqueue'); #$result.='<br />Grade'.&show_queue('gradingqueue'); } @@ -515,7 +539,7 @@ DONESCREEN # Hrrm, vaildation pass should perhaps say 'not_locked' # perhaps do a search if there is a key that is mine and if # there isn't reshow the queue.... - my ($todo,$status_code)=&get_key_todo($target); + my ($todo,$status_code,$msg)=&get_key_todo($target); if ($todo) { &setup_env_for_other_user($todo,$safeeval); @@ -528,13 +552,9 @@ DONESCREEN $Apache::bridgetask::queue_key=$todo; &Apache::structuretags::initialize_storage(); &Apache::lonhomework::showhash(%Apache::lonhomework::history); - if ($target eq 'webgrade') { - #$result.='<br />After -'.&show_queue($env{'form.queue'}); - $result.="\n".'<table width="100%" style="width:100%" border="1">'; - if ($status_code eq 'selected') { - $form_tag_start.= - '<input type="hidden" name="queuemode" value="selected" />'; - } + if ($target eq 'webgrade' && $status_code eq 'selected') { + $form_tag_start.= + '<input type="hidden" name="queuemode" value="selected" />'; } } else { if ($target eq 'webgrade') { @@ -544,7 +564,7 @@ DONESCREEN if ($status_code eq 'stop') { $result.='<b>'.&mt("Stopped grading.").'</b>'.$back; } elsif ($status_code eq 'lock_failed') { - $result.='<b>'.&mt("Failed to lock the request record.") + $result.='<b>'.&mt("Failed to lock the requested record.") .'</b>'.$back; } elsif ($status_code eq 'unlock') { $result.='<b>'.&mt("Unlocked the requested record.") @@ -556,6 +576,8 @@ DONESCREEN $result.=&select_user(); } elsif ($status_code eq 'unable') { $result.='<b>'.&mt("Unable to aqcuire a user to grade.").'</b>'.$back; + } elsif ($status_code eq 'not_allowed') { + $result.='<b>'.&mt('Not allowed to grade the requested user.').' '.$msg.'</b>'.$back; } else { $result.='<b>'.&mt("No user to be graded.").'</b>'.$back; } @@ -586,6 +608,9 @@ DONESCREEN } if ($webgrade eq 'yes') { $result.=&webgrade_standard_info(); } } + if ($target eq 'webgrade') { + $result.="\n".'<div id="criterialist">'; + } } elsif ($target eq 'edit') { $result.=$head_tag_start."</head>".$body_tag_start.$form_tag_start. &Apache::structuretags::problem_edit_header(); @@ -622,6 +647,57 @@ sub get_key_todo { return (undef,'select_user'); } + + my $me=$env{'user.name'}.'@'.$env{'user.domain'}; + + #need to try both queues.. + if (defined($env{'form.regradeaspecificsubmission'}) && + defined($env{'form.gradinguser'}) && + defined($env{'form.gradingdomain'}) ) { + my ($symb,$cid)=&Apache::lonxml::whichuser(); + my $cnum = $env{'course.'.$cid.'.num'}; + my $cdom = $env{'course.'.$cid.'.domain'}; + my $uname = $env{'form.gradinguser'}; + my $udom = $env{'form.gradingdomain'}; + + my $gradingkey=&encode_queue_key($symb,$udom,$uname); + + my $queue; + + if (&in_queue('gradingqueue',$symb,$cdom,$cnum,$udom,$uname)) { + $env{'form.queue'} = $queue = 'gradingqueue'; + } elsif (&in_queue('reviewqueue' ,$symb,$cdom,$cnum,$udom,$uname)) { + $env{'form.queue'} = $queue = 'reviewqueue'; + } + + if (!$queue) { + $env{'form.queue'} = $queue = 'none'; + #not queued so doing either a re or pre grade + return ($gradingkey); + } + + my $who=&queue_key_locked($queue,$gradingkey); + if ($who eq $me) { + #already have the lock + $env{'form.gradingkey'}=&Apache::lonnet::escape($gradingkey); + return ($gradingkey); + } + + if (!defined($who)) { + if (&lock_key($queue,$gradingkey)) { + return ($gradingkey); + } else { + return (undef,'lock_failed'); + } + } + + #otherwise (defined($who) && $who ne $me) some else has it... + return (undef,'not_allowed', + &mt('Another user ([_1]) currently has the record for [_2] locked.', + $who,$env{'form.gradinguser'}.'@'.$env{'form.gradingdomain'})); + } + + my $queue=$env{'form.queue'}; if (!defined($queue)) { @@ -649,7 +725,6 @@ sub get_key_todo { && $env{'form.queuemode'} eq 'selected') { my $who=&queue_key_locked($queue,$gradingkey); - my $me=$env{'user.name'}.'@'.$env{'user.domain'}; if ($who eq $me) { &Apache::lonxml::debug("Found a key was given to me"); return ($gradingkey,'selected'); @@ -914,7 +989,7 @@ DONEBUTTON &Apache::structuretags::finalize_storage(); } } elsif ($target eq 'webgrade') { - $result.="</table>\n<hr />"; + $result.="</div>\n<hr />"; #$result.='<input type="submit" name="next" value="'. # &mt('Save & Next').'" /> '; #$result.='<input type="submit" name="end" value="'. @@ -1156,7 +1231,8 @@ FORM $result.='<td>'.&mt("In Progress").'</td>' } } - $result.="<td>$uname</td>"; + $result.= "<td>".$fullname->{$uname.':'.$udom}. + " <tt>($uname\@$udom)</tt> </td>"; $result.='<td>Slot: '.$slot.' End time: '. &Apache::lonlocal::locallocaltime($slot_data{'endtime'}). "</td></tr>"; @@ -1696,28 +1772,28 @@ sub get_instance { foreach my $id (@{$dimension{$instance.'.criterias'}}) { my $link='criteria_'.$instance.'_'.$id; my $status=$Apache::lonhomework::history{"resource.$version.0.$dim.$instance.$id.status"}; - $result.='<tr><td width="100%" valign="top">'. - '<a name="'.$link.'" />'. - '<a name="next_'.$last_link.'" />'. - '<br /><textarea enabled="false" style="width:100%" rows="8" width="25" wrap="hard">'; + $result.='<div id="'.$link.'">'."\n". + '<a name="'.$link.'" />'."\n". + '<a name="next_'.$last_link.'" />'."\n". + '<div class="criteriatext">'."\n"; @Apache::scripttag::parser_env = @_; $result.=&Apache::scripttag::xmlparse($dimension{$instance.'.criteria.'.$id}); - $result.='</textarea>'. + $result.='</div>'."\n". #$dimension{$instance.'.criteria.'.$id}. - '</td>'. - '<td><nobr>Additional Comment for Student</nobr> <br />'. - '<textarea style="width:100%" rows="8" width="25" wrap="hard" name="HWVAL_comment_'.$link.'">'.&HTML::Entities::encode($Apache::lonhomework::history{"resource.$version.0.$dim.$instance.$id.comment"}).'</textarea>'. - '</td>'. - '<td>'. - '<nobr><label><input type="radio" name="HWVAL_'.$link.'" value="ungraded" '.($status eq 'ungraded' || !$status ? 'checked="checked"':'').' />'.&mt('Ungraded').'</label></nobr><br />'. - '<label><input type="radio" name="HWVAL_'.$link.'" value="pass" '.($status eq 'pass' ? 'checked="checked"':'').' />'.&mt('Pass').'</label><br />'. - '<label><input type="radio" name="HWVAL_'.$link.'" value="fail" '.($status eq 'fail' ? 'checked="checked"':'').' />'.&mt('Fail').'</label><br />'. - '<label><input type="radio" name="HWVAL_'.$link.'" value="review" '.($status eq 'review' ? 'checked="checked"':'').' />'.&mt('Review').'</label><br />'. - '</td>'. - '<td>'. - '<a href="#'.$last_link.'">Prev</a><br />'. - '<a href="#next_'.$link.'">Next</a><br /><br /><br />'. - '</td></tr>'; + '<div class="grade">'."\n". + '<label class="ungraded"><input type="radio" name="HWVAL_'.$link.'" value="ungraded" '.($status eq 'ungraded' || !$status ? 'checked="checked"':'').' />'.&mt('Ungraded').'</label>'."\n". + '<label class="fail"><input type="radio" name="HWVAL_'.$link.'" value="fail" '.($status eq 'fail' ? 'checked="checked"':'').' />'.&mt('Fail').'</label>'."\n". + '<label class="pass"><input type="radio" name="HWVAL_'.$link.'" value="pass" '.($status eq 'pass' ? 'checked="checked"':'').' />'.&mt('Pass').'</label>'."\n". + '<label class="review"><input type="radio" name="HWVAL_'.$link.'" value="review" '.($status eq 'review' ? 'checked="checked"':'').' />'.&mt('Review').'</label>'."\n". + '</div>'."\n". + '<label class="comment">'.&mt('Additional Comment for Student').'</label>'."\n". + '<textarea class="comment_area" name="HWVAL_comment_'.$link.'">'.&HTML::Entities::encode($Apache::lonhomework::history{"resource.$version.0.$dim.$instance.$id.comment"}).'</textarea>'."\n". + '</label>'."\n". + '<ul class="navbuttons">'."\n". + '<li><a href="#'.$last_link.'">Prev</a></li>'."\n". + '<li><a href="#next_'.$link.'">Next</a></li>'."\n". + '</ul>'."\n". + '</div>'."\n"; $last_link=$link; } } elsif ($target eq 'grade' && $env{'form.webgrade'}) {