Diff for /loncom/homework/inputtags.pm between versions 1.236 and 1.248.2.2

version 1.236, 2008/01/14 14:32:14 version 1.248.2.2, 2008/12/10 22:54:12
Line 306  sub start_textline { Line 306  sub start_textline {
  $oldresponse = $oldresponse->[$#Apache::inputtags::inputlist];   $oldresponse = $oldresponse->[$#Apache::inputtags::inputlist];
     }      }
     $oldresponse = &HTML::Entities::encode($oldresponse,'<>&"');      $oldresponse = &HTML::Entities::encode($oldresponse,'<>&"');
               $oldresponse =~ s/^\s+//;
               $oldresponse =~ s/\s+$//;
               $oldresponse =~ s/\s+/ /g;
     if ($Apache::lonhomework::type ne 'exam') {      if ($Apache::lonhomework::type ne 'exam') {
  my $addchars=&Apache::lonxml::get_param('addchars',$parstack,$safeeval);   my $addchars=&Apache::lonxml::get_param('addchars',$parstack,$safeeval);
  $result='';   $result='';
Line 356  sub start_textline { Line 358  sub start_textline {
      && $Apache::lonhomework::type ne 'exam') {       && $Apache::lonhomework::type ne 'exam') {
  my $size = &Apache::lonxml::get_param('size',$parstack,$safeeval);   my $size = &Apache::lonxml::get_param('size',$parstack,$safeeval);
  if ($size != 0) {$size=$size*2; $size.=' mm';} else {$size='40 mm';}   if ($size != 0) {$size=$size*2; $size.=' mm';} else {$size='40 mm';}
  $result='\framebox['.$size.'][s]{\tiny\strut}';   if ($env{'form.pdfFormFields'} eq 'yes') {
               my $fieldname = $env{'request.symb'}.
                                    '&part_'. $Apache::inputtags::part.
                                    '&textresponse'.
                                    '&HWVAL_' . $Apache::inputtags::response['-1'];
               $result="\n\\\\\n".'\textField{'.$fieldname.'}{'.$size.'}{12 bp}';
           } else {
               $result='\framebox['.$size.'][s]{\tiny\strut}';
           }
     } elsif ($target eq 'tex'       } elsif ($target eq 'tex' 
      && $Apache::lonhomework::type eq 'exam'       && $Apache::lonhomework::type eq 'exam'
      && &needs_exam_box($tagstack)) {       && &needs_exam_box($tagstack)) {
Line 418  sub end_hiddenline { Line 427  sub end_hiddenline {
 # $part -> partid  # $part -> partid
 # $id -> responseid  # $id -> responseid
 # $uploadefiletypes -> comma seperated list of extensions allowed or * for any  # $uploadefiletypes -> comma seperated list of extensions allowed or * for any
 # $which -> 'uploadedonly'  -> only newly uploaded files  # $which -> 'uploadonly'  -> only newly uploaded files
 #           'portfolioonly' -> only allow files from portfolio  #           'portfolioonly' -> only allow files from portfolio
 #           'both' -> allow files from either location  #           'both' -> allow files from either location
 # $extratext -> additional text to go between the link and the input box  # $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 <tr>   # returns a table row <tr> 
 sub file_selector {  sub file_selector {
     my ($part,$id,$uploadedfiletypes,$which,$extratext)=@_;      my ($part,$id,$uploadedfiletypes,$which,$extratext,$maxfilesize)=@_;
     if (!$uploadedfiletypes) { return ''; }      if (!$uploadedfiletypes) { return ''; }
   
     my $jspart=$part;      my $jspart=$part;
Line 433  sub file_selector { Line 443  sub file_selector {
     my $result;      my $result;
           
     $result.='<tr><td>';      $result.='<tr><td>';
     if ($uploadedfiletypes ne '*') {      if (($uploadedfiletypes ne '*') || ($maxfilesize)) {
  $result.=          if ($uploadedfiletypes ne '*') {
     &mt('Allowed filetypes: <b>[_1]</b>',$uploadedfiletypes).'<br />';              $result.=
                   &mt('Allowed filetypes: [_1]','<b>'.$uploadedfiletypes.'</b>').'<br />';
           }
           if ($maxfilesize) {
               $result.=&mt('Combined size of files not to exceed: [_1] MB[_2].',
                            '<b>'.$maxfilesize.'</b>').'<br />';
           }
           $result .= '<br />';
     }      }
     if ($which eq 'uploadonly' || $which eq 'both') {       if ($which eq 'uploadonly' || $which eq 'both') { 
  $result.=&mt('Submit a file: (only one file can be uploaded)').   $result.=&mt('Submit a file: (only one file can be uploaded)').
Line 452  sub file_selector { Line 469  sub file_selector {
     '<input type="text" size="50" name="HWPORT'.$jspart.'_'.$id.'" value="" />'.      '<input type="text" size="50" name="HWPORT'.$jspart.'_'.$id.'" value="" />'.
     '<br />';      '<br />';
  $result .= &show_past_portfile_submission($part,$id);   $result .= &show_past_portfile_submission($part,$id);
   
     }      }
     $result.='</td></tr>';       $result.='</td></tr>'; 
     return $result;      return $result;
Line 514  sub valid_award { Line 530  sub valid_award {
        'UNIT_INVALID_STUDENT', 'UNIT_IRRECONCIBLE',         'UNIT_INVALID_STUDENT', 'UNIT_IRRECONCIBLE',
        'UNIT_FAIL', 'NO_UNIT',         'UNIT_FAIL', 'NO_UNIT',
        'UNIT_NOTNEEDED', 'WANTED_NUMERIC',         'UNIT_NOTNEEDED', 'WANTED_NUMERIC',
        'BAD_FORMULA', 'SIG_FAIL', 'INCORRECT',          'BAD_FORMULA', 'INTERNAL_ERROR', 'SIG_FAIL', 'INCORRECT', 
        'MISORDERED_RANK', 'INVALID_FILETYPE',         'MISORDERED_RANK', 'INVALID_FILETYPE',
        'DRAFT', 'SUBMITTED', 'ASSIGNED_SCORE',                                 'EXCESS_FILESIZE', 'DRAFT',
          'SUBMITTED', 'ASSIGNED_SCORE',
        'APPROX_ANS', 'EXACT_ANS','COMMA_FAIL') {         'APPROX_ANS', 'EXACT_ANS','COMMA_FAIL') {
  if ($award eq $possibleaward) { return 1; }   if ($award eq $possibleaward) { return 1; }
     }      }
Line 528  sub valid_award { Line 545  sub valid_award {
   'TOO_LONG',    'TOO_LONG',
   'UNIT_INVALID_INSTRUCTOR', 'UNIT_INVALID_STUDENT',    'UNIT_INVALID_INSTRUCTOR', 'UNIT_INVALID_STUDENT',
   'UNIT_IRRECONCIBLE', 'UNIT_FAIL', 'NO_UNIT',    'UNIT_IRRECONCIBLE', 'UNIT_FAIL', 'NO_UNIT',
   'UNIT_NOTNEEDED', 'WANTED_NUMERIC', 'BAD_FORMULA',    'UNIT_NOTNEEDED', 'WANTED_NUMERIC', 'BAD_FORMULA', 'INTERNAL_ERROR',
   'COMMA_FAIL', 'SIG_FAIL', 'INCORRECT', 'MISORDERED_RANK',    'COMMA_FAIL', 'SIG_FAIL', 'INCORRECT', 'MISORDERED_RANK',
   'INVALID_FILETYPE', 'DRAFT', 'SUBMITTED', 'ASSIGNED_SCORE',    'INVALID_FILETYPE', 'EXCESS_FILESIZE', 'DRAFT', 'SUBMITTED',
   'APPROX_ANS', 'EXACT_ANS');                    'ASSIGNED_SCORE', 'APPROX_ANS', 'EXACT_ANS');
     my $i=0;      my $i=0;
     my %fwd_awards = map { ($_,$i++) } @awards;      my %fwd_awards = map { ($_,$i++) } @awards;
     my $max=scalar(@awards);      my $max=scalar(@awards);
Line 576  sub finalizeawards { Line 593  sub finalizeawards {
     return ('NO_RESPONSE');      return ('NO_RESPONSE');
  }   }
     }      }
   
       if ($Apache::lonxml::internal_error) { $result='INTERNAL_ERROR'; }
   
     if (!$final_scantron && defined($result)) { return ($result); }      if (!$final_scantron && defined($result)) { return ($result); }
   
     # if in scantron mode, if the award for any response is       # if in scantron mode, if the award for any response is 
Line 672  sub decideoutput { Line 692  sub decideoutput {
  if (($symb ne '')    if (($symb ne '') 
     &&      &&
     ($env{'course.'.$env{'request.course.id'}.      ($env{'course.'.$env{'request.course.id'}.
       '.disable_receipt_display'} ne 'yes')) {         '.disable_receipt_display'} ne 'yes') &&
                       ($Apache::lonhomework::type ne 'practice')) { 
     $message.=(($target eq 'web')?'<br />':' ').      $message.=(($target eq 'web')?'<br />':' ').
  &mt('Your receipt is [_1]',   &mt('Your receipt is [_1]',
     (&Apache::lonnet::receipt($Apache::inputtags::part).      (&Apache::lonnet::receipt($Apache::inputtags::part).
Line 727  sub decideoutput { Line 748  sub decideoutput {
  $button = 1;   $button = 1;
     } elsif ($award eq 'MISSING_ANSWER') {      } elsif ($award eq 'MISSING_ANSWER') {
  $message = &mt('Some items were not submitted.');   $message = &mt('Some items were not submitted.');
           if ($target ne 'tex') {
              $message .= &Apache::loncommon::help_open_topic('Some_Items_Were_Not_Submitted');
           }
  $css_class=$possible_class{'not_charged_try'};   $css_class=$possible_class{'not_charged_try'};
  $button = 1;   $button = 1;
     } elsif ($award eq 'ERROR') {      } elsif ($award eq 'ERROR') {
  $message = &mt('An error occured while grading your answer.');   $message = &mt('An error occurred while grading your answer.');
  $css_class=$possible_class{'not_charged_try'};   $css_class=$possible_class{'not_charged_try'};
  $button = 1;   $button = 1;
     } elsif ($award eq 'TOO_LONG') {      } elsif ($award eq 'TOO_LONG') {
Line 742  sub decideoutput { Line 766  sub decideoutput {
  $css_class=$possible_class{'not_charged_try'};   $css_class=$possible_class{'not_charged_try'};
  $button=1;   $button=1;
     } elsif ($award eq 'MISORDERED_RANK') {      } elsif ($award eq 'MISORDERED_RANK') {
  $message = &mt('You have provided an invalid ranking');          $message = &mt('You have provided an invalid ranking.');
  if ($target ne 'tex') {          if ($target ne 'tex') {
     $message.=', '.&mt('please refer to').' '.&Apache::loncommon::help_open_topic('Ranking_Problems','help on ranking problems');              $message.=' '.&mt('Please refer to [_1]',&Apache::loncommon::help_open_topic('Ranking_Problems',&mt('help on ranking problems')));
  }          }
  $css_class=$possible_class{'not_charged_try'};   $css_class=$possible_class{'not_charged_try'};
  $button=1;   $button=1;
       } elsif ($award eq 'EXCESS_FILESIZE') {
           $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') {      } elsif ($award eq 'INVALID_FILETYPE') {
  $message = &mt('Submission won\'t be graded. The type of file submitted is not allowed.');   $message = &mt('Submission won\'t be graded. The type of file submitted is not allowed.');
  $css_class=$possible_class{'not_charged_try'};   $css_class=$possible_class{'not_charged_try'};
Line 787  sub decideoutput { Line 816  sub decideoutput {
  $css_class=$possible_class{'not_charged_try'};   $css_class=$possible_class{'not_charged_try'};
  $button=1;   $button=1;
     } elsif ($award eq 'BAD_FORMULA') {      } elsif ($award eq 'BAD_FORMULA') {
  $message = &mt("Unable to understand formula");   $message = &mt("Unable to understand formula").'.';
           if ($target ne 'tex') {$message.=&Apache::loncommon::help_open_topic('Formula_Answers')};
  $css_class=$possible_class{'not_charged_try'};   $css_class=$possible_class{'not_charged_try'};
  $button=1;   $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') {      } elsif ($award eq 'INCORRECT') {
  $message = &mt("Incorrect").'.';   $message = &mt("Incorrect").'.';
  $css_class=$possible_class{'charged_try'};   $css_class=$possible_class{'charged_try'};
Line 844  sub decideoutput { Line 878  sub decideoutput {
  $message.= $computer;   $message.= $computer;
  $added_computer_text=1;   $added_computer_text=1;
     }      }
       if ($Apache::lonhomework::type eq 'practice') {
          if ($target eq 'web') {
              $message .= '<br />';
          } else {
              $message .= ' ';      
          }
          $message.=&mt('Submissions to practice problems are not permanently recorded.');
       }
   
     return ($button,$css_class,$message,$previousmsg);      return ($button,$css_class,$message,$previousmsg);
 }  }
   
Line 1073  sub grade { Line 1116  sub grade {
     my ($match) =      my ($match) =
  &previous_match(\@Apache::inputtags::previous_version,   &previous_match(\@Apache::inputtags::previous_version,
  scalar(@Apache::inputtags::response));   scalar(@Apache::inputtags::response));
       
     if ($match) {      if ($match) {
  $previously_used = 'PREVIOUSLY_LAST';   $previously_used = 'PREVIOUSLY_LAST';
  foreach my $value (@Apache::inputtags::previous) {   foreach my $value (@Apache::inputtags::previous) {
Line 1251  sub previous_tries { Line 1294  sub previous_tries {
  && $Apache::lonhomework::history{"$prefix.solved"} =~/^correct/   && $Apache::lonhomework::history{"$prefix.solved"} =~/^correct/
  ) {   ) {
   
                   my $txt_correct = &mt('Correct');
  $message =~ s{(<td.*?>)(.*?)(</td>)}   $message =~ s{(<td.*?>)(.*?)(</td>)}
              {$1 <strong>Correct</strong>. $3}s;                               {$1 <strong>$txt_correct</strong>. $3}s;
     }      }
     my $trystr = "(Try ".              my $trystr = "(".&mt('Try [_1]',$Apache::lonhomework::history{"$prefix.tries"}).")";
  $Apache::lonhomework::history{"$prefix.tries"}.')';  
     $message =~ s{(</td>)}{ $trystr $1};      $message =~ s{(</td>)}{ $trystr $1};
  }   }
  my ($class) = ($message =~ m{<td.*class="([^"]*)"}); #"   my ($class) = ($message =~ m{<td.*class="([^"]*)"}); #"

Removed from v.1.236  
changed lines
  Added in v.1.248.2.2


FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>