Diff for /loncom/homework/inputtags.pm between versions 1.147 and 1.158

version 1.147, 2004/06/28 15:01:44 version 1.158, 2005/03/01 03:23:16
Line 222  sub start_textline { Line 222  sub start_textline {
  if ($addchars) {   if ($addchars) {
     $result.=&addchars('HWVAL_'.$id,$addchars);      $result.=&addchars('HWVAL_'.$id,$addchars);
  }   }
  $result.= '<input type="text" name="HWVAL_'.$id.'" value="'.   my $readonly=&Apache::lonxml::get_param('readonly',$parstack,
    $safeeval);
    if (lc($readonly) eq 'yes') {
       $readonly=' readonly="readonly" ';
    } else {
       $readonly='';
    }
    $result.= '<input type="text" '.$readonly.' name="HWVAL_'.$id.'" value="'.
     $oldresponse.'" size="'.$size.'" maxlength="'.$maxlength.'" />';      $oldresponse.'" size="'.$size.'" maxlength="'.$maxlength.'" />';
     }      }
  } else {   } else {
Line 233  sub start_textline { Line 240  sub start_textline {
     } elsif ($target eq 'edit') {      } elsif ($target eq 'edit') {
  $result=&Apache::edit::tag_start($target,$token);   $result=&Apache::edit::tag_start($target,$token);
  $result.=&Apache::edit::text_arg('Size:','size',$token,'5').   $result.=&Apache::edit::text_arg('Size:','size',$token,'5').
     &Apache::edit::text_arg      &Apache::edit::text_arg('Click-On Texts (comma sep):',
     ('Click-On Texts (comma sep):','addchars',$token,10)."</td></tr>";      'addchars',$token,10);
  $result.=&Apache::edit::end_table;          $result.=&Apache::edit::select_arg('Readonly:','readonly',
      ['no','yes'],$token);
    $result.=&Apache::edit::end_row();
    $result.=&Apache::edit::end_table();
     } elsif ($target eq 'modified') {      } elsif ($target eq 'modified') {
  my $constructtag=&Apache::edit::get_new_args($token,$parstack,$safeeval,'size','addchars');   my $constructtag=&Apache::edit::get_new_args($token,$parstack,
        $safeeval,'size',
        'addchars','readonly');
  if ($constructtag) { $result = &Apache::edit::rebuild_tag($token); }   if ($constructtag) { $result = &Apache::edit::rebuild_tag($token); }
     } elsif ($target eq 'tex' and $Apache::lonhomework::type ne 'exam') {      } elsif ($target eq 'tex' and $Apache::lonhomework::type ne 'exam') {
  my $size = &Apache::lonxml::get_param('size',$parstack,$safeeval);   my $size = &Apache::lonxml::get_param('size',$parstack,$safeeval);
Line 317  sub finalizeawards { Line 329  sub finalizeawards {
        'BAD_FORMULA', 'SIG_FAIL', 'INCORRECT',          'BAD_FORMULA', 'SIG_FAIL', 'INCORRECT', 
        'MISORDERED_RANK', 'INVALID_FILETYPE',         'MISORDERED_RANK', 'INVALID_FILETYPE',
        'DRAFT', 'SUBMITTED', 'ASSIGNED_SCORE',         'DRAFT', 'SUBMITTED', 'ASSIGNED_SCORE',
        'APPROX_ANS', 'EXACT_ANS') {         'APPROX_ANS', 'EXACT_ANS','COMMA_FAIL') {
  ($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 330  sub decideoutput { Line 342  sub decideoutput {
     my $button=0;      my $button=0;
     my $previousmsg;      my $previousmsg;
     my $bgcolor='orange';      my $bgcolor='orange';
       my $added_computer_text=0;
     my %possiblecolors =      my %possiblecolors =
  ( 'correct' => '#aaffaa',   ( 'correct' => '#aaffaa',
   'charged_try' => '#ffaaaa',    'charged_try' => '#ffaaaa',
Line 346  sub decideoutput { Line 359  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.= " ".&mt(" Computer's answer now shown.");      $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') { 
Line 378  sub decideoutput { Line 392  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.= " ".&mt(" Computer's answer now shown.");      $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') { 
Line 436  sub decideoutput { Line 451  sub decideoutput {
  $bgcolor=$possiblecolors{'not_charged_try'};   $bgcolor=$possiblecolors{'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]"','<tt>'.$awardmsg.'</tt>.');   $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'};   $bgcolor=$possiblecolors{'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 ','<tt>'.$awardmsg.'</tt>.');   $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'};   $bgcolor=$possiblecolors{'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]"','<tt>'.$awardmsg.'</tt>.');   $message = &mt('Only a number required. Computer reads units of "[_1]".',&markup_unit($awardmsg,$target));
  $bgcolor=$possiblecolors{'not_charged_try'};   $bgcolor=$possiblecolors{'not_charged_try'};
  $button=1;   $button=1;
     } elsif ($award eq 'NO_UNIT') {      } elsif ($award eq 'NO_UNIT') {
Line 454  sub decideoutput { Line 469  sub decideoutput {
  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'};   $bgcolor=$possiblecolors{'not_charged_try'};
  $button=1;   $button=1;
       } elsif ($award eq 'COMMA_FAIL') {
    $message = &mt("Proper comma separation is required").'.';
    $bgcolor=$possiblecolors{'not_charged_try'};
    $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'};   $bgcolor=$possiblecolors{'not_charged_try'};
Line 487  sub decideoutput { Line 506  sub decideoutput {
  $bgcolor=$possiblecolors{'correct'};   $bgcolor=$possiblecolors{'correct'};
  $button=1;   $button=1;
     }      }
     if ($Apache::inputtags::status[-1] eq 'SHOW_ANSWER') {      if ($Apache::inputtags::status[-1] eq 'SHOW_ANSWER' && 
  $message.=" ".&mt("Computer's answer now shown.");   !$added_computer_text && $target ne 'tex') {
    $message.=" ".&mt("Computer's answer now shown above.");
    $added_computer_text=1;
     }      }
     return ($button,$bgcolor,$message,$previousmsg);      return ($button,$bgcolor,$message,$previousmsg);
 }  }
   
   sub markup_unit {
       my ($unit,$target)=@_;
       if ($target eq 'tex') {
    return '\texttt{'.&Apache::lonxml::latex_special_symbols($unit).'}'; 
       } else {
    return "<tt>".$unit."</tt>";
       }
   }
   
 sub removealldata {  sub removealldata {
     my ($id)=@_;      my ($id)=@_;
     foreach my $key (keys(%Apache::lonhomework::results)) {      foreach my $key (keys(%Apache::lonhomework::results)) {
Line 519  sub hidealldata { Line 549  sub hidealldata {
   
 sub setgradedata {  sub setgradedata {
     my ($award,$msg,$id,$previously_used) = @_;      my ($award,$msg,$id,$previously_used) = @_;
     # if the student already has it correct, don't modify the status      if ($Apache::lonhomework::scantronmode && 
     if ($Apache::lonhomework::scantronmode && defined($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 && 
        $ENV{'form.CODE'} eq '' &&
        $Apache::lonhomework::history{"resource.CODE"} ne '') {
    $Apache::lonhomework::results{"resource.CODE"}='';
     }      }
   
     if (!$Apache::lonhomework::scantronmode &&      if (!$Apache::lonhomework::scantronmode &&
  $Apache::inputtags::status['-1'] ne 'CAN_ANSWER' &&   $Apache::inputtags::status['-1'] ne 'CAN_ANSWER' &&
  $Apache::inputtags::status['-1'] ne 'CANNOT_ANSWER') {   $Apache::inputtags::status['-1'] ne 'CANNOT_ANSWER') {
Line 531  sub setgradedata { Line 566  sub setgradedata {
     } elsif ( $Apache::lonhomework::history{"resource.$id.solved"} !~      } elsif ( $Apache::lonhomework::history{"resource.$id.solved"} !~
       /^correct/ || $Apache::lonhomework::scantronmode ||        /^correct/ || $Apache::lonhomework::scantronmode ||
       lc($Apache::lonhomework::problemstatus) eq 'no') {        lc($Apache::lonhomework::problemstatus) eq 'no') {
  #handle assignment of tries and solved status          # the student doesn't already have it correct,
    # or we are in a mode (scantron orno problem status) where a correct 
           # can become incorrect
    # handle assignment of tries and solved status
  my $solvemsg;   my $solvemsg;
  if ($Apache::lonhomework::scantronmode) {   if ($Apache::lonhomework::scantronmode) {
     $solvemsg='correct_by_scantron';      $solvemsg='correct_by_scantron';
Line 565  sub setgradedata { Line 603  sub setgradedata {
  } 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;
     if (lc($Apache::lonhomework::problemstatus) eq 'no') {      if (lc($Apache::lonhomework::problemstatus) eq 'no' ||
    $Apache::lonhomework::scantronmode) {
  $Apache::lonhomework::results{"resource.$id.awarded"} = 0;   $Apache::lonhomework::results{"resource.$id.awarded"} = 0;
     }      }
     $Apache::lonhomework::results{"resource.$id.solved"} =      $Apache::lonhomework::results{"resource.$id.solved"} =
Line 584  sub setgradedata { Line 623  sub setgradedata {
  } else {   } else {
     $Apache::lonhomework::results{"resource.$id.solved"} =      $Apache::lonhomework::results{"resource.$id.solved"} =
  'incorrect_attempted';   'incorrect_attempted';
     if (lc($Apache::lonhomework::problemstatus) eq 'no') {      if (lc($Apache::lonhomework::problemstatus) eq 'no' ||
    $Apache::lonhomework::scantronmode) {
  $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;
  $Apache::lonhomework::results{"resource.$id.awarded"} = 0;   $Apache::lonhomework::results{"resource.$id.awarded"} = 0;
Line 732  sub gradestatus { Line 772  sub gradestatus {
  if ( $status eq 'SHOW_ANSWER' || $status eq 'CANNOT_ANSWER') {$showbutton = 0;}   if ( $status eq 'SHOW_ANSWER' || $status eq 'CANNOT_ANSWER') {$showbutton = 0;}
  if ( $showbutton ) {    if ( $showbutton ) { 
     if ($target ne 'tex') {      if ($target ne 'tex') {
  $button = '<input type="submit" name="submit" value="'.&mt('Submit Answer').'" />';   $button = '<input type="submit" name="submit_'.$id.'" value="'.&mt('Submit Answer').'" />';
     }      }
  }   }
  if ($Apache::lonhomework::history{"resource.$id.afterduedate"}) {   if ($Apache::lonhomework::history{"resource.$id.afterduedate"}) {

Removed from v.1.147  
changed lines
  Added in v.1.158


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