Diff for /loncom/homework/inputtags.pm between versions 1.206 and 1.210

version 1.206, 2006/09/29 20:55:33 version 1.210, 2006/11/01 23:24:52
Line 283  sub needs_exam_box { Line 283  sub needs_exam_box {
 sub start_textline {  sub start_textline {
     my ($target,$token,$tagstack,$parstack,$parser,$safeeval)=@_;      my ($target,$token,$tagstack,$parstack,$parser,$safeeval)=@_;
     my $result = "";      my $result = "";
       my $input_id = &start_input($parstack,$safeeval);
     if ($target eq 'web') {      if ($target eq 'web') {
  $Apache::lonxml::evaluate--;   $Apache::lonxml::evaluate--;
  my $partid=$Apache::inputtags::part;   my $partid=$Apache::inputtags::part;
Line 293  sub start_textline { Line 294  sub start_textline {
     if ($size eq '') { $size=20; } else {      if ($size eq '') { $size=20; } else {
  if ($size < 20) { $maxlength=$size; }   if ($size < 20) { $maxlength=$size; }
     }      }
     my $oldresponse = &HTML::Entities::encode($Apache::lonhomework::history{"resource.$partid.$id.submission"},'<>&"');      my $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,'<>&"');
   
     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 321  sub start_textline { Line 329  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='<b>'.$Apache::inputtags::answertxt{$id}.'</b>';      my $count = scalar(@Apache::inputtags::inputlist)-1;
       $result='<b>'.$Apache::inputtags::answertxt{$id}[$count].'</b>';
     #$result='';      #$result='';
  }   }
     } elsif ($target eq 'edit') {      } elsif ($target eq 'edit') {
Line 356  sub end_textline { Line 365  sub end_textline {
     my ($target,$token,$tagstack,$parstack,$parser,$safeeval)=@_;      my ($target,$token,$tagstack,$parstack,$parser,$safeeval)=@_;
     if    ($target eq 'web') { $Apache::lonxml::evaluate++; }      if    ($target eq 'web') { $Apache::lonxml::evaluate++; }
     elsif ($target eq 'edit') { return ('','no'); }      elsif ($target eq 'edit') { return ('','no'); }
       &end_input();
     return "";      return "";
 }  }
   
Line 459  sub show_past_portfile_submission { Line 469  sub show_past_portfile_submission {
     }      }
     my (@file_list,@bad_file_list);      my (@file_list,@bad_file_list);
     foreach my $file (split(/\s*,\s*/,&unescape($Apache::lonhomework::history{"resource.$part.$id.portfiles"}))) {      foreach my $file (split(/\s*,\s*/,&unescape($Apache::lonhomework::history{"resource.$part.$id.portfiles"}))) {
  my (undef,undef,$domain,$user)=&Apache::lonxml::whichuser();   my (undef,undef,$domain,$user)=&Apache::lonnet::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);
  push(@file_list,'<a href="'.$url.'"><img src="'.$icon.   push(@file_list,'<a href="'.$url.'"><img src="'.$icon.
Line 484  sub show_past_portfile_submission { Line 494  sub show_past_portfile_submission {
   
 }  }
   
 sub checkstatus {  
     my ($value,$awardref,$msgref,$nameref)=@_;  
     for (my $i=0;$i<=$#$awardref;$i++) {  
  if ($$awardref[$i] eq $value) {  
     if (ref($nameref)) {  
  return ($$awardref[$i],$$msgref[$i],$$nameref[$i]);  
     } else {  
  return ($$awardref[$i],$$msgref[$i]);  
     }  
  }  
     }  
     return(undef,undef);  
 }  
   
 sub valid_award {  sub valid_award {
     my ($award) =@_;      my ($award) =@_;
     foreach my $possibleaward ('EXTRA_ANSWER','MISSING_ANSWER', 'ERROR',      foreach my $possibleaward ('EXTRA_ANSWER','MISSING_ANSWER', 'ERROR',
Line 515  sub valid_award { Line 511  sub valid_award {
     return 0;      return 0;
 }  }
   
   {
       my @awards = ('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',
     'COMMA_FAIL', 'SIG_FAIL', 'INCORRECT', 'MISORDERED_RANK',
     'INVALID_FILETYPE', 'DRAFT', 'SUBMITTED', 'ASSIGNED_SCORE',
     'APPROX_ANS', 'EXACT_ANS');
       my $i=0;
       my %fwd_awards = map { ($_,$i++) } @awards;
       my $max=scalar(@awards);
       @awards=reverse(@awards);
       $i=0;
       my %rev_awards = map { ($_,$i++) } @awards;
   
 sub finalizeawards {  sub finalizeawards {
     my ($awardref,$msgref,$nameref,$reverse)=@_;      my ($awardref,$msgref,$nameref,$reverse)=@_;
     my ($result,$award,$msg,$name);      my $result;
     if ($#$awardref == -1) { $result = "NO_RESPONSE"; }      if ($#$awardref == -1) { $result = "NO_RESPONSE"; }
     if ($result eq '' ) {      if ($result eq '' ) {
  my $blankcount;   my $blankcount;
  foreach $award (@$awardref) {   foreach my $award (@$awardref) {
     if ($award eq '') {      if ($award eq '') {
  $result='MISSING_ANSWER';   $result='MISSING_ANSWER';
  $blankcount++;   $blankcount++;
Line 529  sub finalizeawards { Line 541  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); }
   
     # these awards are ordered from most important error through best correct      # these awards are ordered from most important error through best correct
           my $awards = (!$reverse) ? \%fwd_awards : \%rev_awards ;
     my @awards = ('EXTRA_ANSWER', 'MISSING_ANSWER', 'ERROR', 'NO_RESPONSE',  
   'TOO_LONG',      my $best = $max;
   'UNIT_INVALID_INSTRUCTOR', 'UNIT_INVALID_STUDENT',      my $j=0;
   'UNIT_IRRECONCIBLE', 'UNIT_FAIL', 'NO_UNIT',      my $which;
   'UNIT_NOTNEEDED', 'WANTED_NUMERIC', 'BAD_FORMULA',      foreach my $award (@$awardref) {
   'COMMA_FAIL', 'SIG_FAIL', 'INCORRECT', 'MISORDERED_RANK',   if ($awards->{$award} < $best) {
   'INVALID_FILETYPE', 'DRAFT', 'SUBMITTED', 'ASSIGNED_SCORE',      $best  = $awards->{$award};
   'APPROX_ANS', 'EXACT_ANS');      $which = $j;
     if ($reverse) { @awards=reverse(@awards); }   }
     foreach my $possibleaward (@awards) {   $j++;
  ($result,$msg,$name)=&checkstatus($possibleaward,$awardref,$msgref,      }
   $nameref);      if (defined($which)) {
  if (defined($result)) { return ($result,$msg,$name); }   if (ref($nameref)) {
       return ($$awardref[$which],$$msgref[$which],$$nameref[$which]);
    } else {
       return ($$awardref[$which],$$msgref[$which]);
    }
     }      }
     return ('ERROR',undef);      return ('ERROR',undef);
 }  }
   }
   
 sub decideoutput {  sub decideoutput {
     my ($award,$awarded,$awardmsg,$solved,$previous,$target)=@_;      my ($award,$awarded,$awardmsg,$solved,$previous,$target)=@_;
Line 743  sub decideoutput { Line 760  sub decideoutput {
  $message = &mt("Unknown message").": $award";   $message = &mt("Unknown message").": $award";
  $button=1;   $button=1;
     }      }
     my (undef,undef,$domain,$user)=&Apache::lonxml::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 />';      $message.='<br />';

Removed from v.1.206  
changed lines
  Added in v.1.210


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