--- loncom/homework/structuretags.pm 2018/10/19 22:04:07 1.561 +++ loncom/homework/structuretags.pm 2018/12/26 19:40:04 1.562 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA # definition of tags that give a structure to a document # -# $Id: structuretags.pm,v 1.561 2018/10/19 22:04:07 raeburn Exp $ +# $Id: structuretags.pm,v 1.562 2018/12/26 19:40:04 raeburn Exp $ # # Copyright Michigan State University Board of Trustees # @@ -1117,7 +1117,7 @@ sub finalize_storage { delete(@Apache::lonhomework::results{@remove}); my ($symb,$courseid,$domain,$name) = &Apache::lonnet::whichuser($given_symb); - my ($passback,$ltiscope,$ltimap,$ltisymb,$ltiref,$total,$possible); + my ($passback,$ltiscope,$ltimap,$ltisymb,$ltiref,$total,$possible,$dopassback); if ($env{'request.state'} eq 'construct' || $symb eq '' || $Apache::lonhomework::type eq 'practice') { @@ -1219,7 +1219,20 @@ sub finalize_storage { } } } - if (($passback) && ($ltiscope eq 'resource') && ($ltisymb eq $symb)) { + if ($passback) { + foreach my $key (keys(%Apache::lonhomework::results)) { + if ($key =~ /^resource\.([^\.]+)\.solved$/) { + my $part = $1; + if ((($Apache::lonhomework::results{$key} =~ /^correct_/) || + ($Apache::lonhomework::results{$key} eq 'incorrect_attempted')) && + ($Apache::lonhomework::results{"resource.$part.tries"})) { + $dopassback = 1; + last; + } + } + } + } + if (($dopassback) && ($ltiscope eq 'resource') && ($ltisymb eq $symb)) { $total = 0; $possible = 0; my $navmap = Apache::lonnavmaps::navmap->new(); @@ -1258,7 +1271,7 @@ sub finalize_storage { } &Apache::lonxml::debug('Store return message:'.$result); &store_aggregates($symb,$courseid); - if ($passback) { + if ($dopassback) { my $scoreformat = 'decimal'; if (ref($ltiref) eq 'HASH') { if ($ltiref->{'scoreformat'} =~ /^(decimal|ratio|percentage)$/) {