version 1.149, 2010/10/14 19:54:56
|
version 1.151, 2010/12/16 16:01:01
|
Line 357 sub caparesponse_check_list {
|
Line 357 sub caparesponse_check_list {
|
} |
} |
} |
} |
|
|
|
my $allow_control_char = 0; |
|
my $control_chars_removed = 0; |
|
my $ansstring; |
|
if ($type eq 'cs' || $type eq 'ci') { |
|
if (ref($LONCAPA::CAPAresponse_answer->{'answers'}) eq 'ARRAY') { |
|
foreach my $strans (@{$LONCAPA::CAPAresponse_answer->{'answers'}}) { |
|
if (ref($strans) eq 'ARRAY') { |
|
foreach my $item (@{$strans}) { |
|
if ($item =~ /[\000-\037]/) { |
|
$allow_control_char = 1; |
|
} |
|
} |
|
} |
|
} |
|
} |
|
} |
|
if (($type eq 'cs') || ($type eq 'ci')) { |
|
if (ref($LONCAPA::CAPAresponse_answer->{'answers'}) eq 'ARRAY') { |
|
foreach my $answer (@{ $LONCAPA::CAPAresponse_answer->{'answers'} }) { |
|
if (ref($answer) eq 'ARRAY') { |
|
$ansstring = join("\0",@{$answer}); |
|
} |
|
} |
|
} |
|
} |
|
|
# &LONCAPA_INTERNAL_DEBUG(&LONCAPA_INTERNAL_Dumper($responses)); |
# &LONCAPA_INTERNAL_DEBUG(&LONCAPA_INTERNAL_Dumper($responses)); |
my %memoized; |
my %memoized; |
Line 366 sub caparesponse_check_list {
|
Line 391 sub caparesponse_check_list {
|
my $response = $responses->[$i]; |
my $response = $responses->[$i]; |
my $key = "$answer\0$response"; |
my $key = "$answer\0$response"; |
my (@awards,@msgs); |
my (@awards,@msgs); |
for (my $j=0; $j<scalar(@$response); $j++) { |
for (my $j=0; $j<scalar(@$response); $j++) { |
|
if ($type eq 'cs' || $type eq 'ci') { |
|
unless ($allow_control_char) { |
|
if ($response->[$j] =~ /[\000-\037]/) { |
|
$response->[$j] =~ s/[\000-\037]//g; |
|
$control_chars_removed = 1; |
|
} |
|
} |
|
} |
my ($award,$msg) = &caparesponse_check($answer->[$j], |
my ($award,$msg) = &caparesponse_check($answer->[$j], |
$response->[$j]); |
$response->[$j]); |
if ($type eq 'cs' || $type eq 'ci') { |
if ($type eq 'cs' || $type eq 'ci') { |
Line 397 sub caparesponse_check_list {
|
Line 430 sub caparesponse_check_list {
|
} else { |
} else { |
my (@awards,@msgs); |
my (@awards,@msgs); |
for (my $j=0; $j<scalar(@$response); $j++) { |
for (my $j=0; $j<scalar(@$response); $j++) { |
|
if ($type eq 'cs' || $type eq 'ci') { |
|
unless ($allow_control_char) { |
|
if ($response->[$j] =~ /[\000-\037]/) { |
|
$response->[$j] =~ s/[\000-\037]//g; |
|
$control_chars_removed = 1; |
|
} |
|
} |
|
} |
my ($award,$msg) = &caparesponse_check($answer->[$j], |
my ($award,$msg) = &caparesponse_check($answer->[$j], |
$response->[$j]); |
$response->[$j]); |
if ($type eq 'cs' || $type eq 'ci') { |
if ($type eq 'cs' || $type eq 'ci') { |
Line 449 sub caparesponse_check_list {
|
Line 490 sub caparesponse_check_list {
|
&LONCAPA_INTERNAL_DEBUG(" all final_awards ".join(':',@final_awards)); |
&LONCAPA_INTERNAL_DEBUG(" all final_awards ".join(':',@final_awards)); |
my ($final_award,$final_msg) = |
my ($final_award,$final_msg) = |
&LONCAPA_INTERNAL_FINALIZEAWARDS(\@final_awards,\@final_msg,undef,1); |
&LONCAPA_INTERNAL_FINALIZEAWARDS(\@final_awards,\@final_msg,undef,1); |
return ($final_award,$final_msg,$error); |
return ($final_award,$final_msg,$error,$control_chars_removed,$ansstring); |
} |
} |
|
|
sub verify_stringresponse { |
sub verify_stringresponse { |