--- loncom/homework/imageresponse.pm 2011/11/14 03:08:01 1.103 +++ loncom/homework/imageresponse.pm 2016/07/01 19:59:15 1.106 @@ -2,7 +2,7 @@ # The LearningOnline Network with CAPA # image click response style # -# $Id: imageresponse.pm,v 1.103 2011/11/14 03:08:01 raeburn Exp $ +# $Id: imageresponse.pm,v 1.106 2016/07/01 19:59:15 raeburn Exp $ # # Copyright Michigan State University Board of Trustees # @@ -212,8 +212,11 @@ sub getfoilcounts { sub whichfoils { my ($max)=@_; - return if (!defined(@{ $Apache::response::foilgroup{'names'} })); - my @names = @{ $Apache::response::foilgroup{'names'} }; + my @names; + if (ref($Apache::response::foilgroup{'names'}) eq 'ARRAY') { + @names = @{ $Apache::response::foilgroup{'names'} }; + } + return if (!@names); my @whichopt; while ((($#whichopt+1) < $max) && ($#names > -1)) { &Apache::lonxml::debug("Have $#whichopt max is $max"); @@ -388,7 +391,17 @@ sub get_prior_options { @whichopt = @{$curropt}; @images = @{$currimages}; } - my $submission = $Apache::lonhomework::history{$sub_key}; + my $submission; + if ((($env{'form.grade_username'} eq '') && ($env{'form.grade_domain'} eq '')) || + (($env{'form.grade_username'} eq $env{'user.name'}) && + ($env{'form.grade_domain'} eq $env{'user.domain'}))) { + $submission = $Apache::lonhomework::history{$sub_key}; + } else { + unless (($Apache::lonhomework::history{"resource.$part.type"} eq 'anonsurvey') || + ($Apache::lonhomework::history{"resource.$part.type"} eq 'anonsurveycred')) { + $submission = $Apache::lonhomework::history{$sub_key}; + } + } my $output = &format_prior_response('grade',$submission, [\@images,\@whichopt]); if (defined($output)) { @@ -473,9 +486,11 @@ sub gradefoils { my ($x,$y) = split(':',$env{"form.HWVAL_$id:$temp"}); $response{$name} = $env{"form.HWVAL_$id:$temp"}; &Apache::lonxml::debug("Got a x of $x and a y of $y for $name"); - if (defined($x) && defined($y) && - defined(@{ $Apache::response::foilgroup{"$name.area"} })) { - my @areas = @{ $Apache::response::foilgroup{"$name.area"} }; + my @areas; + if (ref($Apache::response::foilgroup{"$name.area"}) eq 'ARRAY') { + @areas = @{ $Apache::response::foilgroup{"$name.area"} }; + } + if (defined($x) && defined($y) && @areas) { my $grade="INCORRECT"; foreach my $area (@areas) { &Apache::lonxml::debug("Area is $area for $name"); @@ -538,8 +553,29 @@ sub get_submission { if (!defined($string)) { my $part=$Apache::inputtags::part; my $respid=$Apache::inputtags::response['-1']; - $string = - $Apache::lonhomework::history{"resource.$part.$respid.submission"}; + 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) { + if ((($env{'form.grade_username'} eq '') && ($env{'form.grade_domain'} eq '')) || + (($env{'form.grade_username'} eq $env{'user.name'}) && + ($env{'form.grade_domain'} eq $env{'user.domain'}))) { + $string = + $Apache::lonhomework::history{"resource.$part.$respid.submission"}; + } else { + unless (($Apache::lonhomework::history{"resource.$part.type"} eq 'anonsurvey') || + ($Apache::lonhomework::history{"resource.$part.type"} eq 'anonsurveycred')) { + $string = + $Apache::lonhomework::history{"resource.$part.$respid.submission"}; + } + } + } } if ($string !~ /=/) { @@ -553,7 +589,7 @@ sub get_submission { sub end_foilgroup { my ($target,$token,$tagstack,$parstack,$parser,$safeeval,$style)=@_; my $result=''; - my @whichopt; + my (@images,@whichopt); if ($target eq 'web' || $target eq 'grade' || $target eq 'tex' || $target eq 'analyze' || $target eq 'answer') { @@ -568,7 +604,7 @@ sub end_foilgroup { $result=&displayfoils($target,@whichopt); if ($Apache::lonhomework::type eq 'randomizetry') { if ($target eq 'web') { - &get_prior_options($target,@whichopt); + &get_prior_options(\@images,\@whichopt); } } $Apache::lonxml::post_evaluate=0; @@ -716,9 +752,8 @@ sub start_image { $Apache::edit::bgimgsrcdepth=$Apache::lonxml::curdepth; $result=&Apache::edit::tag_start($target,$token,'Clickable Image'). - &Apache::edit::editline($token->[1],$bgimg,'Image Source File',40); - $result.=&Apache::edit::browse(undef,'textnode',undef,$only).' '; - $result.=&Apache::edit::search(undef,'textnode'). + &Apache::edit::editline($token->[1],$bgimg,'Image Source File',40). + &Apache::edit::browse_or_search(undef,'textnode',undef,$only,undef,1). &Apache::edit::end_row(); } elsif ($target eq "modified") { $result=$token->[4].&Apache::edit::modifiedfield('/image',$parser);