--- loncom/homework/optionresponse.pm 2003/07/25 18:46:19 1.80 +++ loncom/homework/optionresponse.pm 2003/10/15 19:40:42 1.90 @@ -1,7 +1,7 @@ # LearningOnline Network with CAPA # option list style responses # -# $Id: optionresponse.pm,v 1.80 2003/07/25 18:46:19 sakharuk Exp $ +# $Id: optionresponse.pm,v 1.90 2003/10/15 19:40:42 albertel Exp $ # # Copyright Michigan State University Board of Trustees # @@ -152,11 +152,11 @@ sub end_foilgroup { my $result; if ($target eq 'grade' || $target eq 'web' || $target eq 'answer' || $target eq 'tex' || $target eq 'analyze') { - my $tex_option_switch=&Apache::lonxml::get_param('texout',$parstack,$safeeval); + my $tex_option_switch=&Apache::lonxml::get_param('texoptions',$parstack,$safeeval); my $name; my @opt; eval '@opt ='.&Apache::lonxml::get_param('options',$parstack,$safeeval); - if ($target eq 'tex' && $tex_option_switch eq 'nooptions') {@opt=();} + if ($target eq 'tex' && $tex_option_switch eq 'nochoice') {@opt=();} &Apache::lonxml::debug("Options are $#opt"); my $max = &Apache::lonxml::get_param('max',$parstack,$safeeval,'-2'); my $randomize = &Apache::lonxml::get_param('randomize',$parstack, @@ -302,12 +302,13 @@ sub displayfoils { my $id=$Apache::inputtags::response[-1]; my $break; my $solved=$Apache::lonhomework::history{"resource.$part.solved"}; - my $status=$Apache::inputtags::status[-1]; - if ( - ($target ne 'tex') && - (($solved =~ /^correct/) || ($status eq 'SHOW_ANSWER')) ) { + if ( ($target ne 'tex') && + &Apache::response::show_answer() ) { + my $temp=1; foreach $name (@whichopt) { my $text=$Apache::response::foilgroup{$name.'.text'}; + my %lastresponse=&Apache::lonnet::str2hash($Apache::lonhomework::history{"resource.$part.$id.submission"}); + my $lastopt=$lastresponse{$name}; if ($text!~/^\s*$/) { if ($target eq 'tex') { $break='\vskip 0 mm '; @@ -328,16 +329,18 @@ sub displayfoils { $result.=$text."\n"; } elsif ($target eq 'tex') { $Apache::response::foilgroup{$name.'.text'}=~s/\\item//; - $result .='\item \textit{'.$Apache::response::foilgroup{$name.'.value'}.'}'. + if ($max>1) {$result .='\item ';} + $result .=' \textit{'.$Apache::response::foilgroup{$name.'.value'}.'}'. ":".$Apache::response::foilgroup{$name.'.text'}."\n"; } if ($Apache::lonhomework::type eq 'exam') { if ($target ne 'tex') { - $result.=&webbubbles(\@opt,\@alphabet); + $result.=&webbubbles(\@opt,\@alphabet,$temp,$lastopt); } else { $result.=&bubbles(\@alphabet,\@opt); } } + $temp++; } } else { my $temp=1; @@ -374,7 +377,7 @@ sub displayfoils { } $result.=$break.$text."\n"; if ($Apache::lonhomework::type eq 'exam') { - $result.=&webbubbles(\@opt,\@alphabet,$temp); + $result.=&webbubbles(\@opt,\@alphabet,$temp,$lastopt); } $temp++; } else { @@ -436,8 +439,8 @@ sub displayfoils { sub optionlist_correction { my $texoptionlist = shift; - if ($texoptionlist=~/<option selected/) { - $texoptionlist =~ s/<option><\/option>/\\item \[\] Possible answers are:/; + if ($texoptionlist=~/<option selected/ or $texoptionlist=~/<option>[^<]+<\/option>/) { + $texoptionlist =~ s/<option><\/option>/\\item \[\] Choices: /; $texoptionlist =~ s/<option>/\{\\bf /g; $texoptionlist =~ s/<option selected="on">/\{\\bf /g; $texoptionlist =~ s/<\/option>/\},/g; @@ -455,18 +458,24 @@ sub optionlist_correction { sub webbubbles { - my ($ropt,$ralphabet,$temp)=@_; + my ($ropt,$ralphabet,$temp,$lastopt)=@_; my @opt=@$ropt; my @alphabet=@$ralphabet; my $result=''; - my $number_of_bubbles = $#opt + 1; - $result.= '<table border="1"><tr>'; - for (my $ind=0;$ind<$number_of_bubbles;$ind++) { - $result.='<td><input type="radio" name="HWVAL_'.$Apache::inputtags::response['-1'].':'.$temp. - '" value='.$opt[$ind].'>'.$alphabet[$ind].': '.$opt[$ind].'</td>'; + my $number_of_bubbles = $#opt + 1; + $result.= '<table border="1"><tr>'; + for (my $ind=0;$ind<$number_of_bubbles;$ind++) { + my $checked=''; + if ($lastopt eq $opt[$ind]) { + $checked=' checked="on" '; } - $result.='</tr></table>'; - return $result; + $result.='<td><input type="radio" name="HWVAL_'. + $Apache::inputtags::response['-1'].':'.$temp. + '" value="'.$opt[$ind].'" '.$checked.' />'.$alphabet[$ind].': '. + $opt[$ind].'</td>'; + } + $result.='</tr></table>'; + return $result; } @@ -602,7 +611,7 @@ sub end_foil { my ($target,$token,$tagstack,$parstack,$parser,$safeeval,$style)=@_; my $text =''; my $result = ''; - if ($target eq 'web' || $target eq 'tex') { + if ($target eq 'web' || $target eq 'tex' || $target eq 'analyze') { $text=&Apache::lonxml::endredirection; if ($target eq 'tex' and $Apache::lonhomework::type ne 'exam') { $text = '\vspace*{-2 mm}\item '.$text; } } @@ -622,11 +631,7 @@ sub end_foil { if ($target eq 'tex' and $Apache::lonhomework::type eq 'exam') { $Apache::response::conceptgroup{"$name.text"} = '\vskip 4 mm $\triangleright$ '.$text; } else { - if ($target eq 'tex' and $Apache::lonhomework::type eq 'exam') { - $Apache::response::conceptgroup{"$name.text"} = ' $\triangleright$ '.$text; - } else { - $Apache::response::conceptgroup{"$name.text"} = $text; - } + $Apache::response::conceptgroup{"$name.text"} = $text; } $Apache::response::conceptgroup{"$name.location"} = $location; } else { @@ -635,11 +640,7 @@ sub end_foil { if ($target eq 'tex' and $Apache::lonhomework::type eq 'exam') { $Apache::response::foilgroup{"$name.text"} = '\vskip 5 mm $\triangleright$ '.$text; } else { - if ($target eq 'tex' and $Apache::lonhomework::type eq 'exam') { - $Apache::response::foilgroup{"$name.text"} = ' $\triangleright$ '.$text; - } else { - $Apache::response::foilgroup{"$name.text"} = $text; - } + $Apache::response::foilgroup{"$name.text"} = $text; } $Apache::response::foilgroup{"$name.location"} = $location; }