version 1.700, 2013/08/09 14:56:17
|
version 1.705, 2013/08/29 12:39:13
|
Line 1976 sub submission {
|
Line 1976 sub submission {
|
$request->print(&show_problem($request,$symb,$uname,$udom,0,1,$mode)); |
$request->print(&show_problem($request,$symb,$uname,$udom,0,1,$mode)); |
} |
} |
|
|
# kwclr is the only variable that is guaranteed to be non blank |
# kwclr is the only variable that is guaranteed not to be blank |
# if this subroutine has been called once. |
# if this subroutine has been called once. |
my %keyhash = (); |
my %keyhash = (); |
# if ($env{'form.kwclr'} eq '' && $env{'form.handgrade'} eq 'yes') { |
# if ($env{'form.kwclr'} eq '' && $env{'form.handgrade'} eq 'yes') { |
Line 2139 KEYWORDS
|
Line 2139 KEYWORDS
|
$result.=$sub_result; |
$result.=$sub_result; |
} |
} |
$request->print($result."\n"); |
$request->print($result."\n"); |
|
|
# print student answer/submission |
# print student answer/submission |
# Options are (1) Handgraded submission only |
# Options are (1) Handgraded submission only |
# (2) Last submission, includes submission that is not handgraded |
# (2) Last submission, includes submission that is not handgraded |
# (for multi-response type part) |
# (for multi-response type part) |
# (3) Last submission plus the parts info |
# (3) Last submission plus the parts info |
# (4) The whole record for this student |
# (4) The whole record for this student |
if ($env{'form.lastSub'} =~ /^(lastonly|hdgrade)$/) { |
|
my ($string,$timestamp)= &get_last_submission(\%record); |
my ($string,$timestamp)= &get_last_submission(\%record); |
|
|
my $lastsubonly; |
my $lastsubonly; |
|
|
if ($$timestamp eq '') { |
if ($$timestamp eq '') { |
$lastsubonly.='<div class="LC_grade_submissions_body">'.$$string[0].'</div>'; |
$lastsubonly.='<div class="LC_grade_submissions_body">'.$$string[0].'</div>'; |
} else { |
} else { |
$lastsubonly = |
$lastsubonly = |
'<div class="LC_grade_submissions_body">' |
'<div class="LC_grade_submissions_body">' |
.'<b>'.&mt('Date Submitted:').'</b> '.$$timestamp."\n"; |
.'<b>'.&mt('Date Submitted:').'</b> '.$$timestamp."\n"; |
|
|
my %seenparts; |
my %seenparts; |
my @part_response_id = &flatten_responseType($responseType); |
my @part_response_id = &flatten_responseType($responseType); |
foreach my $part (@part_response_id) { |
foreach my $part (@part_response_id) { |
next if ($env{'form.lastSub'} eq 'hdgrade' |
next if ($env{'form.lastSub'} eq 'hdgrade' |
&& $$handgrade{$$part[0].'_'.$$part[1]} ne 'yes'); |
&& $$handgrade{$$part[0].'_'.$$part[1]} ne 'yes'); |
|
|
my ($partid,$respid) = @{ $part }; |
my ($partid,$respid) = @{ $part }; |
my $display_part=&get_display_part($partid,$symb); |
my $display_part=&get_display_part($partid,$symb); |
if ($env{"form.$uname:$udom:$partid:submitted_by"}) { |
if ($env{"form.$uname:$udom:$partid:submitted_by"}) { |
if (exists($seenparts{$partid})) { next; } |
if (exists($seenparts{$partid})) { next; } |
$seenparts{$partid}=1; |
$seenparts{$partid}=1; |
$request->print( |
$request->print( |
'<b>'.&mt('Part: [_1]',$display_part).'</b>'. |
'<b>'.&mt('Part: [_1]',$display_part).'</b>'. |
' <b>'.&mt('Collaborative submission by: [_1]', |
' <b>'.&mt('Collaborative submission by: [_1]', |
'<a href="javascript:viewSubmitter(\''. |
'<a href="javascript:viewSubmitter(\''. |
$env{"form.$uname:$udom:$partid:submitted_by"}. |
$env{"form.$uname:$udom:$partid:submitted_by"}. |
'\');" target="_self">'. |
'\');" target="_self">'. |
$$fullname{$env{"form.$uname:$udom:$partid:submitted_by"}}.'</a>'). |
$$fullname{$env{"form.$uname:$udom:$partid:submitted_by"}}.'</a>'). |
'<br />'); |
'<br />'); |
next; |
next; |
} |
|
my $responsetype = $responseType->{$partid}->{$respid}; |
|
if (!exists($record{"resource.$partid.$respid.submission"})) { |
|
$lastsubonly.="\n".'<div class="LC_grade_submission_part">'. |
|
'<b>'.&mt('Part: [_1]',$display_part).'</b>'. |
|
' <span class="LC_internal_info">'. |
|
'('.&mt('Response ID: [_1]',$respid).')'. |
|
'</span> '. |
|
'<span class="LC_warning">'.&mt('Nothing submitted - no attempts.').'</span><br /><br /></div>'; |
|
next; |
|
} |
} |
foreach my $submission (@$string) { |
my $responsetype = $responseType->{$partid}->{$respid}; |
my ($partid,$respid) = ($submission =~ /^resource\.([^\.]*)\.([^\.]*)\.submission/); |
if (!exists($record{"resource.$partid.$respid.submission"})) { |
if (join('_',@{$part}) ne ($partid.'_'.$respid)) { next; } |
$lastsubonly.="\n".'<div class="LC_grade_submission_part">'. |
my ($ressub,$hide,$subval) = split(/:/,$submission,3); |
'<b>'.&mt('Part: [_1]',$display_part).'</b>'. |
# Similarity check |
' <span class="LC_internal_info">'. |
my $similar=''; |
'('.&mt('Response ID: [_1]',$respid).')'. |
my ($type,$trial,$rndseed); |
'</span> '. |
if ($hide eq 'rand') { |
'<span class="LC_warning">'.&mt('Nothing submitted - no attempts.').'</span><br /><br /></div>'; |
$type = 'randomizetry'; |
next; |
$trial = $record{"resource.$partid.tries"}; |
} |
$rndseed = $record{"resource.$partid.rndseed"}; |
foreach my $submission (@$string) { |
} |
my ($partid,$respid) = ($submission =~ /^resource\.([^\.]*)\.([^\.]*)\.submission/); |
if($env{'form.checkPlag'}){ |
if (join('_',@{$part}) ne ($partid.'_'.$respid)) { next; } |
my ($oname,$odom,$ocrsid,$oessay,$osim)= |
my ($ressub,$hide,$subval) = split(/:/,$submission,3); |
&most_similar($uname,$udom,$symb,$subval); |
# Similarity check |
if ($osim) { |
my $similar=''; |
$osim=int($osim*100.0); |
my ($type,$trial,$rndseed); |
my %old_course_desc = |
if ($hide eq 'rand') { |
&Apache::lonnet::coursedescription($ocrsid, |
$type = 'randomizetry'; |
{'one_time' => 1}); |
$trial = $record{"resource.$partid.tries"}; |
|
$rndseed = $record{"resource.$partid.rndseed"}; |
if ($hide eq 'anon') { |
} |
$similar='<hr /><span class="LC_warning">'.&mt("Essay was found to be similar to another essay submitted for this assignment.").'<br />'. |
if ($env{'form.checkPlag'}) { |
&mt('As the current submission is for an anonymous survey, no other details are available.').'</span><hr />'; |
my ($oname,$odom,$ocrsid,$oessay,$osim)= |
} else { |
&most_similar($uname,$udom,$symb,$subval); |
$similar="<hr /><h3><span class=\"LC_warning\">". |
if ($osim) { |
&mt('Essay is [_1]% similar to an essay by [_2] in course [_3] (course id [_4]:[_5])', |
$osim=int($osim*100.0); |
$osim, |
my %old_course_desc = |
&Apache::loncommon::plainname($oname,$odom).' ('.$oname.':'.$odom.')', |
&Apache::lonnet::coursedescription($ocrsid, |
|
{'one_time' => 1}); |
|
|
|
if ($hide eq 'anon') { |
|
$similar='<hr /><span class="LC_warning">'.&mt("Essay was found to be similar to another essay submitted for this assignment.").'<br />'. |
|
&mt('As the current submission is for an anonymous survey, no other details are available.').'</span><hr />'; |
|
} else { |
|
$similar="<hr /><h3><span class=\"LC_warning\">". |
|
&mt('Essay is [_1]% similar to an essay by [_2] in course [_3] (course id [_4]:[_5])', |
|
$osim, |
|
&Apache::loncommon::plainname($oname,$odom).' ('.$oname.':'.$odom.')', |
$old_course_desc{'description'}, |
$old_course_desc{'description'}, |
$old_course_desc{'num'}, |
$old_course_desc{'num'}, |
$old_course_desc{'domain'}). |
$old_course_desc{'domain'}). |
'</span></h3><blockquote><i>'. |
'</span></h3><blockquote><i>'. |
&keywords_highlight($oessay). |
&keywords_highlight($oessay). |
'</i></blockquote><hr />'; |
'</i></blockquote><hr />'; |
} |
} |
} |
} |
} |
} |
my $order=&get_order($partid,$respid,$symb,$uname,$udom, |
my $order=&get_order($partid,$respid,$symb,$uname,$udom, |
undef,$type,$trial,$rndseed); |
undef,$type,$trial,$rndseed); |
if ($env{'form.lastSub'} eq 'lastonly' || |
if ($env{'form.lastSub'} eq 'lastonly' || $env{'form.lastSub'} eq 'datesub' || $env{'form.lastSub'} =~ /^(last|all)$/ || ($env{'form.lastSub'} eq 'hdgrade' && |
($env{'form.lastSub'} eq 'hdgrade' && |
|
$$handgrade{$$part[0].'_'.$$part[1]} eq 'yes')) { |
$$handgrade{$$part[0].'_'.$$part[1]} eq 'yes')) { |
my $display_part=&get_display_part($partid,$symb); |
my $display_part=&get_display_part($partid,$symb); |
$lastsubonly.='<div class="LC_grade_submission_part">'. |
$lastsubonly.='<div class="LC_grade_submission_part">'. |
'<b>'.&mt('Part: [_1]',$display_part).'</b>'. |
'<b>'.&mt('Part: [_1]',$display_part).'</b>'. |
' <span class="LC_internal_info">'. |
' <span class="LC_internal_info">'. |
'('.&mt('Response ID: [_1]',$respid).')'. |
'('.&mt('Response ID: [_1]',$respid).')'. |
'</span> '; |
'</span> '; |
my $files=&get_submitted_files($udom,$uname,$partid,$respid,\%record); |
my $files=&get_submitted_files($udom,$uname,$partid,$respid,\%record); |
|
|
if (@$files) { |
if (@$files) { |
if ($hide eq 'anon') { |
|
$lastsubonly.='<br />'.&mt('[quant,_1,file] uploaded to this anonymous survey',scalar(@{$files})); |
|
} else { |
|
$lastsubonly.='<br /><br />'.'<b>'.&mt('Submitted Files:').'</b>' |
|
.'<br /><span class="LC_warning">'; |
|
if(@$files == 1) { |
|
$lastsubonly .= &mt('Like all files provided by users, this file may contain viruses!'); |
|
} else { |
|
$lastsubonly .= &mt('Like all files provided by users, these files may contain viruses!'); |
|
} |
|
$lastsubonly .= '</span>'; |
|
foreach my $file (@$files) { |
|
&Apache::lonnet::allowuploaded('/adm/grades',$file); |
|
$lastsubonly.='<br /><a href="'.$file.'?rawmode=1" target="lonGRDs"><img src="'.&Apache::loncommon::icon($file).'" border="0" alt="" /> '.$file.'</a>'; |
|
} |
|
} |
|
$lastsubonly.='<br />'; |
|
} |
|
if ($hide eq 'anon') { |
if ($hide eq 'anon') { |
$lastsubonly.='<br /><b>'.&mt('Anonymous Survey').'</b>'; |
$lastsubonly.='<br />'.&mt('[quant,_1,file] uploaded to this anonymous survey',scalar(@{$files})); |
} else { |
} else { |
$lastsubonly.='<br /><b>'.&mt('Submitted Answer:').' </b>'. |
$lastsubonly.='<br /><br />'.'<b>'.&mt('Submitted Files:').'</b>' |
&cleanRecord($subval,$responsetype,$symb,$partid, |
.'<br /><span class="LC_warning">'; |
$respid,\%record,$order,undef,$uname,$udom,$type,$trial,$rndseed); |
if(@$files == 1) { |
|
$lastsubonly .= &mt('Like all files provided by users, this file may contain viruses!'); |
|
} else { |
|
$lastsubonly .= &mt('Like all files provided by users, these files may contain viruses!'); |
|
} |
|
$lastsubonly .= '</span>'; |
|
foreach my $file (@$files) { |
|
&Apache::lonnet::allowuploaded('/adm/grades',$file); |
|
$lastsubonly.='<br /><a href="'.$file.'?rawmode=1" target="lonGRDs"><img src="'.&Apache::loncommon::icon($file).'" border="0" alt="" /> '.$file.'</a>'; |
|
} |
} |
} |
if ($similar) {$lastsubonly.="<br /><br />$similar\n";} |
$lastsubonly.='<br />'; |
$lastsubonly.='</div>'; |
} |
} |
if ($hide eq 'anon') { |
|
$lastsubonly.='<br /><b>'.&mt('Anonymous Survey').'</b>'; |
|
} else { |
|
$lastsubonly.='<br /><b>'.&mt('Submitted Answer:').' </b>'. |
|
&cleanRecord($subval,$responsetype,$symb,$partid, |
|
$respid,\%record,$order,undef,$uname,$udom,$type,$trial,$rndseed); |
|
} |
|
if ($similar) {$lastsubonly.="<br /><br />$similar\n";} |
|
$lastsubonly.='</div>'; |
} |
} |
} |
} |
$lastsubonly.='</div>'."\n"; # End: LC_grade_submissions_body |
|
} |
} |
$request->print($lastsubonly); |
$lastsubonly.='</div>'."\n"; # End: LC_grade_submissions_body |
} elsif ($env{'form.lastSub'} eq 'datesub') { |
} |
|
$request->print($lastsubonly); |
|
if ($env{'form.lastSub'} eq 'datesub') { |
my ($parts,$handgrade,$responseType) = &response_type($symb,\$res_error); |
my ($parts,$handgrade,$responseType) = &response_type($symb,\$res_error); |
$request->print(&displaySubByDates($symb,\%record,$parts,$responseType,$checkIcon,$uname,$udom)); |
$request->print(&displaySubByDates($symb,\%record,$parts,$responseType,$checkIcon,$uname,$udom)); |
} elsif ($env{'form.lastSub'} =~ /^(last|all)$/) { |
} |
$request->print(&Apache::loncommon::get_previous_attempt($symb,$uname,$udom, |
if ($env{'form.lastSub'} =~ /^(last|all)$/) { |
|
$request->print(&Apache::loncommon::get_previous_attempt($symb,$uname,$udom, |
$env{'request.course.id'}, |
$env{'request.course.id'}, |
$last,'.submission', |
$last,'.submission', |
'Apache::grades::keywords_highlight')); |
'Apache::grades::keywords_highlight')); |
Line 3595 sub viewgrades {
|
Line 3595 sub viewgrades {
|
$partid.'" size="4" '.'onchange="javascript:writePoint(\''. |
$partid.'" size="4" '.'onchange="javascript:writePoint(\''. |
$partid.'\','.$weight{$partid}.',\'textval\')" /> /'. |
$partid.'\','.$weight{$partid}.',\'textval\')" /> /'. |
$weight{$partid}.' '.&mt('(problem weight)').'</td>'."\n"; |
$weight{$partid}.' '.&mt('(problem weight)').'</td>'."\n"; |
$line.= '<td><b>'.&mt('Grade Status').':</b><select name="SELVAL_'.$partid.'"'. |
$line.= '<td><b>'.&mt('Grade Status').':</b>'. |
'onchange="javascript:writeRadText(\''.$partid.'\','. |
'<select name="SELVAL_'.$partid.'" '. |
$weight{$partid}.')"> '. |
'onchange="javascript:writeRadText(\''.$partid.'\','. |
|
$weight{$partid}.')"> '. |
'<option selected="selected"> </option>'. |
'<option selected="selected"> </option>'. |
'<option value="excused">'.&mt('excused').'</option>'. |
'<option value="excused">'.&mt('excused').'</option>'. |
'<option value="reset status">'.&mt('reset status').'</option>'. |
'<option value="reset status">'.&mt('reset status').'</option>'. |
Line 4142 sub csvupload_fields {
|
Line 4143 sub csvupload_fields {
|
|
|
sub csvuploadmap_footer { |
sub csvuploadmap_footer { |
my ($request,$i,$keyfields) =@_; |
my ($request,$i,$keyfields) =@_; |
|
my $buttontext = &mt('Assign Grades'); |
$request->print(<<ENDPICK); |
$request->print(<<ENDPICK); |
</table> |
</table> |
<input type="hidden" name="nfields" value="$i" /> |
<input type="hidden" name="nfields" value="$i" /> |
<input type="hidden" name="keyfields" value="$keyfields" /> |
<input type="hidden" name="keyfields" value="$keyfields" /> |
<input type="button" onclick="javascript:verify(this.form)" value="Assign Grades" /><br /> |
<input type="button" onclick="javascript:verify(this.form)" value="$buttontext" /><br /> |
</form> |
</form> |
ENDPICK |
ENDPICK |
} |
} |
Line 4267 ENDPICK
|
Line 4269 ENDPICK
|
} |
} |
# FIXME do a check for any duplicated user ids... |
# FIXME do a check for any duplicated user ids... |
# FIXME do a check for any invalid user ids?... |
# FIXME do a check for any invalid user ids?... |
$request->print('<input type="submit" value="Assign Grades" /><br /> |
$request->print('<input type="submit" value="'.&mt('Assign Grades').'" /><br /> |
<hr /></form>'."\n"); |
<hr /></form>'."\n"); |
return ''; |
return ''; |
} |
} |
Line 5085 like.
|
Line 5087 like.
|
Next each scanline is checked for any errors of either 'missing |
Next each scanline is checked for any errors of either 'missing |
bubbles' (it's an error because it may have been mis-scanned |
bubbles' (it's an error because it may have been mis-scanned |
because too light bubbling), 'double bubble' (each bubble line should |
because too light bubbling), 'double bubble' (each bubble line should |
have no more that one letter picked), invalid or duplicated CODE, |
have no more than one letter picked), invalid or duplicated CODE, |
invalid student/employee ID |
invalid student/employee ID |
|
|
If the CODE option is used that determines the randomization of the |
If the CODE option is used that determines the randomization of the |
Line 6439 sub scantron_process_corrections {
|
Line 6441 sub scantron_process_corrections {
|
} |
} |
} |
} |
if ($err) { |
if ($err) { |
$r->print("<span class=\"LC_warning\">Unable to accept last correction, an error occurred :$errmsg:</span>"); |
$r->print( |
|
'<p class="LC_error">' |
|
.&mt('Unable to accept last correction, an error occurred: [_1]', |
|
$errmsg) |
|
.'</p>'); |
} else { |
} else { |
&scantron_put_line($scanlines,$scan_data,$which,$line,$skip); |
&scantron_put_line($scanlines,$scan_data,$which,$line,$skip); |
&scantron_putfile($scanlines,$scan_data); |
&scantron_putfile($scanlines,$scan_data); |
Line 6575 sub scantron_warning_screen {
|
Line 6581 sub scantron_warning_screen {
|
return (' |
return (' |
<p> |
<p> |
<span class="LC_warning"> |
<span class="LC_warning"> |
'.&mt('Please double check the information below before clicking on \'[_1]\'',&mt($button_text)).'</span> |
'.&mt("Please double check the information below before clicking on '[_1]'",&mt($button_text)).'</span> |
</p> |
</p> |
<table> |
<table> |
<tr><td><b>'.&mt('Sequence to be Graded:').'</b></td><td>'.$title.'</td></tr> |
<tr><td><b>'.&mt('Sequence to be Graded:').'</b></td><td>'.$title.'</td></tr> |
Line 6687 sub scantron_validate_file {
|
Line 6693 sub scantron_validate_file {
|
if (!$symb) {return '';} |
if (!$symb) {return '';} |
my $default_form_data=&defaultFormData($symb); |
my $default_form_data=&defaultFormData($symb); |
|
|
# do the detection of only doing skipped records first befroe we delete |
# do the detection of only doing skipped records first before we delete |
# them when doing the corrections reset |
# them when doing the corrections reset |
if ($env{'form.scantron_options_redo'} ne 'redo_skipped_ready') { |
if ($env{'form.scantron_options_redo'} ne 'redo_skipped_ready') { |
&reset_skipping_status(); |
&reset_skipping_status(); |