Diff for /loncom/homework/inputtags.pm between versions 1.268 and 1.271.2.8

version 1.268, 2010/08/23 03:05:12 version 1.271.2.8, 2011/10/08 20:44:20
Line 60  use LONCAPA; Line 60  use LONCAPA;
     
   
 BEGIN {  BEGIN {
     &Apache::lonxml::register('Apache::inputtags',('hiddenline','textfield','textline'));      &Apache::lonxml::register('Apache::inputtags',('hiddensubmission','hiddenline','textfield','textline'));
 }  }
   
 =pod  =pod
Line 175  sub start_textfield { Line 175  sub start_textfield {
     if ($target eq 'web') {      if ($target eq 'web') {
  $Apache::lonxml::evaluate--;   $Apache::lonxml::evaluate--;
  my $partid=$Apache::inputtags::part;   my $partid=$Apache::inputtags::part;
  my $oldresponse = &HTML::Entities::encode($Apache::lonhomework::history{"resource.$partid.$resid.submission"},'<>&"');          my ($oldresponse,$newvariation);
           if ((($Apache::lonhomework::history{"resource.$partid.type"} eq 'randomizetry') ||
                ($Apache::lonhomework::type eq 'randomizetry')) &&
                ($Apache::inputtags::status[-1] eq 'CAN_ANSWER')) {
               if ($env{'form.'.$partid.'.rndseed'} ne
                   $Apache::lonhomework::history{"resource.$partid.rndseed"}) {
                   $newvariation = 1;
               }
           }
           unless ($newvariation) {
       $oldresponse = &HTML::Entities::encode($Apache::lonhomework::history{"resource.$partid.$resid.submission"},'<>&"');
           }
  if ($Apache::inputtags::status[-1] eq 'CAN_ANSWER') {   if ($Apache::inputtags::status[-1] eq 'CAN_ANSWER') {
     my $cols = &Apache::lonxml::get_param('cols',$parstack,$safeeval);      my $cols = &Apache::lonxml::get_param('cols',$parstack,$safeeval);
     if ( $cols eq '') { $cols = 80; }      if ( $cols eq '') { $cols = 80; }
Line 331  sub start_textline { Line 342  sub start_textline {
     $maxlength = ' maxlength="'.$size.'"';      $maxlength = ' maxlength="'.$size.'"';
  }   }
     }      }
     my $oldresponse = $Apache::lonhomework::history{"resource.$partid.$id.submission"};              my ($oldresponse,$newvariation);
     &Apache::lonxml::debug("oldresponse $oldresponse is ".ref($oldresponse));              if ((($Apache::lonhomework::history{"resource.$partid.type"} eq 'randomizetry') ||
                    ($Apache::lonhomework::type eq 'randomizetry')) &&
     if (ref($oldresponse) eq 'ARRAY') {                   ($Apache::inputtags::status[-1] eq 'CAN_ANSWER')) {
  $oldresponse = $oldresponse->[$#Apache::inputtags::inputlist];                  if ($env{'form.'.$partid.'.rndseed'} ne
     }                      $Apache::lonhomework::history{"resource.$partid.rndseed"}) {
     $oldresponse = &HTML::Entities::encode($oldresponse,'<>&"');                      $newvariation = 1;
             $oldresponse =~ s/^\s+//;                  }
             $oldresponse =~ s/\s+$//;              }
             $oldresponse =~ s/\s+/ /g;              unless ($newvariation) {
           $oldresponse = $Apache::lonhomework::history{"resource.$partid.$id.submission"};
           &Apache::lonxml::debug("oldresponse $oldresponse is ".ref($oldresponse));
   
           if (ref($oldresponse) eq 'ARRAY') {
       $oldresponse = $oldresponse->[$#Apache::inputtags::inputlist];
           }
           $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 457  sub end_hiddenline { Line 479  sub end_hiddenline {
     return "";      return "";
 }  }
   
   sub start_hiddensubmission {
       my ($target,$token,$tagstack,$parstack,$parser,$safeeval)=@_;
       my $result = "";
       my $input_id = &start_input($parstack,$safeeval);
       if ($target eq 'web') {
           $Apache::lonxml::evaluate--;
           if ($Apache::inputtags::status[-1] eq 'CAN_ANSWER') {
               my $partid=$Apache::inputtags::part;
               my $id=$Apache::inputtags::response[-1];
               if ($Apache::lonhomework::type ne 'exam') {
                   my $value = &Apache::lonxml::get_param('value',$parstack,$safeeval);
                   $value = &HTML::Entities::encode($value,'<>&"');
                   $result= '<input type="hidden" name="HWVAL_'.$id.'" value="'.$value.'" />';
               }
           }
       } elsif ($target eq 'edit') {
           $result=&Apache::edit::tag_start($target,$token);
           $result.=&Apache::edit::text_arg('Value:','value',$token,'15');
           $result.=&Apache::edit::end_row();
           $result.=&Apache::edit::end_table();
       } elsif ($target eq 'modified') {
           my $constructtag=&Apache::edit::get_new_args($token,$parstack,
                                                        $safeeval,'value');
           if ($constructtag) { $result = &Apache::edit::rebuild_tag($token); }
       }
   
       if ( ($target eq 'web' || $target eq 'tex')
            && $Apache::lonhomework::type eq 'exam'
            && &needs_exam_box($tagstack)) {
           $result.=&exam_box($target);
       }
       return $result;
   }
   
   sub end_hiddensubmission {
       my ($target,$token,$tagstack,$parstack,$parser,$safeeval)=@_;
       if    ($target eq 'web') { $Apache::lonxml::evaluate++; }
       elsif ($target eq 'edit') { return ('','no'); }
       &end_input();
       return "";
   }
   
 =pod  =pod
   
 =item file_selector()  =item file_selector()
Line 527  sub current_file_submissions { Line 591  sub current_file_submissions {
     my ($part,$id) = @_;      my ($part,$id) = @_;
     my $jspart=$part;      my $jspart=$part;
     $jspart=~s/\./_/g;      $jspart=~s/\./_/g;
     my $uploadedfile=&HTML::Entities::encode($Apache::lonhomework::history{"resource.$part.$id.uploadedfile"},'<>&"');      my $uploadedfile=$Apache::lonhomework::history{"resource.$part.$id.uploadedfile"};
     my $portfiles=$Apache::lonhomework::history{"resource.$part.$id.portfiles"};      my $portfiles=$Apache::lonhomework::history{"resource.$part.$id.portfiles"};
     return if (($uploadedfile eq '') && ($portfiles !~/[^\s]/));      return if (($uploadedfile eq '') && ($portfiles !~/[^\s]/));
     my $header = &Apache::loncommon::start_data_table().      my $header = &Apache::loncommon::start_data_table().
                  &Apache::loncommon::start_data_table_header_row().                   &Apache::loncommon::start_data_table_header_row();
                  '<th>'.&mt('Delete?').'</th>'.      if ($Apache::inputtags::status[-1] eq 'CAN_ANSWER') {
                  '<th>'.&mt('Name').'</th>'.          $header .= '<th>'.&mt('Delete?').'</th>';
       }
       $header .=   '<th>'.&mt('File').'</th>'.
                  '<th>'.&mt('Size (MB)').'</th>'.                   '<th>'.&mt('Size (MB)').'</th>'.
                  '<th>'.&mt('Last Modified').'</th>'.                   '<th>'.&mt('Last Modified').'</th>'.
                  &Apache::loncommon::end_data_table_header_row();                   &Apache::loncommon::end_data_table_header_row();
     my (undef,$crsid,$udom,$uname)=&Apache::lonnet::whichuser();      my (undef,$crsid,$udom,$uname)=&Apache::lonnet::whichuser();
     my ($cdom,$cnum) = ($crsid =~ /^($LONCAPA::match_domain)_($LONCAPA::match_courseid)$/);      my ($cdom,$cnum) = ($crsid =~ /^($LONCAPA::match_domain)_($LONCAPA::match_courseid)$/);
     my ($result,$header_shown,%okfiles,%rows,@bad_file_list);      my ($result,$header_shown,%okfiles,%rows,%legacy,@bad_file_list);
     if ($uploadedfile) {      if ($uploadedfile) {
         my $url=$Apache::lonhomework::history{"resource.$part.$id.uploadedurl"};          my $url=$Apache::lonhomework::history{"resource.$part.$id.uploadedurl"};
         my ($path,$name) = ($url =~ m{^/uploaded/\Q$cdom\E/\Q$cnum\E/(essayresponse/.+/)([^/]+))});          my $link = &HTML::Entities::encode($url,'<>&"');
           my ($path,$name) = ($url =~ m{^(/uploaded/\Q$udom\E/\Q$uname\E/essayresponse.*/)([^/]+)$});
         my ($status,$hashref,$error) =          my ($status,$hashref,$error) =
             &current_file_info($url,$uploadedfile,$name,$path);              &current_file_info($url,$link,$name,$path);
         if ($status eq 'ok') {          if ($status eq 'ok') {
             push(@{$okfiles{$name}},$url);              push(@{$okfiles{$name}},$url);
             $rows{$url} = $hashref;              $rows{$url} = $hashref;
               $legacy{$url} = 1;
             &Apache::lonxml::extlink($url);              &Apache::lonxml::extlink($url);
             &Apache::lonnet::allowuploaded('/adm/essayresponse',$url);              &Apache::lonnet::allowuploaded('/adm/essayresponse',$url);
         } else {          } else {
Line 570  sub current_file_submissions { Line 638  sub current_file_submissions {
             }              }
         }          }
     }      }
       my $num = 0;
     foreach my $name (sort(keys(%okfiles))) {      foreach my $name (sort(keys(%okfiles))) {
         if (ref($okfiles{$name}) eq 'ARRAY') {          if (ref($okfiles{$name}) eq 'ARRAY') {
             foreach my $url (@{$okfiles{$name}}) {              foreach my $url (@{$okfiles{$name}}) {
Line 584  sub current_file_submissions { Line 653  sub current_file_submissions {
                             $header_shown = 1;                              $header_shown = 1;
                         }                          }
                         $result.=                          $result.=
                             &Apache::loncommon::start_data_table_row()."\n".                              &Apache::loncommon::start_data_table_row()."\n";
                             '<td valign="bottom"><input type="checkbox" name="HWFILE'.$jspart.'_'.$id.'_delete" value="'.                          if ($Apache::inputtags::status[-1] eq 'CAN_ANSWER') {
                             $portfile.'" /></td>'."\n".                              $result .=
                                    '<td valign="bottom"><input type="checkbox" name="HWFILE'.$jspart.'_'.$id.'_delete"'.
                                    ' value="'.$portfile.'" id="HWFILE'.$jspart.'_'.$id.'_'.$num.'_delete" /></td>'."\n";
                               $num ++;
                           }
                           my $showname = $rows{$url}{path}.$name;
                           if ($legacy{$url}) {
                               $showname = $name.' '.&mt('not in portfolio');
                           }
                           $result .= 
                             '<td><a href="'.$link.'"><img src="'.$icon.                              '<td><a href="'.$link.'"><img src="'.$icon.
                             '" border="0" />'.$name.'</a></td>'."\n".                              '" border="0" alt="" />'.$showname.'</a></td>'."\n".
                             '<td align="right" valign="bottom">'.$rows{$url}{size}.'</td>'."\n".                              '<td align="right" valign="bottom">'.$rows{$url}{size}.'</td>'."\n".
                             '<td align="right" valign="bottom">'.$rows{$url}{lastmodified}.'</td>'."\n".                              '<td align="right" valign="bottom">'.$rows{$url}{lastmodified}.'</td>'."\n".
                             &Apache::loncommon::end_data_table_row();                              &Apache::loncommon::end_data_table_row();
Line 598  sub current_file_submissions { Line 676  sub current_file_submissions {
         }          }
     }      }
     if ($header_shown) {      if ($header_shown) {
         $result .= &Apache::loncommon::end_data_table();          $result .= &Apache::loncommon::end_data_table().
                      '<br /><span class="LC_warning">'.
                      &mt('Exclude existing file(s) from grading by checking the "Delete?" checkbox(es) and clicking "Submit Answer"').'</span>';
     }      }
     if (@bad_file_list) {      if (@bad_file_list) {
         my $bad_files = '<span class="LC_filename">'.          my $bad_files = '<span class="LC_filename">'.
Line 647  sub valid_award { Line 727  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', 'INTERNAL_ERROR', 'SIG_FAIL', 'INCORRECT',          'BAD_FORMULA', 'NOT_FUNCTION', 'WRONG_FORMAT', 
          'INTERNAL_ERROR', 'SIG_FAIL', 'INCORRECT', 
        'MISORDERED_RANK', 'INVALID_FILETYPE',         'MISORDERED_RANK', 'INVALID_FILETYPE',
                                'EXCESS_FILESIZE', 'FILENAME_INUSE',                                  'EXCESS_FILESIZE', 'FILENAME_INUSE', 
        'DRAFT', 'SUBMITTED', 'SUBMITTED_CREDIT',          'DRAFT', 'SUBMITTED', 'SUBMITTED_CREDIT', 
Line 664  sub valid_award { Line 745  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', 'INTERNAL_ERROR',    'UNIT_NOTNEEDED', 'WANTED_NUMERIC', 'BAD_FORMULA',  'NOT_FUNCTION', 
     'WRONG_FORMAT', 'INTERNAL_ERROR',
   'COMMA_FAIL', 'SIG_FAIL', 'INCORRECT', 'MISORDERED_RANK',    'COMMA_FAIL', 'SIG_FAIL', 'INCORRECT', 'MISORDERED_RANK',
   'INVALID_FILETYPE', 'EXCESS_FILESIZE', 'FILENAME_INUSE',     'INVALID_FILETYPE', 'EXCESS_FILESIZE', 'FILENAME_INUSE', 
                   'DRAFT', 'SUBMITTED',                    'DRAFT', 'SUBMITTED',
Line 762  sub finalizeawards { Line 844  sub finalizeawards {
 }  }
   
 sub decideoutput {  sub decideoutput {
     my ($award,$awarded,$awardmsg,$solved,$previous,$target)=@_;      my ($award,$awarded,$awardmsg,$solved,$previous,$target,$nocorrect)=@_;
   
     my $message='';      my $message='';
     my $button=0;      my $button=0;
Line 780  sub decideoutput { Line 862  sub decideoutput {
     my $part = $Apache::inputtags::part;      my $part = $Apache::inputtags::part;
     my $tohandgrade = &Apache::lonnet::EXT("resource.$part.handgrade");      my $tohandgrade = &Apache::lonnet::EXT("resource.$part.handgrade");
     my $handgrade = ('yes' eq lc($tohandgrade));       my $handgrade = ('yes' eq lc($tohandgrade)); 
        
     my $computer = ($handgrade)? ''  #
   # Should "Computer's Answer" be displayed?
   # Should not be displayed if still answerable,
   # if the problem is handgraded,
   # or if the problem does not give a correct answer
   #
       my $computer = ($handgrade || $nocorrect)? ''
                        : " ".&mt("Computer's answer now shown above.");                         : " ".&mt("Computer's answer now shown above.");
     &Apache::lonxml::debug("handgrade has :$handgrade:");      &Apache::lonxml::debug("handgrade has :$handgrade:");
   
Line 797  sub decideoutput { Line 885  sub decideoutput {
     $message=&mt('Incorrect.');      $message=&mt('Incorrect.');
     $css_class=$possible_class{'charged_try'};      $css_class=$possible_class{'charged_try'};
  }   }
  if ($env{'request.filename'} =~    if ($handgrade || 
     m|/res/lib/templates/examupload.problem$|) {              ($env{'request.filename'}=~ m{/res/lib/templates/(examupload|DropBox)\.problem$}) {
     $message = &mt("A score has been assigned.");      $message = &mt("A score has been assigned.");
     $added_computer_text=1;      $added_computer_text=1;
  } else {   } else {
Line 951  sub decideoutput { Line 1039  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 'NOT_FUNCTION') {
           $message = &mt("Not a function").'.';
           $css_class=$possible_class{'not_charged_try'};
           $button=1;
       } elsif ($award eq 'WRONG_FORMAT') {
           $message = &mt("Wrong format").'.';
           $css_class=$possible_class{'not_charged_try'};
           $button=1;
     } elsif ($award eq 'INTERNAL_ERROR') {      } elsif ($award eq 'INTERNAL_ERROR') {
         $message = &mt("An internal error occurred while processing your answer. Please try again later.");          $message = &mt("An internal error occurred while processing your answer. Please try again later.");
         $css_class=$possible_class{'not_charged_try'};          $css_class=$possible_class{'not_charged_try'};
Line 1228  sub setgradedata { Line 1324  sub setgradedata {
  &Apache::response::add_to_gradingqueue();   &Apache::response::add_to_gradingqueue();
     }      }
     if (($Apache::lonhomework::type eq 'anonsurvey') ||      if (($Apache::lonhomework::type eq 'anonsurvey') ||
         ($Apache::lonhomework::type eq 'anonsurveycred')) {          ($Apache::lonhomework::type eq 'anonsurveycred') ||
           ($Apache::lonhomework::type eq 'randomizetry')) {
         $Apache::lonhomework::results{"resource.$id.type"} = $Apache::lonhomework::type;          $Apache::lonhomework::results{"resource.$id.type"} = $Apache::lonhomework::type;
     }      }
       if ($Apache::lonhomework::type eq 'randomizetry') {
           $Apache::lonhomework::results{"resource.$id.rndseed"} = $env{'form.'.$id.'.rndseed'};
       }
 }  }
   
 sub find_which_previous {  sub find_which_previous {
Line 1310  sub grade { Line 1410  sub grade {
 }  }
   
 sub get_grade_messages {  sub get_grade_messages {
     my ($id,$prefix,$target,$status) = @_;      my ($id,$prefix,$target,$status,$nocorrect) = @_;
   # nocorrect suppresses "Computer's answer now shown above"
     my ($message,$latemessage,$trystr,$previousmsg);      my ($message,$latemessage,$trystr,$previousmsg);
     my $showbutton = 1;      my $showbutton = 1;
   
Line 1325  sub get_grade_messages { Line 1425  sub get_grade_messages {
  &Apache::lonxml::debug('Getting message');   &Apache::lonxml::debug('Getting message');
  ($showbutton,my $css_class,$message,$previousmsg) =   ($showbutton,my $css_class,$message,$previousmsg) =
     &decideoutput($award,$awarded,$awardmsg,$solved,$previous,      &decideoutput($award,$awarded,$awardmsg,$solved,$previous,
   $target);    $target,(($status eq 'CAN_ANSWER') || $nocorrect));
  if ($target eq 'tex') {   if ($target eq 'tex') {
     $message='\vskip 2 mm '.$message.' ';      $message='\vskip 2 mm '.$message.' ';
  } else {   } else {
Line 1343  sub get_grade_messages { Line 1443  sub get_grade_messages {
     if ( $tries eq '' ) { $tries = '0'; }      if ( $tries eq '' ) { $tries = '0'; }
     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= &get_tries_text();;      my $tries_text= &get_tries_text();
     if ($showbutton) {      if ($showbutton) {
  if ($target eq 'tex') {   if ($target eq 'tex') {
     if ($env{'request.state'} ne "construct"      if ($env{'request.state'} ne "construct"
  && $Apache::lonhomework::type ne 'exam'   && $Apache::lonhomework::type ne 'exam'
  && $env{'form.suppress_tries'} ne 'yes') {   && $env{'form.suppress_tries'} ne 'yes') {
  $trystr = ' {\vskip 1 mm \small \textit{'.$tries_text.'} '.                  $trystr ='{\vskip 1 mm \small '
     $tries.'/'.$maxtries.'} \vskip 2 mm ';                          .&mt('[_1]'.$tries_text.'[_2] [_3]'
                                   ,'\textit{','}',$tries.'/'.$maxtries )
                           .'} \vskip 2 mm';
     } else {      } else {
  $trystr = '\vskip 0 mm ';   $trystr = '\vskip 0 mm ';
     }      }
  } else {   } else {
     $trystr = '<td><span class="LC_nobreak">'.&mt($tries_text)." $tries";              my $trial = $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";   $trial.="/$maxtries";
     } else {      } else {
  if (defined($Apache::inputtags::params{'maxtries'})) {   if (defined($Apache::inputtags::params{'maxtries'})) {
     $trystr.="/".$Apache::inputtags::params{'maxtries'};      $trial.="/".$Apache::inputtags::params{'maxtries'};
  }   }
     }      }
     $trystr.="</span></td>";      $trystr.='<td><span class="LC_nobreak">'.&mt("$tries_text [_1]",$trial).'</span></td>';
  }   }
     }      }
   
Line 1439  sub previous_tries { Line 1541  sub previous_tries {
   
     my $count;      my $count;
     my %count_lookup;      my %count_lookup;
       my $lastrndseed;
   
     foreach my $i (1..$Apache::lonhomework::history{'version'}) {      foreach my $i (1..$Apache::lonhomework::history{'version'}) {
  my $prefix = $i.":resource.$id";   my $prefix = $i.":resource.$id";
Line 1452  sub previous_tries { Line 1555  sub previous_tries {
  next if (!exists($Apache::lonhomework::history{"$prefix.award"}));   next if (!exists($Apache::lonhomework::history{"$prefix.award"}));
  $count++;   $count++;
  $count_lookup{$i} = $count;   $count_lookup{$i} = $count;
           my $curr_rndseed = $Apache::lonhomework::history{"$prefix.rndseed"};
   
  my ($previousmsg,$latemessage,$message,$trystr);   my ($previousmsg,$latemessage,$message,$trystr);
   
  ($previousmsg,$latemessage,$message,$trystr) =   ($previousmsg,$latemessage,$message,$trystr) =
Line 1470  sub previous_tries { Line 1574  sub previous_tries {
  ) {   ) {
   
                 my $txt_correct = &mt('Correct');                  my $txt_correct = &mt('Correct');
                   my $awarded = $Apache::lonhomework::history{"$prefix.awarded"};
                   if ($awarded < 1 && $awarded > 0) {
                       $txt_correct=&mt('Partially Correct');
                   } elsif ($awarded < 1) {
                       if ($awarded eq '') {
                           $txt_correct='';
                       } else {
                           $txt_correct=&mt('Incorrect');
                       }
                   }
  $message =~ s{(<td.*?>)(.*?)(</td>)}   $message =~ s{(<td.*?>)(.*?)(</td>)}
                              {$1 <strong>$txt_correct</strong>. $3}s;                               {$1 <strong>$txt_correct</strong>. $3}s;
     }      }
             my $trystr = "(".&mt('Try [_1]',$Apache::lonhomework::history{"$prefix.tries"}).")";              my $trystr = "(".&mt('Try [_1]',$Apache::lonhomework::history{"$prefix.tries"}).")";
               if (($curr_rndseed || $lastrndseed) && ($i > 1)) {
                   if ($curr_rndseed ne $lastrndseed) {
                       $trystr .= '<br /><span style="color: green; white-space: nowrap; font-style: italic; font-weight: bold; font-size: 80%;">'.&mt('New problem variation this try.').'</span>';
                   }
               }
     $message =~ s{(</td>)}{ $trystr $1};      $message =~ s{(</td>)}{ $trystr $1};
  }   }
  my ($class) = ($message =~ m{<td.*class="([^"]*)"}); #"   my ($class) = ($message =~ m{<td.*class="([^"]*)"}); #"
Line 1503  sub previous_tries { Line 1622  sub previous_tries {
     }      }
  }   }
  $output.=&Apache::loncommon::end_data_table_row()."\n";   $output.=&Apache::loncommon::end_data_table_row()."\n";
           $lastrndseed = $curr_rndseed;
     }      }
     return if ($output eq '');      return if ($output eq '');
     my $headers =       my $headers = 

Removed from v.1.268  
changed lines
  Added in v.1.271.2.8


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