--- loncom/homework/matchresponse.pm 2011/09/13 21:42:58 1.82 +++ loncom/homework/matchresponse.pm 2011/10/07 22:39:59 1.83 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA # Full matching style response # -# $Id: matchresponse.pm,v 1.82 2011/09/13 21:42:58 raeburn Exp $ +# $Id: matchresponse.pm,v 1.83 2011/10/07 22:39:59 raeburn Exp $ # # Copyright Michigan State University Board of Trustees # @@ -450,6 +450,7 @@ sub grade_response { } } my $part=$Apache::inputtags::part; + my $nonlenient=&Apache::optionresponse::is_nonlenient($part); my $id = $Apache::inputtags::response['-1']; my $responsestr=&Apache::lonnet::hash2str(%responsehash); my $itemstr =&Apache::lonnet::array2str(@items); @@ -486,34 +487,37 @@ sub grade_response { my $ad=$Apache::lonhomework::results{"resource.$part.$id.awarddetail"}='MISSING_ANSWER'; &Apache::response::handle_previous(\%previous,$ad); } - } elsif (!$Apache::lonhomework::scantronmode) { - my $ad; - if ($wrong==0 && $ignored==0) { - $ad='EXACT_ANS'; - } elsif ($wrong==0 && $right==0) { - #nothing submitted - } else { - if ($ignored==0) { - $ad='INCORRECT'; - } else { - $ad='MISSING_ANSWER'; - } - } - $Apache::lonhomework::results{"resource.$part.$id.awarddetail"}=$ad; - &Apache::response::handle_previous(\%previous,$ad); + } elsif ($nonlenient) { + my $ad; + if ($wrong==0 && $ignored==0) { + $ad='EXACT_ANS'; + } elsif ($wrong==0 && $right==0) { + #nothing submitted + } else { + if ($ignored==0) { + $ad='INCORRECT'; + } else { + $ad='MISSING_ANSWER'; + } + } + $Apache::lonhomework::results{"resource.$part.$id.awarddetail"}=$ad; + &Apache::response::handle_previous(\%previous,$ad); } else { - my $ad; - if ($wrong==0 && $right==0) { - #nothing submitted - } else { - $ad='ASSIGNED_SCORE'; - $Apache::lonhomework::results{"resource.$part.$id.awarddetail"}= - $ad; - $Apache::lonhomework::results{"resource.$part.$id.awarded"}= - $right/(scalar(@whichfoils)); - $Apache::lonhomework::results{"resource.$part.$id.numfoils"}= - scalar(@whichfoils); - } + my $ad; + if ($wrong==0 && $right==0) { + #nothing submitted only assign a score if we + #need to override a previous grade + if (defined($Apache::lonhomework::history{"resource.$part.$id.awarddetail"})) { + $ad='ASSIGNED_SCORE'; + } + } else { + $ad='ASSIGNED_SCORE'; + } + $Apache::lonhomework::results{"resource.$part.$id.awarddetail"}=$ad; + $Apache::lonhomework::results{"resource.$part.$id.awarded"}= + $right/(scalar(@whichfoils)); + $Apache::lonhomework::results{"resource.$part.$id.numfoils"}= + scalar(@whichfoils); } }