Diff for /loncom/homework/optionresponse.pm between versions 1.130 and 1.144

version 1.130, 2005/12/06 10:03:57 version 1.144, 2007/06/26 20:51:53
Line 114  sub start_foilgroup { Line 114  sub start_foilgroup {
         <td>Delete an Option:          <td>Delete an Option:
   <select name="$Apache::lonxml::curdepth.deleteopt">$optionlist</select>    <select name="$Apache::lonxml::curdepth.deleteopt">$optionlist</select>
 ENDTABLE  ENDTABLE
       $result.= &Apache::edit::checked_arg('Print options:','texoptions',
    [ ['nochoice','Don\'t show option list'] ]
    ,$token);
     $result.= &Apache::edit::end_row();      $result.= &Apache::edit::end_row();
     $result.= &Apache::edit::start_spanning_row();      $result.= &Apache::edit::start_spanning_row();
     $result.= $insertlist.'<br />';      $result.= $insertlist.'<br />';
Line 137  ENDTABLE Line 140  ENDTABLE
       }        }
       $optchanged=1;        $optchanged=1;
     }      }
     if ($optchanged) {      my $rebuildtag = &Apache::edit::get_new_args($token,$parstack,$safeeval,
    ('texoptions'));
       if ($optchanged || $rebuildtag ) {
       $result = "<foilgroup options=\"(";        $result = "<foilgroup options=\"(";
       foreach my $option (@options) {        foreach my $option (@options) {
  $option=~s/\'/\\\'/g;   $option=~s/\'/\\\'/g;
Line 145  ENDTABLE Line 150  ENDTABLE
  $result .="'".$option."',";   $result .="'".$option."',";
       }        }
       chop $result;        chop $result;
       $result.=')">';        $result.=')" ';
         $result .= 'texoptions="'.$token->[2]{'texoptions'}.'" ';
         $result .= '>';
     } # else nothing changed so just use the default mechanism      } # else nothing changed so just use the default mechanism
   }    }
   if ($target eq 'tex' and $Apache::lonhomework::type ne 'exam') {    if ($target eq 'tex' and $Apache::lonhomework::type ne 'exam') {
Line 176  sub end_foilgroup { Line 183  sub end_foilgroup {
        $safeeval,'-2');         $safeeval,'-2');
     if ($target eq 'web' || $target eq 'tex') {      if ($target eq 'web' || $target eq 'tex') {
       $result.=&displayfoils($target,$max,$randomize,$TeXlayout,@opt);        $result.=&displayfoils($target,$max,$randomize,$TeXlayout,@opt);
         $Apache::lonxml::post_evaluate=0;
     } elsif ( $target eq 'answer') {      } elsif ( $target eq 'answer') {
       $result.=&displayanswers($max,$randomize,@opt);        $result.=&displayanswers($max,$randomize,@opt);
         
     } elsif ( $target eq 'analyze') {      } elsif ( $target eq 'analyze') {
  my @shown = &whichfoils($max,$randomize);   my @shown = &whichfoils($max,$randomize);
  &Apache::response::analyze_store_foilgroup(\@shown,   &Apache::response::analyze_store_foilgroup(\@shown,
Line 407  sub displayfoils { Line 416  sub displayfoils {
       foreach my $option (@opt) {        foreach my $option (@opt) {
   my $escopt=&HTML::Entities::encode($option,'\'"&<>');    my $escopt=&HTML::Entities::encode($option,'\'"&<>');
   if ($option eq $lastopt) {    if ($option eq $lastopt) {
       $optionlist.="<option value='".$escopt."' selected=\"on\">$option</option>\n";        $optionlist.="<option value='".$escopt."' selected=\"selected\">$option</option>\n";
   } else {    } else {
       $optionlist.="<option value='".$escopt."'>$option</option>\n";        $optionlist.="<option value='".$escopt."'>$option</option>\n";
   }    }
       }        }
       if ($target ne 'tex') {        if ($target ne 'tex') {
   if ($Apache::lonhomework::type ne 'exam') {    if ($Apache::lonhomework::type ne 'exam') {
       $optionlist='<select name="HWVAL_'.        $optionlist='<select onchange="javascript:setSubmittedPart(\''.
     $part.'\');" name="HWVAL_'.
   $Apache::inputtags::response['-1'].':'.$temp.'">'.    $Apache::inputtags::response['-1'].':'.$temp.'">'.
   $optionlist."</select>\n";    $optionlist."</select>\n";
   } else {    } else {
Line 441  sub displayfoils { Line 451  sub displayfoils {
       $texoptionlist = &optionlist_correction($TeXlayout,@opt);        $texoptionlist = &optionlist_correction($TeXlayout,@opt);
   }    }
   if ($text=~/<drawoptionlist\s*\/>/) {    if ($text=~/<drawoptionlist\s*\/>/) {
       $text=~s|<drawoptionlist\s*/>| \\makebox\[0\.3in\]\[b\]\{\\hrulefill\} |;        $text=~s|<drawoptionlist\s*\/>| \\makebox\[0\.3in\]\[b\]\{\\hrulefill\} |g;
   }    }
   
   if ($text=~m/\\item /) {    if ($text=~m/\\item /) {
Line 466  sub displayfoils { Line 476  sub displayfoils {
       }        }
     }      }
   }    }
   
     if ($target eq 'web') {
         &Apache::response::setup_prior_tries_hash(\&Apache::rankresponse::format_prior_answer,
    [\@whichopt,
    'submissiongrading']);
     }
   
   if ($target ne 'tex') {    if ($target ne 'tex') {
       return $result.$break;        return $result.$break;
   } else {    } else {
Line 524  sub webbubbles { Line 541  sub webbubbles {
   
   
 sub bubbles {  sub bubbles {
     my ($ralphabet,$ropt,$response) = @_;      my ($ralphabet,$ropt,$response, $max_width) = @_;
     my @alphabet = @$ralphabet;      my @alphabet = @$ralphabet;
     my @opt = @$ropt;      my @opt = @$ropt;
     my ($result,$head,$line) =('','','');      my ($result,$head,$line) =('','','');
     my $number_of_bubbles = $#opt + 1;      my $number_of_bubbles = $#opt + 1;
     my $current_length = 0;      my $current_length = 0;
     my $textwidth;      my $textwidth;
     if ($env{'form.textwidth'} ne '') {      if (defined($max_width)) {
    $textwidth=$max_width;
    &Apache::lonxml::debug("Max width passed in: $max_width");
       } elsif ($env{'form.textwidth'} ne '') {
  $env{'form.textwidth'}=~/(\d+)/;   $env{'form.textwidth'}=~/(\d+)/;
  $textwidth=$1;   $textwidth=$1;
    &Apache::lonxml::debug("Max width from form: $textwidth");
     } else {      } else {
  $env{'form.textwidth'}=~/(\d*)\.?(\d*)/;   $env{'form.textwidth'}=~/(\d*)\.?(\d*)/;
  $textwidth=$1.'.'.$2;   $textwidth=$1.'.'.$2;
    &Apache::lonxml::debug("Max width defaults? $textwidth");
     }      }
       &Apache::lonxml::debug("Final maxwidth: $textwidth");
     for (my $ind=0;$ind<=$number_of_bubbles;$ind++) {      for (my $ind=0;$ind<=$number_of_bubbles;$ind++) {
  my $leftmargin;   my $leftmargin;
  $opt[$ind]=&Apache::lonxml::latex_special_symbols($opt[$ind]);   $opt[$ind]=&Apache::lonxml::latex_special_symbols($opt[$ind]);
  if ($response eq 'rankresponse') {$opt[$ind]='Rank '.$opt[$ind];}   if ($response eq 'rankresponse') {$opt[$ind]='Rank '.$opt[$ind];}
  if ($ind==0) {$leftmargin=6;} else {$leftmargin=10;}   if ($ind==0) {$leftmargin=6;} else {$leftmargin=10;}
   
  $current_length += (length($opt[$ind])+length($alphabet[$ind])+4)*2;   $current_length += (length($opt[$ind])+length($alphabet[$ind])+4)*2;
  if ($current_length<($textwidth-$leftmargin) and $ind!=$number_of_bubbles) {   if ($current_length<($textwidth-$leftmargin) and $ind!=$number_of_bubbles) {
     $line.='\hskip -1 mm {\small \textbf{'.$alphabet[$ind].'}}$\bigcirc$\hskip -1 mm & \hskip -3 mm {\small '.$opt[$ind].'} & ';      $line.='\hskip -1 mm {\small \textbf{'.$alphabet[$ind].'}}$\bigcirc$\hskip -1 mm & \hskip -3 mm {\small '.$opt[$ind].'} & ';
     $head.='lr';      $head.='lr';
  } else {   } else {
     $line=~s/\&\s*$//;      $line=~s/\&\s*$//;
     $result.='\vskip -2 mm\noindent\begin{tabular}{'.$head.'}'.$line.'\\\\\end{tabular}\vskip 0 mm';      $result.='\vskip -2 mm\noindent\setlength{\tabcolsep}{2 mm}\begin{tabular}{'.$head.'}'.$line.'\\\\\end{tabular}\vskip 0 mm';
     $line = '\hskip -1 mm {\small \textbf{'.$alphabet[$ind].'}}$\bigcirc$\hskip -1 mm & \hskip -3 mm {\small '.$opt[$ind].'} & ';;      $line = '\hskip -1 mm {\small \textbf{'.$alphabet[$ind].'}}$\bigcirc$\hskip -1 mm & \hskip -3 mm {\small '.$opt[$ind].'} & ';;
     $head ='lr';      $head ='lr';
     $current_length = (length($opt[$ind])+length($alphabet[$ind]))*2;      $current_length = (length($opt[$ind])+length($alphabet[$ind]))*2;
Line 681  sub end_foil { Line 705  sub end_foil {
   
 sub start_drawoptionlist {  sub start_drawoptionlist {
     my ($target,$token,$tagstack,$parstack,$parser,$safeeval,$style)=@_;      my ($target,$token,$tagstack,$parstack,$parser,$safeeval,$style)=@_;
     if ($target ne 'meta') {      if ($target !~ /^(?:meta|answer|modified|edit)$/) {
  return $token->[4];   return $token->[4];
     }      }
 }  }
   
 sub end_drawoptionlist {  sub end_drawoptionlist {
     my ($target,$token,$tagstack,$parstack,$parser,$safeeval,$style)=@_;      my ($target,$token,$tagstack,$parstack,$parser,$safeeval,$style)=@_;
     if ($target ne 'meta') {      if ($target !~ /^(?:meta|answer|modified|edit)$/) {
  return $token->[2];   return $token->[2];
     }      }
 }  }
   
 sub insert_foil {  sub insert_foil {
   return '      return '
 <foil name="" value="unused">  <foil name="" value="unused">
 <startouttext />  <startouttext />
 <endouttext />  <endouttext />
 </foil>';  </foil>';
 }  }
   
   sub insert_drawoptionlist {
       return '<drawoptionlist />';
   }
 1;  1;
 __END__  __END__
     

Removed from v.1.130  
changed lines
  Added in v.1.144


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