--- loncom/homework/inputtags.pm 2005/09/09 18:45:56 1.175 +++ loncom/homework/inputtags.pm 2005/12/01 18:46:31 1.185 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA # input definitons # -# $Id: inputtags.pm,v 1.175 2005/09/09 18:45:56 albertel Exp $ +# $Id: inputtags.pm,v 1.185 2005/12/01 18:46:31 albertel Exp $ # # Copyright Michigan State University Board of Trustees # @@ -36,42 +36,54 @@ BEGIN { &Apache::lonxml::register('Apache::inputtags',('hiddenline','textfield','textline')); } +# Initializes a set of global variables used during the parse of the problem. +# +# @Apache::inputtags::input - List of current input ids. +# @Apache::inputtags::inputlist - List of all input ids seen this problem. +# @Apache::inputtags::response - List of all current resopnse ids. +# @Apache::inputtags::responselist - List of all response ids seen this +# problem. +# @Apache::inputtags::hint - List of all hint ids. +# @Apache::inputtags::hintlist - List of all hint ids seen this problem. +# @Apache::inputtags::previous - List describing if specific responseds +# have been used +# @Apache::inputtags::previous_version - Submission responses were used in. +# $Apache::inputtags::part - Current part id (valid only in +# ) +# 0 if not in a part. +# @Apache::inputtags::partlist - List of part ids seen in the current +# +# @Apache::inputtags::status - List of problem statuses. First +# element is the status of the +# the remainder are for individual s. +# %Apache::inputtags::params - Hash of defined parameters for the +# current response. +# @Apache::inputtags::import - List of all ids for thes get +# join()ed and prepended. +# @Apache::inputtags::importlist - List of all import ids seen. +# $Apache::inputtags::response_with_no_part +# - Flag set true if we have seen a response +# that is not inside a +# %Apache::inputtags::answertxt - <*response> tags store correct +# answer strings for display by +# in this hash. sub initialize_inputtags { - # list of current input ids @Apache::inputtags::input=(); - # list of all input ids seen in this problem @Apache::inputtags::inputlist=(); - # list of all current response ids @Apache::inputtags::response=(); - # list of all response ids seen in this problem @Apache::inputtags::responselist=(); - # list of all current hint ids @Apache::inputtags::hint=(); - # list of all hint ids seen in this problem @Apache::inputtags::hintlist=(); - # list of whether or not a specific response was previously used @Apache::inputtags::previous=(); - # submission it was used in @Apache::inputtags::previous_version=(); - # id of current part, 0 means that no part is current - # (inside only $Apache::inputtags::part=''; - # list of all part ids seen @Apache::inputtags::partlist=(); - # list of problem date statuses, the first element is for - # if there is a second element it is for the current @Apache::inputtags::status=(); - # hash of defined params for the current response %Apache::inputtags::params=(); - # list of all ids, for , these get join()ed and prepended @Apache::inputtags::import=(); - # list of all import ids seen @Apache::inputtags::importlist=(); - # just used to note whether we have seen a response that isn't in a part $Apache::inputtags::response_with_no_part=0; - # storage location so the begin <*response> tag can generate the correct - # answer string for display by the %Apache::inputtags::answertxt=(); } @@ -119,7 +131,7 @@ sub addchars { } sub start_textfield { - my ($target,$token,$tagstack,$parstack,$parser,$safeeval)=@_; + my ($target,$token,$tagstack,$parstack,$parser,$safeeval,$style)=@_; my $result = ""; my $id = &start_input($parstack,$safeeval); my $resid=$Apache::inputtags::response[-1]; @@ -143,17 +155,18 @@ 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); + &Apache::lonxml::get_all_text("/textfield",$parser,$style); } } else { #right or wrong don't show it #$result='
'.$oldresponse.'
'; $result=''; #get rid of any startup text - &Apache::lonxml::get_all_text("/textfield",$parser); + &Apache::lonxml::get_all_text("/textfield",$parser,$style); } } elsif ($target eq 'grade') { - my $seedtext=&Apache::lonxml::get_all_text("/textfield",$parser); + my $seedtext=&Apache::lonxml::get_all_text("/textfield",$parser, + $style); if ($seedtext eq $env{'form.HWVAL_'.$resid}) { # if the seed text is still there it wasn't a real submission $env{'form.HWVAL_'.$resid}=''; @@ -164,7 +177,8 @@ sub start_textfield { $result.=&Apache::edit::text_arg('Columns:','cols',$token,4); $result.=&Apache::edit::text_arg ('Click-On Texts (comma sep):','addchars',$token,10); - my $bodytext=&Apache::lonxml::get_all_text("/textfield",$parser); + my $bodytext=&Apache::lonxml::get_all_text("/textfield",$parser, + $style); $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, @@ -330,7 +344,7 @@ sub file_selector { if ($uploadedfile) { my $url=$Apache::lonhomework::history{"resource.$part.$id.uploadedurl"}; - push (@Apache::lonxml::extlinks,$url); + &Apache::lonxml::extlink($url); &Apache::lonnet::allowuploaded('/adm/essayresponse',$url); my $icon=&Apache::loncommon::icon($url); my $curfile='"; - $message.=" ".&mt("Computer's answer now shown above."); + $message.= $computer; } $added_computer_text=1; unless ($env{'course.'. @@ -473,7 +516,7 @@ sub decideoutput { $message = '\textbf{'.&mt('You are correct.').'}'; } else { $message = "".&mt('You are correct.').""; - $message.=" ".&mt("Computer's answer now shown above."); + $message.= $computer; } $added_computer_text=1; unless ($env{'course.'. @@ -491,6 +534,10 @@ sub decideoutput { $message = ''; $bgcolor=$possiblecolors{'no_feedback'}; $button=1; + } elsif ($award eq 'EXTRA_ANSWER') { + $message = &mt('Some extra items were submitted.'); + $bgcolor=$possiblecolors{'not_charged_try'}; + $button = 1; } elsif ($award eq 'MISSING_ANSWER') { $message = &mt('Some items were not submitted.'); $bgcolor=$possiblecolors{'not_charged_try'}; @@ -589,7 +636,7 @@ sub decideoutput { } if ($Apache::inputtags::status[-1] eq 'SHOW_ANSWER' && !$added_computer_text && $target ne 'tex') { - $message.=" ".&mt("Computer's answer now shown above."); + $message.= $computer; $added_computer_text=1; } return ($button,$bgcolor,$message,$previousmsg); @@ -745,6 +792,9 @@ sub setgradedata { return ''; } $Apache::lonhomework::results{"resource.$id.award"} = $award; + if ($award eq 'SUBMITTED') { + &Apache::response::add_to_gradingqueue(); + } } sub grade { @@ -801,8 +851,11 @@ sub gradestatus { my $status = $Apache::inputtags::status['-1']; &Apache::lonxml::debug("gradestatus has :$status:"); - if ( $status ne 'CLOSED' && $status ne 'UNAVAILABLE' && - $status ne 'INVALID_ACCESS') { + if ( $status ne 'CLOSED' + && $status ne 'UNAVAILABLE' + && $status ne 'INVALID_ACCESS' + && $status ne 'NEEDS_CHECKIN' + && $status ne 'NOT_IN_A_SLOT') { my $award = $Apache::lonhomework::history{"resource.$id.award"}; my $awarded = $Apache::lonhomework::history{"resource.$id.awarded"}; my $solved = $Apache::lonhomework::history{"resource.$id.solved"};