--- loncom/homework/inputtags.pm 2001/11/12 20:27:28 1.46
+++ loncom/homework/inputtags.pm 2002/03/01 00:23:04 1.53
@@ -1,12 +1,37 @@
# The LearningOnline Network with CAPA
# input definitons
+#
+# $Id: inputtags.pm,v 1.53 2002/03/01 00:23:04 albertel Exp $
+#
+# Copyright Michigan State University Board of Trustees
+#
+# This file is part of the LearningOnline Network with CAPA (LON-CAPA).
+#
+# LON-CAPA is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# LON-CAPA is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with LON-CAPA; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+#
+# /home/httpd/html/adm/gpl.txt
+#
+# http://www.lon-capa.org/
+#
# 2/19 Guy
package Apache::inputtags;
use strict;
-sub BEGIN {
- &Apache::lonxml::register('Apache::inputtags',('textarea','textline','datasubmission'));
+BEGIN {
+ &Apache::lonxml::register('Apache::inputtags',('textfield','textline','datasubmission'));
}
@@ -46,7 +71,7 @@ sub end_input {
return '';
}
-sub start_textarea {
+sub start_textfield {
my ($target,$token,$tagstack,$parstack,$parser,$safeeval)=@_;
my $result = "";
my $id = &start_input($parstack,$safeeval);
@@ -64,13 +89,20 @@ sub start_textarea {
}
if ($oldresponse ne '') {
#get rid of any startup text if the user has already responded
- &Apache::lonxml::get_all_text("/textarea",$$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;
}
-sub end_textarea {
+sub end_textfield {
my ($target,$token,$tagstack,$parstack,$parser,$safeeval)=@_;
if ($target eq 'web') {
if ($Apache::inputtags::status[-1] eq 'CAN_ANSWER') {
@@ -98,8 +130,7 @@ sub start_textline {
$result=''.$oldresponse.'';
}
} elsif ($target eq 'edit') {
- $result=&Apache::edit::tag_start($target,$token,
- &Apache::lonxml::description($token));
+ $result=&Apache::edit::tag_start($target,$token);
$result.=&Apache::edit::text_arg('Size:','size',$token,'5')."";
$result.=&Apache::edit::end_table;
} elsif ($target eq 'modified') {
@@ -261,9 +292,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;
@@ -346,6 +383,7 @@ sub gradestatus {
my ($id) = @_;
my $showbutton = 1;
my $message = '';
+ my $latemessage = '';
my $trystr='';
my $button='';
my $previousmsg='';
@@ -377,14 +415,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="