Diff for /loncom/homework/inputtags.pm between versions 1.276 and 1.293

version 1.276, 2010/12/31 00:58:10 version 1.293, 2011/07/26 17:14:51
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 478  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 528  sub file_selector { Line 571  sub file_selector {
     if ($which eq 'uploadonly' || $which eq 'both') {       if ($which eq 'uploadonly' || $which eq 'both') { 
  $result.=&mt('Submit a file: (only one file per submission)').   $result.=&mt('Submit a file: (only one file per submission)').
     ' <br /><input type="file" size="50" name="HWFILE'.      ' <br /><input type="file" size="50" name="HWFILE'.
     $jspart.'_'.$id.'" /><br />';      $jspart.'_'.$id.'" id="HWFILE'.$jspart.'_'.$id.'" /><br />';
     }      }
     if ( $which eq 'both') {      if ( $which eq 'both') {
  $result.='<br />'.'<strong>'.&mt('OR:').'</strong><br />';   $result.='<br />'.'<strong>'.&mt('OR:').'</strong><br />';
Line 623  sub current_file_submissions { Line 666  sub current_file_submissions {
                         }                          }
                         $result .=                           $result .= 
                             '<td><a href="'.$link.'"><img src="'.$icon.                              '<td><a href="'.$link.'"><img src="'.$icon.
                             '" border="0" />'.$showname.'</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 801  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 819  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 836  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'}=~/\/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 862  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 1088  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 1141  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 1263  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 1274  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 1361  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 1376  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 1394  sub get_grade_messages { Line 1436  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.="/".&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'};      $trial.="/".$Apache::inputtags::params{'maxtries'};
  }   }
     }      }
     $trystr.="</span></td>";      $trystr = '<td><span class="LC_nobreak">'.&mt($tries_text.' [_1]',$trial).'</span.</td>';
  }   }
     }      }
   
Line 1522  sub previous_tries { Line 1566  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;
     }      }

Removed from v.1.276  
changed lines
  Added in v.1.293


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