Diff for /loncom/homework/inputtags.pm between versions 1.160 and 1.182

version 1.160, 2005/03/31 21:24:29 version 1.182, 2005/11/16 23:17:39
Line 30  use HTML::Entities(); Line 30  use HTML::Entities();
 use strict;  use strict;
 use Apache::loncommon;  use Apache::loncommon;
 use Apache::lonlocal;  use Apache::lonlocal;
   use Apache::lonnet;
   
 BEGIN {  BEGIN {
     &Apache::lonxml::register('Apache::inputtags',('hiddenline','textfield','textline'));      &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 
   #                                       <problem>)
   #                                     0 if not in a part.
   #  @Apache::inputtags::partlist     - List of part ids seen in the current
   #                                       <problem>
   #  @Apache::inputtags::status       - List of problem  statuses. First 
   #                                     element is the status of the <problem>
   #                                     the remainder are for individual <part>s.
   #  %Apache::inputtags::params       - Hash of defined parameters for the
   #                                     current response.
   #  @Apache::inputtags::import       - List of all ids for <import> 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 <part>
   #  %Apache::inputtags::answertxt    - <*response> tags store correct
   #                                     answer strings for display by <textline/>
   #                                     in this hash.
   
 sub initialize_inputtags {  sub initialize_inputtags {
     # list of current input ids  
     @Apache::inputtags::input=();      @Apache::inputtags::input=();
     # list of all input ids seen in this problem  
     @Apache::inputtags::inputlist=();      @Apache::inputtags::inputlist=();
     # list of all current response ids  
     @Apache::inputtags::response=();      @Apache::inputtags::response=();
     # list of all response ids seen in this problem  
     @Apache::inputtags::responselist=();      @Apache::inputtags::responselist=();
     # list of whether or not a specific response was previously used      @Apache::inputtags::hint=();
       @Apache::inputtags::hintlist=();
     @Apache::inputtags::previous=();      @Apache::inputtags::previous=();
     # submission it was used in  
     @Apache::inputtags::previous_version=();      @Apache::inputtags::previous_version=();
     # id of current part, 0 means that no part is current   
     # (inside <problem> only  
     $Apache::inputtags::part='';      $Apache::inputtags::part='';
     # list of all part ids seen  
     @Apache::inputtags::partlist=();      @Apache::inputtags::partlist=();
     # list of problem date statuses, the first element is for <problem>  
     # if there is a second element it is for the current <part>  
     @Apache::inputtags::status=();      @Apache::inputtags::status=();
     # hash of defined params for the current response  
     %Apache::inputtags::params=();      %Apache::inputtags::params=();
     # list of all ids, for <import>, these get join()ed and prepended  
     @Apache::inputtags::import=();      @Apache::inputtags::import=();
     # list of all import ids seen  
     @Apache::inputtags::importlist=();      @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;      $Apache::inputtags::response_with_no_part=0;
     # storage location so the begin <*response> tag can generate the correct  
     # answer string for display by the <textline />  
     %Apache::inputtags::answertxt=();      %Apache::inputtags::answertxt=();
 }  }
   
Line 74  sub check_for_duplicate_ids { Line 91  sub check_for_duplicate_ids {
     my %check;      my %check;
     foreach my $id (@Apache::inputtags::partlist,      foreach my $id (@Apache::inputtags::partlist,
     @Apache::inputtags::responselist,      @Apache::inputtags::responselist,
       @Apache::inputtags::hintlist,
     @Apache::inputtags::importlist) {      @Apache::inputtags::importlist) {
  $check{$id}++;   $check{$id}++;
     }      }
Line 148  sub start_textfield { Line 166  sub start_textfield {
  }   }
     } elsif ($target eq 'grade') {      } elsif ($target eq 'grade') {
  my $seedtext=&Apache::lonxml::get_all_text("/textfield",$parser);   my $seedtext=&Apache::lonxml::get_all_text("/textfield",$parser);
  if ($seedtext eq $ENV{'form.HWVAL_'.$resid}) {   if ($seedtext eq $env{'form.HWVAL_'.$resid}) {
     # if the seed text is still there it wasn't a real submission      # if the seed text is still there it wasn't a real submission
     $ENV{'form.HWVAL_'.$resid}='';      $env{'form.HWVAL_'.$resid}='';
  }   }
     } elsif ($target eq 'edit') {      } elsif ($target eq 'edit') {
  $result.=&Apache::edit::tag_start($target,$token);   $result.=&Apache::edit::tag_start($target,$token);
Line 234  sub start_textline { Line 252  sub start_textline {
     }      }
  } else {   } else {
     #right or wrong don't show what was last typed in.      #right or wrong don't show what was last typed in.
     $result='<i>'.$Apache::inputtags::answertxt{$id}.'</i>';      $result='<b>'.$Apache::inputtags::answertxt{$id}.'</b>';
     #$result='';      #$result='';
  }   }
     } elsif ($target eq 'edit') {      } elsif ($target eq 'edit') {
Line 300  sub end_hiddenline { Line 318  sub end_hiddenline {
 # $which -> 'uploadedonly'  -> only newly uploaded files  # $which -> 'uploadedonly'  -> 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
 # returns a table row <tr>   # returns a table row <tr> 
 sub file_selector {  sub file_selector {
     my ($part,$id,$uploadedfiletypes,$which)=@_;      my ($part,$id,$uploadedfiletypes,$which,$extratext)=@_;
     if (!$uploadedfiletypes) { return ''; }      if (!$uploadedfiletypes) { return ''; }
   
       my $jspart=$part;
       $jspart=~s/\./_/g;
   
     my $result;      my $result;
           
     $result.='<tr><td>'.      $result.='<tr><td>';
  &mt('Allowed filetypes: <b>[_1]</b>',$uploadedfiletypes).'<br />';      if ($uploadedfiletypes ne '*') {
    $result.=
       &mt('Allowed filetypes: <b>[_1]</b>',$uploadedfiletypes).'<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)').
     ' <br /><input type="file" size="50" name="HWFILE'.      ' <br /><input type="file" size="50" name="HWFILE'.
     $part.'_'.$id.'" /><br />';      $jspart.'_'.$id.'" /><br />';
  my $uploadedfile= &HTML::Entities::encode($Apache::lonhomework::history{"resource.$part.$id.uploadedfile"},'<>&"');   my $uploadedfile= &HTML::Entities::encode($Apache::lonhomework::history{"resource.$part.$id.uploadedfile"},'<>&"');
   
  if ($uploadedfile) {   if ($uploadedfile) {
     my $url=$Apache::lonhomework::history{"resource.$part.$id.uploadedurl"};      my $url=$Apache::lonhomework::history{"resource.$part.$id.uploadedurl"};
     push (@Apache::lonxml::extlinks,$url);      &Apache::lonxml::extlink($url);
     &Apache::lonnet::allowuploaded('/adm/essayresponse',$url);      &Apache::lonnet::allowuploaded('/adm/essayresponse',$url);
     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.
Line 330  sub file_selector { Line 356  sub file_selector {
  $result.='<br />'.'<strong>'.&mt('OR:').'</strong><br />';   $result.='<br />'.'<strong>'.&mt('OR:').'</strong><br />';
     }      }
     if ($which eq 'portfolioonly' || $which eq 'both') {       if ($which eq 'portfolioonly' || $which eq 'both') { 
  $result.='<a href='."'".'javascript:void(window.open("/adm/portfolio?mode=selectfile&amp;fieldname=HWPORT'.$part.'_'.$id.'","cat","height=600,width=800,scrollbars=1,resizable=1,menubar=2,location=1"))'."'".'>'.   $result.=$extratext.'<a href='."'".'javascript:void(window.open("/adm/portfolio?mode=selectfile&amp;fieldname=HWPORT'.$jspart.'_'.$id.'","cat","height=600,width=800,scrollbars=1,resizable=1,menubar=2,location=1"))'."'".'>'.
     &mt('Select Portfolio Files').'</a><br />'.      &mt('Select Portfolio Files').'</a><br />'.
     '<input type="text" size="50" name="HWPORT'.$part.'_'.$id.'" value="" />'.      '<input type="text" size="50" name="HWPORT'.$jspart.'_'.$id.'" value="" />'.
     '<br />';      '<br />';
  if ($Apache::lonhomework::history{"resource.$part.$id.portfiles"}=~/[^\s]/){   if ($Apache::lonhomework::history{"resource.$part.$id.portfiles"}=~/[^\s]/){
     my $filelist;      my @filelist;
     foreach my $file (split(',',&Apache::lonnet::unescape($Apache::lonhomework::history{"resource.$part.$id.portfiles"}))) {      foreach my $file (split(',',&Apache::lonnet::unescape($Apache::lonhomework::history{"resource.$part.$id.portfiles"}))) {
  my (undef,undef,$domain,$user)=&Apache::lonxml::whichuser();   my (undef,undef,$domain,$user)=&Apache::lonxml::whichuser();
  my $url="/uploaded/$domain/$user/portfolio$file";   my $url="/uploaded/$domain/$user/portfolio$file";
  my $icon=&Apache::loncommon::icon($url);   my $icon=&Apache::loncommon::icon($url);
  $filelist.='<a href="'.$url.'"><img src="'.$icon.   push(@filelist,'<a href="'.$url.'"><img src="'.$icon.
     '" border="0" />'.$file.'</a>';       '" border="0" />'.$file.'</a>');
     }      }
     $result.=&mt("Portfolio files previously selected: <strong>[_1]</strong>",$filelist);      $result.=&mt("Portfolio files previously selected: <strong>[_1]</strong>",join(', ',@filelist));
  }   }
     }      }
     $result.='</td></tr>';       $result.='</td></tr>'; 
Line 360  sub checkstatus { Line 386  sub checkstatus {
     return(undef,undef);      return(undef,undef);
 }  }
   
   sub valid_award {
       my ($award) =@_;
       foreach my $possibleaward ('EXTRA_ANSWER','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 {  sub finalizeawards {
     my ($awardref,$msgref)=@_;      my ($awardref,$msgref,$nameref,$reverse)=@_;
     my $result=undef;      my $result=undef;
     my $award;      my $award;
     my $msg;      my $msg;
Line 377  sub finalizeawards { Line 420  sub finalizeawards {
  if ($blankcount == ($#$awardref + 1)) { $result = 'NO_RESPONSE'; }   if ($blankcount == ($#$awardref + 1)) { $result = 'NO_RESPONSE'; }
     }      }
     if (defined($result)) { return ($result,$msg); }      if (defined($result)) { return ($result,$msg); }
     foreach my $possibleaward ('MISSING_ANSWER', 'ERROR', 'NO_RESPONSE',  
        'TOO_LONG', 'UNIT_INVALID_INSTRUCTOR',      # these awards are ordered from most important error through best correct
        'UNIT_INVALID_STUDENT', 'UNIT_IRRECONCIBLE',      
        'UNIT_FAIL', 'NO_UNIT',      my @awards = ('EXTRA_ANSWER', 'MISSING_ANSWER', 'ERROR', 'NO_RESPONSE',
        'UNIT_NOTNEEDED', 'WANTED_NUMERIC',    'TOO_LONG',
        'BAD_FORMULA', 'SIG_FAIL', 'INCORRECT',     'UNIT_INVALID_INSTRUCTOR', 'UNIT_INVALID_STUDENT',
        'MISORDERED_RANK', 'INVALID_FILETYPE',    'UNIT_IRRECONCIBLE', 'UNIT_FAIL', 'NO_UNIT',
        'DRAFT', 'SUBMITTED', 'ASSIGNED_SCORE',    'UNIT_NOTNEEDED', 'WANTED_NUMERIC', 'BAD_FORMULA',
        'APPROX_ANS', 'EXACT_ANS','COMMA_FAIL') {    'COMMA_FAIL', 'SIG_FAIL', 'INCORRECT', 'MISORDERED_RANK',
     'INVALID_FILETYPE', 'DRAFT', 'SUBMITTED', 'ASSIGNED_SCORE',
     'APPROX_ANS', 'EXACT_ANS');
       if ($reverse) { @awards=reverse(@awards); }
       foreach my $possibleaward (@awards) {
  ($result,$msg)=&checkstatus($possibleaward,$awardref,$msgref);   ($result,$msg)=&checkstatus($possibleaward,$awardref,$msgref);
  if (defined($result)) { return ($result,$msg); }   if (defined($result)) { return ($result,$msg); }
     }      }
Line 393  sub finalizeawards { Line 440  sub finalizeawards {
 }  }
   
 sub decideoutput {  sub decideoutput {
     my ($award,$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 405  sub decideoutput { Line 452  sub decideoutput {
   'not_charged_try' => '#ffffaa',    'not_charged_try' => '#ffffaa',
   'no_message' => '#fffff',    'no_message' => '#fffff',
   );    );
   
       my $part = $Apache::inputtags::part;
       my $handgrade = 
    ('yes' eq lc(&Apache::lonnet::EXT("resource.$part.handgrade")));
       
       my $computer = ($handgrade)? ''
                          : " ".&mt("Computer's answer now shown above.");
       &Apache::lonxml::debug("handgrade has :$handgrade:");
   
     if ($previous) { $previousmsg=&mt('You have entered that answer before'); }      if ($previous) { $previousmsg=&mt('You have entered that answer before'); }
           
     if      ($solved =~ /^correct/) {      if      ($solved =~ /^correct/) {
  if ($award eq 'ASSIGNED_SCORE') {   $bgcolor=$possiblecolors{'correct'};
    $message=&mt('You are correct.');
    if ($awarded < 1 && $awarded > 0) {
       $message=&mt('You are partially correct.');
       $bgcolor=$possiblecolors{'not_charged_try'};
    } elsif ($awarded < 1) {
       $message=&mt('Incorrect.');
       $bgcolor=$possiblecolors{'charged_try'};
    }
    if ($env{'request.filename'} =~ 
       m|/res/lib/templates/examupload.problem$|) {
     $message = &mt("A score has been assigned.");      $message = &mt("A score has been assigned.");
       $added_computer_text=1;
  } else {   } else {
     if ($target eq 'tex') {      if ($target eq 'tex') {
  $message = '\textbf{'.&mt('You are correct.').'}';   $message = '\textbf{'.$message.'}';
     } else {      } else {
  $message = "<b>".&mt('You are correct.')."</b>";   $message = "<b>".$message."</b>";
  $message.=" ".&mt("Computer's answer now shown above.");   $message.= $computer;
     }      }
     $added_computer_text=1;      $added_computer_text=1;
     unless ($ENV{'course.'.      unless ($env{'course.'.
      $ENV{'request.course.id'}.       $env{'request.course.id'}.
      '.disable_receipt_display'} eq 'yes') {        '.disable_receipt_display'} eq 'yes') { 
  $message.=(($target eq 'web')?'<br />':' ').   $message.=(($target eq 'web')?'<br />':' ').
     &mt('Your receipt is').' '.&Apache::lonnet::receipt($Apache::inputtags::part).      &mt('Your receipt is').' '.&Apache::lonnet::receipt($Apache::inputtags::part).
     (($target eq 'web')?&Apache::loncommon::help_open_topic('Receipt'):'');      (($target eq 'web')?&Apache::loncommon::help_open_topic('Receipt'):'');
     }      }
  }   }
  $bgcolor=$possiblecolors{'correct'};  
  $button=0;   $button=0;
  $previousmsg='';   $previousmsg='';
     } elsif ($solved =~ /^excused/) {      } elsif ($solved =~ /^excused/) {
Line 448  sub decideoutput { Line 514  sub decideoutput {
  $message = '\textbf{'.&mt('You are correct.').'}';   $message = '\textbf{'.&mt('You are correct.').'}';
     } else {      } else {
  $message = "<b>".&mt('You are correct.')."</b>";   $message = "<b>".&mt('You are correct.')."</b>";
  $message.=" ".&mt("Computer's answer now shown above.");   $message.= $computer;
     }      }
     $added_computer_text=1;      $added_computer_text=1;
     unless ($ENV{'course.'.      unless ($env{'course.'.
      $ENV{'request.course.id'}.       $env{'request.course.id'}.
      '.disable_receipt_display'} eq 'yes') {        '.disable_receipt_display'} eq 'yes') { 
  $message.=(($target eq 'web')?'<br />':' ').   $message.=(($target eq 'web')?'<br />':' ').
     'Your receipt is '.&Apache::lonnet::receipt($Apache::inputtags::part).      'Your receipt is '.&Apache::lonnet::receipt($Apache::inputtags::part).
Line 466  sub decideoutput { Line 532  sub decideoutput {
  $message = '';   $message = '';
  $bgcolor=$possiblecolors{'no_feedback'};   $bgcolor=$possiblecolors{'no_feedback'};
  $button=1;   $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') {      } elsif ($award eq 'MISSING_ANSWER') {
  $message = &mt('Some items were not submitted.');   $message = &mt('Some items were not submitted.');
  $bgcolor=$possiblecolors{'not_charged_try'};   $bgcolor=$possiblecolors{'not_charged_try'};
Line 490  sub decideoutput { Line 560  sub decideoutput {
  $bgcolor=$possiblecolors{'not_charged_try'};   $bgcolor=$possiblecolors{'not_charged_try'};
  $button=1;   $button=1;
     } elsif ($award eq 'INVALID_FILETYPE') {      } elsif ($award eq 'INVALID_FILETYPE') {
  $message = &mt('The filetype extension of the file you uploaded is not allowed.');   $message = &mt('Submission won\'t be graded. The type of file submitted is not allowed.');
  $bgcolor=$possiblecolors{'not_charged_try'};   $bgcolor=$possiblecolors{'not_charged_try'};
  $button=1;   $button=1;
     } elsif ($award eq 'SIG_FAIL') {      } elsif ($award eq 'SIG_FAIL') {
Line 564  sub decideoutput { Line 634  sub decideoutput {
     }      }
     if ($Apache::inputtags::status[-1] eq 'SHOW_ANSWER' &&       if ($Apache::inputtags::status[-1] eq 'SHOW_ANSWER' && 
  !$added_computer_text && $target ne 'tex') {   !$added_computer_text && $target ne 'tex') {
  $message.=" ".&mt("Computer's answer now shown above.");   $message.= $computer;
  $added_computer_text=1;   $added_computer_text=1;
     }      }
     return ($button,$bgcolor,$message,$previousmsg);      return ($button,$bgcolor,$message,$previousmsg);
Line 606  sub hidealldata { Line 676  sub hidealldata {
 sub setgradedata {  sub setgradedata {
     my ($award,$msg,$id,$previously_used) = @_;      my ($award,$msg,$id,$previously_used) = @_;
     if ($Apache::lonhomework::scantronmode &&       if ($Apache::lonhomework::scantronmode && 
  &Apache::lonnet::validCODE($ENV{'form.CODE'})) {   &Apache::lonnet::validCODE($env{'form.CODE'})) {
  $Apache::lonhomework::results{"resource.CODE"}=$ENV{'form.CODE'};   $Apache::lonhomework::results{"resource.CODE"}=$env{'form.CODE'};
     } elsif ($Apache::lonhomework::scantronmode &&       } elsif ($Apache::lonhomework::scantronmode && 
      $ENV{'form.CODE'} eq '' &&       $env{'form.CODE'} eq '' &&
      $Apache::lonhomework::history{"resource.CODE"} ne '') {       $Apache::lonhomework::history{"resource.CODE"} ne '') {
  $Apache::lonhomework::results{"resource.CODE"}='';   $Apache::lonhomework::results{"resource.CODE"}='';
     }      }
Line 726  sub grade { Line 796  sub grade {
     my ($target) = @_;      my ($target) = @_;
     my $id = $Apache::inputtags::part;      my $id = $Apache::inputtags::part;
     my $response='';      my $response='';
     if ( defined $ENV{'form.submitted'}) {      if ( defined $env{'form.submitted'}) {
  my (@awards,@msgs);   my (@awards,@msgs);
  foreach $response (@Apache::inputtags::response) {   foreach $response (@Apache::inputtags::response) {
     &Apache::lonxml::debug("looking for response.$id.$response.awarddetail");      &Apache::lonxml::debug("looking for response.$id.$response.awarddetail");
Line 779  sub gradestatus { Line 849  sub gradestatus {
     if ( $status ne 'CLOSED' && $status ne 'UNAVAILABLE' &&      if ( $status ne 'CLOSED' && $status ne 'UNAVAILABLE' &&
  $status ne 'INVALID_ACCESS') {     $status ne 'INVALID_ACCESS') {  
  my $award = $Apache::lonhomework::history{"resource.$id.award"};   my $award = $Apache::lonhomework::history{"resource.$id.award"};
    my $awarded = $Apache::lonhomework::history{"resource.$id.awarded"};
  my $solved = $Apache::lonhomework::history{"resource.$id.solved"};   my $solved = $Apache::lonhomework::history{"resource.$id.solved"};
  my $previous = $Apache::lonhomework::history{"resource.$id.previous"};   my $previous = $Apache::lonhomework::history{"resource.$id.previous"};
  my $awardmsg = $Apache::lonhomework::history{"resource.$id.awardmsg"};   my $awardmsg = $Apache::lonhomework::history{"resource.$id.awardmsg"};
Line 786  sub gradestatus { Line 857  sub gradestatus {
  if ( $award ne '' || $solved ne '' || $status eq 'SHOW_ANSWER') {   if ( $award ne '' || $solved ne '' || $status eq 'SHOW_ANSWER') {
     &Apache::lonxml::debug('Getting message');      &Apache::lonxml::debug('Getting message');
     ($showbutton,$bgcolor,$message,$previousmsg) =      ($showbutton,$bgcolor,$message,$previousmsg) =
  &decideoutput($award,$awardmsg,$solved,$previous,$target);   &decideoutput($award,$awarded,$awardmsg,$solved,$previous,
         $target);
     if ($target eq 'tex') {      if ($target eq 'tex') {
  $message='\vskip 2 mm '.$message.' ';   $message='\vskip 2 mm '.$message.' ';
     } else {      } else {
Line 805  sub gradestatus { Line 877  sub gradestatus {
  if ( $maxtries eq '' ) { $maxtries = '2'; }    if ( $maxtries eq '' ) { $maxtries = '2'; } 
  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') { $tries_text=&mt('Submissions'); }   if ( $Apache::lonhomework::type eq 'survey' ||
        $Apache::lonhomework::parsing_a_task) {
       $tries_text=&mt('Submissions');
    }
  if ( $showbutton ) {   if ( $showbutton ) {
     if ($target eq 'tex') {      if ($target eq 'tex') {
  if ($ENV{'request.state'} ne "construct" && $Apache::lonhomework::type ne 'exam' && $ENV{'form.suppress_tries'} ne 'yes') {   if ($env{'request.state'} ne "construct" && $Apache::lonhomework::type ne 'exam' && $env{'form.suppress_tries'} ne 'yes') {
     $trystr = ' {\vskip 1 mm \small \textit{'.$tries_text.'} '.$tries.'/'.$maxtries.'} \vskip 2 mm ';      $trystr = ' {\vskip 1 mm \small \textit{'.$tries_text.'} '.$tries.'/'.$maxtries.'} \vskip 2 mm ';
  } else {   } else {
     $trystr = '\vskip 0 mm ';      $trystr = '\vskip 0 mm ';
  }   }
     } else {      } else {
  $trystr = "<td><nobr>".$tries_text." $tries";   $trystr = "<td><nobr>".$tries_text." $tries";
  if($ENV{'request.state'} ne 'construct') {   if ($Apache::lonhomework::parsing_a_task) {
    } elsif($env{'request.state'} ne 'construct') {
     $trystr.="/$maxtries";      $trystr.="/$maxtries";
  } else {   } else {
     if (defined($Apache::inputtags::params{'maxtries'})) {      if (defined($Apache::inputtags::params{'maxtries'})) {
Line 833  sub gradestatus { Line 909  sub gradestatus {
  }   }
  if ($Apache::lonhomework::history{"resource.$id.afterduedate"}) {   if ($Apache::lonhomework::history{"resource.$id.afterduedate"}) {
     #last submissions was after due date      #last submissions was after due date
     if ($target eq 'tex') {      $latemessage=&mt(' The last submission was after the Due Date ');;
  $latemessage=' The last submission was after the Due Date ';      if ($target eq 'web') {
     } else {   $latemessage='<td bgcolor="#ffaaaa">'.$latemessage.'</td>';
  $latemessage="<td bgcolor=\"#ffaaaa\">The last submission was after the Due Date</td>";  
     }      }
  }   }
     }      }

Removed from v.1.160  
changed lines
  Added in v.1.182


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