version 1.272, 2005/06/04 19:02:19
|
version 1.274, 2005/06/05 06:12:16
|
Line 4108 sub scantron_fixup_scanline {
|
Line 4108 sub scantron_fixup_scanline {
|
&scan_data($scan_data, |
&scan_data($scan_data, |
"$whichline.no_bubble.".$args->{'question'},'1'); |
"$whichline.no_bubble.".$args->{'question'},'1'); |
} else { |
} else { |
substr($answer,$args->{'response'},1)=$on; |
if ($on eq 'letter') { |
|
my @alphabet=('A'..'Z'); |
|
$answer=$alphabet[$args->{'response'}]; |
|
} elsif ($on eq 'number') { |
|
$answer=$args->{'response'}+1; |
|
} else { |
|
substr($answer,$args->{'response'},1)=$on; |
|
} |
&scan_data($scan_data, |
&scan_data($scan_data, |
"$whichline.no_bubble.".$args->{'question'},undef,'1'); |
"$whichline.no_bubble.".$args->{'question'},undef,'1'); |
} |
} |
Line 4169 sub scantron_parse_scanline {
|
Line 4176 sub scantron_parse_scanline {
|
substr($questions,0,$$scantron_config{'Qlength'})=''; |
substr($questions,0,$$scantron_config{'Qlength'})=''; |
if (length($currentquest) < $$scantron_config{'Qlength'}) { next; } |
if (length($currentquest) < $$scantron_config{'Qlength'}) { next; } |
if ($$scantron_config{'Qon'} eq 'letter') { |
if ($$scantron_config{'Qon'} eq 'letter') { |
if (!$currentquest || $currentquest eq $$scantron_config{'Qoff'} || |
if ($currentquest eq '?') { |
$currentquest !~ /^[A-Z]$/) { |
push(@{$record{'scantron.doubleerror'}},$questnum); |
|
$record{"scantron.$questnum.answer"}=''; |
|
} elsif (!$currentquest |
|
|| $currentquest eq $$scantron_config{'Qoff'} |
|
|| $currentquest !~ /^[A-Z]$/) { |
$record{"scantron.$questnum.answer"}=''; |
$record{"scantron.$questnum.answer"}=''; |
if (!&scan_data($scan_data,"$whichline.no_bubble.$questnum")) { |
if (!&scan_data($scan_data,"$whichline.no_bubble.$questnum")) { |
push(@{$record{"scantron.missingerror"}},$questnum); |
push(@{$record{"scantron.missingerror"}},$questnum); |
Line 4179 sub scantron_parse_scanline {
|
Line 4190 sub scantron_parse_scanline {
|
$record{"scantron.$questnum.answer"}=$currentquest; |
$record{"scantron.$questnum.answer"}=$currentquest; |
} |
} |
} elsif ($$scantron_config{'Qon'} eq 'number') { |
} elsif ($$scantron_config{'Qon'} eq 'number') { |
if (!$currentquest || $currentquest eq $$scantron_config{'Qoff'} || |
if ($currentquest eq '?') { |
$currentquest !~ /^\d$/) { |
push(@{$record{'scantron.doubleerror'}},$questnum); |
|
$record{"scantron.$questnum.answer"}=''; |
|
} elsif (!$currentquest |
|
|| $currentquest eq $$scantron_config{'Qoff'} |
|
|| $currentquest !~ /^\d$/) { |
$record{"scantron.$questnum.answer"}=''; |
$record{"scantron.$questnum.answer"}=''; |
if (!&scan_data($scan_data,"$whichline.no_bubble.$questnum")) { |
if (!&scan_data($scan_data,"$whichline.no_bubble.$questnum")) { |
push(@{$record{"scantron.missingerror"}},$questnum); |
push(@{$record{"scantron.missingerror"}},$questnum); |
Line 4735 sub scantron_get_correction {
|
Line 4750 sub scantron_get_correction {
|
$r->print("<p>How should I handle this? <br /> \n"); |
$r->print("<p>How should I handle this? <br /> \n"); |
$r->print("\n<br /> "); |
$r->print("\n<br /> "); |
my $i=0; |
my $i=0; |
if ($error eq 'incorrectCODE') { |
if ($error eq 'incorrectCODE' |
|
&& $$scan_record{'scantron.CODE'}=~/\S/ ) { |
my ($max,$closest)=&scantron_get_closely_matching_CODEs($arg,$$scan_record{'scantron.CODE'}); |
my ($max,$closest)=&scantron_get_closely_matching_CODEs($arg,$$scan_record{'scantron.CODE'}); |
foreach my $testcode (@{$closest}) { |
foreach my $testcode (@{$closest}) { |
my $checked=''; |
my $checked=''; |
Line 4745 sub scantron_get_correction {
|
Line 4761 sub scantron_get_correction {
|
$i++; |
$i++; |
} |
} |
} |
} |
my $checked; if (!$i) { $checked=' checked="on" '; } |
if ($$scan_record{'scantron.CODE'}=~/\S/ ) { |
$r->print("<label><input type='radio' name='scantron_CODE_resolution' value='use_unfound' $checked /> Use the CODE <b><tt>".$$scan_record{'scantron.CODE'}."</tt></b> that is was on the paper, ignoring the error.</label>"); |
my $checked; if (!$i) { $checked=' checked="on" '; } |
$r->print("\n<br />"); |
$r->print("<label><input type='radio' name='scantron_CODE_resolution' value='use_unfound' $checked /> Use the CODE <b><tt>".$$scan_record{'scantron.CODE'}."</tt></b> that is was on the paper, ignoring the error.</label>"); |
|
$r->print("\n<br />"); |
|
} |
|
|
$r->print(<<ENDSCRIPT); |
$r->print(<<ENDSCRIPT); |
<script type="text/javascript"> |
<script type="text/javascript"> |
Line 4801 ENDSCRIPT
|
Line 4819 ENDSCRIPT
|
sub scantron_bubble_selector { |
sub scantron_bubble_selector { |
my ($r,$scan_config,$quest,@selected)=@_; |
my ($r,$scan_config,$quest,@selected)=@_; |
my $max=$$scan_config{'Qlength'}; |
my $max=$$scan_config{'Qlength'}; |
|
|
|
my $scmode=$$scan_config{'Qon'}; |
|
if ($scmode eq 'number' || $scmode eq 'letter') { $max=10; } |
|
|
my @alphabet=('A'..'Z'); |
my @alphabet=('A'..'Z'); |
$r->print("<table border='1'><tr><td rowspan='2'>$quest</td>"); |
$r->print("<table border='1'><tr><td rowspan='2'>$quest</td>"); |
for (my $i=0;$i<$max+1;$i++) { |
for (my $i=0;$i<$max+1;$i++) { |
$r->print('<td align="center">'); |
$r->print("\n".'<td align="center">'); |
if ($selected[0] eq $alphabet[$i]) { $r->print('X'); shift(@selected) } |
if ($selected[0] eq $alphabet[$i]) { $r->print('X'); shift(@selected) } |
else { $r->print(' '); } |
else { $r->print(' '); } |
$r->print('</td>'); |
$r->print('</td>'); |
} |
} |
$r->print('<td></td></tr><tr>'); |
$r->print('</tr><tr>'); |
for (my $i=0;$i<$max;$i++) { |
for (my $i=0;$i<$max;$i++) { |
$r->print('<td><label><input type="radio" name="scantron_correct_Q_'. |
$r->print("\n". |
|
'<td><label><input type="radio" name="scantron_correct_Q_'. |
$quest.'" value="'.$i.'" />'.$alphabet[$i]."</label></td>"); |
$quest.'" value="'.$i.'" />'.$alphabet[$i]."</label></td>"); |
} |
} |
$r->print('<td><label><input type="radio" name="scantron_correct_Q_'. |
$r->print('<td><label><input type="radio" name="scantron_correct_Q_'. |