--- loncom/homework/inputtags.pm 2001/06/27 18:51:37 1.36
+++ 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;
@@ -158,9 +159,22 @@ sub decideoutput {
my ($award,$solved)=@_;
my $message='';
my $button=0;
- if ($solved =~ /^correct/ || $award eq 'EXACT_ANS' || $award eq 'APPROX_ANS' ) {
- $message = "You are correct. Your receipt is ".&Apache::lonnet::receipt;
+ if ($solved =~ /^correct/) {
+ $message = "You are correct. Your receipt is ".
+ &Apache::lonnet::receipt;
$button=0;
+ } elsif ($solved =~ /^excused/) {
+ $message = "You are excused from the problem.";
+ $button=0;
+ } elsif ($award eq 'EXACT_ANS' || $award eq 'APPROX_ANS' ) {
+ if ($solved =~ /^incorrect/ || $solved eq '') {
+ $message = "Incorrect";
+ $button=1;
+ } else {
+ $message = "You are correct. Your receipt is ".
+ &Apache::lonnet::receipt;
+ $button=0;
+ }
} elsif ($award eq 'NO_RESPONSE') {
$message = '';
$button=1;
@@ -200,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;
}
@@ -266,7 +286,7 @@ sub gradestatus {
if ( $award ne '' ) {
&Apache::lonxml::debug('Getting message');
($showbutton,$message) = &decideoutput($award,$solved);
- $message="
$message |