--- loncom/homework/inputtags.pm 2000/12/01 00:44:48 1.9
+++ loncom/homework/inputtags.pm 2000/12/04 21:15:33 1.10
@@ -5,7 +5,7 @@ package Apache::inputtags;
use strict;
sub BEGIN {
- &Apache::lonxml::register('Apache::inputtags',('textarea','textline','answergroup','datasubmission'));
+ &Apache::lonxml::register('Apache::inputtags',('textarea','textline','datasubmission'));
}
@@ -21,7 +21,6 @@ sub initialize_inputtags {
sub start_textarea {
my ($target,$token,$parstack,$parser,$safeeval)=@_;
my $result = "";
- $Apache::inputtags::curvalue++;
if ($target eq 'web') {
$result= '";
+ if ($target eq 'web') {
+ return "";
+ }
+ return '';
}
sub start_textline {
my ($target,$token,$parstack,$parser,$safeeval)=@_;
my $result = "";
- $Apache::inputtags::curvalue++;
- my $args ='';
- if ( $#$parstack > -1 ) { $args=$$parstack[$#$parstack]; }
- my $size = &Apache::run::run("{$args;".'return $size}',$safeeval);
- if ($size eq '') { $size=20; }
if ($target eq 'web') {
+ my $args ='';
+ if ( $#$parstack > -1 ) { $args=$$parstack[$#$parstack]; }
+ my $size = &Apache::run::run("{$args;".'return $size}',$safeeval);
+ if ($size eq '') { $size=20; }
$result= '';
}
return $result;
@@ -52,38 +53,39 @@ sub end_textline {
return "";
}
-sub start_answergroup {
- my ($target,$token,$parstack,$parser,$safeeval)=@_;
- my $args ='';
- if ( $#$parstack > -1 ) { $args=$$parstack[$#$parstack]; }
- my $id = &Apache::run::run("{$args;".'return $id}',$safeeval);
- push (@Apache::inputtags::answergroup,$id);
- if ($target == 'web') {
-
- }
- return '';
-}
-
-sub end_answergroup {
- my ($target,$token,$parstack,$parser,$safeeval)=@_;
- return ''; # has ben deprecated
- my $args ='';
- if ( $#$parstack > -1 ) { $args=$$parstack[$#$parstack]; }
- my $id = &Apache::run::run("{$args;".'return $id}',$safeeval);
- push (@Apache::inputtags::answergroup,$id);
- my $result='';
- my $button='';
- my $showbutton='1';
- my $usedtry='1';
- my $response='';
- if ( $target == 'web' ) {
- if ( defined $ENV{'form.submit'}) {
- }
- if ($showbutton > 0) { $result.=$button }
- }
- pop @Apache::inputtags::answergroup;
- return $result;
-}
+#answergroup is deprecated
+#sub start_answergroup {
+# my ($target,$token,$parstack,$parser,$safeeval)=@_;
+# my $args ='';
+# if ( $#$parstack > -1 ) { $args=$$parstack[$#$parstack]; }
+# my $id = &Apache::run::run("{$args;".'return $id}',$safeeval);
+# push (@Apache::inputtags::answergroup,$id);
+# if ($target == 'web') {
+#
+# }
+# return '';
+#}
+#
+#sub end_answergroup {
+# my ($target,$token,$parstack,$parser,$safeeval)=@_;
+# return ''; # has ben deprecated
+# my $args ='';
+# if ( $#$parstack > -1 ) { $args=$$parstack[$#$parstack]; }
+# my $id = &Apache::run::run("{$args;".'return $id}',$safeeval);
+# push (@Apache::inputtags::answergroup,$id);
+# my $result='';
+# my $button='';
+# my $showbutton='1';
+# my $usedtry='1';
+# my $response='';
+# if ( $target == 'web' ) {
+# if ( defined $ENV{'form.submit'}) {
+# }
+# if ($showbutton > 0) { $result.=$button }
+# }
+# pop @Apache::inputtags::answergroup;
+# return $result;
+#}
sub start_datasubmission {
@@ -94,6 +96,7 @@ sub end_datasubmission {
if ( $target == 'web' ) {
return '';
}
+ return '';
}
sub finalizeawards {
@@ -135,19 +138,56 @@ sub finalizeawards {
return $result
}
+sub decideoutput {
+ my ($award)=@_;
+ my $message='';
+ my $button=0;
+ my $tries=0;
+ if ($award eq 'EXACT_ANS' || $award eq 'APPROX_ANS' ) {
+ $message = "Yes, Computer gets: ";
+ $tries=1; $button=0;
+
+ } elsif ($award eq 'WANTED_NUMERIC') {
+ $message = "This question expects a numeric answer";
+ $tries=0; $button=1;
+ } elsif ($award eq 'SIG_FAIL') {
+ $message = "Please adjust significant figures, you provided %s significant figures";
+ $tries=0; $button=1;
+ } elsif ($award eq 'UNIT_FAIL') {
+ $message = "Units incorrect, Computer reads units as %s";
+ $tries=0; $button=1;
+ } elsif ($award eq 'UNIT_NOTNEEDED') {
+ $message = "Only a number required, Computer reads units of %s";
+ $tries=0; $button=1;
+ } elsif ($award eq 'NO_UNIT') {
+ $message = "Units required";
+ $tries=0; $button=1;
+ } elsif ($award eq 'BAD_FORMULA') {
+ $message = "Unable to understand formula";
+ $tries=0; $button=1;
+ } elsif ($award eq 'INCORRECT') {
+ $message = "Incorrect";
+ $tries=0; $button=1;
+ } else {
+ $message = "Unknown message: $award";
+ $tries=0; $button=1;
+ }
+ return ($tries,$button,$message);
+}
+
sub grade {
my ($target) = @_;
my $id = $Apache::inputtags::part;
my $result='';
my $button='';
- my $showbutton='1';
- my $usedtry='1';
my $response='';
if ( $target == 'web' ) {
if ( defined $ENV{'form.submit'}) {
my @awards = ();
+ &Apache::lonxml::debug("$#Apache::inputtags::responselist");
foreach $response (@Apache::inputtags::responselist) {
- my $value=$Apache::lonhomework::results{"response.awarddetail.$id.$response"};
+ &Apache::lonxml::debug("looking for response.awarddetail.$id.$response");
+ my $value=$Apache::lonhomework::results{"resource.awarddetail.$id.$response"};
if ( $value ne '' ) {
&Apache::lonxml::debug("keep ing $value from $response for $id");
push (@awards,$value);
@@ -156,6 +196,9 @@ sub grade {
}
}
my $finalaward = &finalizeawards(@awards);
+ my ($triesinc,$showbutton,$message) = &decideoutput($finalaward);
+ $Apache::lonhomework::results{"resource.tries.$id"} =
+ $Apache::lonhomework::history{"resource.tries.$id"} + 1;
&Apache::lonxml::debug("final award $finalaward");
}
if ($showbutton > 0) { $result.=$button }