--- loncom/homework/inputtags.pm 2000/12/04 21:15:33 1.10 +++ loncom/homework/inputtags.pm 2000/12/05 22:07:26 1.12 @@ -113,28 +113,22 @@ sub finalizeawards { } } } - &Apache::lonxml::debug("1 $result"); if ($result eq '' ) { foreach $award (@_) { if ($award eq 'WANTED_NUMERIC' || $award eq 'BAD_FORMULA') {$result=$award; last;} } } - &Apache::lonxml::debug("2 $result"); if ($result eq '' ) { foreach $award (@_) { if ($award eq 'SIG_FAIL') {$result=$award; last;} } } - &Apache::lonxml::debug("3 $result"); if ($result eq '' ) { foreach $award (@_) { if ($award eq 'INCORRECT') {$result=$award; last;} } } - &Apache::lonxml::debug("4 $result"); if ($result eq '' ) { foreach $award (@_) { if ($award eq 'APPROX_ANS') {$result=$award; last;} } } - &Apache::lonxml::debug("5 $result"); if ($result eq '' ) { $result='EXACT_ANS'; } - &Apache::lonxml::debug("6 $result"); return $result } @@ -142,44 +136,61 @@ sub decideoutput { my ($award)=@_; my $message=''; my $button=0; - my $tries=0; if ($award eq 'EXACT_ANS' || $award eq 'APPROX_ANS' ) { - $message = "Yes, Computer gets: "; - $tries=1; $button=0; - + $message = "Correct computer gets %s"; + $button=0; } elsif ($award eq 'WANTED_NUMERIC') { $message = "This question expects a numeric answer"; - $tries=0; $button=1; + $button=1; } elsif ($award eq 'SIG_FAIL') { $message = "Please adjust significant figures, you provided %s significant figures"; - $tries=0; $button=1; + $button=1; } elsif ($award eq 'UNIT_FAIL') { $message = "Units incorrect, Computer reads units as %s"; - $tries=0; $button=1; + $button=1; } elsif ($award eq 'UNIT_NOTNEEDED') { $message = "Only a number required, Computer reads units of %s"; - $tries=0; $button=1; + $button=1; } elsif ($award eq 'NO_UNIT') { $message = "Units required"; - $tries=0; $button=1; + $button=1; } elsif ($award eq 'BAD_FORMULA') { $message = "Unable to understand formula"; - $tries=0; $button=1; + $button=1; } elsif ($award eq 'INCORRECT') { $message = "Incorrect"; - $tries=0; $button=1; + $button=1; } else { $message = "Unknown message: $award"; - $tries=0; $button=1; + $button=1; } - return ($tries,$button,$message); + return ($button,$message); +} + +sub setgradedata { + my ($award,$id) = @_; + if ( $award eq 'APPROX_ANS' || $award eq 'EXACT_ANS' ) { + $Apache::lonhomework::results{"resource.tries.$id"} = + $Apache::lonhomework::history{"resource.tries.$id"} + 1; + $Apache::lonhomework::results{"resource.solved.$id"} = + 'correct_by_student'; + $Apache::lonhomework::results{"resource.awarded.$id"} = '1'; + } elsif ( $award eq 'INCORRECT' ) { + $Apache::lonhomework::results{"resource.tries.$id"} = + $Apache::lonhomework::history{"resource.tries.$id"} + 1; + $Apache::lonhomework::results{"resource.solved.$id"} = + 'incorrect_attempted'; + } else { + $Apache::lonhomework::results{"resource.solved.$id"} = + 'incorrect_attempted'; + } + $Apache::lonhomework::results{"resource.award.$id"} = $award; } sub grade { my ($target) = @_; my $id = $Apache::inputtags::part; my $result=''; - my $button=''; my $response=''; if ( $target == 'web' ) { if ( defined $ENV{'form.submit'}) { @@ -196,16 +207,35 @@ sub grade { } } my $finalaward = &finalizeawards(@awards); - my ($triesinc,$showbutton,$message) = &decideoutput($finalaward); - $Apache::lonhomework::results{"resource.tries.$id"} = - $Apache::lonhomework::history{"resource.tries.$id"} + 1; &Apache::lonxml::debug("final award $finalaward"); + &setgradedata($finalaward,$id); } - if ($showbutton > 0) { $result.=$button } } return $result; } +sub gradestatus { + my ($id) = @_; + my $showbutton = 1; + my $message = ''; + my $award = $Apache::lonhomework::history{"resource.award.$id"}; + &Apache::lonxml::debug("Found Award |$award|"); + if ( $award ne '' ) { + &Apache::lonxml::debug('Getting message'); + ($showbutton,$message) = &decideoutput($award); + } + my $button=''; + my $tries = $Apache::lonhomework::history{"resource.tries.$id"}; + my $maxtries = $Apache::lonhomework::history{"resource.maxtries.$id"}; + if ( $tries eq '' ) { $tries = '0'; } + if ( $maxtries eq '' ) { $maxtries = '99'; } + if ( $tries >= $maxtries ) { $showbutton = 0; } + my $trystr = "Tries $tries/$maxtries"; + if ( $showbutton ) { + $button = '

'; + } + return $button.$message.$trystr; +} 1; __END__