--- loncom/homework/optionresponse.pm 2002/10/01 20:17:04 1.50 +++ loncom/homework/optionresponse.pm 2002/10/17 14:40:05 1.52 @@ -1,7 +1,7 @@ # LearningOnline Network with CAPA # option list style responses # -# $Id: optionresponse.pm,v 1.50 2002/10/01 20:17:04 sakharuk Exp $ +# $Id: optionresponse.pm,v 1.52 2002/10/17 14:40:05 sakharuk Exp $ # # Copyright Michigan State University Board of Trustees # @@ -355,10 +355,18 @@ sub displayfoils { } else { if ($displayoptionintex == 0) { my $texoptionlist = &optionlist_correction($optionlist); + if ($Apache::lonhomework::type eq 'exam') {$texoptionlist='';} if ($Apache::response::foilgroup{$name.'.text'}=~m/\\item /) { + if ($Apache::lonhomework::type eq 'exam') { + $Apache::response::foilgroup{$name.'.text'}=~s/\\item/\\item[\\textbf{$Apache::lonxml::counter}\.]/; + } $result.= $texoptionlist.$Apache::response::foilgroup{$name.'.text'}; } else { - $result.= $texoptionlist.'\item '.$Apache::response::foilgroup{$name.'.text'}; + if ($Apache::lonhomework::type eq 'exam') { + $result.= $texoptionlist.'\item[\textbf{'.$Apache::lonxml::counter.'}.]'.$Apache::response::foilgroup{$name.'.text'}; + } else { + $result.= $texoptionlist.'\item '.$Apache::response::foilgroup{$name.'.text'}; + } } if ($Apache::lonhomework::type eq 'exam') { $result.=&bubbles(\@alphabet,\@opt); @@ -366,9 +374,16 @@ sub displayfoils { $displayoptionintex=1; } else { if ($Apache::response::foilgroup{$name.'.text'}=~m/\\item /) { + if ($Apache::lonhomework::type eq 'exam') { + $Apache::response::foilgroup{$name.'.text'}=~s/\\item/\\item[\\textbf{$Apache::lonxml::counter}\.]/; + } $result.= $Apache::response::foilgroup{$name.'.text'}; } else { - $result.= '\item '.$Apache::response::foilgroup{$name.'.text'}; + if ($Apache::lonhomework::type eq 'exam') { + $result.= '\item[\textbf{'.$Apache::lonxml::counter.'}.]'.$Apache::response::foilgroup{$name.'.text'}; + } else { + $result.= '\item '.$Apache::response::foilgroup{$name.'.text'}; + } } if ($Apache::lonhomework::type eq 'exam') { $result.=&bubbles(\@alphabet,\@opt); @@ -389,7 +404,7 @@ sub displayfoils { sub optionlist_correction { my $texoptionlist = shift; - $texoptionlist =~ s/<option><\/option>/\\item \[\] The possible answers are:/; + $texoptionlist =~ s/<option><\/option>/\\item \[\] Possible answers are:/; $texoptionlist =~ s/<option>/\{\\bf /g; $texoptionlist =~ s/<option selected="on">/\{\\bf /g; $texoptionlist =~ s/<\/option>/\},/g; @@ -406,18 +421,27 @@ sub bubbles { my ($ralphabit,$ropt) = @_; my @alphabet = @$ralphabit; my @opt = @$ropt; - my $result=''; + my ($result,$head,$line) =('','',''); my $number_of_bubbles = $#opt + 1; - $result.= '\vskip 2 mm \noindent \begin{tabular}{|'; - for (my $ind=0;$ind<$number_of_bubbles;$ind++) { - $result.='lr|'; - } - $result.='}\hline '; - for (my $ind=0;$ind<$number_of_bubbles;$ind++) { - $result.=' '.$alphabet[$ind].': & '.$opt[$ind].' '; - if ($ind != $number_of_bubbles - 1) {$result.=' & ';} + my $current_length = 0; + for (my $ind=0;$ind<=$number_of_bubbles;$ind++) { + $current_length += (length($opt[$ind])+length($alphabet[$ind])+2)*2; + if ($current_length<0.9*$ENV{'form.textwidth'} and $ind!=$number_of_bubbles) { + $line.='\hskip -1 mm {\small \textbf{'.$alphabet[$ind].'}}$\bigcirc$\hskip -1 mm & \hskip -3 mm {\small '.$opt[$ind].'} & '; + $head.='lr'; + } else { + $line=~s/\&\s*$//; + $result.='\vskip -5 mm\begin{tabular}{'.$head.'}\\\\'.$line.'\\\\\end{tabular}'; + $line = '\hskip -1 mm {\small \textbf{'.$alphabet[$ind].'}}$\bigcirc$\hskip -1 mm & \hskip -3 mm {\small '.$opt[$ind].'} & ';; + $head ='lr'; + $current_length = (length($opt[$ind])+length($alphabet[$ind]))*2; + } + } - $result.='\\\\\hline\end{tabular}\vskip 0 mm '; + $Apache::lonxml::counter++; + my %moreenv; + $moreenv{'form.counter'}=$Apache::lonxml::counter; + &Apache::lonnet::appenv(%moreenv); return $result; }