version 1.509, 2008/02/06 00:39:11
|
version 1.510, 2008/02/06 16:32:30
|
Line 5458 sub scantron_validator_lettnum {
|
Line 5458 sub scantron_validator_lettnum {
|
my $occurrences = 0; |
my $occurrences = 0; |
if (($responsetype_per_response{$questnum-1} eq 'essayresponse') || |
if (($responsetype_per_response{$questnum-1} eq 'essayresponse') || |
($responsetype_per_response{$questnum-1} eq 'formularesponse') || |
($responsetype_per_response{$questnum-1} eq 'formularesponse') || |
($responsetype_per_response{$questnum-1} eq 'stringresponse')) { |
($responsetype_per_response{$questnum-1} eq 'stringresponse') || |
|
($responsetype_per_response{$questnum-1} eq 'imageresponse') || |
|
($responsetype_per_response{$questnum-1} eq 'reactionresponse') || |
|
($responsetype_per_response{$questnum-1} eq 'organicresponse')) { |
my @singlelines = split('',$currquest); |
my @singlelines = split('',$currquest); |
foreach my $entry (@singlelines) { |
foreach my $entry (@singlelines) { |
$occurrences = &occurence_count($entry,$matchon); |
$occurrences = &occurence_count($entry,$matchon); |
Line 5557 sub scantron_validator_positional {
|
Line 5560 sub scantron_validator_positional {
|
# |
# |
if (($responsetype_per_response{$questnum-1} eq 'essayresponse') || |
if (($responsetype_per_response{$questnum-1} eq 'essayresponse') || |
($responsetype_per_response{$questnum-1} eq 'formularesponse') || |
($responsetype_per_response{$questnum-1} eq 'formularesponse') || |
($responsetype_per_response{$questnum-1} eq 'stringresponse')) { |
($responsetype_per_response{$questnum-1} eq 'stringresponse') || |
|
($responsetype_per_response{$questnum-1} eq 'imageresponse') || |
|
($responsetype_per_response{$questnum-1} eq 'reactionresponse') || |
|
($responsetype_per_response{$questnum-1} eq 'organicresponse')) { |
my $doubleerror = 0; |
my $doubleerror = 0; |
while (($currquest >= $$scantron_config{'Qlength'}) && |
while (($currquest >= $$scantron_config{'Qlength'}) && |
(!$doubleerror)) { |
(!$doubleerror)) { |
Line 6798 for multi and missing bubble cases).
|
Line 6804 for multi and missing bubble cases).
|
in exam mode. This hash contains a |
in exam mode. This hash contains a |
comma-separated list of the lines per |
comma-separated list of the lines per |
sub-question. |
sub-question. |
%responsetype_per_response - essayresponse, forumalaresponse, and |
%responsetype_per_response - essayresponse, formularesponse, |
stringresponse type problem parts can have |
stringresponse, imageresponse, reactionresponse, |
|
and organicresponse type problem parts can have |
multiple lines per response if the weight |
multiple lines per response if the weight |
assigned exceeds 10. In this case, only |
assigned exceeds 10. In this case, only |
one bubble per line is permitted, but more |
one bubble per line is permitted, but more |
Line 6833 sub prompt_for_corrections {
|
Line 6840 sub prompt_for_corrections {
|
$r->print(&mt('The group of bubble lines below responds to a single question.').'<br />'); |
$r->print(&mt('The group of bubble lines below responds to a single question.').'<br />'); |
if (($responsetype_per_response{$question-1} eq 'essayresponse') || |
if (($responsetype_per_response{$question-1} eq 'essayresponse') || |
($responsetype_per_response{$question-1} eq 'formularesponse') || |
($responsetype_per_response{$question-1} eq 'formularesponse') || |
($responsetype_per_response{$question-1} eq 'stringresponse')) { |
($responsetype_per_response{$question-1} eq 'stringresponse') || |
|
($responsetype_per_response{$question-1} eq 'imageresponse') || |
|
($responsetype_per_response{$question-1} eq 'reactionresponse') || |
|
($responsetype_per_response{$question-1} eq 'organicresponse')) { |
$r->print(&mt("Although this particular question type requires handgrading, the instructions for this question in the exam directed students to leave [quant,_1,line] blank on their scantron sheets.",$lines).'<br /><br />'.&mt('A non-zero score can be assigned to the student during scantron grading by selecting a bubble in at least one line.').'<br />'.&mt('The score for this question will be a sum of the numeric values for the selected bubbles from each line, where A=1 point, B=2 points etc.').'<br />'.&mt("To assign a score of zero for this question, mark all lines as 'No bubble'.").'<br /><br />'); |
$r->print(&mt("Although this particular question type requires handgrading, the instructions for this question in the exam directed students to leave [quant,_1,line] blank on their scantron sheets.",$lines).'<br /><br />'.&mt('A non-zero score can be assigned to the student during scantron grading by selecting a bubble in at least one line.').'<br />'.&mt('The score for this question will be a sum of the numeric values for the selected bubbles from each line, where A=1 point, B=2 points etc.').'<br />'.&mt("To assign a score of zero for this question, mark all lines as 'No bubble'.").'<br /><br />'); |
} else { |
} else { |
$r->print(&mt("Select at most one bubble in a single line and select 'No Bubble' in all the other lines. ")."<br />"); |
$r->print(&mt("Select at most one bubble in a single line and select 'No Bubble' in all the other lines. ")."<br />"); |
Line 7146 sub scantron_get_maxbubble {
|
Line 7156 sub scantron_get_maxbubble {
|
my $response_number = 0; |
my $response_number = 0; |
my $bubble_line = 0; |
my $bubble_line = 0; |
foreach my $resource (@resources) { |
foreach my $resource (@resources) { |
# Need to retrieve part IDs and response IDs because essayresponse |
# Need to retrieve part IDs and response IDs because essayresponse, |
# items are not included in $analysis{'parts'} from lonnet::ssi. |
# reactionresponse and organicresponse items are not included in |
|
# $analysis{'parts'} from lonnet::ssi. |
my %possible_part_ids; |
my %possible_part_ids; |
if (ref($resource->parts()) eq 'ARRAY') { |
if (ref($resource->parts()) eq 'ARRAY') { |
foreach my $part (@{$resource->parts()}) { |
foreach my $part (@{$resource->parts()}) { |
Line 7175 sub scantron_get_maxbubble {
|
Line 7186 sub scantron_get_maxbubble {
|
} |
} |
# Add part_ids for any essayresponse items. |
# Add part_ids for any essayresponse items. |
foreach my $part_id (keys(%possible_part_ids)) { |
foreach my $part_id (keys(%possible_part_ids)) { |
if ($analysis{$part_id.'.type'} eq 'essayresponse') { |
if (($analysis{$part_id.'.type'} eq 'essayresponse') || |
|
($analysis{$part_id.'.type'} eq 'reactionresponse') || |
|
($analysis{$part_id.'.type'} eq 'organicresponse')) { |
if (!grep(/^\Q$part_id\E$/,@parts)) { |
if (!grep(/^\Q$part_id\E$/,@parts)) { |
push (@parts,$part_id); |
push (@parts,$part_id); |
} |
} |