--- loncom/homework/inputtags.pm 2002/01/17 12:23:31 1.50
+++ loncom/homework/inputtags.pm 2002/03/08 19:55:00 1.54
@@ -1,7 +1,7 @@
# The LearningOnline Network with CAPA
# input definitons
#
-# $Id: inputtags.pm,v 1.50 2002/01/17 12:23:31 harris41 Exp $
+# $Id: inputtags.pm,v 1.54 2002/03/08 19:55:00 albertel Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -89,7 +89,14 @@ sub start_textfield {
}
if ($oldresponse ne '') {
#get rid of any startup text if the user has already responded
- &Apache::lonxml::get_all_text("/textfield",$$parser[$#$parser]);
+ &Apache::lonxml::get_all_text("/textfield",$$parser[-1]);
+ }
+ }
+ if ($target eq 'grade') {
+ my $seedtext=&Apache::lonxml::get_all_text("/textfield",$$parser[-1]);
+ if ($seedtext eq $ENV{'form.HWVAL'.$Apache::inputtags::response[-1]}) {
+ # if the seed text is still there it wasn't a real submission
+ $ENV{'form.HWVAL'.$Apache::inputtags::response['-1']}='';
}
}
return $result;
@@ -178,7 +185,14 @@ sub finalizeawards {
my $award;
if ($#_ == '-1') { $result = "NO_RESPONSE"; }
if ($result eq '' ) {
- foreach $award (@_) { if ($award eq '') {$result='MISSING_ANSWER'; last;}}
+ my $blankcount;
+ foreach $award (@_) {
+ if ($award eq '') {
+ $result='MISSING_ANSWER';
+ $blankcount++;
+ }
+ }
+ if ($blankcount == ($#_ + 1)) { $result = 'NO_RESPONSE'; }
}
if ($result eq '' ) {
foreach $award (@_) { if ($award eq 'ERROR') {$result='ERROR'; last;}}
@@ -285,9 +299,15 @@ sub decideoutput {
sub setgradedata {
my ($award,$id,$previously_used) = @_;
# if the student already has it correct, don't modify the status
- if ( $Apache::lonhomework::history{"resource.$id.solved"} !~
+ if ($Apache::inputtags::status['-1'] ne 'CAN_ANSWER') {
+ $Apache::lonhomework::results{"resource.$id.afterduedate"}=$award;
+ return '';
+ } elsif ( $Apache::lonhomework::history{"resource.$id.solved"} !~
/^correct/ ) {
#handle assignment of tries and solved status
+ if ($Apache::lonhomework::history{"resource.$id.afterduedate"}) {
+ $Apache::lonhomework::results{"resource.$id.afterduedate"}='';
+ }
if ( $award eq 'APPROX_ANS' || $award eq 'EXACT_ANS' ) {
$Apache::lonhomework::results{"resource.$id.tries"} =
$Apache::lonhomework::history{"resource.$id.tries"} + 1;
@@ -342,12 +362,8 @@ sub grade {
foreach $response (@Apache::inputtags::responselist) {
&Apache::lonxml::debug("looking for response.$id.$response.awarddetail");
my $value=$Apache::lonhomework::results{"resource.$id.$response.awarddetail"};
- if ( $value ne '' ) {
- &Apache::lonxml::debug("keeping $value from $response for $id");
- push (@awards,$value);
- } else {
- &Apache::lonxml::debug("skipping $value from $response for $id");
- }
+ &Apache::lonxml::debug("keeping $value from $response for $id");
+ push (@awards,$value);
}
my $finalaward = &finalizeawards(@awards);
my $previously_used;
@@ -370,6 +386,7 @@ sub gradestatus {
my ($id) = @_;
my $showbutton = 1;
my $message = '';
+ my $latemessage = '';
my $trystr='';
my $button='';
my $previousmsg='';
@@ -401,14 +418,18 @@ sub gradestatus {
}
if ( $status eq 'SHOW_ANSWER' || $status eq 'CANNOT_ANSWER') {$showbutton = 0;}
if ( $showbutton ) {
- $button = '
';
+ $button = '
';
+ }
+ if ($Apache::lonhomework::history{"resource.$id.afterduedate"}) {
+ #last submissions was after due date
+ $latemessage="