--- loncom/homework/inputtags.pm 2001/07/12 19:27:48 1.37
+++ loncom/homework/inputtags.pm 2001/07/30 22:24:01 1.39
@@ -31,6 +31,7 @@ sub initialize_inputtags {
sub start_input {
my ($parstack,$safeeval)=@_;
my $id = &Apache::lonxml::get_param('id',$parstack,$safeeval);
+ if ($id eq '') { $id = $Apache::lonxml::curdepth; }
push (@Apache::inputtags::input,$id);
push (@Apache::inputtags::inputlist,$id);
return $id;
@@ -213,25 +214,31 @@ sub decideoutput {
sub setgradedata {
my ($award,$id) = @_;
- if ( $award eq 'APPROX_ANS' || $award eq 'EXACT_ANS' ) {
- $Apache::lonhomework::results{"resource.$id.tries"} =
- $Apache::lonhomework::history{"resource.$id.tries"} + 1;
- $Apache::lonhomework::results{"resource.$id.solved"} =
- 'correct_by_student';
- $Apache::lonhomework::results{"resource.$id.awarded"} = '1';
- } elsif ( $award eq 'INCORRECT' ) {
- $Apache::lonhomework::results{"resource.$id.tries"} =
- $Apache::lonhomework::history{"resource.$id.tries"} + 1;
- $Apache::lonhomework::results{"resource.$id.solved"} =
- 'incorrect_attempted';
- } elsif ( $award eq 'SUBMITTED' ) {
- $Apache::lonhomework::results{"resource.$id.tries"} =
- $Apache::lonhomework::history{"resource.$id.tries"} + 1;
- $Apache::lonhomework::results{"resource.$id.solved"} =
- 'ungraded_attempted';
- } else {
- $Apache::lonhomework::results{"resource.$id.solved"} =
- 'incorrect_attempted';
+ # if the student already has it correct, don't modify the status
+ if ( $Apache::lonhomework::history{"resource.$id.solved"} !~
+ /^correct/ ) {
+ if ( $award eq 'APPROX_ANS' || $award eq 'EXACT_ANS' ) {
+ $Apache::lonhomework::results{"resource.$id.tries"} =
+ $Apache::lonhomework::history{"resource.$id.tries"} + 1;
+ $Apache::lonhomework::results{"resource.$id.solved"} =
+ 'correct_by_student';
+ $Apache::lonhomework::results{"resource.$id.awarded"} = '1';
+ } elsif ( $award eq 'INCORRECT' ) {
+ $Apache::lonhomework::results{"resource.$id.tries"} =
+ $Apache::lonhomework::history{"resource.$id.tries"} + 1;
+ $Apache::lonhomework::results{"resource.$id.solved"} =
+ 'incorrect_attempted';
+ } elsif ( $award eq 'SUBMITTED' ) {
+ $Apache::lonhomework::results{"resource.$id.tries"} =
+ $Apache::lonhomework::history{"resource.$id.tries"} + 1;
+ $Apache::lonhomework::results{"resource.$id.solved"} =
+ 'ungraded_attempted';
+ } elsif ( $award eq 'NO_RESPONSE' ) {
+ return '';
+ } else {
+ $Apache::lonhomework::results{"resource.$id.solved"} =
+ 'incorrect_attempted';
+ }
}
$Apache::lonhomework::results{"resource.$id.award"} = $award;
}
@@ -279,7 +286,7 @@ sub gradestatus {
if ( $award ne '' ) {
&Apache::lonxml::debug('Getting message');
($showbutton,$message) = &decideoutput($award,$solved);
- $message="
$message |