--- loncom/homework/inputtags.pm 2004/06/03 14:28:39 1.143 +++ loncom/homework/inputtags.pm 2004/09/09 09:52:58 1.150 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA # input definitons # -# $Id: inputtags.pm,v 1.143 2004/06/03 14:28:39 www Exp $ +# $Id: inputtags.pm,v 1.150 2004/09/09 09:52:58 albertel Exp $ # # Copyright Michigan State University Board of Trustees # @@ -65,6 +65,9 @@ sub initialize_inputtags { @Apache::inputtags::importlist=(); # just used to note whether we have seen a response that isn't in a part $Apache::inputtags::response_with_no_part=0; + # storage location so the begin <*response> tag can generate the correct + # answer string for display by the + %Apache::inputtags::answertxt=(); } sub check_for_duplicate_ids { @@ -224,8 +227,8 @@ sub start_textline { } } else { #right or wrong don't show what was last typed in. - #$result=''.$oldresponse.''; - $result=''; + $result=''.$Apache::inputtags::answertxt{$id}.''; + #$result=''; } } elsif ($target eq 'edit') { $result=&Apache::edit::tag_start($target,$token); @@ -327,6 +330,7 @@ sub decideoutput { my $button=0; my $previousmsg; my $bgcolor='orange'; + my $added_computer_text=0; my %possiblecolors = ( 'correct' => '#aaffaa', 'charged_try' => '#ffaaaa', @@ -343,7 +347,9 @@ sub decideoutput { $message = '\textbf{'.&mt('You are correct.').'}'; } else { $message = "".&mt('You are correct.').""; + $message.=" ".&mt("Computer's answer now shown above."); } + $added_computer_text=1; unless ($ENV{'course.'. $ENV{'request.course.id'}. '.disable_receipt_display'} eq 'yes') { @@ -366,11 +372,17 @@ sub decideoutput { $previousmsg=''; } elsif ($award eq 'EXACT_ANS' || $award eq 'APPROX_ANS' ) { if ($solved =~ /^incorrect/ || $solved eq '') { - $message = &mt("Incorrect"); + $message = &mt("Incorrect")."."; $bgcolor=$possiblecolors{'charged_try'}; $button=1; } else { - $message = "".&mt('You are correct.').""; + if ($target eq 'tex') { + $message = '\textbf{'.&mt('You are correct.').'}'; + } else { + $message = "".&mt('You are correct.').""; + $message.=" ".&mt("Computer's answer now shown above."); + } + $added_computer_text=1; unless ($ENV{'course.'. $ENV{'request.course.id'}. '.disable_receipt_display'} eq 'yes') { @@ -414,7 +426,11 @@ sub decideoutput { $bgcolor=$possiblecolors{'not_charged_try'}; $button=1; } elsif ($award eq 'SIG_FAIL') { - $message = &mt("Significant figures are incorrect, you provided [_1] significant figures while [_2] to [_3] were expected. Submission not graded.",(split(/:/,$awardmsg))); + my ($used,$min,$max)=split(':',$awardmsg); + my $word; + if ($used < $min) { $word=&mt('more'); } + if ($used > $max) { $word=&mt('fewer'); } + $message = &mt("Submission not graded. Use [_2] digits.",$used,$word); $bgcolor=$possiblecolors{'not_charged_try'}; $button=1; } elsif ($award eq 'UNIT_INVALID_INSTRUCTOR') { @@ -423,21 +439,21 @@ sub decideoutput { $bgcolor=$possiblecolors{'not_charged_try'}; $button=1; } elsif ($award eq 'UNIT_INVALID_STUDENT') { - $message = &mt('Unable to interpret units. Computer reads units as "[_1]"',''.$awardmsg.''); + $message = &mt('Unable to interpret units. Computer reads units as "[_1]"',''.$awardmsg.'.'); if ($target ne 'tex') {$message.=&Apache::loncommon::help_open_topic('Physical_Units');} $bgcolor=$possiblecolors{'not_charged_try'}; $button=1; } elsif ($award eq 'UNIT_FAIL' || $award eq 'UNIT_IRRECONCIBLE') { - $message = &mt('Incompatible units. No conversion found between "[_1]" and the required units.',''.$awardmsg.''); + $message = &mt('Incompatible units. No conversion found between "[_1]" and the required units ',''.$awardmsg.'.'); if ($target ne 'tex') {$message.=&Apache::loncommon::help_open_topic('Physical_Units');} $bgcolor=$possiblecolors{'not_charged_try'}; $button=1; } elsif ($award eq 'UNIT_NOTNEEDED') { - $message = &mt('Only a number required. Computer reads units of "[_1]"',''.$awardmsg.''); + $message = &mt('Only a number required. Computer reads units of "[_1]"',''.$awardmsg.'.'); $bgcolor=$possiblecolors{'not_charged_try'}; $button=1; } elsif ($award eq 'NO_UNIT') { - $message = &mt("Units required"); + $message = &mt("Units required").'.'; if ($target ne 'tex') {$message.=&Apache::loncommon::help_open_topic('Physical_Units')}; $bgcolor=$possiblecolors{'not_charged_try'}; $button=1; @@ -446,7 +462,7 @@ sub decideoutput { $bgcolor=$possiblecolors{'not_charged_try'}; $button=1; } elsif ($award eq 'INCORRECT') { - $message = &mt("Incorrect"); + $message = &mt("Incorrect").'.'; $bgcolor=$possiblecolors{'charged_try'}; $button=1; } elsif ($award eq 'SUBMITTED') { @@ -454,13 +470,16 @@ sub decideoutput { $bgcolor=$possiblecolors{'correct'}; $button=1; } elsif ($award eq 'DRAFT') { - $message = "A draft copy has been saved."; + $message = &mt("A draft copy has been saved."); $bgcolor=$possiblecolors{'not_charged_try'}; $button=1; } elsif ($award eq 'ASSIGNED_SCORE') { - $message = "A score has been assigned."; + $message = &mt("A score has been assigned."); $bgcolor=$possiblecolors{'correct'}; $button=0; + } elsif ($award eq '') { + $bgcolor=$possiblecolors{'not_charged_try'}; + $button=1; } else { $message = &mt("Unknown message").": $award"; $button=1; @@ -471,6 +490,11 @@ sub decideoutput { $bgcolor=$possiblecolors{'correct'}; $button=1; } + if ($Apache::inputtags::status[-1] eq 'SHOW_ANSWER' && + !$added_computer_text && $target ne 'tex') { + $message.=" ".&mt("Computer's answer now shown above."); + $added_computer_text=1; + } return ($button,$bgcolor,$message,$previousmsg); } @@ -668,7 +692,7 @@ sub gradestatus { my $previous = $Apache::lonhomework::history{"resource.$id.previous"}; my $awardmsg = $Apache::lonhomework::history{"resource.$id.awardmsg"}; &Apache::lonxml::debug("Found Award |$award|$solved|$awardmsg"); - if ( $award ne '' || $solved ne '') { + if ( $award ne '' || $solved ne '' || $status eq 'SHOW_ANSWER') { &Apache::lonxml::debug('Getting message'); ($showbutton,$bgcolor,$message,$previousmsg) = &decideoutput($award,$awardmsg,$solved,$previous,$target); @@ -693,7 +717,7 @@ sub gradestatus { if ( $Apache::lonhomework::type eq 'survey') { $tries_text=&mt('Submissions'); } if ( $showbutton ) { if ($target eq 'tex') { - if ($ENV{'request.state'} ne "construct" && $Apache::lonhomework::type ne 'exam') { + if ($ENV{'request.state'} ne "construct" && $Apache::lonhomework::type ne 'exam' && $ENV{'form.suppress_tries'} ne 'yes') { $trystr = ' {\vskip 1 mm \small \textit{'.$tries_text.'} '.$tries.'/'.$maxtries.'} \vskip 2 mm '; } else { $trystr = '\vskip 0 mm ';