Diff for /loncom/homework/inputtags.pm between versions 1.220 and 1.221

version 1.220, 2007/03/15 02:54:28 version 1.221, 2007/04/16 22:50:41
Line 586  sub decideoutput { Line 586  sub decideoutput {
     my $message='';      my $message='';
     my $button=0;      my $button=0;
     my $previousmsg;      my $previousmsg;
     my $bgcolor='orange';      my $css_class='orange';
     my $added_computer_text=0;      my $added_computer_text=0;
     my %possiblecolors =      my %possible_class =
  ( 'correct'         => '#aaffaa',   ( 'correct'         => 'LC_answer_correct',
   'charged_try'     => '#ffaaaa',    'charged_try'     => 'LC_answer_charged_try',
   'not_charged_try' => '#ffffaa',    'not_charged_try' => 'LC_answer_not_charged_try',
   'no_grade'        => '#ffffaa',    'no_grade'        => 'LC_answer_no_grade',
   'no_message'      => '#ffffff',    'no_message'      => 'LC_no_message',
   );    );
   
     my $part = $Apache::inputtags::part;      my $part = $Apache::inputtags::part;
Line 607  sub decideoutput { Line 607  sub decideoutput {
     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/) {
         $bgcolor=$possiblecolors{'correct'};          $css_class=$possible_class{'correct'};
  $message=&mt('You are correct.');   $message=&mt('You are correct.');
  if ($awarded < 1 && $awarded > 0) {   if ($awarded < 1 && $awarded > 0) {
     $message=&mt('You are partially correct.');      $message=&mt('You are partially correct.');
     $bgcolor=$possiblecolors{'not_charged_try'};      $css_class=$possible_class{'not_charged_try'};
  } elsif ($awarded < 1) {   } elsif ($awarded < 1) {
     $message=&mt('Incorrect.');      $message=&mt('Incorrect.');
     $bgcolor=$possiblecolors{'charged_try'};      $css_class=$possible_class{'charged_try'};
  }   }
  if ($env{'request.filename'} =~    if ($env{'request.filename'} =~ 
     m|/res/lib/templates/examupload.problem$|) {      m|/res/lib/templates/examupload.problem$|) {
Line 646  sub decideoutput { Line 646  sub decideoutput {
  } else {   } else {
     $message = "<b>".&mt('You are excused from the problem.')."</b>";      $message = "<b>".&mt('You are excused from the problem.')."</b>";
  }   }
  $bgcolor=$possiblecolors{'charged_try'};   $css_class=$possible_class{'charged_try'};
  $button=0;   $button=0;
  $previousmsg='';   $previousmsg='';
     } elsif ($award eq 'EXACT_ANS' || $award eq 'APPROX_ANS' ) {      } elsif ($award eq 'EXACT_ANS' || $award eq 'APPROX_ANS' ) {
  if ($solved =~ /^incorrect/ || $solved eq '') {   if ($solved =~ /^incorrect/ || $solved eq '') {
     $message = &mt("Incorrect").".";      $message = &mt("Incorrect").".";
     $bgcolor=$possiblecolors{'charged_try'};      $css_class=$possible_class{'charged_try'};
     $button=1;      $button=1;
  } else {   } else {
     if ($target eq 'tex') {      if ($target eq 'tex') {
Line 669  sub decideoutput { Line 669  sub decideoutput {
     'Your receipt is '.&Apache::lonnet::receipt($Apache::inputtags::part).      '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'};      $css_class=$possible_class{'correct'};
     $button=0;      $button=0;
     $previousmsg='';      $previousmsg='';
  }   }
     } elsif ($award eq 'NO_RESPONSE') {      } elsif ($award eq 'NO_RESPONSE') {
  $message = '';   $message = '';
  $bgcolor=$possiblecolors{'no_feedback'};   $css_class=$possible_class{'no_feedback'};
  $button=1;   $button=1;
     } elsif ($award eq 'EXTRA_ANSWER') {      } elsif ($award eq 'EXTRA_ANSWER') {
  $message = &mt('Some extra items were submitted.');   $message = &mt('Some extra items were submitted.');
  $bgcolor=$possiblecolors{'not_charged_try'};   $css_class=$possible_class{'not_charged_try'};
  $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.');
  $bgcolor=$possiblecolors{'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 occured while grading your answer.');
  $bgcolor=$possiblecolors{'not_charged_try'};   $css_class=$possible_class{'not_charged_try'};
  $button = 1;   $button = 1;
     } elsif ($award eq 'TOO_LONG') {      } elsif ($award eq 'TOO_LONG') {
  $message = &mt("The submitted answer was too long.");   $message = &mt("The submitted answer was too long.");
  $bgcolor=$possiblecolors{'not_charged_try'};   $css_class=$possible_class{'not_charged_try'};
  $button=1;   $button=1;
     } elsif ($award eq 'WANTED_NUMERIC') {      } elsif ($award eq 'WANTED_NUMERIC') {
  $message = &mt("This question expects a numeric answer.");   $message = &mt("This question expects a numeric answer.");
  $bgcolor=$possiblecolors{'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').' '.&Apache::loncommon::help_open_topic('Ranking_Problems','help on ranking problems');
  }   }
  $bgcolor=$possiblecolors{'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.');
  $bgcolor=$possiblecolors{'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);
  $bgcolor=$possiblecolors{'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') {
  $message = &mt('Error in instructor specifed unit. This error has been reported to the instructor.', $awardmsg);   $message = &mt('Error in instructor specifed unit. This error has been reported to the instructor.', $awardmsg);
  if ($target ne 'tex') {$message.=&Apache::loncommon::help_open_topic('Physical_Units');}    if ($target ne 'tex') {$message.=&Apache::loncommon::help_open_topic('Physical_Units');} 
  $bgcolor=$possiblecolors{'not_charged_try'};   $css_class=$possible_class{'not_charged_try'};
  $button=1;   $button=1;
     } elsif ($award eq 'UNIT_INVALID_STUDENT') {      } elsif ($award eq 'UNIT_INVALID_STUDENT') {
  $message = &mt('Unable to interpret units. Computer reads units as "[_1]".',&markup_unit($awardmsg,$target));   $message = &mt('Unable to interpret units. Computer reads units as "[_1]".',&markup_unit($awardmsg,$target));
  if ($target ne 'tex') {$message.=&Apache::loncommon::help_open_topic('Physical_Units');}    if ($target ne 'tex') {$message.=&Apache::loncommon::help_open_topic('Physical_Units');} 
  $bgcolor=$possiblecolors{'not_charged_try'};   $css_class=$possible_class{'not_charged_try'};
  $button=1;   $button=1;
     } elsif ($award eq 'UNIT_FAIL' || $award eq 'UNIT_IRRECONCIBLE') {      } elsif ($award eq 'UNIT_FAIL' || $award eq 'UNIT_IRRECONCIBLE') {
  $message = &mt('Incompatible units. No conversion found between "[_1]" and the required units.',&markup_unit($awardmsg,$target));   $message = &mt('Incompatible units. No conversion found between "[_1]" and the required units.',&markup_unit($awardmsg,$target));
  if ($target ne 'tex') {$message.=&Apache::loncommon::help_open_topic('Physical_Units');}    if ($target ne 'tex') {$message.=&Apache::loncommon::help_open_topic('Physical_Units');} 
  $bgcolor=$possiblecolors{'not_charged_try'};   $css_class=$possible_class{'not_charged_try'};
  $button=1;   $button=1;
     } elsif ($award eq 'UNIT_NOTNEEDED') {      } elsif ($award eq 'UNIT_NOTNEEDED') {
  $message = &mt('Only a number required. Computer reads units of "[_1]".',&markup_unit($awardmsg,$target));   $message = &mt('Only a number required. Computer reads units of "[_1]".',&markup_unit($awardmsg,$target));
  $bgcolor=$possiblecolors{'not_charged_try'};   $css_class=$possible_class{'not_charged_try'};
  $button=1;   $button=1;
     } elsif ($award eq 'NO_UNIT') {      } elsif ($award eq 'NO_UNIT') {
  $message = &mt("Units required").'.';   $message = &mt("Units required").'.';
  if ($target ne 'tex') {$message.=&Apache::loncommon::help_open_topic('Physical_Units')};   if ($target ne 'tex') {$message.=&Apache::loncommon::help_open_topic('Physical_Units')};
  $bgcolor=$possiblecolors{'not_charged_try'};   $css_class=$possible_class{'not_charged_try'};
  $button=1;   $button=1;
     } elsif ($award eq 'COMMA_FAIL') {      } elsif ($award eq 'COMMA_FAIL') {
  $message = &mt("Proper comma separation is required").'.';   $message = &mt("Proper comma separation is required").'.';
  $bgcolor=$possiblecolors{'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");
  $bgcolor=$possiblecolors{'not_charged_try'};   $css_class=$possible_class{'not_charged_try'};
  $button=1;   $button=1;
     } elsif ($award eq 'INCORRECT') {      } elsif ($award eq 'INCORRECT') {
  $message = &mt("Incorrect").'.';   $message = &mt("Incorrect").'.';
  $bgcolor=$possiblecolors{'charged_try'};   $css_class=$possible_class{'charged_try'};
  $button=1;   $button=1;
     } elsif ($award eq 'SUBMITTED') {      } elsif ($award eq 'SUBMITTED') {
  $message = &mt("Your submission has been recorded.");   $message = &mt("Your submission has been recorded.");
  $bgcolor=$possiblecolors{'no_grade'};   $css_class=$possible_class{'no_grade'};
  $button=1;   $button=1;
     } elsif ($award eq 'DRAFT') {      } elsif ($award eq 'DRAFT') {
  $message = &mt("A draft copy has been saved.");   $message = &mt("A draft copy has been saved.");
  $bgcolor=$possiblecolors{'not_charged_try'};   $css_class=$possible_class{'not_charged_try'};
  $button=1;   $button=1;
     } elsif ($award eq 'ASSIGNED_SCORE') {      } elsif ($award eq 'ASSIGNED_SCORE') {
  $message = &mt("A score has been assigned.");   $message = &mt("A score has been assigned.");
  $bgcolor=$possiblecolors{'correct'};   $css_class=$possible_class{'correct'};
  $button=0;   $button=0;
     } elsif ($award eq '') {      } elsif ($award eq '') {
  if ($handgrade && $Apache::inputtags::status[-1] eq 'SHOW_ANSWER') {   if ($handgrade && $Apache::inputtags::status[-1] eq 'SHOW_ANSWER') {
     $message = &mt("Nothing submitted.");      $message = &mt("Nothing submitted.");
     $bgcolor=$possiblecolors{'charged_try'};      $css_class=$possible_class{'charged_try'};
  } else {   } else {
     $bgcolor=$possiblecolors{'not_charged_try'};      $css_class=$possible_class{'not_charged_try'};
  }   }
  $button=1;   $button=1;
     } else {      } else {
Line 791  sub decideoutput { Line 791  sub decideoutput {
     if (lc($Apache::lonhomework::problemstatus) eq 'no'  &&       if (lc($Apache::lonhomework::problemstatus) eq 'no'  && 
  $Apache::inputtags::status[-1] ne 'SHOW_ANSWER') {   $Apache::inputtags::status[-1] ne 'SHOW_ANSWER') {
  $message = &mt("Answer Submitted: Your final submission will be graded after the due date.");   $message = &mt("Answer Submitted: Your final submission will be graded after the due date.");
  $bgcolor=$possiblecolors{'no_grade'};   $css_class=$possible_class{'no_grade'};
  $button=1;   $button=1;
     }      }
     if ($Apache::inputtags::status[-1] eq 'SHOW_ANSWER' &&       if ($Apache::inputtags::status[-1] eq 'SHOW_ANSWER' && 
Line 799  sub decideoutput { Line 799  sub decideoutput {
  $message.= $computer;   $message.= $computer;
  $added_computer_text=1;   $added_computer_text=1;
     }      }
     return ($button,$bgcolor,$message,$previousmsg);      return ($button,$css_class,$message,$previousmsg);
 }  }
   
 sub markup_unit {  sub markup_unit {
Line 1045  sub get_grade_messages { Line 1045  sub get_grade_messages {
     &Apache::lonxml::debug("Found Award |$award|$solved|$awardmsg");      &Apache::lonxml::debug("Found Award |$award|$solved|$awardmsg");
     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,my $bgcolor,$message,$previousmsg) =   ($showbutton,my $css_class,$message,$previousmsg) =
     &decideoutput($award,$awarded,$awardmsg,$solved,$previous,      &decideoutput($award,$awarded,$awardmsg,$solved,$previous,
   $target);    $target);
  if ($target eq 'tex') {   if ($target eq 'tex') {
     $message='\vskip 2 mm '.$message.' ';      $message='\vskip 2 mm '.$message.' ';
  } else {   } else {
     $message="<td bgcolor=\"$bgcolor\">$message</td>";      $message="<td class=\"$css_class\">$message</td>";
     if ($previousmsg) {      if ($previousmsg) {
  $previousmsg="<td bgcolor=\"#aaaaff\">$previousmsg</td>";   $previousmsg="<td class=\"LC_answer_previous\">$previousmsg</td>";
     }      }
  }   }
     }      }
Line 1094  sub get_grade_messages { Line 1094  sub get_grade_messages {
     $trystr.="</nobr></td>";      $trystr.="</nobr></td>";
  }   }
     }      }
   
     if ($Apache::lonhomework::history{"$prefix.afterduedate"}) {      if ($Apache::lonhomework::history{"$prefix.afterduedate"}) {
  #last submissions was after due date   #last submissions was after due date
  $latemessage=&mt(' The last submission was after the Due Date ');;   $latemessage=&mt(' The last submission was after the Due Date ');;
  if ($target eq 'web') {   if ($target eq 'web') {
     $latemessage='<td bgcolor="#ffaaaa">'.$latemessage.'</td>';      $latemessage='<td class="LC_answer_late">'.$latemessage.'</td>';
  }   }
     }      }
     return ($previousmsg,$latemessage,$message,$trystr,$showbutton);      return ($previousmsg,$latemessage,$message,$trystr,$showbutton);
Line 1168  sub previous_tries { Line 1169  sub previous_tries {
   
  ($previousmsg,$latemessage,$message,$trystr) =   ($previousmsg,$latemessage,$message,$trystr) =
     &get_grade_messages($id,"$prefix",$target,$status);      &get_grade_messages($id,"$prefix",$target,$status);
  if (!exists($Apache::lonhomework::history{"$prefix.tries"})) {  
     undef($trystr);  
  }  
   
  if ($previousmsg ne '') {   if ($previousmsg ne '') {
     my ($match,$which) = &find_which_previous($i);      my ($match,$which) = &find_which_previous($i);
     $message=$previousmsg;      $message=$previousmsg;
     my $previous = $count_lookup{$which};      my $previous = $count_lookup{$which};
     $message =~ s{(</td>)}{ as submission $previous $1};      $message =~ s{(</td>)}{ as submission # $previous $1};
        } elsif ($Apache::lonhomework::history{"$prefix.tries"}) {
  } elsif ($trystr ne '') {       if ( $Apache::lonhomework::history{"$prefix.solved"} =~ 
     ($trystr) = ($trystr =~ m{(\d+)/\d+});   /^correct/) {
     $message =~ s{(<td.*?>)}{$1 $trystr };   $message =~ s{(<td.*?>)(.*?)(</td>)}
                {$1 <strong>Correct</strong>. $3};
       }
       my $trystr = "(Try ".
    $Apache::lonhomework::history{"$prefix.tries"}.')';
       $message =~ s{(</td>)}{ $trystr $1};
  }   }
    my ($class) = ($message =~ m{<td.*class="([^"]*)"}); #"
    $message =~ s{(<td.*?>)}{<td>};
   
   
    $output.='<tr class="'.$class.'">';
  $output.='<tr>';  
  $output.='<td align ="center">'.$count.'</td>';   $output.='<td align ="center">'.$count.'</td>';
  $output.=$message;   $output.=$message;
   
Line 1202  sub previous_tries { Line 1207  sub previous_tries {
  $output.='<td></td>';   $output.='<td></td>';
     }      }
  }   }
  $output.='</tr>'."\n";   $output.=&Apache::loncommon::end_data_table_row()."\n";
     }      }
     return if ($output eq '');      return if ($output eq '');
     my $headers =       my $headers = 
  '<tr>'.'<th>'.&mt('Submission #').'</th><th>'.&mt('Try').   '<tr>'.'<th>'.&mt('Submission #').'</th><th>'.&mt(' ').
  '</th><th colspan="'.scalar(@Apache::inputtags::response).'">'.   '</th><th colspan="'.scalar(@Apache::inputtags::response).'">'.
  &mt('Submitted Answer').'</th>';   &mt('Submitted Answer').'</th>';
     $output ='<table class="LC_prior_tries">'.$headers.$output.'</table>';      $output ='<table class="LC_prior_tries">'.$headers.$output.'</table>';

Removed from v.1.220  
changed lines
  Added in v.1.221


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