--- loncom/homework/radiobuttonresponse.pm 2002/05/03 20:13:14 1.41
+++ loncom/homework/radiobuttonresponse.pm 2002/08/05 15:55:21 1.45
@@ -1,7 +1,7 @@
# The LearningOnline Network with CAPA
# mutliple choice style responses
#
-# $Id: radiobuttonresponse.pm,v 1.41 2002/05/03 20:13:14 albertel Exp $
+# $Id: radiobuttonresponse.pm,v 1.45 2002/08/05 15:55:21 albertel Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -29,6 +29,7 @@
package Apache::radiobuttonresponse;
use strict;
+use HTML::Entities();
BEGIN {
&Apache::lonxml::register('Apache::radiobuttonresponse',('radiobuttonresponse'));
@@ -73,9 +74,9 @@ sub end_radiobuttonresponse {
return $result;
}
-%Apache::response::foilgroup={};
+%Apache::response::foilgroup=();
sub start_foilgroup {
- %Apache::response::foilgroup={};
+ %Apache::response::foilgroup=();
$Apache::radiobuttonresponse::conceptgroup=0;
&Apache::response::setrandomnumber();
return '';
@@ -183,13 +184,27 @@ sub displayallfoils {
my $part=$Apache::inputtags::part;
my $lastresponse=$Apache::lonhomework::history{"resource.$part.$id.submission"};
my %lastresponse=&Apache::lonnet::str2hash($lastresponse);
- &Apache::lonhomework::showhash(%lastresponse);
- foreach my $name (@names) {
- if ($Apache::response::foilgroup{$name.'.value'} ne 'unused') {
- $result.="
\n";
- $temp++;
+ if (($Apache::lonhomework::history{"resource.$part.solved"} =~ /^correct/) || ($Apache::inputtags::status[-1] eq 'SHOW_ANSWER')) {
+ foreach my $name (@names) {
+ if ($Apache::response::foilgroup{$name.'.value'} ne 'unused') {
+ $result.="
".$Apache::response::foilgroup{$name.'.value'};
+ if ($Apache::response::foilgroup{$name.'.value'} eq 'true') {
+ $result.='';
+ }
+ $result .= $Apache::response::foilgroup{$name.'.text'};
+ if ($Apache::response::foilgroup{$name.'.value'} eq 'true') {
+ $result.='';
+ }
+ }
+ }
+ } else {
+ foreach my $name (@names) {
+ if ($Apache::response::foilgroup{$name.'.value'} ne 'unused') {
+ $result.="
\n";
+ $temp++;
+ }
}
}
return $result;
@@ -217,7 +232,7 @@ sub whichfoils {
push (@falselist,$name);
} elsif ($Apache::response::foilgroup{$name.'.value'} eq 'unused') {
} else {
- &Apache::lonxml::error(&HTML::Entites::encode("No valid value assigned ($Apache::response::foilgroup{$name.'.value'}) for foil $name in "));
+ &Apache::lonxml::error(&HTML::Entities::encode("No valid value assigned ($Apache::response::foilgroup{$name.'.value'}) for foil $name in "));
}
}
my $whichtrue = int(rand($#truelist+1));
@@ -241,17 +256,22 @@ sub displayfoils {
my $result;
my @whichfoils=&whichfoils($max,$answer);
- if ($Apache::lonhomework::history{"resource.$Apache::inputtags::part.solved"} =~ /^correct/ ) {
+ if ($Apache::lonhomework::history{"resource.$Apache::inputtags::part.solved"} =~ /^correct/ || ($Apache::inputtags::status[-1] eq 'SHOW_ANSWER')) {
foreach my $name (@whichfoils) {
if ($target ne 'tex') {
$result.="
";
+ } else {
+ $result.='\vskip 0 mm ';
}
if ($Apache::response::foilgroup{$name.'.value'} eq 'true') {
- $result.='Correct';
+ $result.='Correct:';
} else {
- $result.='Incorrect';
+ $result.='Incorrect:';
+ }
+ $result.=$Apache::response::foilgroup{$name.'.text'}."\n";
+ if ($Apache::response::foilgroup{$name.'.value'} eq 'true') {
+ $result.='';
}
- $result.=":".$Apache::response::foilgroup{$name.'.text'}."\n";
}
} else {
my $temp=0;
@@ -265,12 +285,12 @@ sub displayfoils {
if (defined($lastresponse{$name})) { $result .= 'checked="on"'; }
$result .= '>'.$Apache::response::foilgroup{$name.'.text'}."\n";
} else {
- $result .= $Apache::response::foilgroup{$name.'.text'};
+ $result .= '\item '.$Apache::response::foilgroup{$name.'.text'};
}
$temp++;
}
}
- if ($target ne 'tex') { $result.="
"; }
+ if ($target ne 'tex') { $result.="
"; } else { $result.='\vskip 0 mm '; }
return $result;
}
@@ -289,7 +309,7 @@ sub displayanswers {
sub start_conceptgroup {
my ($target,$token,$tagstack,$parstack,$parser,$safeeval,$style)=@_;
$Apache::radiobuttonresponse::conceptgroup=1;
- %Apache::response::conceptgroup={};
+ %Apache::response::conceptgroup=();
my $result;
if ($target eq 'edit') {
$result.=&Apache::edit::tag_start($target,$token);
@@ -335,13 +355,10 @@ sub start_foil {
my $result='';
if ($target eq 'web' || $target eq 'tex') {
&Apache::lonxml::startredirection;
- if ($target eq 'tex') {
- $result .= '\item ';
- }
} elsif ($target eq 'edit') {
$result=&Apache::edit::tag_start($target,$token);
$result.=&Apache::edit::text_arg('Name:','name',$token);
- $result.=&Apache::edit::select_arg('Correct Option:','value',
+ $result.=&Apache::edit::select_or_text_arg('Correct Option:','value',
['unused','true','false'],$token);
$result.=&Apache::edit::end_row().&Apache::edit::start_spanning_row();
} elsif ($target eq 'modified') {