--- loncom/homework/grades.pm 2003/09/25 08:30:57 1.130.2.1.2.3
+++ loncom/homework/grades.pm 2003/09/27 01:59:10 1.130.2.1.2.4
@@ -1,7 +1,7 @@
# The LearningOnline Network with CAPA
# The LON-CAPA Grading handler
#
-# $Id: grades.pm,v 1.130.2.1.2.3 2003/09/25 08:30:57 albertel Exp $
+# $Id: grades.pm,v 1.130.2.1.2.4 2003/09/27 01:59:10 albertel Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -3299,7 +3299,7 @@ sub scantron_parse_scanline {
}
$record{'scantron.ID'}=substr($data,$$scantron_config{'IDstart'}-1,
$$scantron_config{'IDlength'});
- $record{'scantron.paperID'}=
+ $record{'scantron.PaperID'}=
substr($data,$$scantron_config{'PaperID'}-1,
$$scantron_config{'PaperIDlength'});
$record{'scantron.FirstName'}=
@@ -3316,17 +3316,20 @@ sub scantron_parse_scanline {
substr($questions,0,$$scantron_config{'Qlength'})='';
if (length($currentquest) < $$scantron_config{'Qlength'}) { next; }
my (@array)=split(/$$scantron_config{'Qon'}/,$currentquest);
- if (scalar(@array) gt 2) {
- #FIXME do something intelligent with double bubbles
- #actually not a concern right now, should be taking care of later
- Apache->request->print("
Wha!!!
".scalar(@array). - '-'.$currentquest.'-'.$questnum.'
Checking ID ".$$scan_record{'scantron.ID'}."
\n"); + $r->print("Checking ID ".$$scan_record{'scantron.ID'}. + " on paper ID ".$$scan_record{'scantron.PaperID'}."
\n"); my $found; foreach my $checkid (keys(%idmap)) { if (lc($checkid) eq lc($id)) { if ($checkid ne $id) { - $r->print("Using $checkid for bubbled $id
\n"); + $r->print("Using $checkid for encoded $id
\n"); } $found=$checkid;last; } @@ -3549,14 +3558,15 @@ sub scantron_validate_ID { if ($found) { if ($found{'ids'}{$found}) { #FIXME store away line we prviously saw the ID on - &scantron_get_ID_correction($r,$i,$scan_record, - 'duplicateID',$found); + &scantron_get_correction($r,$i,$scan_record,$line, + 'duplicateID',$found); return(1); } else { $found{'ids'}{$found}++; } } else { - &scantron_get_ID_correction($r,$i,$scan_record,'incorrectID'); + &scantron_get_correction($r,$i,$scan_record,$line, + 'incorrectID'); return(1); } } @@ -3564,31 +3574,84 @@ sub scantron_validate_ID { return (0,$currentphase+1); } -sub scantron_get_ID_correction { - my ($r,$i,$scan_record,$error,$arg)=@_; -#FIXME allow th poosibility of skipping a line, or in the case of a duplicated ID the previous line, probaly need to show both the current line and the previous one. - $r->print("need to correct ID
\n"); +sub scantron_get_correction { + my ($r,$i,$scan_record,$line,$error,$arg)=@_; + +#FIXME in the case of a duplicated ID the previous line, probaly need +#to show both the current line and the previous one and allow skipping +#the previous one or the current one + + $r->print("This scantron record has an error."); + if ( defined($$scan_record{'scantron.PaperID'}) ) { + $r->print("The current PaperID is ". + $$scan_record{'scantron.PaperID'}." \n"); + } else { + $r->print("The current scanline is
". + $line."\n"); + } $r->print(''."\n"); $r->print(''."\n"); - if ($error eq 'unknownID') { - $r->print("
Unknown ID
\n"); - } elsif ($error eq 'duplicateID') { - $r->print("Duplicated ID
\n"); - } - $r->print("Original ID is ".$$scan_record{'scantron.ID'}."
\n"); - $r->print("Name on paper is ".$$scan_record{'scantron.LastName'}.",". - $$scan_record{'scantron.FirstName'}."
"); - $r->print("Corrected User -- "); - $r->print("\nusername:"); - $r->print("\ndomain:". - &Apache::loncommon::select_dom_form(undef,'scantron_domain')); - #FIXME it would be nice if this sent back the user ID and - #could do partial userID matches - $r->print(&Apache::loncommon::selectstudent_link('scantronupload', - 'scantron_username','scantron_domain')); + if ($error =~ /ID$/) { + if ($error eq 'unknownID') { + $r->print("The encoded ID is not in the classlist\n"); + } elsif ($error eq 'duplicateID') { + $r->print("The encoded ID has also been used by a previous paper $arg\n"); + } + $r->print("Original ID is ".$$scan_record{'scantron.ID'}.
+ "
\n");
+ $r->print("Name on paper is ".$$scan_record{'scantron.LastName'}.",".
+ $$scan_record{'scantron.FirstName'}."
Please correct
\n");
+ $r->print("\n
For question $question, selected bubbles were". + join(" ",split('',$selected)). + " Please pick which one should be used for grading"); + #FIXMENEXT need to have radio buttons to chose which one to use + + } + } + $r->print("