--- loncom/homework/matchresponse.pm 2010/04/27 14:11:17 1.80 +++ loncom/homework/matchresponse.pm 2010/12/19 00:54:20 1.81 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA # Full matching style response # -# $Id: matchresponse.pm,v 1.80 2010/04/27 14:11:17 onken Exp $ +# $Id: matchresponse.pm,v 1.81 2010/12/19 00:54:20 raeburn Exp $ # # Copyright Michigan State University Board of Trustees # @@ -252,7 +252,7 @@ sub start_foilgroup { my $result; %Apache::response::foilgroup=(); $Apache::matchresponse::conceptgroup=0; - &Apache::response::pushrandomnumber(); + &Apache::response::pushrandomnumber(undef,$target); if ($target eq 'edit') { $result.=&Apache::edit::start_table($token) .''.&mt('Collection Of Foils').'' @@ -354,6 +354,7 @@ sub grade_response { if (!&Apache::response::submitted()) { return; } my %responsehash; my %grade; + my %answerhash; my ($temp,$right,$wrong,$ignored)=(1,0,0,0); my %letter_name_map; if (defined(%{ $Apache::response::itemgroup{'letter_name_map'} })) { @@ -366,6 +367,9 @@ sub grade_response { push(@items,$response); my $responsename = $letter_name_map{$response}; my $value=$Apache::response::foilgroup{$name.'.value'}; + if ($Apache::lonhomework::type eq 'randomizetry') { + $answerhash{$name} = $value; + } if ( $response =~ /[^\s]/) { $responsehash{$name}=$responsename; &Apache::lonxml::debug("submitted a $response($responsename) for $value
\n"); @@ -392,6 +396,9 @@ sub grade_response { $itemstr; $Apache::lonhomework::results{"resource.$part.$id.submissiongrading"}= $gradestr; + if ($Apache::lonhomework::type eq 'randomizetry') { + $Apache::lonhomework::results{"resource.$part.$id.foilorder"} = &Apache::lonnet::array2str(@whichfoils); + } if (($Apache::lonhomework::type eq 'survey') || ($Apache::lonhomework::type eq 'surveycred') || ($Apache::lonhomework::type eq 'anonsurvey') || @@ -512,8 +519,16 @@ sub displayfoils { my $temp=1; my $id=$Apache::inputtags::response[-1]; my $part=$Apache::inputtags::part; - my $lastresponse; - unless ((($Apache::lonhomework::history{"resource.$part.type"} eq 'anonsurvey') || ($Apache::lonhomework::history{"resource.$part.type"} eq 'anonsurveycred')) && (defined($env{'form.grade_symb'}))) { + my ($lastresponse,$newvariation); + if ((($Apache::lonhomework::history{"resource.$part.type"} eq 'randomizetry') || + ($Apache::lonhomework::type eq 'randomizetry')) && + ($Apache::inputtags::status[-1] eq 'CAN_ANSWER')) { + if ($env{'form.'.$part.'.rndseed'} ne + $Apache::lonhomework::history{"resource.$part.rndseed"}) { + $newvariation = 1; + } + } + unless ((($Apache::lonhomework::history{"resource.$part.type"} eq 'anonsurvey') || ($Apache::lonhomework::history{"resource.$part.type"} eq 'anonsurveycred') && (defined($env{'form.grade_symb'}))) || $newvariation) { $lastresponse=$Apache::lonhomework::history{"resource.$part.$id.submission"}; } my %lastresponse=&Apache::lonnet::str2hash($lastresponse); @@ -542,7 +557,7 @@ sub displayfoils { foreach $option (@used_letters) { if ($option eq $last_letter) { if ($target ne 'tex') { - $optionlist.="\n"; + $optionlist.="\n"; } elsif ($target eq 'tex' && $env{'form.pdfFormFields'} eq 'yes' && $Apache::inputtags::status['-1'] eq 'CAN_ANSWER' && $Apache::lonhomework::type ne 'exam') { @@ -652,10 +667,15 @@ sub displayfoils { } } if ($target eq 'web') { + my $questiontype; + if ($Apache::lonhomework::type eq 'randomizetry') { + $questiontype = $Apache::lonhomework::type; + } &Apache::response::setup_prior_tries_hash(\&format_prior_answer, [\@whichfoils, 'submissiongrading', - 'submissionitems']); + 'submissionitems'], + $questiontype); } if ($target ne 'tex') {$result.="
";} else {$result.=' \\\\ ';} return $result;