--- loncom/homework/inputtags.pm 2002/03/08 19:55:00 1.54
+++ loncom/homework/inputtags.pm 2002/07/25 20:55:13 1.58
@@ -1,7 +1,7 @@
# The LearningOnline Network with CAPA
# input definitons
#
-# $Id: inputtags.pm,v 1.54 2002/03/08 19:55:00 albertel Exp $
+# $Id: inputtags.pm,v 1.58 2002/07/25 20:55:13 ng Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -28,6 +28,7 @@
# 2/19 Guy
package Apache::inputtags;
+use HTML::Entities();
use strict;
BEGIN {
@@ -75,14 +76,17 @@ sub start_textfield {
my ($target,$token,$tagstack,$parstack,$parser,$safeeval)=@_;
my $result = "";
my $id = &start_input($parstack,$safeeval);
+ my $resid=$Apache::inputtags::response[-1];
if ($target eq 'web') {
- my $oldresponse = $Apache::lonhomework::history{"resource.$Apache::inputtags::part.$Apache::inputtags::response['-1'].submission"};
+ $Apache::lonxml::evaluate--;
+ my $partid=$Apache::inputtags::part;
+ my $oldresponse = &HTML::Entities::encode($Apache::lonhomework::history{"resource.$partid.$resid.submission"});
my $cols = &Apache::lonxml::get_param('cols',$parstack,$safeeval);
if ( $cols eq '') { $cols = 80; }
my $rows = &Apache::lonxml::get_param('rows',$parstack,$safeeval);
if ( $rows eq '') { $rows = 10; }
if ($Apache::inputtags::status[-1] eq 'CAN_ANSWER') {
- $result= '";
}
@@ -117,12 +122,12 @@ sub start_textline {
my ($target,$token,$tagstack,$parstack,$parser,$safeeval)=@_;
my $result = "";
if ($target eq 'web') {
+ $Apache::lonxml::evaluate--;
my $size = &Apache::lonxml::get_param('size',$parstack,$safeeval);
if ($size eq '') { $size=20; }
my $partid=$Apache::inputtags::part;
- my $id=$Apache::inputtags::response['-1'];
- my $oldresponse =
- $Apache::lonhomework::history{"resource.$partid.$id.submission"};
+ my $id=$Apache::inputtags::response[-1];
+ my $oldresponse = &HTML::Entities::encode($Apache::lonhomework::history{"resource.$partid.$id.submission"});
if ($Apache::inputtags::status[-1] eq 'CAN_ANSWER') {
$result= '';
@@ -142,7 +147,8 @@ sub start_textline {
sub end_textline {
my ($target,$token,$tagstack,$parstack,$parser,$safeeval)=@_;
- if ($target eq 'edit') { return ('','no'); }
+ if ($target eq 'web') { $Apache::lonxml::evaluate++; }
+ elsif ($target eq 'edit') { return ('','no'); }
return "";
}
@@ -195,6 +201,9 @@ sub finalizeawards {
if ($blankcount == ($#_ + 1)) { $result = 'NO_RESPONSE'; }
}
if ($result eq '' ) {
+ foreach $award (@_) { if ($award eq 'MISSING_ANSWER') {$result='MISSING_ANSWER'; last;}}
+ }
+ if ($result eq '' ) {
foreach $award (@_) { if ($award eq 'ERROR') {$result='ERROR'; last;}}
}
if ($result eq '' ) {
@@ -337,9 +346,10 @@ sub setgradedata {
delete($Apache::lonhomework::results{"resource.$id.tries"});
$Apache::lonhomework::results{"resource.$id.previous"} = '1';
} elsif ( $previously_used eq 'PREVIOUSLY_LAST') {
- #delete all data as they student didn't do anything
+ #delete all data as they student didn't do anything, but save
+ #the list of collaborators.
foreach my $key (keys(%Apache::lonhomework::results)) {
- if ($key =~ /^resource\.$id\./) {
+ if (($key =~ /^resource\.$id\./) && ($key !~ /\.collaborators$/)) {
&Apache::lonxml::debug("Removing $key");
delete($Apache::lonhomework::results{$key});
}