Diff for /loncom/homework/inputtags.pm between versions 1.249 and 1.261

version 1.249, 2008/11/25 13:16:17 version 1.261, 2010/02/28 23:27:36
Line 388  sub start_textline { Line 388  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';}
  if ($env{'form.pdfFormFields'} eq 'yes') {   if ($env{'form.pdfFormFields'} eq 'yes'
               && $Apache::inputtags::status[-1] eq 'CAN_ANSWER') {
             my $fieldname = $env{'request.symb'}.              my $fieldname = $env{'request.symb'}.
                                  '&part_'. $Apache::inputtags::part.                                   '&part_'. $Apache::inputtags::part.
                                  '&textresponse'.                                   '&textresponse'.
                                  '&HWVAL_' . $Apache::inputtags::response['-1'];                                   '&HWVAL_' . $Apache::inputtags::response['-1'];
             $result="\n\\\\\n".'\textField{'.$fieldname.'}{'.$size.'}{12 bp}';              $result='\textField{'.$fieldname.'}{'.$size.'}{12 bp}';
         } else {          } else {
             $result='\framebox['.$size.'][s]{\tiny\strut}';              $result='\framebox['.$size.'][s]{\tiny\strut}';
         }          }
Line 461  sub end_hiddenline { Line 462  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> 
   
 =cut  =cut
   
 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 479  sub file_selector { Line 481  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 498  sub file_selector { Line 507  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 516  sub show_past_file_submission { Line 524  sub show_past_file_submission {
     my $icon=&Apache::loncommon::icon($url);      my $icon=&Apache::loncommon::icon($url);
     my $curfile='<a href="'.$url.'"><img src="'.$icon.      my $curfile='<a href="'.$url.'"><img src="'.$icon.
  '" border="0" />'.$uploadedfile.'</a>';   '" border="0" />'.$uploadedfile.'</a>';
     return &mt('Currently submitted: <tt>[_1]</tt>',$curfile);      return &mt('Currently submitted: [_1]','<tt>'.$curfile.'</tt>');
   
 }  }
   
Line 546  sub show_past_portfile_submission { Line 554  sub show_past_portfile_submission {
  my $bad_files = '<span class="LC_filename">'.   my $bad_files = '<span class="LC_filename">'.
     join('</span>, <span class="LC_filename">',@bad_file_list).      join('</span>, <span class="LC_filename">',@bad_file_list).
     '</span>';      '</span>';
  $result.='<br />'.&mt('<span class="LC_error">These file(s) don\'t exist:</span> [_1]',$bad_files);   $result.='<p><span class="LC_error">'
                   .&mt("These file(s) don't exist: [_1]",$bad_files)
                   .'</span></p>';
     }      }
     return $result;      return $result;
   
Line 560  sub valid_award { Line 570  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',
                                'EXCESS_FILESIZE', 'DRAFT',                                 'EXCESS_FILESIZE', 'DRAFT',
        'SUBMITTED', 'ASSIGNED_SCORE',         'SUBMITTED', 'SUBMITTED_CREDIT', 
        'APPROX_ANS', 'EXACT_ANS','COMMA_FAIL') {                                 'ANONYMOUS', 'ANONYMOUS_CREDIT',
                                  'ASSIGNED_SCORE', 'APPROX_ANS',
          'EXACT_ANS','COMMA_FAIL') {
  if ($award eq $possibleaward) { return 1; }   if ($award eq $possibleaward) { return 1; }
     }      }
     return 0;      return 0;
Line 575  sub valid_award { Line 587  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', 'EXCESS_FILESIZE', 'DRAFT', 'SUBMITTED',    'INVALID_FILETYPE', 'EXCESS_FILESIZE', 'DRAFT', 'SUBMITTED',
                     'SUBMITTED_CREDIT', 'ANONYMOUS', 'ANONYMOUS_CREDIT',
                   'ASSIGNED_SCORE', '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;
Line 601  sub hide_award { Line 614  sub hide_award {
  return 1;   return 1;
     }      }
     if ($award =~      if ($award =~
  /^(?:EXACT_ANS|APPROX_ANS|SUBMITTED|ASSIGNED_SCORE|INCORRECT)/) {   /^(?:EXACT_ANS|APPROX_ANS|SUBMITTED|SUBMITTED_CREDIT|ANONYMOUS|ANONYMOUS_CREDIT|ASSIGNED_SCORE|INCORRECT)/) {
  return 1;   return 1;
     }      }
     return 0;      return 0;
Line 623  sub finalizeawards { Line 636  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 669  sub finalizeawards { Line 685  sub finalizeawards {
   
 sub decideoutput {  sub decideoutput {
     my ($award,$awarded,$awardmsg,$solved,$previous,$target)=@_;      my ($award,$awarded,$awardmsg,$solved,$previous,$target)=@_;
   
     my $message='';      my $message='';
     my $button=0;      my $button=0;
     my $previousmsg;      my $previousmsg;
Line 722  sub decideoutput { Line 739  sub decideoutput {
       '.disable_receipt_display'} ne 'yes') &&        '.disable_receipt_display'} ne 'yes') &&
                     ($Apache::lonhomework::type ne 'practice')) {                       ($Apache::lonhomework::type ne 'practice')) { 
     $message.=(($target eq 'web')?'<br />':' ').      $message.=(($target eq 'web')?'<br />':' ').
  &mt('Your receipt is [_1]',   &mt('Your receipt no. is [_1]',
     (&Apache::lonnet::receipt($Apache::inputtags::part).      (&Apache::lonnet::receipt($Apache::inputtags::part).
      (($target eq 'web')?&Apache::loncommon::help_open_topic('Receipt'):'')));       (($target eq 'web')?&Apache::loncommon::help_open_topic('Receipt'):'')));
  }   }
Line 803  sub decideoutput { Line 820  sub decideoutput {
         $message = &mt('Submission won\'t be graded. The combined size of submitted files exceeded the amount allowed.');          $message = &mt('Submission won\'t be graded. The combined size of submitted files exceeded the amount allowed.');
         $css_class=$possible_class{'not_charged_try'};          $css_class=$possible_class{'not_charged_try'};
         $button=1;          $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'};
  $button=1;   $button=1;
     } elsif ($award eq 'SIG_FAIL') {      } elsif ($award eq 'SIG_FAIL') {
  my ($used,$min,$max)=split(':',$awardmsg);   my ($used,$min,$max)=split(':',$awardmsg);
  my $word = ($used < $min) ? 'more' : 'fewer';   my $word = ($used < $min) ? 'more' : 'fewer';
  $message = &mt("Submission not graded.  Use $word digits.",$used);   $message = &mt("Submission not graded. Use $word digits.",$used);
  $css_class=$possible_class{'not_charged_try'};   $css_class=$possible_class{'not_charged_try'};
  $button=1;   $button=1;
     } elsif ($award eq 'UNIT_INVALID_INSTRUCTOR') {      } elsif ($award eq 'UNIT_INVALID_INSTRUCTOR') {
Line 847  sub decideoutput { Line 863  sub decideoutput {
         if ($target ne 'tex') {$message.=&Apache::loncommon::help_open_topic('Formula_Answers')};          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 855  sub decideoutput { Line 875  sub decideoutput {
  $message = &mt("Your submission has been recorded.");   $message = &mt("Your submission has been recorded.");
  $css_class=$possible_class{'no_grade'};   $css_class=$possible_class{'no_grade'};
  $button=1;   $button=1;
       } elsif ($award eq 'SUBMITTED_CREDIT') {
           $message = &mt("Your submission has been recorded, and credit awarded.");
           $css_class=$possible_class{'correct'};
           $button=1;
       } elsif ($award eq 'ANONYMOUS') {
           $message = &mt("Your anonymous submission has been recorded.");
           $css_class=$possible_class{'no_grade'};
           $button=1;
       } elsif ($award eq 'ANONYMOUS_CREDIT') {
           $message = &mt("Your anonymous submission has been recorded, and credit awarded.");
           $css_class=$possible_class{'correct'};
     } elsif ($award eq 'DRAFT') {      } elsif ($award eq 'DRAFT') {
  $message = &mt("A draft copy has been saved.");   $message = &mt("Copy saved but not submitted.");
  $css_class=$possible_class{'not_charged_try'};   $css_class=$possible_class{'not_charged_try'};
  $button=1;   $button=1;
     } elsif ($award eq 'ASSIGNED_SCORE') {      } elsif ($award eq 'ASSIGNED_SCORE') {
Line 878  sub decideoutput { Line 909  sub decideoutput {
     my (undef,undef,$domain,$user)=&Apache::lonnet::whichuser();      my (undef,undef,$domain,$user)=&Apache::lonnet::whichuser();
     foreach my $resid(@Apache::inputtags::response){      foreach my $resid(@Apache::inputtags::response){
         if ($Apache::lonhomework::history{"resource.$part.$resid.handback"}) {          if ($Apache::lonhomework::history{"resource.$part.$resid.handback"}) {
     $message.='<br />';              if ($target eq 'tex') {
                   $message.= "\\\\\n";
               } else {
                   $message.='<br />';
               }
     my @files = split(/\s*,\s*/,      my @files = split(/\s*,\s*/,
       $Apache::lonhomework::history{"resource.$part.$resid.handback"});        $Apache::lonhomework::history{"resource.$part.$resid.handback"});
     my $file_msg;      my $file_msg;
     foreach my $file (@files) {      foreach my $file (@files) {
  $file_msg.= '<br /><a href="/uploaded/'."$domain/$user".'/'.$file.'">'.$file.'</a>';                  if ($target eq 'tex') {
                       $file_msg.= "\\\\\n".$file;
                   } else {
                       $file_msg.= '<br /><a href="/uploaded/'."$domain/$user".'/'.$file.'">'.$file.'</a>';
                   }
     }      }
     $message .= &mt('Returned file(s): [_1]',$file_msg);      $message .= &mt('Returned file(s): [_1]',$file_msg);
               if ($target eq 'tex') {
                   $message.= "\\\\\n";
               } else {
                   $message.='<br />';
               }
  }   }
     }      }
   
Line 1005  sub setgradedata { Line 1049  sub setgradedata {
     $Apache::lonhomework::results{"resource.$id.solved"} =      $Apache::lonhomework::results{"resource.$id.solved"} =
  $solvemsg;   $solvemsg;
     $Apache::lonhomework::results{"resource.$id.awarded"} = '1';      $Apache::lonhomework::results{"resource.$id.awarded"} = '1';
           } elsif ( $award eq 'SUBMITTED_CREDIT' ) {
               $Apache::lonhomework::results{"resource.$id.tries"} =
                   $Apache::lonhomework::history{"resource.$id.tries"} + 1;
               $Apache::lonhomework::results{"resource.$id.solved"} =
                   'credit_attempted';
               $Apache::lonhomework::results{"resource.$id.awarded"} = '1';
           }  elsif ( $award eq 'ANONYMOUS_CREDIT' ) {
               $Apache::lonhomework::results{"resource.$id.tries"} =
                   $Apache::lonhomework::history{"resource.$id.tries"} + 1;
               $Apache::lonhomework::results{"resource.$id.solved"} =
                   'credit_attempted';
               $Apache::lonhomework::results{"resource.$id.awarded"} = '1';
  } elsif ( $award eq 'INCORRECT' ) {   } elsif ( $award eq 'INCORRECT' ) {
     $Apache::lonhomework::results{"resource.$id.tries"} =      $Apache::lonhomework::results{"resource.$id.tries"} =
  $Apache::lonhomework::history{"resource.$id.tries"} + 1;   $Apache::lonhomework::history{"resource.$id.tries"} + 1;
Line 1019  sub setgradedata { Line 1075  sub setgradedata {
  $Apache::lonhomework::history{"resource.$id.tries"} + 1;   $Apache::lonhomework::history{"resource.$id.tries"} + 1;
     $Apache::lonhomework::results{"resource.$id.solved"} =      $Apache::lonhomework::results{"resource.$id.solved"} =
  'ungraded_attempted';   'ungraded_attempted';
           }  elsif ( $award eq 'ANONYMOUS' ) {
               $Apache::lonhomework::results{"resource.$id.tries"} =
                   $Apache::lonhomework::history{"resource.$id.tries"} + 1;
               $Apache::lonhomework::results{"resource.$id.solved"} =
                   'ungraded_attempted';
  } elsif ( $award eq 'DRAFT' ) {   } elsif ( $award eq 'DRAFT' ) {
     $Apache::lonhomework::results{"resource.$id.solved"} = '';      $Apache::lonhomework::results{"resource.$id.solved"} = '';
  } elsif ( $award eq 'NO_RESPONSE' ) {   } elsif ( $award eq 'NO_RESPONSE' ) {
Line 1078  sub setgradedata { Line 1139  sub setgradedata {
     if ($award eq 'SUBMITTED') {      if ($award eq 'SUBMITTED') {
  &Apache::response::add_to_gradingqueue();   &Apache::response::add_to_gradingqueue();
     }      }
       if (($Apache::lonhomework::type eq 'anonsurvey') ||
           ($Apache::lonhomework::type eq 'anonsurveycred')) {
           $Apache::lonhomework::results{"resource.$id.type"} = $Apache::lonhomework::type;
       }
 }  }
   
 sub find_which_previous {  sub find_which_previous {
Line 1192  sub get_grade_messages { Line 1257  sub get_grade_messages {
     if ( $maxtries eq 'con_lost' ) { $maxtries = '0'; }       if ( $maxtries eq 'con_lost' ) { $maxtries = '0'; } 
     my $tries_text=&mt('Tries');      my $tries_text=&mt('Tries');
     if ( $Apache::lonhomework::type eq 'survey' ||      if ( $Apache::lonhomework::type eq 'survey' ||
            $Apache::lonhomework::type eq 'surveycred' ||
            $Apache::lonhomework::type eq 'anonsurvey' ||
            $Apache::lonhomework::type eq 'anonsurveycred' ||
  $Apache::lonhomework::parsing_a_task) {   $Apache::lonhomework::parsing_a_task) {
  $tries_text=&mt('Submissions');   $tries_text=&mt('Submissions');
     }      }
Line 1207  sub get_grade_messages { Line 1275  sub get_grade_messages {
  $trystr = '\vskip 0 mm ';   $trystr = '\vskip 0 mm ';
     }      }
  } else {   } else {
     $trystr = "<td><nobr>".$tries_text." $tries";      $trystr = '<td><span class="LC_nobreak">'.$tries_text." $tries";
     if ($Apache::lonhomework::parsing_a_task) {      if ($Apache::lonhomework::parsing_a_task) {
     } elsif($env{'request.state'} ne 'construct') {      } elsif($env{'request.state'} ne 'construct') {
  $trystr.="/$maxtries";   $trystr.="/$maxtries";
Line 1216  sub get_grade_messages { Line 1284  sub get_grade_messages {
     $trystr.="/".$Apache::inputtags::params{'maxtries'};      $trystr.="/".$Apache::inputtags::params{'maxtries'};
  }   }
     }      }
     $trystr.="</nobr></td>";      $trystr.="</span></td>";
  }   }
     }      }
   
Line 1259  sub gradestatus { Line 1327  sub gradestatus {
  if ( $showbutton ) {    if ( $showbutton ) { 
     if ($target ne 'tex') {      if ($target ne 'tex') {
  $button =    $button = 
     '<input               '<input onmouseup="javascript:setSubmittedPart(\''.$id.'\')"
                           onmouseup="javascript:setSubmittedPart(\''.$id.'\')"                      type="submit" name="submit_'.$id.'"
                            onsubmit="javascript:setSubmittedPart(\''.$id.'\')"                      value="'.&mt('Submit Answer').'" />';
                         type="submit" name="submit_'.$id.'"  
                          value="'.&mt('Submit Answer').'" />';  
     }      }
  }   }
   

Removed from v.1.249  
changed lines
  Added in v.1.261


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