--- loncom/homework/inputtags.pm 2008/12/18 15:56:23 1.248.2.5 +++ loncom/homework/inputtags.pm 2008/11/25 13:16:17 1.249 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA # input definitons # -# $Id: inputtags.pm,v 1.248.2.5 2008/12/18 15:56:23 raeburn Exp $ +# $Id: inputtags.pm,v 1.249 2008/11/25 13:16:17 jms Exp $ # # Copyright Michigan State University Board of Trustees # @@ -25,6 +25,30 @@ # # http://www.lon-capa.org/ +=pod + +=head1 NAME + +Apache::inputtags + +=head1 SYNOPSIS + + + +This is part of the LearningOnline Network with CAPA project +described at http://www.lon-capa.org. + + +=head1 NOTABLE SUBROUTINES + +=over + +=item + +=back + +=cut + package Apache::inputtags; use HTML::Entities(); use strict; @@ -38,41 +62,47 @@ 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. -# %Apache::inputtags::submission_display -# - <*response> tags store improved display -# of submission strings for display by part -# end. +=pod + +=item initialize_inputtags() + +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. +%Apache::inputtags::submission_display + - <*response> tags store improved display + of submission strings for display by part + end. + +=cut sub initialize_inputtags { @Apache::inputtags::input=(); @@ -424,17 +454,23 @@ sub end_hiddenline { return ""; } -# $part -> partid -# $id -> responseid -# $uploadefiletypes -> comma seperated list of extensions allowed or * for any -# $which -> 'uploadonly' -> 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 -# $maxfilesize -> maximum cumulative filesize for submitted files (in MB). -# returns a table row +=pod + +=item file_selector() + +$part -> partid +$id -> responseid +$uploadefiletypes -> comma seperated list of extensions allowed or * for any +$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 + +=cut + sub file_selector { - my ($part,$id,$uploadedfiletypes,$which,$extratext,$maxfilesize)=@_; + my ($part,$id,$uploadedfiletypes,$which,$extratext)=@_; if (!$uploadedfiletypes) { return ''; } my $jspart=$part; @@ -443,16 +479,9 @@ sub file_selector { my $result; $result.=''; - if (($uploadedfiletypes ne '*') || ($maxfilesize)) { - if ($uploadedfiletypes ne '*') { - $result.= - &mt('Allowed filetypes: [_1]',''.$uploadedfiletypes.'').'
'; - } - if ($maxfilesize) { - $result.=&mt('Combined size of files not to exceed: [_1] MB[_2].', - ''.$maxfilesize.'').'
'; - } - $result .= '
'; + if ($uploadedfiletypes ne '*') { + $result.= + &mt('Allowed filetypes: [_1]',$uploadedfiletypes).'
'; } if ($which eq 'uploadonly' || $which eq 'both') { $result.=&mt('Submit a file: (only one file can be uploaded)'). @@ -469,6 +498,7 @@ sub file_selector { ''. '
'; $result .= &show_past_portfile_submission($part,$id); + } $result.=''; return $result; @@ -530,7 +560,7 @@ sub valid_award { 'UNIT_INVALID_STUDENT', 'UNIT_IRRECONCIBLE', 'UNIT_FAIL', 'NO_UNIT', 'UNIT_NOTNEEDED', 'WANTED_NUMERIC', - 'BAD_FORMULA', 'INTERNAL_ERROR', 'SIG_FAIL', 'INCORRECT', + 'BAD_FORMULA', 'SIG_FAIL', 'INCORRECT', 'MISORDERED_RANK', 'INVALID_FILETYPE', 'EXCESS_FILESIZE', 'DRAFT', 'SUBMITTED', 'ASSIGNED_SCORE', @@ -545,7 +575,7 @@ sub valid_award { 'TOO_LONG', 'UNIT_INVALID_INSTRUCTOR', 'UNIT_INVALID_STUDENT', 'UNIT_IRRECONCIBLE', 'UNIT_FAIL', 'NO_UNIT', - 'UNIT_NOTNEEDED', 'WANTED_NUMERIC', 'BAD_FORMULA', 'INTERNAL_ERROR', + 'UNIT_NOTNEEDED', 'WANTED_NUMERIC', 'BAD_FORMULA', 'COMMA_FAIL', 'SIG_FAIL', 'INCORRECT', 'MISORDERED_RANK', 'INVALID_FILETYPE', 'EXCESS_FILESIZE', 'DRAFT', 'SUBMITTED', 'ASSIGNED_SCORE', 'APPROX_ANS', 'EXACT_ANS'); @@ -593,9 +623,6 @@ sub finalizeawards { return ('NO_RESPONSE'); } } - - if ($Apache::lonxml::internal_error) { $result='INTERNAL_ERROR'; } - if (!$final_scantron && defined($result)) { return ($result); } # if in scantron mode, if the award for any response is @@ -776,6 +803,7 @@ sub decideoutput { $message = &mt('Submission won\'t be graded. The combined size of submitted files exceeded the amount allowed.'); $css_class=$possible_class{'not_charged_try'}; $button=1; + } elsif ($award eq 'INVALID_FILETYPE') { $message = &mt('Submission won\'t be graded. The type of file submitted is not allowed.'); $css_class=$possible_class{'not_charged_try'}; @@ -819,10 +847,6 @@ sub decideoutput { if ($target ne 'tex') {$message.=&Apache::loncommon::help_open_topic('Formula_Answers')}; $css_class=$possible_class{'not_charged_try'}; $button=1; - } elsif ($award eq 'INTERNAL_ERROR') { - $message = &mt("An internal error occurred while processing your answer. Please try again later."); - $css_class=$possible_class{'not_charged_try'}; - $button=1; } elsif ($award eq 'INCORRECT') { $message = &mt("Incorrect").'.'; $css_class=$possible_class{'charged_try'}; @@ -854,27 +878,14 @@ sub decideoutput { my (undef,undef,$domain,$user)=&Apache::lonnet::whichuser(); foreach my $resid(@Apache::inputtags::response){ if ($Apache::lonhomework::history{"resource.$part.$resid.handback"}) { - if ($target eq 'tex') { - $message.= "\\\\\n"; - } else { - $message.='
'; - } + $message.='
'; my @files = split(/\s*,\s*/, $Apache::lonhomework::history{"resource.$part.$resid.handback"}); my $file_msg; foreach my $file (@files) { - if ($target eq 'tex') { - $file_msg.= "\\\\\n".$file; - } else { - $file_msg.= '
'.$file.''; - } + $file_msg.= '
'.$file.''; } $message .= &mt('Returned file(s): [_1]',$file_msg); - if ($target eq 'tex') { - $message.= "\\\\\n"; - } else { - $message.='
'; - } } } @@ -1196,7 +1207,7 @@ sub get_grade_messages { $trystr = '\vskip 0 mm '; } } else { - $trystr = ''.$tries_text." $tries"; + $trystr = "".$tries_text." $tries"; if ($Apache::lonhomework::parsing_a_task) { } elsif($env{'request.state'} ne 'construct') { $trystr.="/$maxtries"; @@ -1205,7 +1216,7 @@ sub get_grade_messages { $trystr.="/".$Apache::inputtags::params{'maxtries'}; } } - $trystr.=""; + $trystr.=""; } } @@ -1372,4 +1383,10 @@ sub previous_tries { 1; __END__ + +=pod + +=back + +=cut