Diff for /loncom/homework/default_homework.lcpm between versions 1.149 and 1.152.2.1

version 1.149, 2010/10/14 19:54:56 version 1.152.2.1, 2011/08/03 03:37:23
Line 341  sub caparesponse_check_list { Line 341  sub caparesponse_check_list {
              $appendunit='%'.$appendunit;               $appendunit='%'.$appendunit;
           }            }
 # Zero does not need a dimension  # Zero does not need a dimension
           if (($element==0) && ($unit!~/\w/) && ($answerunit=~/\w/)) {            if (($element =~ /^[0\.]+$/) && ($unit!~/\w/) && ($answerunit=~/\w/)) {
              $appendunit=$answerunit;               $appendunit=$answerunit;
           }            }
           if ($appendunit ne '') {            if ($appendunit ne '') {
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') {
                       $ansstring = join("\0",@{$strans});
                       foreach my $item (@{$strans}) {  
                           if ($item =~ /[\000-\037]/) {
                               $allow_control_char = 1;
                           }
                       }
                   }
               }
           }
       }
   
 #    &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 383  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 422  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 482  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 {

Removed from v.1.149  
changed lines
  Added in v.1.152.2.1


FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>