--- loncom/homework/optionresponse.pm 2004/04/23 17:57:18 1.107 +++ loncom/homework/optionresponse.pm 2004/07/06 14:53:00 1.112 @@ -1,7 +1,7 @@ # LearningOnline Network with CAPA # option list style responses # -# $Id: optionresponse.pm,v 1.107 2004/04/23 17:57:18 sakharuk Exp $ +# $Id: optionresponse.pm,v 1.112 2004/07/06 14:53:00 sakharuk Exp $ # # Copyright Michigan State University Board of Trustees # @@ -38,7 +38,7 @@ sub start_optionresponse { my ($target,$token,$tagstack,$parstack,$parser,$safeeval,$style)=@_; my $result=''; #when in a option response use these - &Apache::lonxml::register('Apache::optionresponse',('foilgroup','foil','conceptgroup')); + &Apache::lonxml::register('Apache::optionresponse',('foilgroup','foil','conceptgroup','drawoptionlist')); push (@Apache::lonxml::namespace,'optionresponse'); my $id = &Apache::response::start_response($parstack,$safeeval); %Apache::hint::option=(); @@ -56,10 +56,14 @@ sub start_optionresponse { $token,'4'). &Apache::edit::select_arg('Randomize Foil Order','randomize', ['yes','no'],$token). + &Apache::edit::select_arg(&mt('Display of options when printed'),'TeXlayout', + [['horizontal',&mt('Normal list')], + ['vertical',&mt('Listed in a vertical column')]],$token). &Apache::edit::end_row().&Apache::edit::start_spanning_row(); } elsif ($target eq 'modified') { my $constructtag=&Apache::edit::get_new_args($token,$parstack, - $safeeval,'max','randomize'); + $safeeval,'max','randomize', + 'TeXlayout'); if ($constructtag) { $result = &Apache::edit::rebuild_tag($token); } } elsif ($target eq 'meta') { $result=&Apache::response::meta_package_write('optionresponse'); @@ -74,7 +78,7 @@ sub end_optionresponse { my ($target,$token,$tagstack,$parstack,$parser,$safeeval,$style)=@_; &Apache::response::end_response; pop @Apache::lonxml::namespace; - &Apache::lonxml::deregister('Apache::optionresponse',('foilgroup','foil','conceptgroup')); + &Apache::lonxml::deregister('Apache::optionresponse',('foilgroup','foil','conceptgroup','drawoptionlist')); my $result; if ($target eq 'edit') { $result=&Apache::edit::end_table(); } undef(%Apache::response::foilnames); @@ -88,7 +92,7 @@ sub start_foilgroup { my $result=''; %Apache::response::foilgroup=(); $Apache::optionresponse::conceptgroup=0; - &Apache::response::setrandomnumber(); + &Apache::response::pushrandomnumber(); if ($target eq 'edit') { my $optionlist="\n"; my $option; @@ -144,7 +148,8 @@ ENDTABLE } # else nothing changed so just use the default mechanism } if ($target eq 'tex' and $Apache::lonhomework::type ne 'exam') { - $result .= ' \begin{enumerate} '; + $result .= ' \renewcommand{\labelenumi}{\Alph{enumi}.} + \begin{enumerate} '; } return $result; } @@ -159,8 +164,8 @@ sub end_foilgroup { my $name; my @opt; eval '@opt ='.&Apache::lonxml::get_param('options',$parstack,$safeeval); - my $TeXlayout=&Apache::lonxml::get_param('TeXlayout',$parstack,$safeeval,undef,0); - &Apache::lonnet::logthis("PARAMETER U>$TeXlayout>$TeXlayout<<"); if (!defined(@{ $Apache::response::foilgroup{'names'} })) {return;} my @names = @{ $Apache::response::foilgroup{'names'} }; my @truelist; @@ -333,7 +338,7 @@ sub displayfoils { my $lastopt=$lastresponse{$name}; if ($text!~/^\s*$/) { $break='
'; } $result.=$break; - if ($target eq 'web') { + if ($target eq 'web' || $target eq 'tex') { my $value=$Apache::response::foilgroup{$name.'.value'}; if (!($text=~s||$value|)) { if ($text=~/^\s*$/) { @@ -345,7 +350,7 @@ sub displayfoils { $text='•'.$text; } $result.=$text."\n"; - } + } if ($Apache::lonhomework::type eq 'exam') { $result.=&webbubbles(\@opt,\@alphabet,$temp,$lastopt); } @@ -438,7 +443,6 @@ sub displayfoils { sub optionlist_correction { my ($TeXlayout,@options) = @_; - &Apache::lonnet::logthis("PARAMETER >$TeXlayout<"); my $texoptionlist='\\item [] Choices: '; if ($TeXlayout eq 'vertical') {$texoptionlist='\\item []';} if (scalar(@options) > 0) { @@ -475,8 +479,11 @@ sub webbubbles { } $result.=''.$alphabet[$ind].': '. - $opt[$ind].''; + '" value="'.$opt[$ind].'" '.$checked.' />'; + if ($alphabet[$ind]) { + $result.=$alphabet[$ind].': '; + } + $result.=$opt[$ind].''; } $result.=''; return $result; @@ -596,8 +603,6 @@ sub end_foil { my $result = ''; if ($target eq 'web' || $target eq 'tex' || $target eq 'analyze') { $text=&Apache::lonxml::endredirection; - $text=~/(\w)/; - &Apache::lonnet::logthis("TTTEXT IS HERE NOW >>$text<< >>>$1<<<"); if (($target eq 'tex') and ($Apache::lonhomework::type ne 'exam') and ($text=~/\S/)) {$text = '\vspace*{-2 mm}\item '.$text;} } if ($target eq 'web' || $target eq 'grade' || $target eq 'answer' @@ -641,6 +646,16 @@ sub end_foil { return $result; } +sub start_drawoptionlist { + my ($target,$token,$tagstack,$parstack,$parser,$safeeval,$style)=@_; + return $token->[4]; +} + +sub end_drawoptionlist { + my ($target,$token,$tagstack,$parstack,$parser,$safeeval,$style)=@_; + return $token->[2]; +} + sub insert_foil { return '