[LON-CAPA-cvs] cvs: loncom /homework default_homework.lcpm inputtags.pm
albertel
lon-capa-cvs@mail.lon-capa.org
Wed, 16 Nov 2005 23:17:40 -0000
albertel Wed Nov 16 18:17:40 2005 EDT
Modified files:
/loncom/homework inputtags.pm default_homework.lcpm
Log:
- complains intellignetly when a user submits 2,3,4 and 2,3 was expected
Index: loncom/homework/inputtags.pm
diff -u loncom/homework/inputtags.pm:1.181 loncom/homework/inputtags.pm:1.182
--- loncom/homework/inputtags.pm:1.181 Wed Nov 16 17:52:22 2005
+++ loncom/homework/inputtags.pm Wed Nov 16 18:17:39 2005
@@ -1,7 +1,7 @@
# The LearningOnline Network with CAPA
# input definitons
#
-# $Id: inputtags.pm,v 1.181 2005/11/16 22:52:22 albertel Exp $
+# $Id: inputtags.pm,v 1.182 2005/11/16 23:17:39 albertel Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -388,7 +388,8 @@
sub valid_award {
my ($award) =@_;
- foreach my $possibleaward ('MISSING_ANSWER', 'ERROR', 'NO_RESPONSE',
+ foreach my $possibleaward ('EXTRA_ANSWER','MISSING_ANSWER', 'ERROR',
+ 'NO_RESPONSE',
'TOO_LONG', 'UNIT_INVALID_INSTRUCTOR',
'UNIT_INVALID_STUDENT', 'UNIT_IRRECONCIBLE',
'UNIT_FAIL', 'NO_UNIT',
@@ -422,7 +423,8 @@
# these awards are ordered from most important error through best correct
- my @awards = ('MISSING_ANSWER', 'ERROR', 'NO_RESPONSE', 'TOO_LONG',
+ my @awards = ('EXTRA_ANSWER', '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',
@@ -530,6 +532,10 @@
$message = '';
$bgcolor=$possiblecolors{'no_feedback'};
$button=1;
+ } elsif ($award eq 'EXTRA_ANSWER') {
+ $message = &mt('Some extra items were submitted.');
+ $bgcolor=$possiblecolors{'not_charged_try'};
+ $button = 1;
} elsif ($award eq 'MISSING_ANSWER') {
$message = &mt('Some items were not submitted.');
$bgcolor=$possiblecolors{'not_charged_try'};
Index: loncom/homework/default_homework.lcpm
diff -u loncom/homework/default_homework.lcpm:1.104 loncom/homework/default_homework.lcpm:1.105
--- loncom/homework/default_homework.lcpm:1.104 Wed Nov 16 17:18:22 2005
+++ loncom/homework/default_homework.lcpm Wed Nov 16 18:17:39 2005
@@ -1,7 +1,7 @@
# The LearningOnline Network with CAPA
# used by lonxml::xmlparse() as input variable $safeinit to Apache::run::run()
#
-# $Id: default_homework.lcpm,v 1.104 2005/11/16 22:18:22 albertel Exp $
+# $Id: default_homework.lcpm,v 1.105 2005/11/16 23:17:39 albertel Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -182,23 +182,24 @@
sub caparesponse_check_list {
my $response=$LONCAPA::CAPAresponse_args{'response'};
- my ($result,@list);
- @list=@LONCAPA::CAPAresponse_answer;
- my $aresult='';
- my $current_answer;
- my $answers=join(':',@list);
- $result.="Got response :$answers:\n";
- &LONCAPA_INTERNAL_DEBUG("<blink>Yo!</blink> got ".join(':',%LONCAPA::CAPAresponse_args));
+ my $result="Got response :".join(':',@LONCAPA::CAPAresponse_answer).":\n";
+ &LONCAPA_INTERNAL_DEBUG("args ".join(':',%LONCAPA::CAPAresponse_args));
my @responselist;
my $type = $LONCAPA::CAPAresponse_args{'type'};
$result.="Got type :$type:\n";
- if ($type ne '' && $#list > 0) {
+ if ($type ne '' && $#LONCAPA::CAPAresponse_answer > 0) {
(@responselist)=split(/,/,$response);
+ if (@responselist < @LONCAPA::CAPAresponse_answer) {
+ return 'MISSING_ANSWER';
+ }
+ if (@responselist > @LONCAPA::CAPAresponse_answer) {
+ return 'EXTRA_ANSWER';
+ }
} else {
(@responselist)=($response);
}
- my $unit='';
$result.="Initial final response :$responselist['-1']:\n";
+ my $unit;
if ($type eq '' || $type eq 'float') {
#for numerical problems split off the unit
if ( $responselist['-1']=~ /(.*[^\s])\s+([^\s]+)/ ) {
@@ -207,17 +208,13 @@
}
}
$result.="Final final response :$responselist['-1']:$unit:\n";
- $result.=":$#list: answers\n";
$unit=~s/\s//;
- my $i=0;
- my $awards='';
- my @msgs;
- for ($i=0; $i<@list;$i++) {
- my $msg;
- $result.="trying answer :$list[$i]:\n";
- my $thisanswer=$list[$i];
+
+ my ($awards, @msgs);
+ foreach my $thisanswer (@LONCAPA::CAPAresponse_answer) {
+ my ($msg,$aresult);
$result.="trying answer :$thisanswer:\n";
- if (defined($list[$i])) {
+ if (defined($thisanswer)) {
if ($unit eq '') {
($aresult,$msg)=&caparesponse_check($thisanswer,
$responselist[$i]);
@@ -227,7 +224,9 @@
}
} else {
$aresult='ERROR';
+ $msg='answer was undefined';
}
+ &LONCAPA_INTERNAL_DEBUG("after if $aresult -- $msg");
my ($temp)=split(/:/, $aresult);
$awards.="$temp,";
$result.=$aresult;