version 1.478, 2007/11/03 00:18:37
|
version 1.481, 2007/11/06 10:12:27
|
Line 5116 sub username_to_idmap {
|
Line 5116 sub username_to_idmap {
|
|
|
sub scantron_fixup_scanline { |
sub scantron_fixup_scanline { |
my ($scantron_config,$scan_data,$line,$whichline,$field,$args)=@_; |
my ($scantron_config,$scan_data,$line,$whichline,$field,$args)=@_; |
|
|
|
|
if ($field eq 'ID') { |
if ($field eq 'ID') { |
if (length($args->{'newid'}) > $$scantron_config{'IDlength'}) { |
if (length($args->{'newid'}) > $$scantron_config{'IDlength'}) { |
return ($line,1,'New value too large'); |
return ($line,1,'New value too large'); |
Line 5147 sub scantron_fixup_scanline {
|
Line 5148 sub scantron_fixup_scanline {
|
$$scantron_config{'CODElength'})=$args->{'CODE'}; |
$$scantron_config{'CODElength'})=$args->{'CODE'}; |
} |
} |
} elsif ($field eq 'answer') { |
} elsif ($field eq 'answer') { |
|
&scantron_get_maxbubble(); # Need the bubble counter info. |
my $length=$scantron_config->{'Qlength'}; |
my $length=$scantron_config->{'Qlength'}; |
my $off=$scantron_config->{'Qoff'}; |
my $off=$scantron_config->{'Qoff'}; |
my $on=$scantron_config->{'Qon'}; |
my $on=$scantron_config->{'Qon'}; |
my $answer=${off}x$length; |
my $answer=${off}x$length; |
if ($args->{'response'} eq 'none') { |
my $question_number = $args->{'question'} -1; |
&scan_data($scan_data, |
my $first_position = $first_bubble_line{$question_number}; |
"$whichline.no_bubble.".$args->{'question'},'1'); |
my $bubble_count = $bubble_lines_per_response{$question_number}; |
} else { |
my $bubbles_per_line= $$scantron_config{'Qlength'}; |
if ($on eq 'letter') { |
my $final_answer; |
my @alphabet=('A'..'Z'); |
if ($$scantron_config{'Qon'} eq 'letter' || |
$answer=$alphabet[$args->{'response'}]; |
$$scantron_config{'Qon'} eq 'number') { |
} elsif ($on eq 'number') { |
$bubbles_per_line = 10; |
$answer=$args->{'response'}+1; |
} |
if ($answer == 10) { $answer = '0'; } |
if (defined $args->{'response'}) { |
|
|
|
if ($args->{'response'} eq 'none') { |
|
&scan_data($scan_data, |
|
"$whichline.no_bubble.".$args->{'question'},'1'); |
} else { |
} else { |
substr($answer,$args->{'response'},1)=$on; |
my ($bubble_line, $bubble_number) = split(/:/,$args->{'response'}); |
|
if ($on eq 'letter') { |
|
my @alphabet=('A'..'Z'); |
|
$answer=$alphabet[$bubble_number]; |
|
} elsif ($on eq 'number') { |
|
$answer=$args->{$bubble_number+1}; |
|
if ($answer == 10) { $answer = '0'; } |
|
} else { |
|
substr($answer,$args->{'response'},1)=$on; |
|
} |
|
&scan_data($scan_data, |
|
"$whichline.no_bubble.".$args->{'question'},undef,'1'); |
|
for (my $l = 0; $l < $bubble_count; $l++) { |
|
if ($l eq $bubble_line) { |
|
$final_answer .= $answer; |
|
} else { |
|
$final_answer .= ' '; |
|
} |
|
} |
} |
} |
&scan_data($scan_data, |
# $where=$length*($args->{'question'}-1)+$scantron_config->{'Qstart'}; |
"$whichline.no_bubble.".$args->{'question'},undef,'1'); |
#substr($line,$where-1,$length)=$answer; |
|
substr($line, |
|
$scantron_config->{'Qstart'}+$first_position-1, |
|
$bubbles_per_line) = $final_answer; |
} |
} |
my $where=$length*($args->{'question'}-1)+$scantron_config->{'Qstart'}; |
|
substr($line,$where-1,$length)=$answer; |
|
} |
} |
return $line; |
return $line; |
} |
} |
Line 6546 sub scantron_bubble_selector {
|
Line 6571 sub scantron_bubble_selector {
|
|
|
my $total_lines = $lines*2; |
my $total_lines = $lines*2; |
my @alphabet=('A'..'Z'); |
my @alphabet=('A'..'Z'); |
|
|
$r->print("<table border='1'><tr><td rowspan='".$total_lines."'>$quest</td>"); |
$r->print("<table border='1'><tr><td rowspan='".$total_lines."'>$quest</td>"); |
|
|
for (my $l = 0; $l < $lines; $l++) { |
for (my $l = 0; $l < $lines; $l++) { |
Line 6579 sub scantron_bubble_selector {
|
Line 6605 sub scantron_bubble_selector {
|
# multiline questions (different values e.g..). |
# multiline questions (different values e.g..). |
|
|
for (my $i=0;$i<$max;$i++) { |
for (my $i=0;$i<$max;$i++) { |
|
my $value = "$l:$i"; # Relative bubble line #: Bubble in line. |
$r->print("\n". |
$r->print("\n". |
'<td><label><input type="radio" name="scantron_correct_Q_'. |
'<td><label><input type="radio" name="scantron_correct_Q_'. |
$quest.'" value="'.$i.'" />'.$alphabet[$i]."</label></td>"); |
$quest.'" value="'.$value.'" />'.$alphabet[$i]."</label></td>"); |
} |
} |
$r->print('</tr>'); |
$r->print('</tr>'); |
|
|