--- loncom/homework/inputtags.pm 2007/10/03 02:10:45 1.232 +++ loncom/homework/inputtags.pm 2007/10/17 00:22:51 1.233 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA # input definitons # -# $Id: inputtags.pm,v 1.232 2007/10/03 02:10:45 albertel Exp $ +# $Id: inputtags.pm,v 1.233 2007/10/17 00:22:51 albertel Exp $ # # Copyright Michigan State University Board of Trustees # @@ -548,6 +548,18 @@ sub awarddetail_to_awarded { return 0; } +sub hide_award { + my ($award) = @_; + if (&Apache::lonhomework::show_no_problem_status()) { + return 1; + } + if ($award =~ + /^(?:EXACT_ANS|APPROX_ANS|SUBMITTED|ASSIGNED_SCORE|INCORRECT)/) { + return 1; + } + return 0; +} + sub finalizeawards { my ($awardref,$msgref,$nameref,$reverse,$final_scantron)=@_; my $result; @@ -815,8 +827,9 @@ sub decideoutput { } } - if (lc($Apache::lonhomework::problemstatus) eq 'no' && - $Apache::inputtags::status[-1] ne 'SHOW_ANSWER') { + if (&Apache::lonhomework::hide_problem_status() + && $Apache::inputtags::status[-1] ne 'SHOW_ANSWER' + && &hide_award($award)) { $message = &mt("Answer Submitted: Your final submission will be graded after the due date."); $css_class=$possible_class{'no_grade'}; $button=1; @@ -879,8 +892,9 @@ sub setgradedata { $Apache::lonhomework::results{"resource.$id.afterduedate"}=$award; return ''; } elsif ( $Apache::lonhomework::history{"resource.$id.solved"} !~ - /^correct/ || $Apache::lonhomework::scantronmode || - lc($Apache::lonhomework::problemstatus) eq 'no') { + /^correct/ + || $Apache::lonhomework::scantronmode + || &Apache::lonhomework::hide_problem_status() ) { # the student doesn't already have it correct, # or we are in a mode (scantron orno problem status) where a correct # can become incorrect @@ -923,8 +937,8 @@ sub setgradedata { } elsif ( $award eq 'INCORRECT' ) { $Apache::lonhomework::results{"resource.$id.tries"} = $Apache::lonhomework::history{"resource.$id.tries"} + 1; - if (lc($Apache::lonhomework::problemstatus) eq 'no' || - $Apache::lonhomework::scantronmode) { + if (&Apache::lonhomework::hide_problem_status() + || $Apache::lonhomework::scantronmode) { $Apache::lonhomework::results{"resource.$id.awarded"} = 0; } $Apache::lonhomework::results{"resource.$id.solved"} = @@ -943,12 +957,18 @@ sub setgradedata { } else { $Apache::lonhomework::results{"resource.$id.solved"} = 'incorrect_attempted'; - if (lc($Apache::lonhomework::problemstatus) eq 'no' || - $Apache::lonhomework::scantronmode) { + if (&Apache::lonhomework::show_no_problem_status() + || $Apache::lonhomework::scantronmode) { $Apache::lonhomework::results{"resource.$id.tries"} = $Apache::lonhomework::history{"resource.$id.tries"} + 1; $Apache::lonhomework::results{"resource.$id.awarded"} = 0; } + + if (&Apache::lonhomework::show_some_problem_status()) { + # clear out the awarded if they had gotten it wrong/right + # and are now in an error mode + $Apache::lonhomework::results{"resource.$id.awarded"} = ''; + } } if (defined($msg)) { $Apache::lonhomework::results{"resource.$id.awardmsg"} = $msg; @@ -962,7 +982,7 @@ 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') { + if (&Apache::lonhomework::show_problem_status()) { delete($Apache::lonhomework::results{"resource.$id.tries"}); $Apache::lonhomework::results{"resource.$id.previous"} = '1'; } @@ -1221,7 +1241,7 @@ sub previous_tries { my $previous = $count_lookup{$which}; $message =~ s{()}{ as submission \# $previous $1}; } elsif ($Apache::lonhomework::history{"$prefix.tries"}) { - if (!(lc($Apache::lonhomework::problemstatus) eq 'no' + if (!(&Apache::lonhomework::hide_problem_status() && $Apache::inputtags::status[-1] ne 'SHOW_ANSWER') && $Apache::lonhomework::history{"$prefix.solved"} =~/^correct/ ) {