Diff for /loncom/homework/caparesponse/caparesponse.pm between versions 1.124 and 1.125

version 1.124, 2003/11/25 14:37:11 version 1.125, 2003/12/11 23:39:54
Line 95  sub end_numericalresponse { Line 95  sub end_numericalresponse {
     if (!$Apache::lonxml::default_homework_loaded) {      if (!$Apache::lonxml::default_homework_loaded) {
  &Apache::lonxml::default_homework_load($safeeval);   &Apache::lonxml::default_homework_load($safeeval);
     }      }
       my $tag;
       if (scalar(@$tagstack)) { $tag=$$tagstack[-1]; }
     if ( $target eq 'grade' && defined($ENV{'form.submitted'})) {      if ( $target eq 'grade' && defined($ENV{'form.submitted'})) {
  &Apache::response::setup_params($$tagstack[-1]);   &Apache::response::setup_params($tag);
  $safeeval->share_from('capa',['&caparesponse_capa_check_answer']);   $safeeval->share_from('capa',['&caparesponse_capa_check_answer']);
  my $partid = $Apache::inputtags::part;   my $partid = $Apache::inputtags::part;
  my $id = $Apache::inputtags::response['-1'];   my $id = $Apache::inputtags::response['-1'];
  if ($Apache::lonhomework::type eq 'exam' &&    if ($Apache::lonhomework::type eq 'exam' && 
     $$tagstack[-1] eq 'formularesponse') {      $tag eq 'formularesponse') {
     $increment=&Apache::response::scored_response($partid,$id);      $increment=&Apache::response::scored_response($partid,$id);
  } else {   } else {
     my $response = &Apache::response::getresponse();      my $response = &Apache::response::getresponse();
Line 142  sub end_numericalresponse { Line 144  sub end_numericalresponse {
  #sig fig don't make much sense either   #sig fig don't make much sense either
  if (($Apache::lonhomework::type eq 'exam' ||   if (($Apache::lonhomework::type eq 'exam' ||
      $ENV{'form.submitted'} eq 'scantron') &&       $ENV{'form.submitted'} eq 'scantron') &&
     $$tagstack[-1] eq 'numericalresponse') {      $tag eq 'numericalresponse') {
     $expression.=';my $sig=undef;';      $expression.=';my $sig=undef;';
  }   }
   
  if ($$tagstack[-1] eq 'formularesponse') {   if ($tag eq 'formularesponse') {
     $expression.=';my $type="fml";';      $expression.=';my $type="fml";';
  } elsif ($$tagstack[-1] eq 'numericalresponse') {   } elsif ($tag eq 'numericalresponse') {
     $expression.=';my $type="float";';      $expression.=';my $type="float";';
  }   }
  $expression.="');";   $expression.="');";
Line 222  sub end_numericalresponse { Line 224  sub end_numericalresponse {
       $formats[0],\@incorrect);        $formats[0],\@incorrect);
     my @alphabet=('A'..'Z');      my @alphabet=('A'..'Z');
     if ($target eq 'web') {      if ($target eq 'web') {
  if ($$tagstack[-1] eq 'numericalresponse') {   if ($tag eq 'numericalresponse') {
     if ($unit=~/\S/) {$result.=' (in '.$unit.')<br /><br />';}      if ($unit=~/\S/) {$result.=' (in '.$unit.')<br /><br />';}
     $result.= '<table border="1"><tr>';      $result.= '<table border="1"><tr>';
     my $previous=$Apache::lonhomework::history{"resource.$Apache::inputtags::part.$id.submission"};      my $previous=$Apache::lonhomework::history{"resource.$Apache::inputtags::part.$id.submission"};
Line 237  sub end_numericalresponse { Line 239  sub end_numericalresponse {
     $bubble_values[$ind].'</td>';      $bubble_values[$ind].'</td>';
     }      }
     $result.='</tr></table>';      $result.='</tr></table>';
  } elsif ($$tagstack[-1] eq 'formularesponse') {   } elsif ($tag eq 'formularesponse') {
     $result.= '<br /><br /><font color="red">      $result.= '<br /><br /><font color="red">
                            <textarea name="HWVAL_'.$id.'" rows="4" cols="50">                             <textarea name="HWVAL_'.$id.'" rows="4" cols="50">
                            </textarea></font> <br /><br />';                             </textarea></font> <br /><br />';
Line 246  sub end_numericalresponse { Line 248  sub end_numericalresponse {
  if ((defined $unit) and ($unit=~/\S/) and ($Apache::lonhomework::type eq 'exam')) {   if ((defined $unit) and ($unit=~/\S/) and ($Apache::lonhomework::type eq 'exam')) {
     $result.=' \textit{(in} \verb|'.$unit.'|\textit{)} ';      $result.=' \textit{(in} \verb|'.$unit.'|\textit{)} ';
  }   }
  if ($$tagstack[-1] eq 'numericalresponse') {   if ($tag eq 'numericalresponse') {
     my ($celllength,$number_of_tables,@table_range)=      my ($celllength,$number_of_tables,@table_range)=
  &get_table_sizes($formats[0],$number_of_bubbles);   &get_table_sizes($formats[0],$number_of_bubbles);
     my $j=0;      my $j=0;
Line 286  sub end_numericalresponse { Line 288  sub end_numericalresponse {
  my $part_id="$Apache::inputtags::part.$Apache::inputtags::response[-1]";   my $part_id="$Apache::inputtags::part.$Apache::inputtags::response[-1]";
  if ($target eq 'analyze') {   if ($target eq 'analyze') {
     push (@{ $Apache::lonhomework::analyze{"parts"} },$part_id);      push (@{ $Apache::lonhomework::analyze{"parts"} },$part_id);
     $Apache::lonhomework::analyze{"$part_id.type"} = $$tagstack[-1];      $Apache::lonhomework::analyze{"$part_id.type"} = $tag;
     my (@incorrect)=&Apache::lonxml::get_param_var('incorrect',$parstack,$safeeval);      my (@incorrect)=&Apache::lonxml::get_param_var('incorrect',$parstack,$safeeval);
     push (@{ $Apache::lonhomework::analyze{"$part_id.incorrect"} }, @incorrect);      push (@{ $Apache::lonhomework::analyze{"$part_id.incorrect"} }, @incorrect);
  }   }
  &Apache::response::setup_params($$tagstack[-1]);   if (scalar(@$tagstack)) {
       &Apache::response::setup_params($tag);
    }
  my (@answers)=&Apache::lonxml::get_param_var('answer',$parstack,$safeeval);   my (@answers)=&Apache::lonxml::get_param_var('answer',$parstack,$safeeval);
  my (@formats)=&Apache::lonxml::get_param_var('format',$parstack,$safeeval);   my (@formats)=&Apache::lonxml::get_param_var('format',$parstack,$safeeval);
  my $unit=&Apache::lonxml::get_param_var('unit',$parstack,$safeeval);   my $unit=&Apache::lonxml::get_param_var('unit',$parstack,$safeeval);
  my $type=&Apache::lonxml::get_param('type',$parstack,$safeeval);   my $type=&Apache::lonxml::get_param('type',$parstack,$safeeval);
   
  if ($target eq 'answer') {   if ($target eq 'answer') {
     $result.=&Apache::response::answer_header($$tagstack[-1]);      $result.=&Apache::response::answer_header($tag);
  }   }
  for(my $i=0;$i<=$#answers;$i++) {   for(my $i=0;$i<=$#answers;$i++) {
     my $ans=$answers[$i];      my $ans=$answers[$i];
Line 311  sub end_numericalresponse { Line 315  sub end_numericalresponse {
     if ($Apache::inputtags::params{'sig'}) {      if ($Apache::inputtags::params{'sig'}) {
  ($sighigh,$siglow)=&get_sigrange($Apache::inputtags::params{'sig'});   ($sighigh,$siglow)=&get_sigrange($Apache::inputtags::params{'sig'});
     }      }
     if ($fmt && $$tagstack[-1] eq 'numericalresponse') {      if ($fmt && $tag eq 'numericalresponse') {
  $fmt=~s/e/E/g;   $fmt=~s/e/E/g;
  $ans = sprintf('%.'.$fmt,$ans);   $ans = sprintf('%.'.$fmt,$ans);
  if ($high) {   if ($high) {
Line 320  sub end_numericalresponse { Line 324  sub end_numericalresponse {
  }   }
     }      }
     if ($target eq 'answer') {      if ($target eq 'answer') {
  if ($high && $$tagstack[-1] eq 'numericalresponse') { $ans.=' ['.$low.','.$high.']'; }   if ($high && $tag eq 'numericalresponse') { $ans.=' ['.$low.','.$high.']'; }
  if ($sighigh && $$tagstack[-1] eq 'numericalresponse') {   if ($sighigh && $tag eq 'numericalresponse') {
     if ($ENV{'form.answer_output_mode'} eq 'tex') {      if ($ENV{'form.answer_output_mode'} eq 'tex') {
  $ans.= " Sig $siglow - $sighigh";   $ans.= " Sig $siglow - $sighigh";
     } else {      } else {
  $ans.= " Sig <i>$siglow - $sighigh</i>";   $ans.= " Sig <i>$siglow - $sighigh</i>";
     }      }
  }   }
  $result.=&Apache::response::answer_part($$tagstack[-1],$ans);   $result.=&Apache::response::answer_part($tag,$ans);
     } elsif ($target eq 'analyze') {      } elsif ($target eq 'analyze') {
  push (@{ $Apache::lonhomework::analyze{"$part_id.answer"} }, $ans);   push (@{ $Apache::lonhomework::analyze{"$part_id.answer"} }, $ans);
  if ($high) {   if ($high) {
Line 338  sub end_numericalresponse { Line 342  sub end_numericalresponse {
     }      }
  }   }
  if (defined($unit) and ($unit ne '') and   if (defined($unit) and ($unit ne '') and
     $$tagstack[-1] eq 'numericalresponse') {      $tag eq 'numericalresponse') {
     if ($target eq 'answer') {      if ($target eq 'answer') {
  if ($ENV{'form.answer_output_mode'} eq 'tex') {   if ($ENV{'form.answer_output_mode'} eq 'tex') {
     $result.=&Apache::response::answer_part($$tagstack[-1],      $result.=&Apache::response::answer_part($tag,
     " Unit: $unit ");      " Unit: $unit ");
  } else {   } else {
     $result.=&Apache::response::answer_part($$tagstack[-1],      $result.=&Apache::response::answer_part($tag,
     "Unit: <b>$unit</b>");      "Unit: <b>$unit</b>");
  }   }
     } elsif ($target eq 'analyze') {      } elsif ($target eq 'analyze') {
  push (@{ $Apache::lonhomework::analyze{"$part_id.unit"} }, $unit);   push (@{ $Apache::lonhomework::analyze{"$part_id.unit"} }, $unit);
     }      }
  }   }
  if ($$tagstack[-1] eq 'formularesponse' && $target eq 'answer') {   if ($tag eq 'formularesponse' && $target eq 'answer') {
     my $samples=&Apache::lonxml::get_param('samples',$parstack,$safeeval);      my $samples=&Apache::lonxml::get_param('samples',$parstack,$safeeval);
     $result.=&Apache::response::answer_part($$tagstack[-1],$samples);      $result.=&Apache::response::answer_part($tag,$samples);
  }   }
  if ($target eq 'answer') {   if ($target eq 'answer') {
     $result.=&Apache::response::answer_footer($$tagstack[-1]);      $result.=&Apache::response::answer_footer($tag);
  }   }
     }      }
     if ($target eq 'grade' || $target eq 'web' || $target eq 'answer' ||       if ($target eq 'grade' || $target eq 'web' || $target eq 'answer' || 
Line 531  sub end_stringresponse { Line 535  sub end_stringresponse {
  &Apache::lonxml::default_homework_load($safeeval);   &Apache::lonxml::default_homework_load($safeeval);
     }      }
     if ( $target eq 'grade' && defined($ENV{'form.submitted'})) {      if ( $target eq 'grade' && defined($ENV{'form.submitted'})) {
  &Apache::response::setup_params($$tagstack[-1]);   &Apache::response::setup_params('stringresponse');
  $safeeval->share_from('capa',['&caparesponse_capa_check_answer']);   $safeeval->share_from('capa',['&caparesponse_capa_check_answer']);
  if ($Apache::lonhomework::type eq 'exam' ||   if ($Apache::lonhomework::type eq 'exam' ||
     $ENV{'form.submitted'} eq 'scantron') {      $ENV{'form.submitted'} eq 'scantron') {
Line 605  sub end_stringresponse { Line 609  sub end_stringresponse {
     } elsif ($target eq 'answer' || $target eq 'analyze') {      } elsif ($target eq 'answer' || $target eq 'analyze') {
  if ($target eq 'analyze') {   if ($target eq 'analyze') {
     push (@{ $Apache::lonhomework::analyze{"parts"} },"$part.$id");      push (@{ $Apache::lonhomework::analyze{"parts"} },"$part.$id");
     $Apache::lonhomework::analyze{"$part.$id.type"} = $$tagstack[-1];      $Apache::lonhomework::analyze{"$part.$id.type"} = 'stringresponse';
  }   }
  &Apache::response::setup_params($$tagstack[-1]);   &Apache::response::setup_params('stringresponse');
  if ($target eq 'answer') {   if ($target eq 'answer') {
     $result.=&Apache::response::answer_header($$tagstack[-1]);      $result.=&Apache::response::answer_header('stringresponse');
  }   }
 # foreach my $ans (@answers) {  # foreach my $ans (@answers) {
     if ($target eq 'answer') {      if ($target eq 'answer') {
  $result.=&Apache::response::answer_part($$tagstack[-1],$answer);   $result.=&Apache::response::answer_part('stringresponse',$answer);
     } elsif ($target eq 'analyze') {      } elsif ($target eq 'analyze') {
  push (@{ $Apache::lonhomework::analyze{"$part.$id.answer"} },   push (@{ $Apache::lonhomework::analyze{"$part.$id.answer"} },
       $answer);        $answer);
Line 631  sub end_stringresponse { Line 635  sub end_stringresponse {
  }   }
  if ($target eq 'answer') {   if ($target eq 'answer') {
     if ($ENV{'form.answer_output_mode'} eq 'tex') {      if ($ENV{'form.answer_output_mode'} eq 'tex') {
  $result.=&Apache::response::answer_part($$tagstack[-1],   $result.=&Apache::response::answer_part('stringresponse',
  "$string");   "$string");
     } else {      } else {
  $result.=&Apache::response::answer_part($$tagstack[-1],   $result.=&Apache::response::answer_part('stringresponse',
  "<b>$string</b>");   "<b>$string</b>");
     }      }
  } elsif ($target eq 'analyze') {   } elsif ($target eq 'analyze') {
Line 642  sub end_stringresponse { Line 646  sub end_stringresponse {
   $type);    $type);
  }   }
  if ($target eq 'answer') {   if ($target eq 'answer') {
     $result.=&Apache::response::answer_footer($$tagstack[-1]);      $result.=&Apache::response::answer_footer('stringresponse');
  }   }
     } elsif ($target eq 'edit') {      } elsif ($target eq 'edit') {
  $result.='</td></tr>'.&Apache::edit::end_table;   $result.='</td></tr>'.&Apache::edit::end_table;

Removed from v.1.124  
changed lines
  Added in v.1.125


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