--- loncom/homework/inputtags.pm 2010/12/31 19:10:16 1.271.2.4 +++ loncom/homework/inputtags.pm 2011/03/07 22:38:09 1.285 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA # input definitons # -# $Id: inputtags.pm,v 1.271.2.4 2010/12/31 19:10:16 raeburn Exp $ +# $Id: inputtags.pm,v 1.285 2011/03/07 22:38:09 www Exp $ # # Copyright Michigan State University Board of Trustees # @@ -354,7 +354,6 @@ sub start_textline { unless ($newvariation) { $oldresponse = $Apache::lonhomework::history{"resource.$partid.$id.submission"}; &Apache::lonxml::debug("oldresponse $oldresponse is ".ref($oldresponse)); - if (ref($oldresponse) eq 'ARRAY') { $oldresponse = $oldresponse->[$#Apache::inputtags::inputlist]; } @@ -685,7 +684,8 @@ sub valid_award { 'UNIT_INVALID_STUDENT', 'UNIT_IRRECONCIBLE', 'UNIT_FAIL', 'NO_UNIT', 'UNIT_NOTNEEDED', 'WANTED_NUMERIC', - 'BAD_FORMULA', 'INTERNAL_ERROR', 'SIG_FAIL', 'INCORRECT', + 'BAD_FORMULA', 'NOT_FUNCTION', 'WRONG_FORMAT', + 'INTERNAL_ERROR', 'SIG_FAIL', 'INCORRECT', 'MISORDERED_RANK', 'INVALID_FILETYPE', 'EXCESS_FILESIZE', 'FILENAME_INUSE', 'DRAFT', 'SUBMITTED', 'SUBMITTED_CREDIT', @@ -702,7 +702,8 @@ sub valid_award { 'TOO_LONG', 'UNIT_INVALID_INSTRUCTOR', 'UNIT_INVALID_STUDENT', 'UNIT_IRRECONCIBLE', 'UNIT_FAIL', 'NO_UNIT', - 'UNIT_NOTNEEDED', 'WANTED_NUMERIC', 'BAD_FORMULA', 'INTERNAL_ERROR', + 'UNIT_NOTNEEDED', 'WANTED_NUMERIC', 'BAD_FORMULA', 'NOT_FUNCTION', + 'WRONG_FORMAT', 'INTERNAL_ERROR', 'COMMA_FAIL', 'SIG_FAIL', 'INCORRECT', 'MISORDERED_RANK', 'INVALID_FILETYPE', 'EXCESS_FILESIZE', 'FILENAME_INUSE', 'DRAFT', 'SUBMITTED', @@ -800,7 +801,7 @@ sub finalizeawards { } sub decideoutput { - my ($award,$awarded,$awardmsg,$solved,$previous,$target)=@_; + my ($award,$awarded,$awardmsg,$solved,$previous,$target,$nocorrect)=@_; my $message=''; my $button=0; @@ -818,8 +819,14 @@ sub decideoutput { my $part = $Apache::inputtags::part; my $tohandgrade = &Apache::lonnet::EXT("resource.$part.handgrade"); my $handgrade = ('yes' eq lc($tohandgrade)); +# +# Should "Computer's Answer" be displayed? +# Should not be displayed if still answerable, +# if the problem is handgraded, +# or if the problem does not give a correct answer +# - my $computer = ($handgrade)? '' + my $computer = ($handgrade || $nocorrect)? '' : " ".&mt("Computer's answer now shown above."); &Apache::lonxml::debug("handgrade has :$handgrade:"); @@ -861,7 +868,7 @@ sub decideoutput { } } } - $button=0; + if ($awarded==1) { $button=0; } else { $button=1; } $previousmsg=''; } elsif ($solved =~ /^excused/) { if ($target eq 'tex') { @@ -989,7 +996,15 @@ sub decideoutput { if ($target ne 'tex') {$message.=&Apache::loncommon::help_open_topic('Formula_Answers')}; $css_class=$possible_class{'not_charged_try'}; $button=1; - } elsif ($award eq 'INTERNAL_ERROR') { + } elsif ($award eq 'NOT_FUNCTION') { + $message = &mt("Not a function").'.'; + $css_class=$possible_class{'not_charged_try'}; + $button=1; + } elsif ($award eq 'WRONG_FORMAT') { + $message = &mt("Wrong format").'.'; + $css_class=$possible_class{'not_charged_try'}; + $button=1; + } elsif ($award eq 'INTERNAL_ERROR') { $message = &mt("An internal error occurred while processing your answer. Please try again later."); $css_class=$possible_class{'not_charged_try'}; $button=1; @@ -1079,7 +1094,6 @@ sub decideoutput { } $message.=&mt('Submissions to practice problems are not permanently recorded.'); } - return ($button,$css_class,$message,$previousmsg); } @@ -1132,8 +1146,7 @@ sub setgradedata { $Apache::inputtags::status['-1'] ne 'CANNOT_ANSWER') { $Apache::lonhomework::results{"resource.$id.afterduedate"}=$award; return ''; - } elsif ( $Apache::lonhomework::history{"resource.$id.solved"} !~ - /^correct/ + } elsif ( $Apache::lonhomework::history{"resource.$id.awarded"} < 1 || $Apache::lonhomework::scantronmode || &Apache::lonhomework::hide_problem_status() ) { # the student doesn't already have it correct, @@ -1254,8 +1267,7 @@ sub setgradedata { $Apache::lonhomework::results{"resource.$id.previous"} = '0'; } } - } elsif ( $Apache::lonhomework::history{"resource.$id.solved"} =~ - /^correct/ ) { + } elsif ( $Apache::lonhomework::history{"resource.$id.awarded"} == 1 ) { #delete all data as they student already has it correct &removealldata($id); #and since they didn't do anything we were never here @@ -1266,7 +1278,7 @@ sub setgradedata { &Apache::response::add_to_gradingqueue(); } if (($Apache::lonhomework::type eq 'anonsurvey') || - ($Apache::lonhomework::type eq 'anonsurveycred') || + ($Apache::lonhomework::type eq 'anonsurveycred') || ($Apache::lonhomework::type eq 'randomizetry')) { $Apache::lonhomework::results{"resource.$id.type"} = $Apache::lonhomework::type; } @@ -1352,8 +1364,8 @@ sub grade { } sub get_grade_messages { - my ($id,$prefix,$target,$status) = @_; - + my ($id,$prefix,$target,$status,$nocorrect) = @_; +# nocorrect suppresses "Computer's answer now shown above" my ($message,$latemessage,$trystr,$previousmsg); my $showbutton = 1; @@ -1367,7 +1379,7 @@ sub get_grade_messages { &Apache::lonxml::debug('Getting message'); ($showbutton,my $css_class,$message,$previousmsg) = &decideoutput($award,$awarded,$awardmsg,$solved,$previous, - $target); + $target,(($status eq 'CAN_ANSWER') || $nocorrect)); if ($target eq 'tex') { $message='\vskip 2 mm '.$message.' '; } else { @@ -1400,7 +1412,7 @@ sub get_grade_messages { $trystr = '