--- loncom/homework/optionresponse.pm 2010/09/05 20:46:58 1.172 +++ loncom/homework/optionresponse.pm 2011/10/08 23:03:42 1.173.2.1 @@ -1,7 +1,7 @@ # LearningOnline Network with CAPA # option list style responses # -# $Id: optionresponse.pm,v 1.172 2010/09/05 20:46:58 www Exp $ +# $Id: optionresponse.pm,v 1.173.2.1 2011/10/08 23:03:42 raeburn Exp $ # # Copyright Michigan State University Board of Trustees # @@ -103,7 +103,7 @@ sub start_foilgroup { my $result=''; %Apache::response::foilgroup=(); $Apache::optionresponse::conceptgroup=0; - &Apache::response::pushrandomnumber(); + &Apache::response::pushrandomnumber(undef,$target); if ($target eq 'edit') { my $optionlist="\n"; my $option; @@ -155,13 +155,9 @@ ENDTABLE splice(@options,$delopt-1,1); $optchanged=1; } - if ($env{"form.$Apache::lonxml::curdepth.options"}) { + if ($env{"form.$Apache::lonxml::curdepth.options"} ne '') { my $newopt = $env{"form.$Apache::lonxml::curdepth.options"}; - if ($options[0]) { - push(@options,$newopt); - } else { - $options[0]=$newopt; - } + push(@options,$newopt); $optchanged=1; } my $rebuildtag = &Apache::edit::get_new_args($token,$parstack,$safeeval, @@ -262,7 +258,9 @@ sub end_foilgroup { $Apache::lonhomework::results{"resource.$part.$id.submission"}= $responsestr; $Apache::lonhomework::results{"resource.$part.$id.submissiongrading"}=$gradestr; - + if ($Apache::lonhomework::type eq 'randomizetry') { + $Apache::lonhomework::results{"resource.$part.$id.foilorder"} = &Apache::lonnet::array2str(@whichopt); + } if (($Apache::lonhomework::type eq 'survey') || ($Apache::lonhomework::type eq 'surveycred') || ($Apache::lonhomework::type eq 'anonsurvey') || @@ -469,7 +467,19 @@ sub displayfoils { } } else { my $temp=1; - my %lastresponse=&Apache::lonnet::str2hash($Apache::lonhomework::history{"resource.$part.$id.submission"}); + my %lastresponse; + my $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 ($newvariation) { + %lastresponse=&Apache::lonnet::str2hash($Apache::lonhomework::history{"resource.$part.$id.submission"}); + } my $internal_counter=$Apache::lonxml::counter; my $checkboxopt=&check_box_opt($target,$checkboxvalue,@opt); if ($checkboxopt) { @@ -610,9 +620,12 @@ sub displayfoils { } if ($target eq 'web') { - &Apache::response::setup_prior_tries_hash(\&Apache::rankresponse::format_prior_answer, - [\@whichopt, - 'submissiongrading']); + my $data = [\@whichopt,'submissiongrading']; + my $questiontype; + if ($Apache::lonhomework::type eq 'randomizetry') { + $questiontype = $Apache::lonhomework::type, + } + &Apache::response::setup_prior_tries_hash(\&Apache::rankresponse::format_prior_answer,$data,$questiontype); } if ($target ne 'tex') {