--- loncom/homework/inputtags.pm 2002/03/08 19:55:00 1.54 +++ loncom/homework/inputtags.pm 2002/08/01 15:18:58 1.59 @@ -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.59 2002/08/01 15:18:58 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 '' ) { @@ -223,6 +232,9 @@ sub finalizeawards { foreach $award (@_) { if ($award eq 'INCORRECT') {$result=$award; last;} } } if ($result eq '' ) { + foreach $award (@_) { if ($award eq 'DRAFT') {$result=$award; last;} } + } + if ($result eq '' ) { foreach $award (@_) { if ($award eq 'SUBMITTED') {$result=$award; last;} } } if ($result eq '' ) { @@ -289,6 +301,9 @@ sub decideoutput { } elsif ($award eq 'SUBMITTED') { $message = "Your submission has been recorded."; $button=1; + } elsif ($award eq 'DRAFT') { + $message = "A draft copy has been saved."; + $button=1; } else { $message = "Unknown message: $award"; $button=1; @@ -318,12 +333,14 @@ sub setgradedata { $Apache::lonhomework::results{"resource.$id.tries"} = $Apache::lonhomework::history{"resource.$id.tries"} + 1; $Apache::lonhomework::results{"resource.$id.solved"} = - 'incorrect_attempted'; + 'incorrect_attempted' } elsif ( $award eq 'SUBMITTED' ) { $Apache::lonhomework::results{"resource.$id.tries"} = $Apache::lonhomework::history{"resource.$id.tries"} + 1; $Apache::lonhomework::results{"resource.$id.solved"} = 'ungraded_attempted'; + } elsif ( $award eq 'DRAFT' ) { + $Apache::lonhomework::results{"resource.$id.solved"} = ''; } elsif ( $award eq 'NO_RESPONSE' ) { return ''; } else { @@ -337,9 +354,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}); }