--- loncom/homework/grades.pm 2004/04/29 07:21:16 1.192
+++ loncom/homework/grades.pm 2004/05/10 23:18:27 1.199
@@ -1,7 +1,7 @@
# The LearningOnline Network with CAPA
# The LON-CAPA Grading handler
#
-# $Id: grades.pm,v 1.192 2004/04/29 07:21:16 albertel Exp $
+# $Id: grades.pm,v 1.199 2004/05/10 23:18:27 albertel Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -1669,7 +1669,9 @@ KEYWORDS
$partid.' ( ID '.$respid.
' ) ';
if ($record{"resource.$partid.$respid.uploadedurl"}) {
- $lastsubonly.=' File uploaded by student Like all files provided by users, this file may contain virusses
';
+ &Apache::lonnet::allowuploaded('/adm/grades',
+ $record{"resource.$partid.$respid.uploadedurl"});
+ $lastsubonly.=' File uploaded by student Like all files provided by users, this file may contain virusses
';
}
$lastsubonly.='Submitted Answer: '.
&cleanRecord($subval,$responsetype,$symb,$partid,
@@ -2049,11 +2051,11 @@ sub saveHandGrade {
}
} elsif ($dropMenu eq 'reset status'
&& exists($record{'resource.'.$_.'.solved'})) { #don't bother if no old records -> no attempts
- $newrecord{'resource.'.$_.'.tries'} = 0;
- $newrecord{'resource.'.$_.'.solved'} = '';
- $newrecord{'resource.'.$_.'.award'} = '';
- $newrecord{'resource.'.$_.'.awarded'} = 0;
- $newrecord{'resource.'.$_.'.regrader'}="$ENV{'user.name'}:$ENV{'user.domain'}";
+ foreach my $key (keys (%record)) {
+ if ($key=~/^resource\.\Q$_\E\./) { $newrecord{$key} = ''; }
+ }
+ $newrecord{'resource.'.$_.'.regrader'}=
+ "$ENV{'user.name'}:$ENV{'user.domain'}";
} elsif ($dropMenu eq '') {
$pts = ($ENV{'form.GD_BOX'.$newflg.'_'.$_} ne '' ?
$ENV{'form.GD_BOX'.$newflg.'_'.$_} :
@@ -3108,7 +3110,7 @@ sub displayPage {
'
Validating ".$validate_phases[$currentphase]."
"); @@ -3964,20 +3967,15 @@ sub scantron_remove { return 'refused'; } $file.=$ENV{'form.scantron_selectfile'}; - &Apache::lonnet::logthis("removeing $file"); my $result=&Apache::lonnet::removeuserfile($cname,$cdom,$file); my @keys=&Apache::lonnet::getkeys('nohist_scantrondata',$cdom,$cname); - &Apache::lonnet::logthis('got keys '.join(':',@keys)); - &Apache::lonnet::logthis("cdom $cdom cname $cname"); my @todelete; my $filename=$ENV{'form.scantron_selectfile'}; - &Apache::lonnet::logthis('filename '.$filename); foreach my $key (@keys) { if ($key=~/^\Q$filename\E_/) { push(@todelete,$key); } } - &Apache::lonnet::logthis('todelete '.join(':',@todelete)); if (@todelete) { &Apache::lonnet::del('nohist_scantrondata',\@todelete,$cdom,$cname); } @@ -4089,11 +4087,11 @@ sub scantron_validate_ID { if ($found{'ids'}{$found}) { &scantron_get_correction($r,$i,$scan_record,\%scantron_config, $line,'duplicateID',$found); - return(1); + return(1,$currentphase); } elsif ($found{'usernames'}{$username}) { &scantron_get_correction($r,$i,$scan_record,\%scantron_config, $line,'duplicateID',$username); - return(1); + return(1,$currentphase); } #FIXME store away line we previously saw the ID on to use above $found{'ids'}{$found}++; @@ -4105,18 +4103,18 @@ sub scantron_validate_ID { &scantron_get_correction($r,$i,$scan_record, \%scantron_config, $line,'duplicateID',$username); - return(1); + return(1,$currentphase); } elsif (!defined($username)) { &scantron_get_correction($r,$i,$scan_record, \%scantron_config, $line,'incorrectID'); - return(1); + return(1,$currentphase); } $found{'usernames'}{$username}++; } else { &scantron_get_correction($r,$i,$scan_record,\%scantron_config, $line,'incorrectID'); - return(1); + return(1,$currentphase); } } } @@ -4167,7 +4165,7 @@ sub scantron_get_correction { if ($error eq 'incorrectCODE') { $r->print("The encoded CODE is not in the list of possible CODEs
\n"); } elsif ($error eq 'duplicateCODE') { - $r->print("The encoded CODE has also been used by a previous paper $arg, and CODEs were supposed to be unique
\n"); + $r->print("The encoded CODE has also been used by a previous paper ".join(', ',@{$arg}).", and CODEs are supposed to be unique
\n"); } $r->print("The CODE on the form is ".
$$scan_record{'scantron.CODE'}."
\n");
@@ -4178,8 +4176,21 @@ sub scantron_get_correction {
$$scan_record{'scantron.FirstName'}."
How should I handle this? There have been multiple bubbles scanned for a some question(s)
\n");
$r->print("\n
");
- $r->print(" Use the CODE ".$$scan_record{'scantron.CODE'}." that is was on the paper, ignoring the error.");
+ my $i=0;
+ if ($error eq 'incorrectCODE') {
+ my ($max,$closest)=&scantron_get_closely_matching_CODEs($arg,$$scan_record{'scantron.CODE'});
+ foreach my $testcode (@{$closest}) {
+ my $checked='';
+ if (!$i) { $checked=' checked="on" '; }
+ $r->print(" Use the similar CODE ".$testcode." instead.");
+ $r->print("\n
");
+ $i++;
+ }
+ }
+ my $checked; if (!$i) { $checked=' checked="on" '; }
+ $r->print(" Use the CODE ".$$scan_record{'scantron.CODE'}." that is was on the paper, ignoring the error.");
$r->print("\n
");
+
$r->print(<
");
} elsif ($error eq 'doublebubble') {
-#FIXME Need to print out who this is along with the paper info
$r->print("