--- loncom/homework/inputtags.pm 2003/01/13 21:22:43 1.78 +++ loncom/homework/inputtags.pm 2003/04/02 19:51:24 1.86 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA # input definitons # -# $Id: inputtags.pm,v 1.78 2003/01/13 21:22:43 sakharuk Exp $ +# $Id: inputtags.pm,v 1.86 2003/04/02 19:51:24 sakharuk Exp $ # # Copyright Michigan State University Board of Trustees # @@ -30,6 +30,7 @@ package Apache::inputtags; use HTML::Entities(); use strict; +use Apache::loncommon; BEGIN { &Apache::lonxml::register('Apache::inputtags',('textfield','textline')); @@ -92,17 +93,17 @@ sub start_textfield { "rows=\"$rows\" cols=\"$cols\">".$oldresponse; if ($oldresponse ne '') { #get rid of any startup text if the user has already responded - &Apache::lonxml::get_all_text("/textfield",$$parser[-1]); + &Apache::lonxml::get_all_text("/textfield",$parser); } } else { #right or wrong don't show it #$result='
'.$oldresponse.'
'; $result=''; #get rid of any startup text - &Apache::lonxml::get_all_text("/textfield",$$parser[-1]); + &Apache::lonxml::get_all_text("/textfield",$parser); } } elsif ($target eq 'grade') { - my $seedtext=&Apache::lonxml::get_all_text("/textfield",$$parser[-1]); + my $seedtext=&Apache::lonxml::get_all_text("/textfield",$parser); if ($seedtext eq $ENV{'form.HWVAL'.$resid}) { # if the seed text is still there it wasn't a real submission $ENV{'form.HWVAL'.$resid}=''; @@ -111,7 +112,7 @@ sub start_textfield { $result.=&Apache::edit::tag_start($target,$token); $result.=&Apache::edit::text_arg('Rows:','rows',$token,4); $result.=&Apache::edit::text_arg('Columns:','cols',$token,4); - my $bodytext=&Apache::lonxml::get_all_text("/textfield",$$parser[-1]); + my $bodytext=&Apache::lonxml::get_all_text("/textfield",$parser); $result.=&Apache::edit::editfield($token->[1],$bodytext,'Text you want to appear by default:',80,2); } elsif ($target eq 'modified') { my $constructtag=&Apache::edit::get_new_args($token,$parstack, @@ -239,6 +240,12 @@ sub finalizeawards { foreach $award (@_) { if ($award eq 'INCORRECT') {$result=$award; last;} } } if ($result eq '' ) { + foreach $award (@_) { if ($award eq 'MISORDERED_RANK') {$result=$award; last;} } + } + if ($result eq '' ) { + foreach $award (@_) { if ($award eq 'INVALID_FILETYPE') {$result=$award; last;} } + } + if ($result eq '' ) { foreach $award (@_) { if ($award eq 'DRAFT') {$result=$award; last;} } } if ($result eq '' ) { @@ -292,17 +299,26 @@ sub decideoutput { } elsif ($award eq 'WANTED_NUMERIC') { $message = "This question expects a numeric answer"; $button=1; + } elsif ($award eq 'MISORDERED_RANK') { + $message = 'You have provided an invalid ranking, please refer to '. + &Apache::loncommon::help_open_topic('Ranking_Problems','help on ranking problems').'.'; + $button=1; + } elsif ($award eq 'INVALID_FILETYPE') { + $message = 'The filetype extension of the file you uploaded is not allowed.'; + $button=1; } elsif ($award eq 'SIG_FAIL') { $message = "Please adjust significant figures.";# you provided %s significant figures"; $button=1; } elsif ($award eq 'UNIT_FAIL') { - $message = "Units incorrect."; #Computer reads units as %s"; + $message = "Units incorrect. ". + &Apache::loncommon::help_open_topic('Physical_Units'); #Computer reads units as %s"; $button=1; } elsif ($award eq 'UNIT_NOTNEEDED') { $message = "Only a number required.";# Computer reads units of %s"; $button=1; } elsif ($award eq 'NO_UNIT') { - $message = "Units required"; + $message = "Units required". + &Apache::loncommon::help_open_topic('Physical_Units'); $button=1; } elsif ($award eq 'BAD_FORMULA') { $message = "Unable to understand formula"; @@ -320,6 +336,7 @@ sub decideoutput { $message = "Unknown message: $award"; $button=1; } + if ($Apache::lonhomework::type eq 'exam') {$message='';$previousmsg='';} return ($button,$message,$previousmsg); } @@ -372,7 +389,7 @@ sub setgradedata { foreach my $key (keys(%Apache::lonhomework::results)) { if (($key =~ /^resource\.$id\./) && ($key !~ /\.collaborators$/)) { &Apache::lonxml::debug("Removing $key"); - delete($Apache::lonhomework::results{$key}); + delete($Apache::lonhomework::results{$key}); } } #and since they didn't do anything we were never here @@ -380,6 +397,17 @@ sub setgradedata { } else { $Apache::lonhomework::results{"resource.$id.previous"} = '0'; } + } elsif ( $Apache::lonhomework::history{"resource.$id.solved"} =~ + /^correct/ ) { + #delete all data as they student already has it correct + foreach my $key (keys(%Apache::lonhomework::results)) { + if (($key =~ /^resource\.$id\./) && ($key !~ /\.collaborators$/)) { + &Apache::lonxml::debug("Removing $key"); + delete($Apache::lonhomework::results{$key}); + } + } + #and since they didn't do anything we were never here + return ''; } $Apache::lonhomework::results{"resource.$id.award"} = $award; } @@ -462,6 +490,8 @@ sub gradestatus { if ($target eq 'tex') { if ($ENV{'request.state'} ne "construct") { $trystr = ' {\small \textit{Tries} '.$tries.'/'.$maxtries.'} \vskip 0 mm '; + } else { + $trystr = '\vskip 0 mm '; } } else { $trystr = "Tries $tries/$maxtries";