version 1.105, 2006/02/09 22:34:35
|
version 1.149, 2006/05/12 05:18:34
|
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.='<p> <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="'. |
$result.='<p> <input type="submit" name="regradeaspecificsubmission" value="'. |
&mt("Regrade user:").'" />'."\n"; |
&mt("Regrade specific user:").'" />'."\n"; |
$result.='<input type="text" size="12" name="gradinguser" />'; |
$result.='<input type="text" size="12" name="gradinguser" />'; |
$result.=&Apache::loncommon::select_dom_form($env{'user.domain'}, |
$result.=&Apache::loncommon::select_dom_form($env{'user.domain'}, |
'gradingdomain'); |
'gradingdomain'); |
Line 210 sub add_grading_button {
|
Line 213 sub add_grading_button {
|
'gradinguser', |
'gradinguser', |
'gradingdomain'); |
'gradingdomain'); |
$result.=&Apache::loncommon::studentbrowser_javascript(); |
$result.=&Apache::loncommon::studentbrowser_javascript(); |
} |
$result.= '</p>'; |
|
} |
return $result; |
return $result; |
} |
} |
|
|
Line 219 sub add_request_another_attempt_button {
|
Line 223 sub add_request_another_attempt_button {
|
if (!$text) { $text="Request another attempt"; } |
if (!$text) { $text="Request another attempt"; } |
my $result; |
my $result; |
my $symb=&Apache::lonnet::symbread(); |
my $symb=&Apache::lonnet::symbread(); |
|
# not a slot access based resource |
|
my $useslots = &Apache::lonnet::EXT("resource.0.useslots",$symb); |
|
if ($useslots =~ /^\s*no\s*$/i) { |
|
return ''; |
|
} |
|
|
my ($slot_name,$slot)=&Apache::slotrequest::check_for_reservation($symb); |
my ($slot_name,$slot)=&Apache::slotrequest::check_for_reservation($symb); |
my $action='get_reservation'; |
my $action='get_reservation'; |
if ($slot_name) { |
if ($slot_name) { |
Line 233 STUFF
|
Line 243 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 255 sub preserve_grade_info {
|
Line 265 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 368 sub submission_time_stamp {
|
Line 328 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 %lt=&Apache::lonlocal::texthash('done' => 'Done', |
my $file_list = &file_list($Apache::lonhomework::history{"resource.$version.0.bridgetask.portfiles"}); |
'stop' => 'Stop', |
|
|
my %lt=&Apache::lonlocal::texthash('done' => 'Next Item', |
|
'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 411 sub start_Task {
|
Line 384 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($target)); |
|
$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::queuegrade |
$body_tag_start.='<form name="gradesubmission" method="POST" action="'; |
|| $Apache::lonhomework::modifygrades) { |
|
$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 446 sub start_Task {
|
Line 441 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 468 sub start_Task {
|
Line 462 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 495 DONESCREEN
|
Line 502 DONESCREEN
|
if ($status eq 'NEEDS_CHECKIN') { |
if ($status eq 'NEEDS_CHECKIN') { |
if(&proctor_check_auth($slot_name,$slot,'Task') |
if(&proctor_check_auth($slot_name,$slot,'Task') |
&& defined($Apache::inputtags::slot_name)) { |
&& defined($Apache::inputtags::slot_name)) { |
my $result=&add_to_queue('gradingqueue', |
my $result= |
[$Apache::inputtags::slot_name]); |
&add_to_queue('gradingqueue', |
|
{'type' => 'task', |
|
'time' => time, |
|
'slot' => |
|
$Apache::inputtags::slot_name}); |
&Apache::lonxml::debug("add_to_queue said $result"); |
&Apache::lonxml::debug("add_to_queue said $result"); |
} |
} |
} |
} |
} |
} |
} 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 516 DONESCREEN
|
Line 524 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 538 DONESCREEN
|
Line 548 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 598 DONESCREEN
|
Line 604 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 635 sub get_key_todo {
|
Line 644 sub get_key_todo {
|
} |
} |
|
|
|
|
my $me=$env{'user.name'}.'@'.$env{'user.domain'}; |
my $me=$env{'user.name'}.':'.$env{'user.domain'}; |
|
|
#need to try both queues.. |
#need to try both queues.. |
if (defined($env{'form.regradeaspecificsubmission'}) && |
if (defined($env{'form.regradeaspecificsubmission'}) && |
Line 681 sub get_key_todo {
|
Line 690 sub get_key_todo {
|
#otherwise (defined($who) && $who ne $me) some else has it... |
#otherwise (defined($who) && $who ne $me) some else has it... |
return (undef,'not_allowed', |
return (undef,'not_allowed', |
&mt('Another user ([_1]) currently has the record for [_2] locked.', |
&mt('Another user ([_1]) currently has the record for [_2] locked.', |
$who,$env{'form.gradinguser'}.'@'.$env{'form.gradingdomain'})); |
$who,$env{'form.gradinguser'}.':'.$env{'form.gradingdomain'})); |
} |
} |
|
|
|
|
Line 791 sub end_Task {
|
Line 800 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 803 DONEBUTTON
|
Line 813 DONEBUTTON
|
my $bt_status=$Apache::lonhomework::history{"resource.$version.0.status"}; |
my $bt_status=$Apache::lonhomework::history{"resource.$version.0.status"}; |
my $title=&Apache::lonnet::gettitle(); |
my $title=&Apache::lonnet::gettitle(); |
|
|
|
my $start_time; |
|
|
my $slot_name= |
my $slot_name= |
$Apache::lonhomework::history{"resource.$version.0.checkedin.slot"}; |
$Apache::lonhomework::history{"resource.$version.0.checkedin.slot"}; |
my %slot=&Apache::lonnet::get_slot($slot_name); |
if ($slot_name) { |
my $start_time= |
my %slot=&Apache::lonnet::get_slot($slot_name); |
&Apache::lonlocal::locallocaltime($slot{'starttime'}); |
|
|
$start_time=$slot{'starttime'} |
|
} else { |
|
$start_time= |
|
&Apache::lonnet::EXT('resource.0.opendate'); |
|
} |
|
$start_time=&Apache::lonlocal::locallocaltime($start_time); |
|
|
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 844 DONEBUTTON
|
Line 862 DONEBUTTON
|
my $internal_location=&internal_location(); |
my $internal_location=&internal_location(); |
$result=~s/\Q$internal_location\E/$status/; |
$result=~s/\Q$internal_location\E/$status/; |
} |
} |
} |
$result.="\n</div>\n". |
if ($target eq 'web' || $target eq 'webgrade') { |
&Apache::loncommon::end_page({'discussion' => 1}); |
$result.=&Apache::lonxml::xmlend().'</html>'; |
|
} |
} |
} |
} |
if ($target eq 'grade' && !$env{'form.webgrade'} && !$previous) { |
if ($target eq 'grade' && !$env{'form.webgrade'} && !$previous) { |
Line 870 DONEBUTTON
|
Line 887 DONEBUTTON
|
} |
} |
&Apache::lonhomework::showhash(%Apache::lonhomework::results); |
&Apache::lonhomework::showhash(%Apache::lonhomework::results); |
&Apache::structuretags::finalize_storage(); |
&Apache::structuretags::finalize_storage(); |
if ($award eq 'SUBMITTED' |
if ($award eq 'SUBMITTED') { |
&& defined($Apache::inputtags::slot_name)) { |
my $useslots = &Apache::lonnet::EXT("resource.0.useslots"); |
&add_to_queue('gradingqueue',[$Apache::inputtags::slot_name]); |
if ($useslots =~ /^\s*no\s*$/i) { |
|
&add_to_queue('gradingqueue', |
|
{'type' => 'task', |
|
'time' => time}); |
|
} elsif (defined($Apache::inputtags::slot_name)) { |
|
&add_to_queue('gradingqueue', |
|
{'type' => 'task', |
|
'time' => time, |
|
'slot' => $Apache::inputtags::slot_name}); |
|
} |
} |
} |
} elsif ($Apache::lonhomework::results{'INTERNAL_store'}) { |
} elsif ($Apache::lonhomework::results{'INTERNAL_store'}) { |
&Apache::structuretags::finalize_storage(); |
&Apache::structuretags::finalize_storage(); |
Line 908 DONEBUTTON
|
Line 934 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 976 DONEBUTTON
|
Line 1002 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 985 DONEBUTTON
|
Line 1011 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 1010 sub move_between_queues {
|
Line 1037 sub move_between_queues {
|
} else { |
} else { |
$cur_data = ['none']; |
$cur_data = ['none']; |
} |
} |
my $result=&add_to_queue($dest_queue,[$cur_data->[0]]); |
my $result=&add_to_queue($dest_queue,$cur_data); |
if ($result ne 'ok') { |
if ($result ne 'ok') { |
return $result; |
return $result; |
} |
} |
Line 1023 sub check_queue_unlock {
|
Line 1050 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 1090 sub get_queue_data {
|
Line 1117 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 1109 sub check_queue_for_key {
|
Line 1136 sub check_queue_for_key {
|
if (defined($results{"$todo\0locked"})) { |
if (defined($results{"$todo\0locked"})) { |
return 'locked'; |
return 'locked'; |
} |
} |
my $slot; |
if (my $slot=&slotted_access($results{$todo})) { |
if (ref($results{$todo}) eq 'ARRAY') { |
|
$slot = $results{$todo}[0]; |
|
} elsif (ref($results{$todo}) eq 'HASH') { |
|
$slot = $results{$todo}{'slot'}; |
|
} |
|
if (defined($slot)) { |
|
my %slot_data=&Apache::lonnet::get_slot($slot); |
my %slot_data=&Apache::lonnet::get_slot($slot); |
if ($slot_data{'endtime'} > time) { |
if ($slot_data{'endtime'} > time) { |
return 'in_progress'; |
return 'in_progress'; |
} |
} |
|
} else { |
|
my ($symb) = &decode_queue_key($todo); |
|
my $due_date = &Apache::lonhomework::due_date('0',$symb); |
|
if ($due_date > time) { |
|
return 'in_progress'; |
|
} |
} |
} |
return 'enqueued'; |
return 'enqueued'; |
} |
} |
Line 1136 sub add_to_queue {
|
Line 1163 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 1179 sub show_queue {
|
Line 1206 sub show_queue {
|
&Apache::lonlocal::locallocaltime($queue{$key})."</td></tr>"; |
&Apache::lonlocal::locallocaltime($queue{$key})."</td></tr>"; |
} elsif ($key!~/(timestamp|locked)$/) { |
} elsif ($key!~/(timestamp|locked)$/) { |
$result.="<tr>"; |
$result.="<tr>"; |
my $slot=$queue{$key}->[0]; |
my ($end_time,$slot_text); |
my %slot_data=&Apache::lonnet::get_slot($slot); |
if (my $slot=&slotted_access($queue{$key})) { |
|
my %slot_data=&Apache::lonnet::get_slot($slot); |
|
$end_time = $slot_data{'endtime'}; |
|
$slot_text = &mt('Slot: [_1]',$slot); |
|
} else { |
|
$end_time = &Apache::lonhomework::due_date('0',$symb); |
|
$slot_text = ''; |
|
} |
if ($with_selects) { |
if ($with_selects) { |
my $ekey=&Apache::lonnet::escape($key); |
my $ekey=&Apache::lonnet::escape($key); |
my ($action,$description,$status)=('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"}); |
$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')); |
Line 1198 sub show_queue {
|
Line 1232 sub show_queue {
|
$seclist.='<input type="hidden" name="chosensections" |
$seclist.='<input type="hidden" name="chosensections" |
value="'.$sec.'" />'; |
value="'.$sec.'" />'; |
} |
} |
if (time > $slot_data{'endtime'}) { |
if ($end_time ne '' && time > $end_time) { |
$result.=(<<FORM); |
$result.=(<<FORM); |
<td>$status</td> |
<td>$status</td> |
<td> |
<td> |
<form style="display: inline" 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 1215 sub show_queue {
|
Line 1249 sub show_queue {
|
FORM |
FORM |
|
|
} else { |
} else { |
$result.='<td>'.&mt("In Progress").'</td>' |
$result.='<td>'.&mt("In Progress").'</td><td> </td>' |
} |
} |
} |
} |
$result.= "<td>".$fullname->{$uname.':'.$udom}. |
$result.= "<td>".$fullname->{$uname.':'.$udom}. |
" <tt>($uname\@$udom)</tt> </td>"; |
" <tt>($uname:$udom)</tt> </td>"; |
$result.='<td>Slot: '.$slot.' End time: '. |
$result.='<td>'.$slot_text.' End time: '. |
&Apache::lonlocal::locallocaltime($slot_data{'endtime'}). |
&Apache::lonlocal::locallocaltime($end_time). |
"</td></tr>"; |
"</td></tr>"; |
} |
} |
} |
} |
Line 1251 sub get_queue_counts {
|
Line 1285 sub get_queue_counts {
|
} elsif ($key!~/(timestamp|locked)$/) { |
} elsif ($key!~/(timestamp|locked)$/) { |
my ($symb,$uname,$udom) = &decode_queue_key($key); |
my ($symb,$uname,$udom) = &decode_queue_key($key); |
$entries++; |
$entries++; |
my $slot=$queue{$key}->[0]; |
if (my $slot=&slotted_access($queue{$key})) { |
if (!exists($slot_cache{$slot})) { |
if (!exists($slot_cache{$slot})) { |
my %slot_data=&Apache::lonnet::get_slot($slot); |
my %slot_data=&Apache::lonnet::get_slot($slot); |
$slot_cache{$slot} = \%slot_data; |
$slot_cache{$slot} = \%slot_data; |
} |
} |
if (time > $slot_cache{$slot}{'endtime'}) { |
if (time > $slot_cache{$slot}{'endtime'}) { |
$ready_to_grade++; |
$ready_to_grade++; |
|
} |
|
} else { |
|
my $due_date = &Apache::lonhomework::due_date('0',$symb); |
|
if ($due_date ne '' && time > $due_date) { |
|
$ready_to_grade++; |
|
} |
} |
} |
} |
} |
} |
} |
Line 1266 sub get_queue_counts {
|
Line 1306 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 1291 sub queue_key_locked {
|
Line 1331 sub queue_key_locked {
|
return undef; |
return undef; |
} |
} |
|
|
|
sub slotted_access { |
|
my ($queue_entry) = @_; |
|
if (ref($queue_entry) eq 'ARRAY') { |
|
if (defined($queue_entry->[0])) { |
|
return $queue_entry->[0]; |
|
} |
|
return undef; |
|
} elsif (ref($queue_entry) eq 'HASH') { |
|
if (defined($queue_entry->{'slot'})) { |
|
return $queue_entry->{'slot'}; |
|
} |
|
return undef; |
|
} |
|
return undef; |
|
} |
|
|
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 |
my @possible; # will hold queue entries that are valid to be selected |
Line 1305 sub pick_from_queue_data {
|
Line 1361 sub pick_from_queue_data {
|
next; |
next; |
} |
} |
} |
} |
my $slot=$queuedata->{$key}[0]; |
my $end_time; |
my %slot_data=&Apache::lonnet::get_slot($slot); |
if (my $slot=&slotted_access($queuedata->{$key})) { |
if ($slot_data{'endtime'} > time) { |
my %slot_data=&Apache::lonnet::get_slot($slot); |
|
if ($slot_data{'endtime'} < time) { |
|
$end_time = $slot_data{'endtime'}; |
|
} |
|
} else { |
|
my $due_date = &Apache::lonhomework::due_date('0',$symb); |
|
if ($due_date > time) { |
|
$end_time = $due_date; |
|
} |
|
} |
|
if ($end_time ne '') { |
&Apache::lonxml::debug("not time"); |
&Apache::lonxml::debug("not time"); |
next; |
next; |
} |
} |
|
|
if (exists($queuedata->{"$key\0locked"})) { |
if (exists($queuedata->{"$key\0locked"})) { |
&Apache::lonxml::debug("someone already has um."); |
&Apache::lonxml::debug("someone already has um."); |
next; |
next; |
} |
} |
push(@possible,[$key,$slot_data{'endtime'}]); |
push(@possible,[$key,$end_time]); |
} |
} |
if (@possible) { |
if (@possible) { |
# sort entries in order by slot end time |
# sort entries in order by slot end time |
@possible = sort { $a->[1] <=> $b->[1] } @possible; |
@possible = sort { $a->[1] <=> $b->[1] } @possible; |
# pick one of the first ten entries |
# pick one of the entries in the top 10% in small queues and one |
my $max=($#possible < 10) ? $#possible : 10; |
# of the first ten entries in large queues |
return $possible[int(rand($max))][0]; |
#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 1330 sub pick_from_queue_data {
|
Line 1403 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 1350 sub find_mid_grade {
|
Line 1423 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 1510 sub select_user {
|
Line 1583 sub select_user {
|
$result.=<<RESULT; |
$result.=<<RESULT; |
<tr> |
<tr> |
<td> |
<td> |
<form style="display: inline" 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 1664 sub get_instance {
|
Line 1737 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 1688 sub get_instance {
|
Line 1765 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 1738 sub get_instance {
|
Line 1815 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">'.&mt('Comment: [_1]',$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 1757 sub get_instance {
|
Line 1835 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 1789 sub get_instance {
|
Line 1866 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 1829 sub get_instance {
|
Line 1907 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 1836 sub start_IntroParagraph {
|
Line 1946 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 1845 sub start_IntroParagraph {
|
Line 1955 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 1912 sub proctor_validation_screen {
|
Line 2026 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 1927 sub proctor_validation_screen {
|
Line 2041 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> |