[prev in list] [next in list] [prev in thread] [next in thread]
List: lon-capa-cvs
Subject: [LON-CAPA-cvs] cvs: loncom /homework/caparesponse caparesponse.pm
From: raeburn <raeburn () source ! lon-capa ! org>
Date: 2018-09-13 17:00:05
Message-ID: cvsraeburn1536858005 () cvsserver
[Download RAW message or body]
raeburn Thu Sep 13 17:00:05 2018 EDT
Modified files:
/loncom/homework/caparesponse caparesponse.pm
Log:
- Better error messages about "Computer's answer" where unit includes
$ or , (in numericalresponse), and format lacks that character.
Index: loncom/homework/caparesponse/caparesponse.pm
diff -u loncom/homework/caparesponse/caparesponse.pm:1.258 \
loncom/homework/caparesponse/caparesponse.pm:1.259
--- loncom/homework/caparesponse/caparesponse.pm:1.258 Tue Aug 9 23:43:45 2016
+++ loncom/homework/caparesponse/caparesponse.pm Thu Sep 13 17:00:05 2018
@@ -1,7 +1,7 @@
# The LearningOnline Network with CAPA
# caparesponse definition
#
-# $Id: caparesponse.pm,v 1.258 2016/08/09 23:43:45 raeburn Exp $
+# $Id: caparesponse.pm,v 1.259 2018/09/13 17:00:05 raeburn Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -664,7 +664,14 @@
my (@formats)=&Apache::lonxml::get_param_var('format',$parstack,$safeeval);
my $unit=&Apache::lonxml::get_param_var('unit',$parstack,$safeeval);
-
+ my ($needsdollar,$needscomma);
+ if ($unit =~ /\$/) {
+ $needsdollar = 1;
+ }
+ if ($unit =~ /\,/) {
+ $needscomma = 1;
+ }
+
if ($target eq 'answer') {
$result.=&Apache::response::answer_header($tag,undef,
scalar(keys(%answer)));
@@ -760,7 +767,7 @@
if ($unit=~/\,/) { $fmt="\,".$fmt; $unit=~s/\,//g; }
$element = &format_number($element,$fmt,$target,
$safeeval);
- if ($fmt=~/\$/ && $unit!~/\$/) { $element=~s/\$//; }
+ if ($fmt=~/\$/ && !$needsdollar) { $element=~s/\$//; }
}
}
push(@fmt_ans,join(',',@$ans));
@@ -773,7 +780,7 @@
! ($Apache::lonhomework::type eq 'exam' ||
lc($hideunit) eq "yes") ) {
my $cleanunit=$unit;
- $cleanunit=~s/\$\,//g;
+ $cleanunit=~s/[\$,]//g;
foreach my $ans (@fmt_ans) {
$ans.=" $cleanunit";
}
@@ -790,7 +797,13 @@
$tag,$parstack,
$safeeval,1);
$error=&mt("Computer's answer is incorrect ([_1]).",'"'.join(', \
',@$response).'"').' ';
- if ($ad eq 'UNIT_INVALID_STUDENT') {
+ if (($ad eq 'NO_UNIT') && $needsdollar) {
+ $error.=&mt('The unit attribute includes [_1] but the answer \
format does not.','$').' '. + &mt('Either remove the \
[_1] from the unit or prepend [_1] to the answer format.','$'); + \
} elsif (($ad eq 'COMMA_FAIL') && $needscomma) { + \
$error.=&mt('The unit attribute includes [_1] but the answer format does not.',',').' \
'. + &mt('Either remove the [_1] from the unit or \
prepend [_1] to the answer format.',','); + } elsif ($ad eq \
'UNIT_INVALID_STUDENT') {
$error.=&mt('Unable to interpret units. Computer reads units \
as "[_1]".',$msg).' '.
&mt('The unit attribute in the numericalresponse \
item needs to be a supported physical unit.'); } elsif ($sigline ne '') {
_______________________________________________
LON-CAPA-cvs mailing list
LON-CAPA-cvs@mail.lon-capa.org
http://mail.lon-capa.org/mailman/listinfo/lon-capa-cvs
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic