Diff for /loncom/homework/inputtags.pm between versions 1.271.2.6 and 1.290

version 1.271.2.6, 2011/03/05 23:01:35 version 1.290, 2011/06/06 23:28:42
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 354  sub start_textline { Line 354  sub start_textline {
             unless ($newvariation) {              unless ($newvariation) {
         $oldresponse = $Apache::lonhomework::history{"resource.$partid.$id.submission"};          $oldresponse = $Apache::lonhomework::history{"resource.$partid.$id.submission"};
         &Apache::lonxml::debug("oldresponse $oldresponse is ".ref($oldresponse));          &Apache::lonxml::debug("oldresponse $oldresponse is ".ref($oldresponse));
   
         if (ref($oldresponse) eq 'ARRAY') {          if (ref($oldresponse) eq 'ARRAY') {
     $oldresponse = $oldresponse->[$#Apache::inputtags::inputlist];      $oldresponse = $oldresponse->[$#Apache::inputtags::inputlist];
         }          }
Line 479  sub end_hiddenline { Line 478  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 686  sub valid_award { Line 728  sub valid_award {
        'UNIT_FAIL', 'NO_UNIT',         'UNIT_FAIL', 'NO_UNIT',
        'UNIT_NOTNEEDED', 'WANTED_NUMERIC',         'UNIT_NOTNEEDED', 'WANTED_NUMERIC',
        'BAD_FORMULA', 'NOT_FUNCTION', 'WRONG_FORMAT',          'BAD_FORMULA', 'NOT_FUNCTION', 'WRONG_FORMAT', 
        'INTERNAL_ERROR', 'SIG_FAIL', 'INCORRECT',                                  '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 704  sub valid_award { Line 746  sub valid_award {
   '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',  'NOT_FUNCTION',     'UNIT_NOTNEEDED', 'WANTED_NUMERIC', 'BAD_FORMULA',  'NOT_FUNCTION', 
   'WRONG_FORMAT', 'INTERNAL_ERROR',                    '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 802  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 820  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)); 
   #
   # 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)? ''      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 863  sub decideoutput { Line 911  sub decideoutput {
  }   }
     }      }
  }   }
  $button=0;          if ($awarded==1) { $button=0; } else { $button=1; }
  $previousmsg='';   $previousmsg='';
     } elsif ($solved =~ /^excused/) {      } elsif ($solved =~ /^excused/) {
  if ($target eq 'tex') {   if ($target eq 'tex') {
Line 999  sub decideoutput { Line 1047  sub decideoutput {
         $message = &mt("Wrong format").'.';          $message = &mt("Wrong format").'.';
         $css_class=$possible_class{'not_charged_try'};          $css_class=$possible_class{'not_charged_try'};
         $button=1;          $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'};
         $button=1;          $button=1;
Line 1089  sub decideoutput { Line 1137  sub decideoutput {
        }         }
        $message.=&mt('Submissions to practice problems are not permanently recorded.');         $message.=&mt('Submissions to practice problems are not permanently recorded.');
     }      }
   
     return ($button,$css_class,$message,$previousmsg);      return ($button,$css_class,$message,$previousmsg);
 }  }
   
Line 1142  sub setgradedata { Line 1189  sub setgradedata {
  $Apache::inputtags::status['-1'] ne 'CANNOT_ANSWER') {   $Apache::inputtags::status['-1'] ne 'CANNOT_ANSWER') {
  $Apache::lonhomework::results{"resource.$id.afterduedate"}=$award;   $Apache::lonhomework::results{"resource.$id.afterduedate"}=$award;
  return '';   return '';
     } elsif ( $Apache::lonhomework::history{"resource.$id.solved"} !~      } elsif ( $Apache::lonhomework::history{"resource.$id.awarded"} < 1
       /^correct/   
       || $Apache::lonhomework::scantronmode         || $Apache::lonhomework::scantronmode 
       || &Apache::lonhomework::hide_problem_status()  ) {        || &Apache::lonhomework::hide_problem_status()  ) {
         # the student doesn't already have it correct,          # the student doesn't already have it correct,
Line 1264  sub setgradedata { Line 1310  sub setgradedata {
  $Apache::lonhomework::results{"resource.$id.previous"} = '0';   $Apache::lonhomework::results{"resource.$id.previous"} = '0';
     }      }
  }   }
     } elsif ( $Apache::lonhomework::history{"resource.$id.solved"} =~      } elsif ( $Apache::lonhomework::history{"resource.$id.awarded"} == 1 ) {
       /^correct/ ) {  
  #delete all data as they student already has it correct   #delete all data as they student already has it correct
  &removealldata($id);   &removealldata($id);
  #and since they didn't do anything we were never here   #and since they didn't do anything we were never here
Line 1275  sub setgradedata { Line 1320  sub setgradedata {
     if ($award eq 'SUBMITTED') {      if ($award eq 'SUBMITTED') {
  &Apache::response::add_to_gradingqueue();   &Apache::response::add_to_gradingqueue();
     }      }
     if (($Apache::lonhomework::type eq 'anonsurvey') ||      $Apache::lonhomework::results{"resource.$id.type"} = $Apache::lonhomework::type;
         ($Apache::lonhomework::type eq 'anonsurveycred') ||      $Apache::lonhomework::results{"resource.$id.duedate"} = &Apache::lonnet::EXT("resource.$id.duedate");
         ($Apache::lonhomework::type eq 'randomizetry')) {      $Apache::lonhomework::results{"resource.$id.hinttries"} = &Apache::lonnet::EXT("resource.$id.hinttries");
         $Apache::lonhomework::results{"resource.$id.type"} = $Apache::lonhomework::type;      $Apache::lonhomework::results{"resourse.$id.version"} = &Apache::lonnet::usedversion(); 
     }  
     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 1362  sub grade { Line 1403  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 1377  sub get_grade_messages { Line 1418  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 1410  sub get_grade_messages { Line 1451  sub get_grade_messages {
     $trystr = '<td><span class="LC_nobreak">'.&mt($tries_text)." $tries";      $trystr = '<td><span class="LC_nobreak">'.&mt($tries_text)." $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";   $trystr.="/".&Apache::lonhtmlcommon::direct_parm_link($maxtries,$env{'request.symb'},'maxtries',$id,$target);
     } else {      } else {
  if (defined($Apache::inputtags::params{'maxtries'})) {   if (defined($Apache::inputtags::params{'maxtries'})) {
     $trystr.="/".$Apache::inputtags::params{'maxtries'};      $trystr.="/".$Apache::inputtags::params{'maxtries'};
Line 1506  sub previous_tries { Line 1547  sub previous_tries {
  $count++;   $count++;
  $count_lookup{$i} = $count;   $count_lookup{$i} = $count;
         my $curr_rndseed = $Apache::lonhomework::history{"$prefix.rndseed"};          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 1542  sub previous_tries { Line 1582  sub previous_tries {
                 if ($curr_rndseed ne $lastrndseed) {                  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>';                      $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="([^"]*)"}); #"

Removed from v.1.271.2.6  
changed lines
  Added in v.1.290


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