version 1.160, 2003/11/21 21:31:34
|
version 1.161, 2003/11/21 22:59:42
|
Line 3634 sub scantron_filter {
|
Line 3634 sub scantron_filter {
|
return 0; |
return 0; |
} |
} |
|
|
#FIXME I think I am doing this in the wrong order, I think it would be |
|
#better to make a several passes analyzing all of the lines in the |
|
#file for common errors wrong/invalid PID/username duplicated |
|
#PID/username, missing bubbles, double bubbles, missing/invalid CODE |
|
#and then get the instructor to fix all of these errors, then grade |
|
#the corrected one, I'll still need to catch error conditions, but |
|
#maybe most will taken care even before we start |
|
|
|
sub scantron_validate_file { |
|
my ($r) = @_; |
|
} |
|
|
|
sub scantron_process_corrections { |
sub scantron_process_corrections { |
my ($r) = @_; |
my ($r) = @_; |
my %scantron_config=&get_scantron_config($ENV{'form.scantron_format'}); |
my %scantron_config=&get_scantron_config($ENV{'form.scantron_format'}); |
Line 3755 sub scantron_getfile {
|
Line 3743 sub scantron_getfile {
|
my $lines; |
my $lines; |
$lines=&Apache::lonnet::getfile('/uploaded/'.$cdom.'/'.$cname.'/'. |
$lines=&Apache::lonnet::getfile('/uploaded/'.$cdom.'/'.$cname.'/'. |
'scantron_orig_'.$ENV{'form.scantron_selectfile'}); |
'scantron_orig_'.$ENV{'form.scantron_selectfile'}); |
if ($lines eq '-1') { |
|
#FIXME need to actually replicate file to course space |
|
#FIXME when replicating strip CRLF to LF or CR to LF |
|
} |
|
my %scanlines; |
my %scanlines; |
$scanlines{'orig'}=[(split("\n",$lines,-1))]; |
$scanlines{'orig'}=[(split("\n",$lines,-1))]; |
my $temp=$scanlines{'orig'}; |
my $temp=$scanlines{'orig'}; |
Line 3898 sub scantron_get_correction {
|
Line 3882 sub scantron_get_correction {
|
#to show both the current line and the previous one and allow skipping |
#to show both the current line and the previous one and allow skipping |
#the previous one or the current one |
#the previous one or the current one |
|
|
$r->print("<p>An error was detected ($error) "); |
$r->print("<p><b>An error was detected ($error)</b>"); |
if ( defined($$scan_record{'scantron.PaperID'}) ) { |
if ( defined($$scan_record{'scantron.PaperID'}) ) { |
$r->print(" for PaperID <tt>". |
$r->print(" for PaperID <tt>". |
$$scan_record{'scantron.PaperID'}."</tt> \n"); |
$$scan_record{'scantron.PaperID'}."</tt> \n"); |
Line 4075 SCANTRONFORM
|
Line 4059 SCANTRONFORM
|
($uname,$udom)=('',''); |
($uname,$udom)=('',''); |
$i++; |
$i++; |
my $line=&scantron_get_line($scanlines,$i); |
my $line=&scantron_get_line($scanlines,$i); |
# $r->print('<pre>line is'.$line.'</pre>'); |
|
if ($line=~/^[\s\cz]*$/) { next; } |
if ($line=~/^[\s\cz]*$/) { next; } |
my $scan_record=&scantron_parse_scanline($line,$i,\%scantron_config, |
my $scan_record=&scantron_parse_scanline($line,$i,\%scantron_config, |
$scan_data); |
$scan_data); |
Line 4090 SCANTRONFORM
|
Line 4073 SCANTRONFORM
|
'Student '.$uname.' has multiple sheets',2); |
'Student '.$uname.' has multiple sheets',2); |
next; |
next; |
} |
} |
# $r->print('<pre>doing studnet'.$uname.'</pre>'); |
|
($uname,$udom)=split(/:/,$uname); |
($uname,$udom)=split(/:/,$uname); |
&Apache::lonnet::delenv('form.counter'); |
&Apache::lonnet::delenv('form.counter'); |
&Apache::lonnet::appenv(%$scan_record); |
&Apache::lonnet::appenv(%$scan_record); |
# &Apache::lonhomework::showhash(%ENV); |
|
# $Apache::lonxml::debug=1; |
my $i=0; |
# &Apache::lonxml::debug("line is $line"); |
|
|
|
my $i=0; |
|
foreach my $resource (@resources) { |
foreach my $resource (@resources) { |
$i++; |
$i++; |
my $result=&Apache::lonnet::ssi($resource->src(), |
my $result=&Apache::lonnet::ssi($resource->src(), |
Line 4108 SCANTRONFORM
|
Line 4087 SCANTRONFORM
|
'grade_domain' =>$udom, |
'grade_domain' =>$udom, |
'grade_courseid'=>$ENV{'request.course.id'}, |
'grade_courseid'=>$ENV{'request.course.id'}, |
'grade_symb' =>$resource->symb())); |
'grade_symb' =>$resource->symb())); |
# my %score=&Apache::lonnet::restore($resource->symb(), |
|
# $ENV{'request.course.id'}, |
|
# $udom,$uname); |
|
# foreach my $part ($resource->{PARTS}) { |
|
# if ($score{'resource.'.$part.'.solved'} =~ /^correct/) { |
|
# $studentcorrect++; |
|
# $totalcorrect++; |
|
# } else { |
|
# $studentincorrect++; |
|
# $totalincorrect++; |
|
# } |
|
# } |
|
# $r->print('<pre>'. |
|
# $resource->symb().'-'. |
|
# $resource->src().'-'.'</pre>result is'.$result); |
|
# &Apache::lonhomework::showhash(%score); |
|
# if ($i eq 3) {last;} |
|
} |
} |
$completedstudents{$uname}={'line'=>$line}; |
$completedstudents{$uname}={'line'=>$line}; |
} continue { |
} continue { |
Line 4132 SCANTRONFORM
|
Line 4094 SCANTRONFORM
|
&Apache::lonnet::delenv('scantron\.'); |
&Apache::lonnet::delenv('scantron\.'); |
&Apache::lonhtmlcommon::Increment_PrgWin($r,\%prog_state, |
&Apache::lonhtmlcommon::Increment_PrgWin($r,\%prog_state, |
'last student'); |
'last student'); |
#last; |
|
#FIXME |
|
#get iterator for $sequence |
|
#foreach question 'submit' the students answer to the server |
|
# through grade target { |
|
# generate data to pass back that includes grade recevied |
|
#} |
|
} |
} |
&Apache::lonhtmlcommon::Close_PrgWin($r,\%prog_state); |
&Apache::lonhtmlcommon::Close_PrgWin($r,\%prog_state); |
my $lasttime = &Time::HiRes::time()-$start; |
my $lasttime = &Time::HiRes::time()-$start; |
$r->print("<p>took $lasttime</p>"); |
$r->print("<p>took $lasttime</p>"); |
|
|
#$Apache::lonxml::debug=0; |
|
foreach my $delay (@delayqueue) { |
|
#FIXME |
|
#print out each delayed student with interface to select how |
|
# to repair student provided info |
|
#Expected errors include |
|
# 1 bad/no stuid/username |
|
# 2 invalid bubblings |
|
|
|
} |
|
#FIXME |
|
# if delay queue exists 2 submits one to process delayed students one |
|
# to ignore delayed students, possibly saving the delay queue for later |
|
|
|
$navmap->untieHashes(); |
$navmap->untieHashes(); |
$r->print("<p>Done</p>"); |
$r->print("<p>Done</p>"); |
$r->print(&show_grading_menu_form($symb,$url)); |
$r->print(&show_grading_menu_form($symb,$url)); |