--- loncom/homework/inputtags.pm 2005/06/28 21:41:08 1.170 +++ loncom/homework/inputtags.pm 2005/11/10 22:19:27 1.179 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA # input definitons # -# $Id: inputtags.pm,v 1.170 2005/06/28 21:41:08 albertel Exp $ +# $Id: inputtags.pm,v 1.179 2005/11/10 22:19:27 albertel Exp $ # # Copyright Michigan State University Board of Trustees # @@ -36,38 +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 whether or not a specific response was previously used + @Apache::inputtags::hint=(); + @Apache::inputtags::hintlist=(); @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=(); } @@ -75,6 +91,7 @@ sub check_for_duplicate_ids { my %check; foreach my $id (@Apache::inputtags::partlist, @Apache::inputtags::responselist, + @Apache::inputtags::hintlist, @Apache::inputtags::importlist) { $check{$id}++; } @@ -301,9 +318,10 @@ sub end_hiddenline { # $which -> 'uploadedonly' -> only newly uploaded files # 'portfolioonly' -> only allow files from portfolio # 'both' -> allow files from either location +# $extratext -> additional text to go between the link and the input box # returns a table row sub file_selector { - my ($part,$id,$uploadedfiletypes,$which)=@_; + my ($part,$id,$uploadedfiletypes,$which,$extratext)=@_; if (!$uploadedfiletypes) { return ''; } my $jspart=$part; @@ -324,7 +342,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=''. + $result.=$extratext.''. &mt('Select Portfolio Files').'
'. ''. '
'; @@ -368,6 +386,22 @@ sub checkstatus { return(undef,undef); } +sub valid_award { + my ($award) =@_; + foreach my $possibleaward ('MISSING_ANSWER', 'ERROR', 'NO_RESPONSE', + 'TOO_LONG', 'UNIT_INVALID_INSTRUCTOR', + 'UNIT_INVALID_STUDENT', 'UNIT_IRRECONCIBLE', + 'UNIT_FAIL', 'NO_UNIT', + 'UNIT_NOTNEEDED', 'WANTED_NUMERIC', + 'BAD_FORMULA', 'SIG_FAIL', 'INCORRECT', + 'MISORDERED_RANK', 'INVALID_FILETYPE', + 'DRAFT', 'SUBMITTED', 'ASSIGNED_SCORE', + 'APPROX_ANS', 'EXACT_ANS','COMMA_FAIL') { + if ($award eq $possibleaward) { return 1; } + } + return 0; +} + sub finalizeawards { my ($awardref,$msgref)=@_; my $result=undef; @@ -426,8 +460,10 @@ sub decideoutput { $message=&mt('Incorrect.'); $bgcolor=$possiblecolors{'charged_try'}; } - if ($award eq 'ASSIGNED_SCORE') { + if ($env{'request.filename'} =~ + m|/res/lib/templates/examupload.problem$|) { $message = &mt("A score has been assigned."); + $added_computer_text=1; } else { if ($target eq 'tex') { $message = '\textbf{'.$message.'}';