--- loncom/homework/radiobuttonresponse.pm 2003/05/16 19:25:08 1.71 +++ loncom/homework/radiobuttonresponse.pm 2003/06/20 04:05:13 1.72 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA # mutliple choice style responses # -# $Id: radiobuttonresponse.pm,v 1.71 2003/05/16 19:25:08 albertel Exp $ +# $Id: radiobuttonresponse.pm,v 1.72 2003/06/20 04:05:13 albertel Exp $ # # Copyright Michigan State University Board of Trustees # @@ -291,6 +291,8 @@ sub whichfoils { } } #pick a true statement + my $notrue=0; + if (scalar(@truelist) == 0) { $notrue=1; } my $whichtrue = int(&Math::Random::random_uniform() * ($#truelist+1)); &Apache::lonxml::debug("Max is $max, From $#truelist elms, picking $whichtrue"); my (@toplist, @bottomlist); @@ -319,8 +321,12 @@ sub whichfoils { &Apache::lonxml::debug("Answer wants $answer"); my $truename=$truelist[$whichtrue]; my $dosplice=1; + if ($notrue) { + $dosplice=0; + &Apache::lonxml::error("There are no true statements available.
"); + } #insert the true statement, keeping track of where it wants to be - if ($Apache::response::foilgroup{$truename.'.location'} eq 'top' ) { + if ($Apache::response::foilgroup{$truename.'.location'} eq 'top' && $dosplice) { $toplist[$top{$truename}]=$truename; $answer=-1; foreach my $top (reverse(@toplist)) { @@ -328,7 +334,7 @@ sub whichfoils { if ($top eq $truename) { last; } } $dosplice=0; - } elsif ($Apache::response::foilgroup{$truename.'.location'} eq 'bottom') { + } elsif ($Apache::response::foilgroup{$truename.'.location'} eq 'bottom' && $dosplice) { $bottomlist[$bottom{$truename}]=$truename; $answer=-1; foreach my $bot (@bottomlist) {