--- loncom/homework/radiobuttonresponse.pm 2003/05/16 19:25:08 1.71
+++ loncom/homework/radiobuttonresponse.pm 2003/10/13 19:25:30 1.74
@@ -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.74 2003/10/13 19:25:30 albertel Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -205,7 +205,7 @@ sub displayallfoils {
my $part=$Apache::inputtags::part;
my $lastresponse=$Apache::lonhomework::history{"resource.$part.$id.submission"};
my %lastresponse=&Apache::lonnet::str2hash($lastresponse);
- if (($Apache::lonhomework::history{"resource.$part.solved"} =~ /^correct/) || ($Apache::inputtags::status[-1] eq 'SHOW_ANSWER')) {
+ if (&Apache::response::show_answer() ) {
foreach my $name (@names) {
if ($Apache::response::foilgroup{$name.'.value'} ne 'unused') {
$result.="
".$Apache::response::foilgroup{$name.'.value'};
@@ -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) {
@@ -365,9 +371,8 @@ sub displayfoils {
my ($answer,@whichfoils)=&whichfoils($max,$randomize);
my $part=$Apache::inputtags::part;
my $solved=$Apache::lonhomework::history{"resource.$part.solved"};
- my $status=$Apache::inputtags::status[-1];
if ( ($target ne 'tex') &&
- (($solved =~ /^correct/) || ($status eq 'SHOW_ANSWER')) ) {
+ &Apache::response::show_answer() ) {
foreach my $name (@whichfoils) {
if ($target ne 'tex') {
$result.="
";