--- loncom/homework/inputtags.pm 2005/11/10 22:19:27 1.179
+++ loncom/homework/inputtags.pm 2005/11/16 22:52:22 1.181
@@ -1,7 +1,7 @@
# The LearningOnline Network with CAPA
# input definitons
#
-# $Id: inputtags.pm,v 1.179 2005/11/10 22:19:27 albertel Exp $
+# $Id: inputtags.pm,v 1.181 2005/11/16 22:52:22 albertel Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -403,7 +403,7 @@ sub valid_award {
}
sub finalizeawards {
- my ($awardref,$msgref)=@_;
+ my ($awardref,$msgref,$nameref,$reverse)=@_;
my $result=undef;
my $award;
my $msg;
@@ -419,15 +419,18 @@ sub finalizeawards {
if ($blankcount == ($#$awardref + 1)) { $result = 'NO_RESPONSE'; }
}
if (defined($result)) { return ($result,$msg); }
- foreach my $possibleaward ('MISSING_ANSWER', 'ERROR', 'NO_RESPONSE',
- 'TOO_LONG', 'UNIT_INVALID_INSTRUCTOR',
- 'UNIT_INVALID_STUDENT', 'UNIT_IRRECONCIBLE',
- 'UNIT_FAIL', 'NO_UNIT',
- 'UNIT_NOTNEEDED', 'WANTED_NUMERIC',
- 'BAD_FORMULA', 'SIG_FAIL', 'INCORRECT',
- 'MISORDERED_RANK', 'INVALID_FILETYPE',
- 'DRAFT', 'SUBMITTED', 'ASSIGNED_SCORE',
- 'APPROX_ANS', 'EXACT_ANS','COMMA_FAIL') {
+
+ # these awards are ordered from most important error through best correct
+
+ my @awards = ('MISSING_ANSWER', 'ERROR', 'NO_RESPONSE', 'TOO_LONG',
+ 'UNIT_INVALID_INSTRUCTOR', 'UNIT_INVALID_STUDENT',
+ 'UNIT_IRRECONCIBLE', 'UNIT_FAIL', 'NO_UNIT',
+ 'UNIT_NOTNEEDED', 'WANTED_NUMERIC', 'BAD_FORMULA',
+ 'COMMA_FAIL', 'SIG_FAIL', 'INCORRECT', 'MISORDERED_RANK',
+ 'INVALID_FILETYPE', 'DRAFT', 'SUBMITTED', 'ASSIGNED_SCORE',
+ 'APPROX_ANS', 'EXACT_ANS');
+ if ($reverse) { @awards=reverse(@awards); }
+ foreach my $possibleaward (@awards) {
($result,$msg)=&checkstatus($possibleaward,$awardref,$msgref);
if (defined($result)) { return ($result,$msg); }
}
@@ -448,6 +451,14 @@ sub decideoutput {
'no_message' => '#fffff',
);
+ my $part = $Apache::inputtags::part;
+ my $handgrade =
+ ('yes' eq lc(&Apache::lonnet::EXT("resource.$part.handgrade")));
+
+ my $computer = ($handgrade)? ''
+ : " ".&mt("Computer's answer now shown above.");
+ &Apache::lonxml::debug("handgrade has :$handgrade:");
+
if ($previous) { $previousmsg=&mt('You have entered that answer before'); }
if ($solved =~ /^correct/) {
@@ -469,7 +480,7 @@ sub decideoutput {
$message = '\textbf{'.$message.'}';
} else {
$message = "".$message."";
- $message.=" ".&mt("Computer's answer now shown above.");
+ $message.= $computer;
}
$added_computer_text=1;
unless ($env{'course.'.
@@ -501,7 +512,7 @@ sub decideoutput {
$message = '\textbf{'.&mt('You are correct.').'}';
} else {
$message = "".&mt('You are correct.')."";
- $message.=" ".&mt("Computer's answer now shown above.");
+ $message.= $computer;
}
$added_computer_text=1;
unless ($env{'course.'.
@@ -617,7 +628,7 @@ sub decideoutput {
}
if ($Apache::inputtags::status[-1] eq 'SHOW_ANSWER' &&
!$added_computer_text && $target ne 'tex') {
- $message.=" ".&mt("Computer's answer now shown above.");
+ $message.= $computer;
$added_computer_text=1;
}
return ($button,$bgcolor,$message,$previousmsg);