[LON-CAPA-cvs] cvs: loncom /homework radiobuttonresponse.pm
albertel
lon-capa-cvs@mail.lon-capa.org
Fri, 20 Jun 2003 04:05:13 -0000
albertel Fri Jun 20 00:05:13 2003 EDT
Modified files:
/loncom/homework radiobuttonresponse.pm
Log:
- Bug #35, RBR now complains if no true foils available
Index: loncom/homework/radiobuttonresponse.pm
diff -u loncom/homework/radiobuttonresponse.pm:1.71 loncom/homework/radiobuttonresponse.pm:1.72
--- loncom/homework/radiobuttonresponse.pm:1.71 Fri May 16 15:25:08 2003
+++ loncom/homework/radiobuttonresponse.pm Fri Jun 20 00:05:13 2003
@@ -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 @@
}
}
#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 @@
&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.<br />");
+ }
#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 @@
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) {