--- loncom/homework/inputtags.pm 2000/12/04 22:08:57 1.11 +++ 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,37 +136,55 @@ 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 { @@ -195,19 +207,34 @@ 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"); - #if ($showbutton > 0) { $result.=$button } + &setgradedata($finalaward,$id); } } return $result; } sub gradestatus { - my $button=''; - return 'Grade Status is Unknown'.$button; + 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__