--- loncom/homework/inputtags.pm 2004/01/29 21:31:07 1.128 +++ loncom/homework/inputtags.pm 2004/02/06 22:36:40 1.129 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA # input definitons # -# $Id: inputtags.pm,v 1.128 2004/01/29 21:31:07 albertel Exp $ +# $Id: inputtags.pm,v 1.129 2004/02/06 22:36:40 albertel Exp $ # # Copyright Michigan State University Board of Trustees # @@ -498,7 +498,8 @@ sub removealldata { sub setgradedata { my ($award,$id,$previously_used) = @_; # if the student already has it correct, don't modify the status - if ($Apache::inputtags::status['-1'] ne 'CAN_ANSWER' && + if (!$Apache::lonhomework::scantronmode && + $Apache::inputtags::status['-1'] ne 'CAN_ANSWER' && $Apache::inputtags::status['-1'] ne 'CANNOT_ANSWER') { $Apache::lonhomework::results{"resource.$id.afterduedate"}=$award; return ''; @@ -565,21 +566,28 @@ sub setgradedata { } } - # check if this was a previous submission if it was delete the - # unneeded data and update the previously_used attribute - if ( $previously_used eq 'PREVIOUSLY_USED') { - if (lc($Apache::lonhomework::problemstatus) ne 'no') { - delete($Apache::lonhomework::results{"resource.$id.tries"}); - $Apache::lonhomework::results{"resource.$id.previous"} = '1'; + # did either of the overall awards chage? If so ignore the + # previous check + if (($Apache::lonhomework::results{"resource.$id.awarded"} eq + $Apache::lonhomework::history{"resource.$id.awarded"}) && + ($Apache::lonhomework::results{"resource.$id.solved"} eq + $Apache::lonhomework::history{"resource.$id.solved"})) { + # check if this was a previous submission if it was delete the + # unneeded data and update the previously_used attribute + if ( $previously_used eq 'PREVIOUSLY_USED') { + if (lc($Apache::lonhomework::problemstatus) ne 'no') { + delete($Apache::lonhomework::results{"resource.$id.tries"}); + $Apache::lonhomework::results{"resource.$id.previous"} = '1'; + } + } elsif ( $previously_used eq 'PREVIOUSLY_LAST') { + #delete all data as they student didn't do anything, but save + #the list of collaborators. + &removealldata($id); + #and since they didn't do anything we were never here + return ''; + } else { + $Apache::lonhomework::results{"resource.$id.previous"} = '0'; } - } elsif ( $previously_used eq 'PREVIOUSLY_LAST') { - #delete all data as they student didn't do anything, but save - #the list of collaborators. - &removealldata($id); - #and since they didn't do anything we were never here - return ''; - } else { - $Apache::lonhomework::results{"resource.$id.previous"} = '0'; } } elsif ( $Apache::lonhomework::history{"resource.$id.solved"} =~ /^correct/ ) {