--- loncom/homework/default_homework.lcpm 2010/10/14 19:54:56 1.149 +++ loncom/homework/default_homework.lcpm 2010/10/18 19:47:31 1.150 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA # used by lonxml::xmlparse() as input variable $safeinit to Apache::run::run() # -# $Id: default_homework.lcpm,v 1.149 2010/10/14 19:54:56 raeburn Exp $ +# $Id: default_homework.lcpm,v 1.150 2010/10/18 19:47:31 raeburn Exp $ # # Copyright Michigan State University Board of Trustees # @@ -357,6 +357,17 @@ sub caparesponse_check_list { } } + my $allow_control_char = 0; + my $control_chars_removed = 0; + if ($type eq 'cs' || $type eq 'ci') { + if (ref($LONCAPA::CAPAresponse_answer->{'answers'}) eq 'ARRAY') { + foreach my $strans (@{$LONCAPA::CAPAresponse_answer->{'answers'}}) { + if ($strans =~ /[\000-\037]/) { + $allow_control_char = 1; + } + } + } + } # &LONCAPA_INTERNAL_DEBUG(&LONCAPA_INTERNAL_Dumper($responses)); my %memoized; @@ -366,7 +377,15 @@ sub caparesponse_check_list { my $response = $responses->[$i]; my $key = "$answer\0$response"; my (@awards,@msgs); - for (my $j=0; $j[$j] =~ /[\000-\037]/) { + $response->[$j] =~ s/[\000-\037]//g; + $control_chars_removed = 1; + } + } + } my ($award,$msg) = &caparesponse_check($answer->[$j], $response->[$j]); if ($type eq 'cs' || $type eq 'ci') { @@ -397,6 +416,14 @@ sub caparesponse_check_list { } else { my (@awards,@msgs); for (my $j=0; $j[$j] =~ /[\000-\037]/) { + $response->[$j] =~ s/[\000-\037]//g; + $control_chars_removed = 1; + } + } + } my ($award,$msg) = &caparesponse_check($answer->[$j], $response->[$j]); if ($type eq 'cs' || $type eq 'ci') { @@ -449,7 +476,7 @@ sub caparesponse_check_list { &LONCAPA_INTERNAL_DEBUG(" all final_awards ".join(':',@final_awards)); my ($final_award,$final_msg) = &LONCAPA_INTERNAL_FINALIZEAWARDS(\@final_awards,\@final_msg,undef,1); - return ($final_award,$final_msg,$error); + return ($final_award,$final_msg,$error,$control_chars_removed); } sub verify_stringresponse {