--- loncom/homework/optionresponse.pm 2006/02/02 20:36:07 1.131
+++ loncom/homework/optionresponse.pm 2007/03/01 02:33:28 1.138
@@ -1,7 +1,7 @@
# LearningOnline Network with CAPA
# option list style responses
#
-# $Id: optionresponse.pm,v 1.131 2006/02/02 20:36:07 albertel Exp $
+# $Id: optionresponse.pm,v 1.138 2007/03/01 02:33:28 albertel Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -114,6 +114,9 @@ sub start_foilgroup {
Delete an Option:
ENDTABLE
+ $result.= &Apache::edit::checked_arg('Print options:','texoptions',
+ [ ['nochoice','Don\'t show option list'] ]
+ ,$token);
$result.= &Apache::edit::end_row();
$result.= &Apache::edit::start_spanning_row();
$result.= $insertlist.' ';
@@ -137,7 +140,9 @@ ENDTABLE
}
$optchanged=1;
}
- if ($optchanged) {
+ my $rebuildtag = &Apache::edit::get_new_args($token,$parstack,$safeeval,
+ ('texoptions'));
+ if ($optchanged || $rebuildtag ) {
$result = "';
+ $result.=')" ';
+ $result .= 'texoptions="'.$token->[2]{'texoptions'}.'" ';
+ $result .= '>';
} # else nothing changed so just use the default mechanism
}
if ($target eq 'tex' and $Apache::lonhomework::type ne 'exam') {
@@ -176,8 +183,10 @@ sub end_foilgroup {
$safeeval,'-2');
if ($target eq 'web' || $target eq 'tex') {
$result.=&displayfoils($target,$max,$randomize,$TeXlayout,@opt);
+ $Apache::lonxml::post_evaluate=0;
} elsif ( $target eq 'answer') {
$result.=&displayanswers($max,$randomize,@opt);
+
} elsif ( $target eq 'analyze') {
my @shown = &whichfoils($max,$randomize);
&Apache::response::analyze_store_foilgroup(\@shown,
@@ -346,6 +355,27 @@ sub check_for_invalid {
}
}
+sub setup_prior_tries_hash {
+ my ($whichopt) = @_;
+ my $part=$Apache::inputtags::part;
+ my $id=$Apache::inputtags::response[-1];
+ foreach my $i (1..$Apache::lonhomework::history{'version'}) {
+ my $key = "$i:resource.$part.$id.submission";
+ next if (!exists($Apache::lonhomework::history{"$key"}));
+ my %lastresponse=
+ &Apache::lonnet::str2hash($Apache::lonhomework::history{$key});
+ my $output;
+ foreach my $name (@$whichopt) {
+ next if (!defined($lastresponse{$name}));
+ $output .= ''.$lastresponse{$name}.' | ';
+ }
+ next if (!defined($output));
+ $output =
+ '';
+ $Apache::inputtags::submission_display{$key} = $output;
+ }
+}
+
sub displayfoils {
my ($target,$max,$randomize,$TeXlayout,@opt)=@_;
if (!defined(@{ $Apache::response::foilgroup{'names'} })) {return;}
@@ -407,7 +437,7 @@ sub displayfoils {
foreach my $option (@opt) {
my $escopt=&HTML::Entities::encode($option,'\'"&<>');
if ($option eq $lastopt) {
- $optionlist.="\n";
+ $optionlist.="\n";
} else {
$optionlist.="\n";
}
@@ -441,7 +471,7 @@ sub displayfoils {
$texoptionlist = &optionlist_correction($TeXlayout,@opt);
}
if ($text=~//) {
- $text=~s|| \\makebox\[0\.3in\]\[b\]\{\\hrulefill\} |;
+ $text=~s|| \\makebox\[0\.3in\]\[b\]\{\\hrulefill\} |g;
}
if ($text=~m/\\item /) {
@@ -466,6 +496,11 @@ sub displayfoils {
}
}
}
+
+ if ($target eq 'web') {
+ &setup_prior_tries_hash(\@whichopt);
+ }
+
if ($target ne 'tex') {
return $result.$break;
} else {
@@ -681,14 +716,14 @@ sub end_foil {
sub start_drawoptionlist {
my ($target,$token,$tagstack,$parstack,$parser,$safeeval,$style)=@_;
- if ($target ne 'meta') {
+ if (($target ne 'meta') && ($target ne 'answer')) {
return $token->[4];
}
}
sub end_drawoptionlist {
my ($target,$token,$tagstack,$parstack,$parser,$safeeval,$style)=@_;
- if ($target ne 'meta') {
+ if (($target ne 'meta') && ($target ne 'answer')) {
return $token->[2];
}
}
|