Diff for /loncom/homework/matchresponse.pm between versions 1.51 and 1.56

version 1.51, 2005/02/12 01:13:56 version 1.56, 2005/12/06 10:13:46
Line 32  use HTML::Entities(); Line 32  use HTML::Entities();
 use Math::Random();  use Math::Random();
 use Apache::optionresponse();  use Apache::optionresponse();
 use Apache::lonlocal;  use Apache::lonlocal;
   use Apache::lonnet;
   
 BEGIN {  BEGIN {
     &Apache::lonxml::register('Apache::matchresponse',('matchresponse'));      &Apache::lonxml::register('Apache::matchresponse',('matchresponse'));
Line 215  sub end_item { Line 216  sub end_item {
  my $location=&Apache::lonxml::get_param('location',$parstack,   my $location=&Apache::lonxml::get_param('location',$parstack,
  $safeeval);   $safeeval);
  &Apache::lonxml::debug("Got a name of :$name:");   &Apache::lonxml::debug("Got a name of :$name:");
  if (!$name) { $name=$Apache::lonxml::curdepth; }   if ($name eq "") { $name=$Apache::lonxml::curdepth; }
  &Apache::lonxml::debug("Using a name of :$name:");   &Apache::lonxml::debug("Using a name of :$name:");
  push @{ $Apache::response::itemgroup{'names'} }, $name;   push @{ $Apache::response::itemgroup{'names'} }, $name;
  $Apache::response::itemgroup{"$name.text"} = $text;   $Apache::response::itemgroup{"$name.text"} = $text;
Line 295  sub displayanswers { Line 296  sub displayanswers {
    $randomize,     $randomize,
   &Apache::response::showallfoils(),    &Apache::response::showallfoils(),
  \%Apache::response::foilgroup);   \%Apache::response::foilgroup);
     my $result=&Apache::response::answer_header('matchresponse');  
     my %name_letter_map;      my %name_letter_map;
     if (defined(%{ $Apache::response::itemgroup{'name_letter_map'} })) {      if (defined(%{ $Apache::response::itemgroup{'name_letter_map'} })) {
  %name_letter_map=   %name_letter_map=
     %{ $Apache::response::itemgroup{'name_letter_map'} };      %{ $Apache::response::itemgroup{'name_letter_map'} };
     }      }
     foreach my $name (@whichfoils) {      my $result;
  my $value_name=$Apache::response::foilgroup{$name.'.value'};      if ($Apache::lonhomework::type eq 'exam') {
  my $letter=$name_letter_map{$value_name};   my $i=0;
  $result.=&Apache::response::answer_part('matchresponse',$letter);   foreach my $name (@whichfoils) {
       $result.=&Apache::response::answer_header('matchresponse',$i++);
       my $value_name=$Apache::response::foilgroup{$name.'.value'};
       my $letter=$name_letter_map{$value_name};
       $result.=&Apache::response::answer_part('matchresponse',$letter);
       $result.=&Apache::response::answer_footer('matchresponse');
    }
       } else {
    $result=&Apache::response::answer_header('matchresponse');
    foreach my $name (@whichfoils) {
       my $value_name=$Apache::response::foilgroup{$name.'.value'};
       my $letter=$name_letter_map{$value_name};
       $result.=&Apache::response::answer_part('matchresponse',$letter);
    }
    $result.=&Apache::response::answer_footer('matchresponse');
     }      }
     $result.=&Apache::response::answer_footer('matchresponse');  
     return $result;      return $result;
 }  }
   
Line 437  sub displayfoils { Line 450  sub displayfoils {
     if ($target eq 'tex') {      if ($target eq 'tex') {
  $question.=' \\\\ '.$letter.':'.$text;   $question.=' \\\\ '.$letter.':'.$text;
     } else {      } else {
  $question.='<br />'.$letter.':'.$text;   $question.='<br /><b>'.$letter.':</b> '.$text;
     }      }
  }   }
     } else {      } else {
Line 510  sub displayfoils { Line 523  sub displayfoils {
     $result='<table><tr><td valign="top">'.$question.      $result='<table><tr><td valign="top">'.$question.
  '</td><td valign="top">'.$result.'</td></tr></table>';   '</td><td valign="top">'.$result.'</td></tr></table>';
  } else {   } else {
     my $tabsize=&Apache::londefdef::recalc($ENV{'form.textwidth'});      my $tabsize=&Apache::londefdef::recalc($env{'form.textwidth'});
     my ($lefttabsize,$righttabsize)=(0,0);      my ($lefttabsize,$righttabsize)=(0,0);
     if ($Apache::matchresponse::TeXitemgroupwidth ne '') {      if ($Apache::matchresponse::TeXitemgroupwidth ne '') {
  $Apache::matchresponse::TeXitemgroupwidth=~/(\d*.?\d*)/;   $Apache::matchresponse::TeXitemgroupwidth=~/(\d*.?\d*)/;
Line 532  sub displayfoils { Line 545  sub displayfoils {
     $result='<table><tr><td valign="top">'.$result.      $result='<table><tr><td valign="top">'.$result.
  '</td><td valign="top">'.$question.'</td></tr></table>';   '</td><td valign="top">'.$question.'</td></tr></table>';
  } else {   } else {
     my $tabsize=&Apache::londefdef::recalc($ENV{'form.textwidth'});      my $tabsize=&Apache::londefdef::recalc($env{'form.textwidth'});
     my ($lefttabsize,$righttabsize)=(0,0);      my ($lefttabsize,$righttabsize)=(0,0);
     if ($Apache::matchresponse::TeXitemgroupwidth ne '') {      if ($Apache::matchresponse::TeXitemgroupwidth ne '') {
  $Apache::matchresponse::TeXitemgroupwidth=~/(\d*.?\d*)/;   $Apache::matchresponse::TeXitemgroupwidth=~/(\d*.?\d*)/;
Line 655  sub end_foil { Line 668  sub end_foil {
     my $name = &Apache::lonxml::get_param('name',$parstack,$safeeval);      my $name = &Apache::lonxml::get_param('name',$parstack,$safeeval);
     &Apache::lonxml::debug("Got a name of :$name:");      &Apache::lonxml::debug("Got a name of :$name:");
     if (!$name) {      if (!$name) {
  &Apache::lonxml::error("Foils without names exist. This can cause problems to malfunction.");   &Apache::lonxml::warning("Foils without names exist. This can cause problems to malfunction.");
  $name=$Apache::lonxml::curdepth;   $name=$Apache::lonxml::curdepth;
     }      }
     &Apache::lonxml::debug("Using a name of :$name:");      &Apache::lonxml::debug("Using a name of :$name:");

Removed from v.1.51  
changed lines
  Added in v.1.56


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