version 1.95, 2006/01/21 01:46:14
|
version 1.145, 2006/05/09 18:07:56
|
Line 66 sub proctor_check_auth {
|
Line 66 sub proctor_check_auth {
|
|
|
my @allowed=split(",",$slot->{'proctor'}); |
my @allowed=split(",",$slot->{'proctor'}); |
foreach my $possible (@allowed) { |
foreach my $possible (@allowed) { |
my ($puser,$pdom)=(split('@',$possible)); |
my ($puser,$pdom)=(split(':',$possible)); |
if ($puser eq $user && $pdom eq $domain) { |
if ($puser eq $user && $pdom eq $domain) { |
my $authenticated=0; |
my $authenticated=0; |
if ( $slot->{'secret'} =~ /\S/ && |
if ( $slot->{'secret'} =~ /\S/ && |
Line 95 sub proctor_check_auth {
|
Line 95 sub proctor_check_auth {
|
#setup new version and who did it |
#setup new version and who did it |
$Apache::lonhomework::results{'resource.0.version'}=$version; |
$Apache::lonhomework::results{'resource.0.version'}=$version; |
$Apache::lonhomework::results{"resource.$version.0.checkedin"}= |
$Apache::lonhomework::results{"resource.$version.0.checkedin"}= |
$user.'@'.$domain; |
$user.':'.$domain; |
$Apache::lonhomework::results{"resource.$version.0.checkedin.slot"}= |
$Apache::lonhomework::results{"resource.$version.0.checkedin.slot"}= |
$slot_name; |
$slot_name; |
|
|
Line 103 sub proctor_check_auth {
|
Line 103 sub proctor_check_auth {
|
} elsif ($authenticated && $type eq 'problem') { |
} elsif ($authenticated && $type eq 'problem') { |
&Apache::lonxml::debug("authed $slot_name"); |
&Apache::lonxml::debug("authed $slot_name"); |
$Apache::lonhomework::results{"resource.0.checkedin"}= |
$Apache::lonhomework::results{"resource.0.checkedin"}= |
$user.'@'.$domain; |
$user.':'.$domain; |
$Apache::lonhomework::results{"resource.0.checkedin.slot"}= |
$Apache::lonhomework::results{"resource.0.checkedin.slot"}= |
$slot_name; |
$slot_name; |
} |
} |
Line 155 sub add_previous_version_button {
|
Line 155 sub add_previous_version_button {
|
join("</option>\n<option>",@to_show). |
join("</option>\n<option>",@to_show). |
"</option>\n"; |
"</option>\n"; |
$list.='<option value="current">'.&mt('Current').'</option>'; |
$list.='<option value="current">'.&mt('Current').'</option>'; |
$result.='<form name="getprevious" method="POST" action="'; |
$result.='<form name="getprevious" method="post" action="'; |
my $uri=$env{'request.uri'}; |
my $uri=$env{'request.uri'}; |
if ($env{'request.enc'}) { $uri=&Apache::lonenc::encrypted($uri); } |
if ($env{'request.enc'}) { $uri=&Apache::lonenc::encrypted($uri); } |
$result.=$uri.'">'. |
$result.=$uri.'">'. |
Line 170 sub add_grading_button {
|
Line 170 sub add_grading_button {
|
my (undef,$cid)=&Apache::lonxml::whichuser(); |
my (undef,$cid)=&Apache::lonxml::whichuser(); |
my $cnum=$env{'course.'.$cid.'.num'}; |
my $cnum=$env{'course.'.$cid.'.num'}; |
my $cdom=$env{'course.'.$cid.'.domain'}; |
my $cdom=$env{'course.'.$cid.'.domain'}; |
my %sections; |
my %sections = &Apache::loncommon::get_sections($cdom,$cnum); |
my $numsections=&Apache::loncommon::get_sections($cdom,$cnum,\%sections); |
|
my $size=5; |
my $size=5; |
if (scalar(keys(%sections)) < 3) { |
if (scalar(keys(%sections)) < 3) { |
$size=scalar(keys(%sections))+2; |
$size=scalar(keys(%sections))+2; |
} |
} |
my $sec_select = '<select multiple name="chosensections" size="'.$size.'">'."\n"; |
my $sec_select = '<select multiple="multiple" name="chosensections" size="'.$size.'">'."\n"; |
$sec_select .= "<option value='all' selected='selected'>all</option>\n"; |
$sec_select .= "<option value='all' selected='selected'>all</option>\n"; |
foreach my $sec (sort {lc($a) cmp lc($b)} (keys(%sections))) { |
foreach my $sec (sort {lc($a) cmp lc($b)} (keys(%sections))) { |
$sec_select .= "<option name=\"$sec\">$sec</option>\n"; |
$sec_select .= "<option value=\"$sec\">$sec</option>\n"; |
} |
} |
$sec_select .= "<option value='none'>none</option></select>\n"; |
$sec_select .= "<option value='none'>none</option></select>\n"; |
|
|
Line 188 sub add_grading_button {
|
Line 188 sub add_grading_button {
|
$result.='<input type="hidden" name="grade_target" value="webgrade" />'; |
$result.='<input type="hidden" name="grade_target" value="webgrade" />'; |
if (&Apache::lonnet::allowed('mgq',$env{'request.course.id'})) { |
if (&Apache::lonnet::allowed('mgq',$env{'request.course.id'})) { |
my ($entries,$ready,$locks)=&get_queue_counts('gradingqueue'); |
my ($entries,$ready,$locks)=&get_queue_counts('gradingqueue'); |
$result.='<p>Specify a section: '.$sec_select.'</p>'; |
$result.='<table><tr>'; |
$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.='<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="'. |
$result.= &mt("[_1] entries, [_2] ready, [_3] being graded",$entries,$ready,$locks).' </td></tr>'."\n"; |
&mt("Select an entry from the grading queue").'" /> </p>'."\n"; |
|
|
|
($entries,$ready,$locks)=&get_queue_counts('reviewqueue'); |
($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.='<tr><td>'. |
$result.=' <input type="submit" name="reviewasubmission" value="'. |
' <input type="submit" name="reviewasubmission" value="'. |
&mt("Select an entry from the review queue").'" /> </p>'."\n"; |
&mt("Select an entry from the review queue:").'" /> '; |
$result.=' <input type="submit" name="regradeasubmission" value="'. |
$result.=&mt("[_1] entries, [_2] ready, [_3] being graded", |
&mt("Select a user to regrade.").'" /> </p>'."\n"; |
$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(); |
|
$result.= '</p>'; |
} |
} |
return $result; |
return $result; |
} |
} |
Line 223 STUFF
|
Line 237 STUFF
|
|
|
if ($env{'request.enc'}) { $symb=&Apache::lonenc::encrypted($symb); } |
if ($env{'request.enc'}) { $symb=&Apache::lonenc::encrypted($symb); } |
$symb=&Apache::lonnet::escape($symb); |
$symb=&Apache::lonnet::escape($symb); |
$result.='<form method="POST" action="/adm/slotrequest">'. |
$result.='<form method="post" action="/adm/slotrequest">'. |
'<input type="hidden" name="symb" value="'.$symb.'" />'. |
'<input type="hidden" name="symb" value="'.$symb.'" />'. |
'<input type="hidden" name="command" value="'.$action.'" />'. |
'<input type="hidden" name="command" value="'.$action.'" />'. |
'<input type="submit" name="requestattempt" value="'. |
'<input type="submit" name="requestattempt" value="'. |
Line 245 sub preserve_grade_info {
|
Line 259 sub preserve_grade_info {
|
} |
} |
|
|
sub style { |
sub style { |
return (<<STYLE); |
my ($target) = @_; |
<style type="text/css"> |
if ($target eq 'web' |
.fail, .pass, .neutral { |
|| $target eq 'webgrade') { |
position: relative; |
return (<<STYLE); |
margin : 5px; |
<link rel="stylesheet" type="text/css" href="/res/adm/includes/task.css" /> |
margin-bottom :10px; |
|
padding : 4px; |
|
padding-left : 75px; |
|
border : thin solid; |
|
font-weight : bolder; |
|
font-size: smaller; |
|
font-family: Arial; |
|
background-color : rgb(255,240,225); |
|
} |
|
|
|
.fail h4, .pass h4 { |
|
position:absolute; |
|
left: -4px; |
|
top: -8px; |
|
padding:2px; |
|
margin:0; |
|
background-color : rgb(255,240,225); |
|
border : thin solid; |
|
} |
|
|
|
.fail { |
|
color: red; |
|
} |
|
|
|
.pass { |
|
color : green; |
|
} |
|
|
|
.neutral { |
|
color : blue; |
|
} |
|
|
|
.question { |
|
border : thin solid black; |
|
padding : 4px; |
|
margin-bottom : 1em; |
|
} |
|
|
|
.grade { |
|
font-size: x-large; |
|
font-family: Arial; |
|
position:absolute; |
|
left: 5px; |
|
top: -5px; |
|
width: 70px; |
|
} |
|
|
|
div#feedback h1 { |
|
color : inherit; |
|
} |
|
</style> |
|
STYLE |
STYLE |
|
} |
|
return; |
} |
} |
|
|
sub show_task { |
sub show_task { |
Line 358 sub submission_time_stamp {
|
Line 322 sub submission_time_stamp {
|
return $result; |
return $result; |
} |
} |
|
|
sub webgrade_standard_info { |
sub file_list { |
my ($version)=&get_version(); |
my ($files,$uname,$udom) = @_; |
my (undef,undef,$udom,$uname) = &Apache::lonxml::whichuser(); |
if (!defined($uname) || !defined($udom)) { |
|
(undef,undef,$udom,$uname) = &Apache::lonxml::whichuser(); |
|
} |
my $file_url = '/uploaded/'.$udom.'/'.$uname.'/portfolio/'; |
my $file_url = '/uploaded/'.$udom.'/'.$uname.'/portfolio/'; |
my $file_list="<ul>\n"; |
|
foreach my $partial_file (split(',',$Apache::lonhomework::history{"resource.$version.0.bridgetask.portfiles"})) { |
my $file_list="<ul class=\"LC_GRADING_handininfo\">\n"; |
|
foreach my $partial_file (split(',',$files)) { |
my $file=$file_url.$partial_file; |
my $file=$file_url.$partial_file; |
$file=~s|/+|/|g; |
$file=~s|/+|/|g; |
&Apache::lonnet::allowuploaded('/adm/bridgetask',$file); |
&Apache::lonnet::allowuploaded('/adm/bridgetask',$file); |
$file_list.='<li><nobr><a href="'.$file.'?rawmode=1" target="lonGRDs"><img src="'. |
$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"; |
'</a></nobr></li>'."\n"; |
} |
} |
$file_list.="</ul>\n"; |
$file_list.="</ul>\n"; |
|
return $file_list; |
|
} |
|
|
|
sub webgrade_standard_info { |
|
my ($version)=&get_version(); |
|
|
|
my $file_list = &file_list($Apache::lonhomework::history{"resource.$version.0.bridgetask.portfiles"}); |
|
|
my %lt=&Apache::lonlocal::texthash('done' => 'Done', |
my %lt=&Apache::lonlocal::texthash('done' => 'Next Item', |
'stop' => 'Stop', |
'stop' => 'Quit Grading', |
|
'fail' => 'Fail Rest', |
); |
); |
|
|
my $result=<<INFO; |
my $result=<<INFO; |
<div class="handininfo"> |
<div class="LC_GRADING_maincontrols"> |
<input type="submit" name="next" value="$lt{'done'}" /> |
<input type="submit" name="next" value="$lt{'done'}" /> |
<input type="submit" name="stop" value="$lt{'stop'}" /> |
<input type="submit" name="stop" value="$lt{'stop'}" /> |
|
<input type="button" name="fail" value="$lt{'fail'}" |
|
onclick="javascript:onFailRest()" /> |
|
</div> |
$file_list |
$file_list |
</div> |
|
INFO |
INFO |
return $result; |
return $result; |
} |
} |
Line 401 sub start_Task {
|
Line 378 sub start_Task {
|
} |
} |
|
|
$Apache::lonhomework::parsing_a_task=1; |
$Apache::lonhomework::parsing_a_task=1; |
#should get back a <html> or the neccesary stuff to start XML/MathML |
|
my ($result,$head_tag_start,$body_tag_start,$form_tag_start)= |
my $name; |
&Apache::structuretags::page_start($target,$token,$tagstack,$parstack,$parser,$safeeval); |
if ($target eq 'web' || $target eq 'webgrade') { |
|
$name = &Apache::structuretags::get_resource_name($parstack,$safeeval); |
|
} |
|
|
|
my ($result,$form_tag_start); |
|
if ($target eq 'web' || $target eq 'webgrade' || $target eq 'tex' |
|
|| $target eq 'edit') { |
|
($result,$form_tag_start) = |
|
&Apache::structuretags::page_start($target,$token,$tagstack, |
|
$parstack,$parser,$safeeval, |
|
$name,&style()); |
|
$result .= '<div class="LC_task">'."\n"; |
|
} |
|
|
if ($target eq 'web' && $env{'request.state'} ne 'construct') { |
if ($target eq 'web' && $env{'request.state'} ne 'construct') { |
if ($Apache::lonhomework::modifygrades) { |
if ($Apache::lonhomework::modifygrades) { |
$body_tag_start.='<form name="gradesubmission" method="POST" action="'; |
$result.='<form name="gradesubmission" method="post" action="'; |
my $uri=$env{'request.uri'}; |
my $uri=$env{'request.uri'}; |
if ($env{'request.enc'}) { $uri=&Apache::lonenc::encrypted($uri); } |
if ($env{'request.enc'}) { $uri=&Apache::lonenc::encrypted($uri); } |
$body_tag_start.=$uri.'">'.&add_grading_button()."</form>"; |
$result.=$uri.'">'.&add_grading_button()."</form>"; |
my $symb=&Apache::lonnet::symbread(); |
my $symb=&Apache::lonnet::symbread(); |
if (&Apache::lonnet::allowed('mgq',$env{'request.course.id'})) { |
if (&Apache::lonnet::allowed('mgq',$env{'request.course.id'})) { |
$body_tag_start.='<form method="POST" action="/adm/slotrequest">'. |
$result.='<form method="post" name="slotrequest" action="/adm/slotrequest">'. |
'<input type="hidden" name="symb" value="'.$symb.'" />'. |
'<input type="hidden" name="symb" value="'.$symb.'" />'. |
'<input type="hidden" name="command" value="showslots" />'. |
'<input type="hidden" name="command" value="showslots" />'. |
'<input type="submit" name="requestattempt" value="'. |
'<input type="submit" name="requestattempt" value="'. |
&mt('Show Slot list').'" />'. |
&mt('Show Slot list').'" />'. |
'</form>'; |
'</form>'; |
|
my $target_id = |
|
&Apache::lonstathelpers::make_target_id({symb => $symb, |
|
part => '0'}); |
|
$result.='<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>'; |
} |
} |
} |
} |
} |
} |
Line 436 sub start_Task {
|
Line 434 sub start_Task {
|
$expression.='$external::gradestatus="'.$Apache::lonhomework::history{"resource.$version.0.solved"}.'";'; |
$expression.='$external::gradestatus="'.$Apache::lonhomework::history{"resource.$version.0.solved"}.'";'; |
&Apache::run::run($expression,$safeeval); |
&Apache::run::run($expression,$safeeval); |
&Apache::lonxml::debug("Got $status"); |
&Apache::lonxml::debug("Got $status"); |
$body_tag_start.=&add_previous_version_button($status); |
$result.=&add_previous_version_button($status); |
if (!&show_task($status,$previous)) { |
if (!&show_task($status,$previous)) { |
my $bodytext=&Apache::lonxml::get_all_text("/task",$parser,$style); |
my $bodytext=&Apache::lonxml::get_all_text("/task",$parser,$style); |
if ( $target eq "web" ) { |
if ( $target eq "web" ) { |
$result.= $head_tag_start.'</head>'.$body_tag_start; |
|
if ($env{'request.state'} eq 'construct') { |
if ($env{'request.state'} eq 'construct') { |
$result.=$form_tag_start; |
$result.=$form_tag_start; |
} |
} |
Line 458 sub start_Task {
|
Line 455 sub start_Task {
|
} elsif ($env{'form.donescreen'}) { |
} elsif ($env{'form.donescreen'}) { |
my $title=&Apache::lonnet::gettitle(); |
my $title=&Apache::lonnet::gettitle(); |
my @files=split(',',$Apache::lonhomework::history{'resource.'.$version.'.0.bridgetask.portfiles'}); |
my @files=split(',',$Apache::lonhomework::history{'resource.'.$version.'.0.bridgetask.portfiles'}); |
my $files='<ul><li>'.join('</li><li>',@files).'</li></ul>'; |
my (undef,undef,$domain,$user)= |
|
&Apache::lonxml::whichuser(); |
|
my $files = '<ul>'; |
|
foreach my $file (@files) { |
|
my $url="/uploaded/$domain/$user/portfolio$file"; |
|
if (! &Apache::lonnet::stat_file($url)) { |
|
$file = &mt('<font color="red"> Nonexistant file:</font> <tt>[_1]</tt>',$file); |
|
} else { |
|
$file = '<tt>'.$file.'</tt>'; |
|
} |
|
$files .= '<li>'.$file.'</li>'; |
|
} |
|
$files.='</ul>'; |
|
|
$result.=<<DONESCREEN; |
$result.=<<DONESCREEN; |
<h2>$title</h2> |
<h2>$title</h2> |
<p> Files submitted: $files </p> |
<p> Files submitted: $files </p> |
Line 492 DONESCREEN
|
Line 502 DONESCREEN
|
} |
} |
} |
} |
} elsif ($target eq 'web') { |
} elsif ($target eq 'web') { |
my $name= &Apache::structuretags::get_resource_name($parstack,$safeeval); |
|
$result.="$head_tag_start<title>$name</title></head> |
|
$body_tag_start \n".&style(); |
|
|
|
$result.=&preserve_grade_info(); |
$result.=&preserve_grade_info(); |
$result.=&internal_location(); |
$result.=&internal_location(); |
$result.=$form_tag_start. |
$result.=$form_tag_start. |
Line 506 DONESCREEN
|
Line 513 DONESCREEN
|
$target eq 'webgrade') { |
$target eq 'webgrade') { |
my $webgrade='yes'; |
my $webgrade='yes'; |
if ($target eq 'webgrade') { |
if ($target eq 'webgrade') { |
$result.=$head_tag_start.$body_tag_start; |
$result.= "\n".'<div class="LC_GRADING_task">'."\n". |
|
'<script type="text/javascript" |
|
src="/res/adm/includes/task_grading.js"></script>'; |
#$result.='<br />Review'.&show_queue('reviewqueue'); |
#$result.='<br />Review'.&show_queue('reviewqueue'); |
#$result.='<br />Grade'.&show_queue('gradingqueue'); |
#$result.='<br />Grade'.&show_queue('gradingqueue'); |
} |
} |
Line 515 DONESCREEN
|
Line 524 DONESCREEN
|
# Hrrm, vaildation pass should perhaps say 'not_locked' |
# Hrrm, vaildation pass should perhaps say 'not_locked' |
# perhaps do a search if there is a key that is mine and if |
# perhaps do a search if there is a key that is mine and if |
# there isn't reshow the queue.... |
# 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) { |
if ($todo) { |
&setup_env_for_other_user($todo,$safeeval); |
&setup_env_for_other_user($todo,$safeeval); |
Line 528 DONESCREEN
|
Line 537 DONESCREEN
|
$Apache::bridgetask::queue_key=$todo; |
$Apache::bridgetask::queue_key=$todo; |
&Apache::structuretags::initialize_storage(); |
&Apache::structuretags::initialize_storage(); |
&Apache::lonhomework::showhash(%Apache::lonhomework::history); |
&Apache::lonhomework::showhash(%Apache::lonhomework::history); |
if ($target eq 'webgrade') { |
if ($target eq 'webgrade' && $status_code eq 'selected') { |
#$result.='<br />After -'.&show_queue($env{'form.queue'}); |
$form_tag_start.= |
$result.="\n".'<table width="100%" style="width:100%" border="1">'; |
'<input type="hidden" name="queuemode" value="selected" />'; |
if ($status_code eq 'selected') { |
|
$form_tag_start.= |
|
'<input type="hidden" name="queuemode" value="selected" />'; |
|
} |
|
} |
} |
} else { |
} else { |
if ($target eq 'webgrade') { |
if ($target eq 'webgrade') { |
Line 544 DONESCREEN
|
Line 549 DONESCREEN
|
if ($status_code eq 'stop') { |
if ($status_code eq 'stop') { |
$result.='<b>'.&mt("Stopped grading.").'</b>'.$back; |
$result.='<b>'.&mt("Stopped grading.").'</b>'.$back; |
} elsif ($status_code eq 'lock_failed') { |
} 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; |
.'</b>'.$back; |
} elsif ($status_code eq 'unlock') { |
} elsif ($status_code eq 'unlock') { |
$result.='<b>'.&mt("Unlocked the requested record.") |
$result.='<b>'.&mt("Unlocked the requested record.") |
Line 556 DONESCREEN
|
Line 561 DONESCREEN
|
$result.=&select_user(); |
$result.=&select_user(); |
} elsif ($status_code eq 'unable') { |
} elsif ($status_code eq 'unable') { |
$result.='<b>'.&mt("Unable to aqcuire a user to grade.").'</b>'.$back; |
$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 { |
} else { |
$result.='<b>'.&mt("No user to be graded.").'</b>'.$back; |
$result.='<b>'.&mt("No user to be graded.").'</b>'.$back; |
} |
} |
Line 586 DONESCREEN
|
Line 593 DONESCREEN
|
} |
} |
if ($webgrade eq 'yes') { $result.=&webgrade_standard_info(); } |
if ($webgrade eq 'yes') { $result.=&webgrade_standard_info(); } |
} |
} |
|
if ($target eq 'webgrade') { |
|
$result.="\n".'<div id="LC_GRADING_criterialist">'; |
|
} |
} elsif ($target eq 'edit') { |
} elsif ($target eq 'edit') { |
$result.=$head_tag_start."</head>".$body_tag_start.$form_tag_start. |
$result.=$form_tag_start. |
&Apache::structuretags::problem_edit_header(); |
&Apache::structuretags::problem_edit_header(); |
$Apache::lonxml::warnings_error_header= |
$Apache::lonxml::warnings_error_header= |
&mt("Editor Errors - these errors might not effect the running of the problem, but they will likely cause problems with further use of the Edit mode. Please use the EditXML mode to fix these errors.")."<br />"; |
&mt("Editor Errors - these errors might not effect the running of the problem, but they will likely cause problems with further use of the Edit mode. Please use the EditXML mode to fix these errors.")."<br />"; |
Line 622 sub get_key_todo {
|
Line 632 sub get_key_todo {
|
return (undef,'select_user'); |
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'}; |
my $queue=$env{'form.queue'}; |
|
|
if (!defined($queue)) { |
if (!defined($queue)) { |
Line 649 sub get_key_todo {
|
Line 710 sub get_key_todo {
|
&& $env{'form.queuemode'} eq 'selected') { |
&& $env{'form.queuemode'} eq 'selected') { |
|
|
my $who=&queue_key_locked($queue,$gradingkey); |
my $who=&queue_key_locked($queue,$gradingkey); |
my $me=$env{'user.name'}.'@'.$env{'user.domain'}; |
|
if ($who eq $me) { |
if ($who eq $me) { |
&Apache::lonxml::debug("Found a key was given to me"); |
&Apache::lonxml::debug("Found a key was given to me"); |
return ($gradingkey,'selected'); |
return ($gradingkey,'selected'); |
Line 729 sub end_Task {
|
Line 789 sub end_Task {
|
&show_task($status,$previous)) { |
&show_task($status,$previous)) { |
$result.=&Apache::inputtags::gradestatus('0'); |
$result.=&Apache::inputtags::gradestatus('0'); |
$result.='</form>'; |
$result.='</form>'; |
|
my $action = &Apache::lonenc::check_encrypt($env{'request.uri'}); |
$result.=<<DONEBUTTON; |
$result.=<<DONEBUTTON; |
<form method="POST"> |
<form name="done" method="post" action="$action"> |
<input type="hidden" name="donescreen" value="1" /> |
<input type="hidden" name="donescreen" value="1" /> |
<input type="submit" value="Done" /> |
<input type="submit" value="Done" /> |
</form> |
</form> |
Line 747 DONEBUTTON
|
Line 808 DONEBUTTON
|
my $start_time= |
my $start_time= |
&Apache::lonlocal::locallocaltime($slot{'starttime'}); |
&Apache::lonlocal::locallocaltime($slot{'starttime'}); |
|
|
my $status = "\n<div class='$bt_status'>\n"; |
my $status = "\n<div class='LC_$bt_status LC_criteria'>\n"; |
|
|
if ($bt_status eq 'pass') { |
if ($bt_status eq 'pass') { |
$status.='<h2>You passed the '.$title.' given on '. |
$status.='<h2>You passed the '.$title.' given on '. |
Line 777 DONEBUTTON
|
Line 838 DONEBUTTON
|
my $opt_req=&Apache::lonxml::get_param('OptionalRequired', |
my $opt_req=&Apache::lonxml::get_param('OptionalRequired', |
$parstack,$safeeval); |
$parstack,$safeeval); |
if ($opt_req !~ /\S/) { $opt_req='0'; } |
if ($opt_req !~ /\S/) { $opt_req='0'; } |
$status.="\n<p>".&mt('You needed to pass all of the [_1] mandatory components and [_2] of the [_3] optional components, of which you were required to pass [_4] on the bridge task.',$man_count,$opt_passed,$opt_count,$opt_req)."</p></div>\n"; |
$status.="\n<p>".&mt('You needed to pass all of the [_1] mandatory components and [_2] of the [_3] optional components, of which you passed [_4].',$man_count,$opt_req,$opt_count,$opt_passed)."</p></div>\n"; |
|
|
my $internal_location=&internal_location(); |
my $internal_location=&internal_location(); |
$result=~s/\Q$internal_location\E/$status/; |
$result=~s/\Q$internal_location\E/$status/; |
} |
} |
} |
} |
if ($target eq 'web' || $target eq 'webgrade') { |
if ($target eq 'web') { |
$result.=&Apache::lonxml::xmlend().'</html>'; |
$result.="\n</div>\n". |
|
&Apache::loncommon::end_page({'discussion' => 1}); |
} |
} |
} |
} |
if ($target eq 'grade' && !$env{'form.webgrade'} && !$previous) { |
if ($target eq 'grade' && !$env{'form.webgrade'} && !$previous) { |
Line 846 DONEBUTTON
|
Line 908 DONEBUTTON
|
} |
} |
&Apache::lonxml::debug("all dim ".join(':',@Apache::bridgetask::dimensionlist)."results -> m_f $mandatory_failed o_p $optional_passed u $ungraded r $review"); |
&Apache::lonxml::debug("all dim ".join(':',@Apache::bridgetask::dimensionlist)."results -> m_f $mandatory_failed o_p $optional_passed u $ungraded r $review"); |
$Apache::lonhomework::results{'resource.0.regrader'}= |
$Apache::lonhomework::results{'resource.0.regrader'}= |
$env{'user.name'}.'@'.$env{'user.domain'}; |
$env{'user.name'}.':'.$env{'user.domain'}; |
if ($review) { |
if ($review) { |
$Apache::lonhomework::results{"resource.$version.0.status"}='review'; |
$Apache::lonhomework::results{"resource.$version.0.status"}='review'; |
if ($env{'form.queue'} eq 'reviewqueue') { |
if ($env{'form.queue'} eq 'reviewqueue') { |
Line 914 DONEBUTTON
|
Line 976 DONEBUTTON
|
&Apache::structuretags::finalize_storage(); |
&Apache::structuretags::finalize_storage(); |
} |
} |
} elsif ($target eq 'webgrade') { |
} elsif ($target eq 'webgrade') { |
$result.="</table>\n<hr />"; |
$result.="</div>"; |
#$result.='<input type="submit" name="next" value="'. |
#$result.='<input type="submit" name="next" value="'. |
# &mt('Save & Next').'" /> '; |
# &mt('Save & Next').'" /> '; |
#$result.='<input type="submit" name="end" value="'. |
#$result.='<input type="submit" name="end" value="'. |
Line 923 DONEBUTTON
|
Line 985 DONEBUTTON
|
# &mt('Throw Away & Stop Grading').'" /> '; |
# &mt('Throw Away & Stop Grading').'" /> '; |
#$result.='<input type="submit" name="save" value="'. |
#$result.='<input type="submit" name="save" value="'. |
# &mt('Save Partial Grade and Continue Grading').'" /> '; |
# &mt('Save Partial Grade and Continue Grading').'" /> '; |
$result.='</form>'.&Apache::loncommon::endbodytag().'</html>'; |
$result.='</form>'."\n</div>\n</div>\n". |
|
&Apache::loncommon::end_page(); |
} elsif ($target eq 'meta') { |
} elsif ($target eq 'meta') { |
$result.=&Apache::response::meta_package_write('Task'); |
$result.=&Apache::response::meta_package_write('Task'); |
$result.=&Apache::response::meta_stores_write('solved','string', |
$result.=&Apache::response::meta_stores_write('solved','string', |
Line 961 sub check_queue_unlock {
|
Line 1024 sub check_queue_unlock {
|
if ($queue eq 'none') { return 'ok'; } |
if ($queue eq 'none') { return 'ok'; } |
my ($symb,$cid,$udom,$uname)=&Apache::lonxml::whichuser(); |
my ($symb,$cid,$udom,$uname)=&Apache::lonxml::whichuser(); |
if (!defined($key)) { |
if (!defined($key)) { |
$key="$symb\0queue\0$uname\@$udom"; |
$key="$symb\0queue\0$uname:$udom"; |
} |
} |
my $cnum=$env{'course.'.$cid.'.num'}; |
my $cnum=$env{'course.'.$cid.'.num'}; |
my $cdom=$env{'course.'.$cid.'.domain'}; |
my $cdom=$env{'course.'.$cid.'.domain'}; |
my $me=$env{'user.name'}.'@'.$env{'user.domain'}; |
my $me=$env{'user.name'}.':'.$env{'user.domain'}; |
my $who=&queue_key_locked($queue,$key,$cdom,$cnum); |
my $who=&queue_key_locked($queue,$key,$cdom,$cnum); |
if ($who eq $me) { |
if ($who eq $me) { |
return &Apache::lonnet::del($queue,["$key\0locked"],$cdom,$cnum); |
return &Apache::lonnet::del($queue,["$key\0locked"],$cdom,$cnum); |
Line 1028 sub get_queue_data {
|
Line 1091 sub get_queue_data {
|
my ($symb,$cid,$udom,$uname)=&Apache::lonxml::whichuser(); |
my ($symb,$cid,$udom,$uname)=&Apache::lonxml::whichuser(); |
my $cnum=$env{'course.'.$cid.'.num'}; |
my $cnum=$env{'course.'.$cid.'.num'}; |
my $cdom=$env{'course.'.$cid.'.domain'}; |
my $cdom=$env{'course.'.$cid.'.domain'}; |
my $todo="$symb\0queue\0$uname\@$udom"; |
my $todo="$symb\0queue\0$uname:$udom"; |
my ($key,$value)=&Apache::lonnet::get($queue,[$todo],$cdom,$cnum); |
my ($key,$value)=&Apache::lonnet::get($queue,[$todo],$cdom,$cnum); |
if ($key eq $todo && ref($value)) { |
if ($key eq $todo && ref($value)) { |
return $value; |
return $value; |
Line 1074 sub add_to_queue {
|
Line 1137 sub add_to_queue {
|
my $cnum=$env{'course.'.$cid.'.num'}; |
my $cnum=$env{'course.'.$cid.'.num'}; |
my $cdom=$env{'course.'.$cid.'.domain'}; |
my $cdom=$env{'course.'.$cid.'.domain'}; |
my %data; |
my %data; |
$data{"$symb\0queue\0$uname\@$udom"}=$user_data; |
$data{"$symb\0queue\0$uname:$udom"}=$user_data; |
return &Apache::lonnet::cput($queue,\%data,$cdom,$cnum); |
return &Apache::lonnet::cput($queue,\%data,$cdom,$cnum); |
} |
} |
|
|
Line 1101 sub show_queue {
|
Line 1164 sub show_queue {
|
if ($tmp=~/^error: 2 /) { |
if ($tmp=~/^error: 2 /) { |
return "\n<h3>Current Queue - $queue</h3><table border='1'><tr><td>Empty</td></tr></table>"; |
return "\n<h3>Current Queue - $queue</h3><table border='1'><tr><td>Empty</td></tr></table>"; |
} |
} |
$result.="\n<h3>Current Queue - $symb $queue </h3><table border='1'><tr>"; |
my $title=&Apache::lonnet::gettitle($symb); |
if ($with_selects) { $result.="<th></th>"; } |
$result.="\n<h3>Current Queue - $title $queue </h3><table border='1'><tr>"; |
$result.="<th>resource</th><th>user</th><th>type</th><th>data</th></tr>"; |
if ($with_selects) { $result.="<th>Status</th><th></th>"; } |
|
$result.="<th>user</th><th>data</th></tr>"; |
foreach my $key (sort(keys(%queue))) { |
foreach my $key (sort(keys(%queue))) { |
my ($symb,$uname,$udom) = &decode_queue_key($key); |
my ($symb,$uname,$udom) = &decode_queue_key($key); |
if (!defined($classlist->{$uname.':'.$udom})) { next; } |
if (!defined($classlist->{$uname.':'.$udom})) { next; } |
if ($key=~/locked$/ && !$with_selects) { |
if ($key=~/locked$/ && !$with_selects) { |
my $title=&Apache::lonnet::gettitle($symb); |
$result.="<tr><td>$uname</td>"; |
$result.="<tr><td>$title</td><td>$uname</td>"; |
$result.='<td>'.$queue{$key}.'</td></tr>'; |
$result.='<td>lock</td><td>'.$queue{$key}.'</td></tr>'; |
|
} elsif ($key=~/timestamp$/ && !$with_selects) { |
} elsif ($key=~/timestamp$/ && !$with_selects) { |
my ($symb,undef) = split("\0",$key); |
$result.="<tr><td></td>"; |
my $title=&Apache::lonnet::gettitle($symb); |
$result.='<td>'. |
$result.="<tr><td>$title</td><td></td>"; |
|
$result.='<td>last queue modification time</td><td>'. |
|
&Apache::lonlocal::locallocaltime($queue{$key})."</td></tr>"; |
&Apache::lonlocal::locallocaltime($queue{$key})."</td></tr>"; |
} elsif ($key!~/(timestamp|locked)$/) { |
} elsif ($key!~/(timestamp|locked)$/) { |
my $title=&Apache::lonnet::gettitle($symb); |
|
$result.="<tr>"; |
$result.="<tr>"; |
my $slot=$queue{$key}->[0]; |
my $slot=$queue{$key}->[0]; |
my %slot_data=&Apache::lonnet::get_slot($slot); |
my %slot_data=&Apache::lonnet::get_slot($slot); |
if ($with_selects) { |
if ($with_selects) { |
my $ekey=&Apache::lonnet::escape($key); |
my $ekey=&Apache::lonnet::escape($key); |
my ($action,$description)=('select',&mt('Select')); |
my ($action,$description,$status)=('select',&mt('Select')); |
if (exists($queue{"$key\0locked"})) { |
if (exists($queue{"$key\0locked"})) { |
my $me=$env{'user.name'}.'@'.$env{'user.domain'}; |
my $me=$env{'user.name'}.':'.$env{'user.domain'}; |
|
$status=&mt('Locked by <tt>[_1]</tt>',$queue{"$key\0locked"}); |
if ($me eq $queue{"$key\0locked"}) { |
if ($me eq $queue{"$key\0locked"}) { |
($action,$description)=('resume',&mt('Resume')); |
($action,$description)=('resume',&mt('Resume')); |
} else { |
} else { |
Line 1140 sub show_queue {
|
Line 1201 sub show_queue {
|
} |
} |
if (time > $slot_data{'endtime'}) { |
if (time > $slot_data{'endtime'}) { |
$result.=(<<FORM); |
$result.=(<<FORM); |
|
<td>$status</td> |
<td> |
<td> |
<form method="POST"> |
<form style="display: inline" method="post"> |
<input type="hidden" name="gradingkey" value="$ekey" /> |
<input type="hidden" name="gradingkey" value="$ekey" /> |
<input type="hidden" name="queue" value="$queue" /> |
<input type="hidden" name="queue" value="$queue" /> |
<input type="hidden" name="gradingaction" value="$action" /> |
<input type="hidden" name="gradingaction" value="$action" /> |
Line 1157 FORM
|
Line 1219 FORM
|
$result.='<td>'.&mt("In Progress").'</td>' |
$result.='<td>'.&mt("In Progress").'</td>' |
} |
} |
} |
} |
$result.="<td>$title</td><td>$uname</td>"; |
$result.= "<td>".$fullname->{$uname.':'.$udom}. |
$result.='<td>queue entry</td><td>Slot: '.$slot.' End time: '. |
" <tt>($uname:$udom)</tt> </td>"; |
|
$result.='<td>Slot: '.$slot.' End time: '. |
&Apache::lonlocal::locallocaltime($slot_data{'endtime'}). |
&Apache::lonlocal::locallocaltime($slot_data{'endtime'}). |
"</td></tr>"; |
"</td></tr>"; |
} |
} |
Line 1180 sub get_queue_counts {
|
Line 1243 sub get_queue_counts {
|
return (0,0,0); |
return (0,0,0); |
} |
} |
my ($entries,$ready_to_grade,$locks)=(0,0,0); |
my ($entries,$ready_to_grade,$locks)=(0,0,0); |
|
my %slot_cache; |
foreach my $key (sort(keys(%queue))) { |
foreach my $key (sort(keys(%queue))) { |
if ($key=~/locked$/) { |
if ($key=~/locked$/) { |
$locks++; |
$locks++; |
Line 1189 sub get_queue_counts {
|
Line 1253 sub get_queue_counts {
|
my ($symb,$uname,$udom) = &decode_queue_key($key); |
my ($symb,$uname,$udom) = &decode_queue_key($key); |
$entries++; |
$entries++; |
my $slot=$queue{$key}->[0]; |
my $slot=$queue{$key}->[0]; |
my %slot_data=&Apache::lonnet::get_slot($slot); |
if (!exists($slot_cache{$slot})) { |
if (time > $slot_data{'endtime'}) { |
my %slot_data=&Apache::lonnet::get_slot($slot); |
|
$slot_cache{$slot} = \%slot_data; |
|
} |
|
if (time > $slot_cache{$slot}{'endtime'}) { |
$ready_to_grade++; |
$ready_to_grade++; |
} |
} |
} |
} |
Line 1200 sub get_queue_counts {
|
Line 1267 sub get_queue_counts {
|
|
|
sub encode_queue_key { |
sub encode_queue_key { |
my ($symb,$udom,$uname)=@_; |
my ($symb,$udom,$uname)=@_; |
return "$symb\0queue\0$uname\@$udom"; |
return "$symb\0queue\0$uname:$udom"; |
} |
} |
|
|
sub decode_queue_key { |
sub decode_queue_key { |
my ($key)=@_; |
my ($key)=@_; |
my ($symb,undef,$user) = split("\0",$key); |
my ($symb,undef,$user) = split("\0",$key); |
my ($uname,$udom) = split('@',$user); |
my ($uname,$udom) = split(':',$user); |
return ($symb,$uname,$udom); |
return ($symb,$uname,$udom); |
} |
} |
|
|
Line 1227 sub queue_key_locked {
|
Line 1294 sub queue_key_locked {
|
|
|
sub pick_from_queue_data { |
sub pick_from_queue_data { |
my ($queue,$check_section,$queuedata,$cdom,$cnum)=@_; |
my ($queue,$check_section,$queuedata,$cdom,$cnum)=@_; |
|
my @possible; # will hold queue entries that are valid to be selected |
foreach my $key (keys(%$queuedata)) { |
foreach my $key (keys(%$queuedata)) { |
if ($key =~ /\0locked$/) { next; } |
if ($key =~ /\0locked$/) { next; } |
if ($key =~ /\0timestamp$/) { next; } |
if ($key =~ /\0timestamp$/) { next; } |
Line 1244 sub pick_from_queue_data {
|
Line 1312 sub pick_from_queue_data {
|
&Apache::lonxml::debug("not time"); |
&Apache::lonxml::debug("not time"); |
next; |
next; |
} |
} |
if (&queue_key_locked($queue,$key,$cdom,$cnum)) { |
if (exists($queuedata->{"$key\0locked"})) { |
&Apache::lonxml::debug("someone already has um."); |
&Apache::lonxml::debug("someone already has um."); |
next; |
next; |
} |
} |
return $key; |
push(@possible,[$key,$slot_data{'endtime'}]); |
|
} |
|
if (@possible) { |
|
# sort entries in order by slot end time |
|
@possible = sort { $a->[1] <=> $b->[1] } @possible; |
|
# pick one of the entries in the top 10% in small queues and one |
|
# of the first ten entries in large queues |
|
#my $ten_percent = int($#possible * 0.1); |
|
#if ($ten_percent < 1 ) { $ten_percent = 1; } |
|
#if ($ten_percent > 10) { $ten_percent = 10; } |
|
#my $max=($#possible < $ten_percent) ? $#possible : $ten_percent; |
|
|
|
#return $possible[int(rand($max))][0]; |
|
return $possible[0][0]; |
} |
} |
return undef; |
return undef; |
} |
} |
Line 1256 sub pick_from_queue_data {
|
Line 1337 sub pick_from_queue_data {
|
sub find_mid_grade { |
sub find_mid_grade { |
my ($queue,$symb,$cdom,$cnum)=@_; |
my ($queue,$symb,$cdom,$cnum)=@_; |
my $todo=&Apache::lonnet::unescape($env{'form.gradingkey'}); |
my $todo=&Apache::lonnet::unescape($env{'form.gradingkey'}); |
my $me=$env{'user.name'}.'@'.$env{'user.domain'}; |
my $me=$env{'user.name'}.':'.$env{'user.domain'}; |
if ($todo) { |
if ($todo) { |
my $who=&queue_key_locked($queue,$todo,$cdom,$cnum); |
my $who=&queue_key_locked($queue,$todo,$cdom,$cnum); |
if ($who eq $me) { return $todo; } |
if ($who eq $me) { return $todo; } |
Line 1276 sub find_mid_grade {
|
Line 1357 sub find_mid_grade {
|
|
|
sub lock_key { |
sub lock_key { |
my ($queue,$todo)=@_; |
my ($queue,$todo)=@_; |
my $me=$env{'user.name'}.'@'.$env{'user.domain'}; |
my $me=$env{'user.name'}.':'.$env{'user.domain'}; |
my (undef,$cid)=&Apache::lonxml::whichuser(); |
my (undef,$cid)=&Apache::lonxml::whichuser(); |
my $cnum=$env{'course.'.$cid.'.num'}; |
my $cnum=$env{'course.'.$cid.'.num'}; |
my $cdom=$env{'course.'.$cid.'.domain'}; |
my $cdom=$env{'course.'.$cid.'.domain'}; |
Line 1330 sub get_from_queue {
|
Line 1411 sub get_from_queue {
|
$cdom,$cnum); |
$cdom,$cnum); |
&Apache::lonxml::debug("$starttime"); |
&Apache::lonxml::debug("$starttime"); |
my $regexp="^$symb\0queue\0"; |
my $regexp="^$symb\0queue\0"; |
|
my $range= ($attempts < 1 ) ? '0-100' : '0-400'; |
|
|
my %queue=&Apache::lonnet::dump($queue,$cdom,$cnum,$regexp); |
my %queue=&Apache::lonnet::dump($queue,$cdom,$cnum,$regexp); |
#make a pass looking for a user _not_ in my section |
#make a pass looking for a user _not_ in my section |
if ($env{'request.course.sec'}) { |
if ($env{'request.course.sec'}) { |
Line 1342 sub get_from_queue {
|
Line 1425 sub get_from_queue {
|
# ready for grading |
# ready for grading |
if (!$todo) { |
if (!$todo) { |
&Apache::lonxml::debug("no sce"); |
&Apache::lonxml::debug("no sce"); |
$todo=&pick_from_queue_data($queue,$env{'request.course.sec'}, |
$todo=&pick_from_queue_data($queue,undef,\%queue,$cdom,$cnum); |
\%queue,$cdom,$cnum); |
|
&Apache::lonxml::debug("no sce $todo"); |
&Apache::lonxml::debug("no sce $todo"); |
} |
} |
# no user to grade |
# no user to grade |
Line 1430 sub select_user {
|
Line 1512 sub select_user {
|
$seclist.='<input type="hidden" name="chosensections" |
$seclist.='<input type="hidden" name="chosensections" |
value="'.$sec.'" />'; |
value="'.$sec.'" />'; |
} |
} |
|
my $studentdis = $student; |
|
$studentdis =~ tr/:/@/; |
$result.=<<RESULT; |
$result.=<<RESULT; |
<tr> |
<tr> |
<td> |
<td> |
<form method="POST"> |
<form style="display: inline" method="post"> |
<input type="hidden" name="gradingkey" value="$todo" /> |
<input type="hidden" name="gradingkey" value="$todo" /> |
<input type="hidden" name="queue" value="$queue" /> |
<input type="hidden" name="queue" value="$queue" /> |
<input type="hidden" name="webgrade" value="no" /> |
<input type="hidden" name="webgrade" value="no" /> |
Line 1441 sub select_user {
|
Line 1525 sub select_user {
|
<input type="submit" name="submit" value="Regrade" /> |
<input type="submit" name="submit" value="Regrade" /> |
$seclist |
$seclist |
</form> |
</form> |
<td>$fullname->{$student}</td> |
<td>$fullname->{$student} <tt>($studentdis)</tt></td> |
<td> |
<td> |
RESULT |
RESULT |
} |
} |
Line 1461 RESULT
|
Line 1545 RESULT
|
if ($status{'version'}) { |
if ($status{'version'}) { |
$result .= ' '.&mt('Version').' '.$status{'version'}; |
$result .= ' '.&mt('Version').' '.$status{'version'}; |
} |
} |
|
if ($status{'grader'}) { |
|
$result .= ' '.&mt('(Graded by [_1])',$status{'grader'}).' '; |
|
} |
$result.= '</td><td>'; |
$result.= '</td><td>'; |
if ($status{'reviewqueue'} eq 'enqueued') { |
if ($status{'reviewqueue'} eq 'enqueued') { |
$result .= &mt('Awaiting Review'); |
$result .= &mt('Awaiting Review'); |
Line 1584 sub get_instance {
|
Line 1671 sub get_instance {
|
|
|
{ |
{ |
my $last_link; |
my $last_link; |
|
sub link { |
|
my ($instance,$id) = @_; |
|
return 'LC_GRADING_criteria_'.$instance.'_'.$id; |
|
} |
sub end_Dimension { |
sub end_Dimension { |
my ($target,$token,$tagstack,$parstack,$parser,$safeeval)=@_; |
my ($target,$token,$tagstack,$parstack,$parser,$safeeval)=@_; |
my $result=&Apache::lonxml::endredirection(); |
my $result=&Apache::lonxml::endredirection(); |
Line 1608 sub get_instance {
|
Line 1699 sub get_instance {
|
if ($Apache::bridgetask::dimensionmandatory{$dim} eq 'N') { |
if ($Apache::bridgetask::dimensionmandatory{$dim} eq 'N') { |
$mandatory='Optional'; |
$mandatory='Optional'; |
} |
} |
my $dim_info="<div class='$dim_status'>\n"; |
my $dim_info="<div class='LC_$dim_status LC_question_grade'>\n"; |
if ($dim_status eq 'pass') { |
if ($dim_status eq 'pass') { |
$dim_info.='<h3>Question : you passed this '.$mandatory.' question</h3>'; |
$dim_info.='<h3>Question : you passed this '.$mandatory.' question</h3>'; |
} |
} |
Line 1658 sub get_instance {
|
Line 1749 sub get_instance {
|
my $status_display=$status; |
my $status_display=$status; |
$status_display=~s/^([a-z])/uc($1)/e; |
$status_display=~s/^([a-z])/uc($1)/e; |
@Apache::scripttag::parser_env = @_; |
@Apache::scripttag::parser_env = @_; |
$result.='<div class="'.$status.'"><h4>'.$mandatory. |
$result.= |
' Criteria</h4><p>'; |
'<div class="LC_'.$status.' LC_criteria"><h4>' |
|
.$mandatory.' Criteria</h4><p>'; |
@Apache::scripttag::parser_env = @_; |
@Apache::scripttag::parser_env = @_; |
$result.=&Apache::scripttag::xmlparse($dimension{$instance.'.criteria.'.$id}); |
$result.=&Apache::scripttag::xmlparse($dimension{$instance.'.criteria.'.$id}); |
$result.='</p><p class="grade">'.$status_display.'</p>'; |
$result.='</p><p class="LC_grade">'.$status_display.'</p>'; |
if ($Apache::lonhomework::history{"resource.$version.0.$dim.$instance.$id.comment"}) { |
if ($Apache::lonhomework::history{"resource.$version.0.$dim.$instance.$id.comment"}) { |
$result.='<p class="comment">'.$Apache::lonhomework::history{"resource.$version.0.$dim.$instance.$id.comment"}.'</p>'; |
$result.='<p class="LC_comment">'.&mt('Comment: [_1]',$Apache::lonhomework::history{"resource.$version.0.$dim.$instance.$id.comment"}).'</p>'; |
} |
} |
$result.='</div>'; |
$result.='</div>'; |
} |
} |
Line 1677 sub get_instance {
|
Line 1769 sub get_instance {
|
@Apache::scripttag::parser_env = @_; |
@Apache::scripttag::parser_env = @_; |
&Apache::scripttag::xmlparse($dimension{$instance.'.text'}); |
&Apache::scripttag::xmlparse($dimension{$instance.'.text'}); |
foreach my $id (@{$dimension{$instance.'.criterias'}}) { |
foreach my $id (@{$dimension{$instance.'.criterias'}}) { |
my $link='criteria_'.$instance.'_'.$id; |
my $link=&link($instance,$id); |
my $status=$Apache::lonhomework::history{"resource.$version.0.$dim.$instance.$id.status"}; |
my $status=$Apache::lonhomework::history{"resource.$version.0.$dim.$instance.$id.status"}; |
$result.='<tr><td width="100%" valign="top">'. |
$result.='<div class="LC_GRADING_criteria" id="'.$link.'">'."\n". |
'<a name="'.$link.'" />'. |
'<div class="LC_GRADING_criteriatext" id="next_'.$last_link.'">'."\n"; |
'<a name="next_'.$last_link.'" />'. |
|
'<br /><textarea enabled="false" style="width:100%" rows="8" width="25" wrap="hard">'; |
|
@Apache::scripttag::parser_env = @_; |
@Apache::scripttag::parser_env = @_; |
$result.=&Apache::scripttag::xmlparse($dimension{$instance.'.criteria.'.$id}); |
$result.=&Apache::scripttag::xmlparse($dimension{$instance.'.criteria.'.$id}); |
$result.='</textarea>'. |
$result.='</div>'."\n". |
#$dimension{$instance.'.criteria.'.$id}. |
#$dimension{$instance.'.criteria.'.$id}. |
'</td>'. |
'<div class="LC_GRADING_grade">'."\n". |
'<td><nobr>Additional Comment for Student</nobr> <br />'. |
'<label class="LC_GRADING_ungraded"><input type="radio" name="HWVAL_'.$link.'" value="ungraded" '.($status eq 'ungraded' || !$status ? 'checked="checked"':'').' />'.&mt('Ungraded').'</label>'."\n". |
'<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>'. |
'<label class="LC_GRADING_fail"><input type="radio" name="HWVAL_'.$link.'" value="fail" '.($status eq 'fail' ? 'checked="checked"':'').' />'.&mt('Fail').'</label>'."\n". |
'</td>'. |
'<label class="LC_GRADING_pass"><input type="radio" name="HWVAL_'.$link.'" value="pass" '.($status eq 'pass' ? 'checked="checked"':'').' />'.&mt('Pass').'</label>'."\n". |
'<td>'. |
'<label class="LC_GRADING_review"><input type="radio" name="HWVAL_'.$link.'" value="review" '.($status eq 'review' ? 'checked="checked"':'').' />'.&mt('Review').'</label>'."\n". |
'<nobr><label><input type="radio" name="HWVAL_'.$link.'" value="ungraded" '.($status eq 'ungraded' || !$status ? 'checked="checked"':'').' />'.&mt('Ungraded').'</label></nobr><br />'. |
'</div>'."\n". |
'<label><input type="radio" name="HWVAL_'.$link.'" value="pass" '.($status eq 'pass' ? 'checked="checked"':'').' />'.&mt('Pass').'</label><br />'. |
'<label class="LC_GRADING_comment">'.&mt('Additional Comment for Student')."\n". |
'<label><input type="radio" name="HWVAL_'.$link.'" value="fail" '.($status eq 'fail' ? 'checked="checked"':'').' />'.&mt('Fail').'</label><br />'. |
'<textarea class="LC_GRADING_comment_area" name="HWVAL_comment_'.$link.'">'.&HTML::Entities::encode($Apache::lonhomework::history{"resource.$version.0.$dim.$instance.$id.comment"}).'</textarea>'."\n". |
'<label><input type="radio" name="HWVAL_'.$link.'" value="review" '.($status eq 'review' ? 'checked="checked"':'').' />'.&mt('Review').'</label><br />'. |
'</label>'."\n". |
'</td>'. |
'<ul class="LC_GRADING_navbuttons">'."\n". |
'<td>'. |
'<li><a href="#'.$last_link.'">Prev</a></li>'."\n". |
'<a href="#'.$last_link.'">Prev</a><br />'. |
'<li><a href="#next_'.$link.'">Next</a></li>'."\n". |
'<a href="#next_'.$link.'">Next</a><br /><br /><br />'. |
'</ul>'."\n". |
'</td></tr>'; |
'</div>'."\n"; |
|
$result.=&grading_history($version,$dim,$instance,$id); |
$last_link=$link; |
$last_link=$link; |
} |
} |
} elsif ($target eq 'grade' && $env{'form.webgrade'}) { |
} elsif ($target eq 'grade' && $env{'form.webgrade'}) { |
Line 1709 sub get_instance {
|
Line 1800 sub get_instance {
|
my $ungraded=0; |
my $ungraded=0; |
my $review=0; |
my $review=0; |
foreach my $id (@{$dimension{$instance.'.criterias'}}) { |
foreach my $id (@{$dimension{$instance.'.criterias'}}) { |
my $status=$Apache::lonhomework::results{"resource.$version.0.$dim.$instance.$id.status"}=$env{'form.HWVAL_criteria_'.$instance.'_'.$id}; |
my $link=&link($instance,$id); |
$Apache::lonhomework::results{"resource.$version.0.$dim.$instance.$id.comment"}=$env{'form.HWVAL_comment_criteria_'.$instance.'_'.$id}; |
my $status=$Apache::lonhomework::results{"resource.$version.0.$dim.$instance.$id.status"}=$env{'form.HWVAL_'.$link}; |
|
$Apache::lonhomework::results{"resource.$version.0.$dim.$instance.$id.comment"}=$env{'form.HWVAL_comment_'.$link}; |
my $mandatory=($dimension{$instance.'.criteria.'.$id.'.mandatory'} ne 'N'); |
my $mandatory=($dimension{$instance.'.criteria.'.$id.'.mandatory'} ne 'N'); |
if ($status eq 'pass') { |
if ($status eq 'pass') { |
if (!$mandatory) { $optional_passed++; } |
if (!$mandatory) { $optional_passed++; } |
Line 1749 sub get_instance {
|
Line 1841 sub get_instance {
|
} |
} |
} |
} |
|
|
|
sub grading_history { |
|
my ($version,$dim,$instance,$criteria) = @_; |
|
if (!&Apache::lonnet::allowed('mgq',$env{'request.course.id'})) { |
|
return ''; |
|
} |
|
my ($result,$grader); |
|
my $scope="resource.$version.0.$dim.$instance.$criteria"; |
|
foreach my $t (1..$Apache::lonhomework::history{'version'}) { |
|
if (exists($Apache::lonhomework::history{$t.':resource.0.regrader'})) { |
|
my ($gname,$gdom) = |
|
split(':',$Apache::lonhomework::history{$t.':resource.0.regrader'}); |
|
my $fullname = &Apache::loncommon::plainname($gname,$gdom); |
|
$grader = &Apache::loncommon::aboutmewrapper($fullname, |
|
$gname,$gdom); |
|
} |
|
my $entry; |
|
if (exists($Apache::lonhomework::history{"$t:$scope.status"})) { |
|
$entry.="<tt>".$Apache::lonhomework::history{"$t:$scope.status"}.'</tt>'; |
|
} |
|
if (exists($Apache::lonhomework::history{"$t:$scope.comment"})) { |
|
$entry.=' comment: "'.$Apache::lonhomework::history{"$t:$scope.comment"}.'"'; |
|
} |
|
if ($entry) { |
|
$result.= "<li>$grader : $entry </li>"; |
|
} |
|
} |
|
if ($result) { |
|
return '<ul class="LC_GRADING_pastgrading">'.$result.'</ul>'; |
|
} |
|
return ''; |
|
} |
|
|
sub start_IntroParagraph { |
sub start_IntroParagraph { |
my ($target,$token,$tagstack,$parstack,$parser,$safeeval,$style)=@_; |
my ($target,$token,$tagstack,$parstack,$parser,$safeeval,$style)=@_; |
my $result; |
my $result; |
Line 1756 sub start_IntroParagraph {
|
Line 1880 sub start_IntroParagraph {
|
if ($tagstack->[-2] eq 'Dimension') { |
if ($tagstack->[-2] eq 'Dimension') { |
$dimension{'intro'}=&Apache::lonxml::get_all_text('/introparagraph',$parser,$style); |
$dimension{'intro'}=&Apache::lonxml::get_all_text('/introparagraph',$parser,$style); |
|
|
} elsif ($target eq 'webgrade') { |
} elsif ($tagstack->[-2] eq 'Task' && $target eq 'webgrade') { |
&Apache::lonxml::get_all_text('/introparagraph',$parser,$style); |
&Apache::lonxml::startredirection(); |
} |
} |
|
|
} |
} |
Line 1765 sub start_IntroParagraph {
|
Line 1889 sub start_IntroParagraph {
|
} |
} |
|
|
sub end_IntroParagraph { |
sub end_IntroParagraph { |
|
my ($target,$token,$tagstack,$parstack,$parser,$safeeval,$style)=@_; |
|
if ($tagstack->[-2] eq 'Task' && $target eq 'webgrade') { |
|
my $result = &Apache::lonxml::endredirection(); |
|
} |
} |
} |
|
|
sub start_Instance { |
sub start_Instance { |
Line 1832 sub proctor_validation_screen {
|
Line 1960 sub proctor_validation_screen {
|
<h2>Proctor Validation</h2> |
<h2>Proctor Validation</h2> |
<p>Your room's proctor needs to validate your access to this resource.</p> |
<p>Your room's proctor needs to validate your access to this resource.</p> |
$msg |
$msg |
<form name="checkout" method="POST" action="$env{'request.uri'}"> |
<form name="checkout" method="post" action="$env{'request.uri'}"> |
<input type="hidden" name="validate" value="yes" /> |
<input type="hidden" name="validate" value="yes" /> |
<input type="hidden" name="submitted" value="yes" /> |
<input type="hidden" name="submitted" value="yes" /> |
<table> |
<table> |
Line 1847 sub proctor_validation_screen {
|
Line 1975 sub proctor_validation_screen {
|
<tr><td colspan="2">Student who should be logged in is:</td></tr> |
<tr><td colspan="2">Student who should be logged in is:</td></tr> |
<tr><td>Name:</td><td>$name</td></tr> |
<tr><td>Name:</td><td>$name</td></tr> |
<tr><td>Student ID:</td><td>$env{'environment.id'}</td></tr> |
<tr><td>Student ID:</td><td>$env{'environment.id'}</td></tr> |
<tr><td>Usename</td><td>$user\@$domain</td></tr> |
<tr><td>Usename</td><td>$user:$domain</td></tr> |
<tr><td colspan="2"><img src="$url" /></td></tr> |
<tr><td colspan="2"><img src="$url" /></td></tr> |
</table> |
</table> |
</tr></td> |
</tr></td> |