--- loncom/homework/optionresponse.pm 2003/04/21 22:09:47 1.75 +++ loncom/homework/optionresponse.pm 2003/05/27 13:56:21 1.78 @@ -1,7 +1,7 @@ # LearningOnline Network with CAPA # option list style responses # -# $Id: optionresponse.pm,v 1.75 2003/04/21 22:09:47 albertel Exp $ +# $Id: optionresponse.pm,v 1.78 2003/05/27 13:56:21 sakharuk Exp $ # # Copyright Michigan State University Board of Trustees # @@ -239,6 +239,8 @@ sub end_foilgroup { $Apache::lonhomework::results{"resource.$part.$id.awarddetail"}=$ad; $Apache::lonhomework::results{"resource.$part.$id.awarded"}= $right/(scalar(@whichopt)); + $Apache::lonhomework::results{"resource.$part.$id.numfoils"}= + scalar(@whichopt); } } } @@ -263,52 +265,10 @@ sub getfoilcounts { } sub whichfoils { - my ($max,$randomize)=@_; - $max = &getfoilcounts($max); - &Apache::lonxml::debug("randomize $randomize"); - if (!defined(@{ $Apache::response::foilgroup{'names'} })) {return;} - my @names = @{ $Apache::response::foilgroup{'names'} }; - my @whichopt =(); - my (%top,@toplist,%bottom,@bottomlist); - if (!(&Apache::response::showallfoils() || ($randomize eq 'no'))) { - my $current=0; - foreach my $name (@names) { - $current++; - if ($Apache::response::foilgroup{$name.'.location'} eq 'top') { - $top{$name}=$current; - } elsif ($Apache::response::foilgroup{$name.'.location'} eq - 'bottom') { - $bottom{$name}=$current; - } - } - } - while ((($#whichopt+1) < $max) && ($#names > -1)) { - &Apache::lonxml::debug("Have $#whichopt max is $max"); - my $aopt; - if (&Apache::response::showallfoils() || ($randomize eq 'no')) { - $aopt=0; - } else { - $aopt=int(&Math::Random::random_uniform() * ($#names+1)); - } - &Apache::lonxml::debug("From $#whichopt $max $#names elms, picking $aopt"); - $aopt=splice(@names,$aopt,1); - &Apache::lonxml::debug("Picked $aopt"); - if ($top{$aopt}) { - $toplist[$top{$aopt}]=$aopt; - } elsif ($bottom{$aopt}) { - $bottomlist[$bottom{$aopt}]=$aopt; - } else { - push (@whichopt,$aopt); - } - } - for (my $i=0;$i<=$#toplist;$i++) { - if ($toplist[$i]) { unshift(@whichopt,$toplist[$i]) } - } - for (my $i=0;$i<=$#bottomlist;$i++) { - if ($bottomlist[$i]) { push(@whichopt,$bottomlist[$i]) } - } - - return @whichopt; + my ($max,$randomize)=@_; + return &Apache::response::whichorder($max,$randomize, + &Apache::response::showallfoils(), + \%Apache::response::foilgroup); } sub displayanswers { @@ -435,6 +395,7 @@ sub displayfoils { } if ($Apache::lonhomework::type eq 'exam') { $result.='\vskip -2 mm\parbox{\textwidth}{\begin{enumerate}\item[\textbf{'.$Apache::lonxml::counter.'}.]\parbox{\textwidth - 5 mm}{'.&bubbles(\@alphabet,\@opt).'}\end{enumerate}} \vskip -9 mm \strut '; +# $Apache::lonxml::counter++; } $displayoptionintex=1; } else { @@ -455,6 +416,7 @@ sub displayfoils { } if ($Apache::lonhomework::type eq 'exam') { $result.='\vskip -2 mm \parbox{\textwidth}{\begin{enumerate}\item[\textbf{'.$Apache::lonxml::counter.'}.]\parbox{\textwidth - 5 mm}{'.&bubbles(\@alphabet,\@opt).'}\end{enumerate}} \vskip -9 mm \strut '; +# $Apache::lonxml::counter++; } } } @@ -663,7 +625,7 @@ sub end_foil { } else { push @{ $Apache::response::foilgroup{'names'} }, $name; $Apache::response::foilgroup{"$name.value"} = $value; - if ($Apache::lonhomework::type eq 'exam') { + 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') {