Diff for /loncom/homework/inputtags.pm between versions 1.248.4.2 and 1.264

version 1.248.4.2, 2009/09/14 17:03:42 version 1.264, 2010/06/17 00:13:20
Line 25 Line 25
 #  #
 # http://www.lon-capa.org/  # http://www.lon-capa.org/
   
   =pod
   
   =head1 NAME
   
   Apache::inputtags
   
   =head1 SYNOPSIS
   
   
   
   This is part of the LearningOnline Network with CAPA project
   described at http://www.lon-capa.org.
   
   
   =head1 NOTABLE SUBROUTINES
   
   =over
   
   =item 
   
   =back
   
   =cut
   
 package Apache::inputtags;  package Apache::inputtags;
 use HTML::Entities();  use HTML::Entities();
 use strict;  use strict;
Line 38  BEGIN { Line 62  BEGIN {
     &Apache::lonxml::register('Apache::inputtags',('hiddenline','textfield','textline'));      &Apache::lonxml::register('Apache::inputtags',('hiddenline','textfield','textline'));
 }  }
   
 #   Initializes a set of global variables used during the parse of the problem.  =pod
 #  
 #  @Apache::inputtags::input        - List of current input ids.  =item initialize_inputtags()
 #  @Apache::inputtags::inputlist    - List of all input ids seen this problem.  
 #  @Apache::inputtags::response     - List of all current resopnse ids.  Initializes a set of global variables used during the parse of the problem.
 #  @Apache::inputtags::responselist - List of all response ids seen this   
 #                                       problem.  @Apache::inputtags::input        - List of current input ids.
 #  @Apache::inputtags::hint         - List of all hint ids.  @Apache::inputtags::inputlist    - List of all input ids seen this problem.
 #  @Apache::inputtags::hintlist     - List of all hint ids seen this problem.  @Apache::inputtags::response     - List of all current resopnse ids.
 #  @Apache::inputtags::previous     - List describing if specific responseds  @Apache::inputtags::responselist - List of all response ids seen this 
 #                                       have been used                                       problem.
 #  @Apache::inputtags::previous_version - Submission responses were used in.  @Apache::inputtags::hint         - List of all hint ids.
 #  $Apache::inputtags::part         - Current part id (valid only in   @Apache::inputtags::hintlist     - List of all hint ids seen this problem.
 #                                       <problem>)  @Apache::inputtags::previous     - List describing if specific responseds
 #                                     0 if not in a part.                                       have been used
 #  @Apache::inputtags::partlist     - List of part ids seen in the current  @Apache::inputtags::previous_version - Submission responses were used in.
 #                                       <problem>  $Apache::inputtags::part         - Current part id (valid only in 
 #  @Apache::inputtags::status       - List of problem  statuses. First                                        <problem>)
 #                                     element is the status of the <problem>                                     0 if not in a part.
 #                                     the remainder are for individual <part>s.  @Apache::inputtags::partlist     - List of part ids seen in the current
 #  %Apache::inputtags::params       - Hash of defined parameters for the                                       <problem>
 #                                     current response.  @Apache::inputtags::status       - List of problem  statuses. First 
 #  @Apache::inputtags::import       - List of all ids for <import> thes get                                     element is the status of the <problem>
 #                                     join()ed and prepended.                                     the remainder are for individual <part>s.
 #  @Apache::inputtags::importlist   - List of all import ids seen.  %Apache::inputtags::params       - Hash of defined parameters for the
 #  $Apache::inputtags::response_with_no_part                                     current response.
 #                                   - Flag set true if we have seen a response  @Apache::inputtags::import       - List of all ids for <import> thes get
 #                                     that is not inside a <part>                                     join()ed and prepended.
 #  %Apache::inputtags::answertxt    - <*response> tags store correct  @Apache::inputtags::importlist   - List of all import ids seen.
 #                                     answer strings for display by <textline/>  $Apache::inputtags::response_with_no_part
 #                                     in this hash.                                   - Flag set true if we have seen a response
 #  %Apache::inputtags::submission_display                                     that is not inside a <part>
 #                                   - <*response> tags store improved display  %Apache::inputtags::answertxt    - <*response> tags store correct
 #                                     of submission strings for display by part                                     answer strings for display by <textline/>
 #                                     end.                                     in this hash.
   %Apache::inputtags::submission_display
                                    - <*response> tags store improved display
                                      of submission strings for display by part
                                      end.
   
   =cut
   
 sub initialize_inputtags {  sub initialize_inputtags {
     @Apache::inputtags::input=();      @Apache::inputtags::input=();
Line 358  sub start_textline { Line 388  sub start_textline {
      && $Apache::lonhomework::type ne 'exam') {       && $Apache::lonhomework::type ne 'exam') {
  my $size = &Apache::lonxml::get_param('size',$parstack,$safeeval);   my $size = &Apache::lonxml::get_param('size',$parstack,$safeeval);
  if ($size != 0) {$size=$size*2; $size.=' mm';} else {$size='40 mm';}   if ($size != 0) {$size=$size*2; $size.=' mm';} else {$size='40 mm';}
  if ($env{'form.pdfFormFields'} eq 'yes') {   if ($env{'form.pdfFormFields'} eq 'yes'
               && $Apache::inputtags::status[-1] eq 'CAN_ANSWER') {
             my $fieldname = $env{'request.symb'}.              my $fieldname = $env{'request.symb'}.
                                  '&part_'. $Apache::inputtags::part.                                   '&part_'. $Apache::inputtags::part.
                                  '&textresponse'.                                   '&textresponse'.
                                  '&HWVAL_' . $Apache::inputtags::response['-1'];                                   '&HWVAL_' . $Apache::inputtags::response['-1'];
             $result="\n\\\\\n".'\textField{'.$fieldname.'}{'.$size.'}{12 bp}';              $result='\textField{'.$fieldname.'}{'.$size.'}{12 bp}';
         } else {          } else {
             $result='\framebox['.$size.'][s]{\tiny\strut}';              $result='\framebox['.$size.'][s]{\tiny\strut}';
         }          }
Line 424  sub end_hiddenline { Line 455  sub end_hiddenline {
     return "";      return "";
 }  }
   
 # $part -> partid  =pod
 # $id -> responseid  
 # $uploadefiletypes -> comma seperated list of extensions allowed or * for any  =item file_selector()
 # $which -> 'uploadonly'  -> only newly uploaded files  
 #           'portfolioonly' -> only allow files from portfolio  $part -> partid
 #           'both' -> allow files from either location  $id -> responseid
 # $extratext -> additional text to go between the link and the input box  $uploadefiletypes -> comma seperated list of extensions allowed or * for any
 # $maxfilesize -> maximum cumulative filesize for submitted files (in MB).  $which -> 'uploadonly'  -> only newly uploaded files
 # returns a table row <tr>             'portfolioonly' -> only allow files from portfolio
             'both' -> allow files from either location
   $extratext -> additional text to go between the link and the input box
   $maxfilesize -> maximum cumulative filesize for submitted files (in MB).
   returns a table row <tr> 
   
   =cut
   
 sub file_selector {  sub file_selector {
     my ($part,$id,$uploadedfiletypes,$which,$extratext,$maxfilesize)=@_;      my ($part,$id,$uploadedfiletypes,$which,$extratext,$maxfilesize)=@_;
     if (!$uploadedfiletypes) { return ''; }      if (!$uploadedfiletypes) { return ''; }
Line 445  sub file_selector { Line 483  sub file_selector {
     $result.='<tr><td>';      $result.='<tr><td>';
     if (($uploadedfiletypes ne '*') || ($maxfilesize)) {      if (($uploadedfiletypes ne '*') || ($maxfilesize)) {
         if ($uploadedfiletypes ne '*') {          if ($uploadedfiletypes ne '*') {
             $result.=      $result.=
                 &mt('Allowed filetypes: [_1]','<b>'.$uploadedfiletypes.'</b>').'<br />';          &mt('Allowed filetypes: [_1]','<b>'.$uploadedfiletypes.'</b>').'<br />';
         }          }
         if ($maxfilesize) {          if ($maxfilesize) {
             $result.=&mt('Combined size of files not to exceed: [_1] MB[_2].',              $result.=&mt('Combined size of files not to exceed: [_1] MB[_2].',
Line 486  sub show_past_file_submission { Line 524  sub show_past_file_submission {
     my $icon=&Apache::loncommon::icon($url);      my $icon=&Apache::loncommon::icon($url);
     my $curfile='<a href="'.$url.'"><img src="'.$icon.      my $curfile='<a href="'.$url.'"><img src="'.$icon.
  '" border="0" />'.$uploadedfile.'</a>';   '" border="0" />'.$uploadedfile.'</a>';
     return &mt('Currently submitted: <tt>[_1]</tt>',$curfile);      return &mt('Currently submitted: [_1]','<tt>'.$curfile.'</tt>');
   
 }  }
   
Line 516  sub show_past_portfile_submission { Line 554  sub show_past_portfile_submission {
  my $bad_files = '<span class="LC_filename">'.   my $bad_files = '<span class="LC_filename">'.
     join('</span>, <span class="LC_filename">',@bad_file_list).      join('</span>, <span class="LC_filename">',@bad_file_list).
     '</span>';      '</span>';
  $result.='<br />'.&mt('<span class="LC_error">These file(s) don\'t exist:</span> [_1]',$bad_files);   $result.='<p><span class="LC_error">'
                   .&mt("These file(s) don't exist: [_1]",$bad_files)
                   .'</span></p>';
     }      }
     return $result;      return $result;
   
Line 532  sub valid_award { Line 572  sub valid_award {
        'UNIT_NOTNEEDED', 'WANTED_NUMERIC',         'UNIT_NOTNEEDED', 'WANTED_NUMERIC',
        'BAD_FORMULA', 'INTERNAL_ERROR', 'SIG_FAIL', 'INCORRECT',          'BAD_FORMULA', 'INTERNAL_ERROR', 'SIG_FAIL', 'INCORRECT', 
        'MISORDERED_RANK', 'INVALID_FILETYPE',         'MISORDERED_RANK', 'INVALID_FILETYPE',
                                'EXCESS_FILESIZE', 'DRAFT',                                 'EXCESS_FILESIZE', 'FILENAME_INUSE', 
        'SUBMITTED', 'ASSIGNED_SCORE',         'DRAFT', 'SUBMITTED', 'SUBMITTED_CREDIT', 
        'APPROX_ANS', 'EXACT_ANS','COMMA_FAIL') {                                 'ANONYMOUS', 'ANONYMOUS_CREDIT',
                                  'ASSIGNED_SCORE', 'APPROX_ANS',
          'EXACT_ANS','COMMA_FAIL') {
  if ($award eq $possibleaward) { return 1; }   if ($award eq $possibleaward) { return 1; }
     }      }
     return 0;      return 0;
Line 547  sub valid_award { Line 589  sub valid_award {
   'UNIT_IRRECONCIBLE', 'UNIT_FAIL', 'NO_UNIT',    'UNIT_IRRECONCIBLE', 'UNIT_FAIL', 'NO_UNIT',
   'UNIT_NOTNEEDED', 'WANTED_NUMERIC', 'BAD_FORMULA', 'INTERNAL_ERROR',    'UNIT_NOTNEEDED', 'WANTED_NUMERIC', 'BAD_FORMULA', 'INTERNAL_ERROR',
   'COMMA_FAIL', 'SIG_FAIL', 'INCORRECT', 'MISORDERED_RANK',    'COMMA_FAIL', 'SIG_FAIL', 'INCORRECT', 'MISORDERED_RANK',
   'INVALID_FILETYPE', 'EXCESS_FILESIZE', 'DRAFT', 'SUBMITTED',    'INVALID_FILETYPE', 'EXCESS_FILESIZE', 'FILENAME_INUSE', 
                     'DRAFT', 'SUBMITTED',
                     'SUBMITTED_CREDIT', 'ANONYMOUS', 'ANONYMOUS_CREDIT',
                   'ASSIGNED_SCORE', 'APPROX_ANS', 'EXACT_ANS');                    'ASSIGNED_SCORE', 'APPROX_ANS', 'EXACT_ANS');
     my $i=0;      my $i=0;
     my %fwd_awards = map { ($_,$i++) } @awards;      my %fwd_awards = map { ($_,$i++) } @awards;
Line 571  sub hide_award { Line 615  sub hide_award {
  return 1;   return 1;
     }      }
     if ($award =~      if ($award =~
  /^(?:EXACT_ANS|APPROX_ANS|SUBMITTED|ASSIGNED_SCORE|INCORRECT)/) {   /^(?:EXACT_ANS|APPROX_ANS|SUBMITTED|SUBMITTED_CREDIT|ANONYMOUS|ANONYMOUS_CREDIT|ASSIGNED_SCORE|INCORRECT)/) {
  return 1;   return 1;
     }      }
     return 0;      return 0;
Line 642  sub finalizeawards { Line 686  sub finalizeawards {
   
 sub decideoutput {  sub decideoutput {
     my ($award,$awarded,$awardmsg,$solved,$previous,$target)=@_;      my ($award,$awarded,$awardmsg,$solved,$previous,$target)=@_;
   
     my $message='';      my $message='';
     my $button=0;      my $button=0;
     my $previousmsg;      my $previousmsg;
Line 695  sub decideoutput { Line 740  sub decideoutput {
       '.disable_receipt_display'} ne 'yes') &&        '.disable_receipt_display'} ne 'yes') &&
                     ($Apache::lonhomework::type ne 'practice')) {                       ($Apache::lonhomework::type ne 'practice')) { 
     $message.=(($target eq 'web')?'<br />':' ').      $message.=(($target eq 'web')?'<br />':' ').
  &mt('Your receipt is [_1]',   &mt('Your receipt no. is [_1]',
     (&Apache::lonnet::receipt($Apache::inputtags::part).      (&Apache::lonnet::receipt($Apache::inputtags::part).
      (($target eq 'web')?&Apache::loncommon::help_open_topic('Receipt'):'')));       (($target eq 'web')?&Apache::loncommon::help_open_topic('Receipt'):'')));
  }   }
Line 776  sub decideoutput { Line 821  sub decideoutput {
         $message = &mt('Submission won\'t be graded. The combined size of submitted files exceeded the amount allowed.');          $message = &mt('Submission won\'t be graded. The combined size of submitted files exceeded the amount allowed.');
         $css_class=$possible_class{'not_charged_try'};          $css_class=$possible_class{'not_charged_try'};
         $button=1;          $button=1;
       } elsif ($award eq 'FILENAME_INUSE') {
           $message = &mt('You have already uploaded a file with that filename.');
           if ($target eq 'tex') {
               $message.= "\\\\\n";
           } else {
               $message .= '<br />';
           }
           $message .= &mt('Please use a different file name.');
           $css_class=$possible_class{'not_charged_try'};
           $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.");
  $css_class=$possible_class{'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);
  $css_class=$possible_class{'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') {
Line 829  sub decideoutput { Line 884  sub decideoutput {
  $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.");
         if ($env{'request.uri'} eq '/res/gci/gci/internal/submission.problem') {  
             if ($target eq 'web') {  
                 $message .= '<br />'.&mt('Thank you for making a submission to the Geosciences Concept Inventory via the GCI Web Center.');  
             }  
         }  
  $css_class=$possible_class{'no_grade'};   $css_class=$possible_class{'no_grade'};
  $button=1;   $button=1;
       } elsif ($award eq 'SUBMITTED_CREDIT') {
           $message = &mt("Your submission has been recorded, and credit awarded.");
           $css_class=$possible_class{'correct'};
           $button=1;
       } elsif ($award eq 'ANONYMOUS') {
           $message = &mt("Your anonymous submission has been recorded.");
           $css_class=$possible_class{'no_grade'};
           $button=1;
       } elsif ($award eq 'ANONYMOUS_CREDIT') {
           $message = &mt("Your anonymous submission has been recorded, and credit awarded.");
           $css_class=$possible_class{'correct'};
     } elsif ($award eq 'DRAFT') {      } elsif ($award eq 'DRAFT') {
  $message = &mt("A draft copy has been saved.");   $message = &mt("Copy saved but not submitted.");
  $css_class=$possible_class{'not_charged_try'};   $css_class=$possible_class{'not_charged_try'};
  $button=1;   $button=1;
     } elsif ($award eq 'ASSIGNED_SCORE') {      } elsif ($award eq 'ASSIGNED_SCORE') {
Line 886  sub decideoutput { Line 947  sub decideoutput {
     if (&Apache::lonhomework::hide_problem_status()      if (&Apache::lonhomework::hide_problem_status()
  && $Apache::inputtags::status[-1] ne 'SHOW_ANSWER'   && $Apache::inputtags::status[-1] ne 'SHOW_ANSWER'
  && &hide_award($award)) {   && &hide_award($award)) {
         if ($env{'request.uri'} eq '/res/gci/gci/internal/submission.problem') {   $message = &mt("Answer Submitted: Your final submission will be graded after the due date.");
             if ($target eq 'web') {  
                 $message = &mt("Your submission has been recorded.").'<br />'.  
                            &mt('Thank you for making a submission to the Geosciences Concept Inventory via the GCI Web Center.');  
             }  
         } else {  
             $message = &mt("Answer Submitted: Your final submission will be graded after the due date.");  
         }  
  $css_class=$possible_class{'no_grade'};   $css_class=$possible_class{'no_grade'};
  $button=1;   $button=1;
     }      }
Line 1006  sub setgradedata { Line 1060  sub setgradedata {
     $Apache::lonhomework::results{"resource.$id.solved"} =      $Apache::lonhomework::results{"resource.$id.solved"} =
  $solvemsg;   $solvemsg;
     $Apache::lonhomework::results{"resource.$id.awarded"} = '1';      $Apache::lonhomework::results{"resource.$id.awarded"} = '1';
           } elsif ( $award eq 'SUBMITTED_CREDIT' ) {
               $Apache::lonhomework::results{"resource.$id.tries"} =
                   $Apache::lonhomework::history{"resource.$id.tries"} + 1;
               $Apache::lonhomework::results{"resource.$id.solved"} =
                   'credit_attempted';
               $Apache::lonhomework::results{"resource.$id.awarded"} = '1';
           }  elsif ( $award eq 'ANONYMOUS_CREDIT' ) {
               $Apache::lonhomework::results{"resource.$id.tries"} =
                   $Apache::lonhomework::history{"resource.$id.tries"} + 1;
               $Apache::lonhomework::results{"resource.$id.solved"} =
                   'credit_attempted';
               $Apache::lonhomework::results{"resource.$id.awarded"} = '1';
  } 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;
Line 1020  sub setgradedata { Line 1086  sub setgradedata {
  $Apache::lonhomework::history{"resource.$id.tries"} + 1;   $Apache::lonhomework::history{"resource.$id.tries"} + 1;
     $Apache::lonhomework::results{"resource.$id.solved"} =      $Apache::lonhomework::results{"resource.$id.solved"} =
  'ungraded_attempted';   'ungraded_attempted';
           }  elsif ( $award eq 'ANONYMOUS' ) {
               $Apache::lonhomework::results{"resource.$id.tries"} =
                   $Apache::lonhomework::history{"resource.$id.tries"} + 1;
               $Apache::lonhomework::results{"resource.$id.solved"} =
                   'ungraded_attempted';
  } elsif ( $award eq 'DRAFT' ) {   } elsif ( $award eq 'DRAFT' ) {
     $Apache::lonhomework::results{"resource.$id.solved"} = '';      $Apache::lonhomework::results{"resource.$id.solved"} = '';
  } elsif ( $award eq 'NO_RESPONSE' ) {   } elsif ( $award eq 'NO_RESPONSE' ) {
Line 1079  sub setgradedata { Line 1150  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::type eq 'anonsurveycred')) {
           $Apache::lonhomework::results{"resource.$id.type"} = $Apache::lonhomework::type;
       }
 }  }
   
 sub find_which_previous {  sub find_which_previous {
Line 1191  sub get_grade_messages { Line 1266  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=&mt('Tries');      my $tries_text= &get_tries_text();;
     if ( $Apache::lonhomework::type eq 'survey' ||  
  $Apache::lonhomework::parsing_a_task) {  
  $tries_text=&mt('Submissions');  
     }  
   
     if ($showbutton) {      if ($showbutton) {
  if ($target eq 'tex') {   if ($target eq 'tex') {
     if ($env{'request.state'} ne "construct"      if ($env{'request.state'} ne "construct"
Line 1208  sub get_grade_messages { Line 1278  sub get_grade_messages {
  $trystr = '\vskip 0 mm ';   $trystr = '\vskip 0 mm ';
     }      }
  } else {   } else {
             $trystr = '<td><span class="LC_nobreak">';      $trystr = '<td><span class="LC_nobreak">'.&mt($tries_text)." $tries";
             my %parmhash=&Apache::lonnet::coursedescription($env{'request.course.id'});      if ($Apache::lonhomework::parsing_a_task) {
             if ($parmhash{'suppress_tries'} ne 'yes') {      } elsif($env{'request.state'} ne 'construct') {
                 $trystr .= "$tries_text $tries";   $trystr.="/$maxtries";
         if ($Apache::lonhomework::parsing_a_task) {      } else {
         } elsif($env{'request.state'} ne 'construct') {   if (defined($Apache::inputtags::params{'maxtries'})) {
     $trystr.="/$maxtries";      $trystr.="/".$Apache::inputtags::params{'maxtries'};
         } else {   }
     if (defined($Apache::inputtags::params{'maxtries'})) {      }
         $trystr.="/".$Apache::inputtags::params{'maxtries'};  
     }  
         }  
             }  
     $trystr.="</span></td>";      $trystr.="</span></td>";
  }   }
     }      }
Line 1261  sub gradestatus { Line 1327  sub gradestatus {
  if ( $status eq 'SHOW_ANSWER') {   if ( $status eq 'SHOW_ANSWER') {
     undef($previousmsg);      undef($previousmsg);
  }   }
  if ( $showbutton ) {   if ( $showbutton ) { 
             if ($target ne 'tex') {      if ($target ne 'tex') {
                 my $submit_text = &mt('Submit Answer');  
                 if ($env{'request.uri'} eq '/res/gci/gci/internal/submission.problem') {  
                     $submit_text = &mt('Submit Questions');  
                 }  
  $button =    $button = 
     '<input               '<input onmouseup="javascript:setSubmittedPart(\''.$id.'\');this.form.action+=\'#'.&escape($id).'\';"
                           onmouseup="javascript:setSubmittedPart(\''.$id.'\')"                      type="submit" name="submit_'.$id.'"
                            onsubmit="javascript:setSubmittedPart(\''.$id.'\')"                      value="'.&mt('Submit Answer').'" />';
                         type="submit" name="submit_'.$id.'"  
                          value="'.$submit_text.'" />';  
     }      }
  }   }
   
Line 1305  sub previous_tries { Line 1365  sub previous_tries {
   
     foreach my $i (1..$Apache::lonhomework::history{'version'}) {      foreach my $i (1..$Apache::lonhomework::history{'version'}) {
  my $prefix = $i.":resource.$id";   my $prefix = $i.":resource.$id";
           my $is_anon; 
           if (defined($env{'form.grade_symb'})) {
               if (($Apache::lonhomework::history{"$prefix.type"} eq 'anonsurvey') || 
                   ($Apache::lonhomework::history{"$prefix.type"} eq 'anonsurveycred')) {
                   $is_anon = 1;
               }
           }
  next if (!exists($Apache::lonhomework::history{"$prefix.award"}));   next if (!exists($Apache::lonhomework::history{"$prefix.award"}));
  $count++;   $count++;
  $count_lookup{$i} = $count;   $count_lookup{$i} = $count;
Line 1350  sub previous_tries { Line 1416  sub previous_tries {
     $submission =       $submission = 
  $Apache::lonhomework::history{"$prefix.submission"};   $Apache::lonhomework::history{"$prefix.submission"};
  }   }
  $output.='<td>'.$submission.'</td>';                  if ($is_anon) {
                       $output.='<td>'.&mt('(only shown to submitter)').'</td>';
                   } else {
       $output.='<td>'.$submission.'</td>';
                   }
     } else {      } else {
  $output.='<td></td>';   $output.='<td></td>';
     }      }
Line 1368  sub previous_tries { Line 1438  sub previous_tries {
     $output.='<br /><form action=""><center><input type="button" name="close" value="'.&mt('Close Window').'" onClick="window.close()" /></center></form>';      $output.='<br /><form action=""><center><input type="button" name="close" value="'.&mt('Close Window').'" onClick="window.close()" /></center></form>';
   
     my $windowopen=&Apache::lonhtmlcommon::javascript_docopen();      my $windowopen=&Apache::lonhtmlcommon::javascript_docopen();
       my $tries_text = &get_tries_text('link');
     my $start_page =      my $start_page =
  &Apache::loncommon::start_page('Previous Tries', undef,   &Apache::loncommon::start_page($tries_text, undef,
        {'only_body'      => 1,         {'only_body'      => 1,
  'bgcolor'        => '#FFFFFF',   'bgcolor'        => '#FFFFFF',
  'js_ready'       => 1,   'js_ready'       => 1,
Line 1380  sub previous_tries { Line 1451  sub previous_tries {
     $prefix =~ tr{.}{_};      $prefix =~ tr{.}{_};
     my $function_name = "LONCAPA_previous_tries_".$prefix.      my $function_name = "LONCAPA_previous_tries_".$prefix.
  $Apache::lonxml::curdepth.'_'.$env{'form.counter'};   $Apache::lonxml::curdepth.'_'.$env{'form.counter'};
     my $triestext = &mt('Previous Tries');  
     if ($env{'request.uri'} eq '/res/gci/gci/internal/submission.problem') {  
         $triestext = &mt('Submission History');  
     }  
     my $result ="<script type=\"text/javascript\">      my $result ="<script type=\"text/javascript\">
 // <![CDATA[  // <![CDATA[
     function $function_name() {newWindow=open('','new_W','width=500,height=500,scrollbars=1,resizable=yes');newWindow.$windowopen;newWindow.document.writeln('$start_page $output $end_page');newWindow.document.close();newWindow.focus()}      function $function_name() {newWindow=open('','new_W','width=500,height=500,scrollbars=1,resizable=yes');newWindow.$windowopen;newWindow.document.writeln('$start_page $output $end_page');newWindow.document.close();newWindow.focus()}
 // ]]>  // ]]>
 </script><a href=\"javascript:$function_name();void(0);\">".$triestext."</a><br />";  </script><a href=\"javascript:$function_name();void(0);\">".&mt($tries_text)."</a><br />";
     #use Data::Dumper;      #use Data::Dumper;
     #&Apache::lonnet::logthis(&Dumper(\%Apache::inputtags::submission_display));      #&Apache::lonnet::logthis(&Dumper(\%Apache::inputtags::submission_display));
     return $result;      return $result;
 }  }
   
   sub get_tries_text {
       my ($context) = @_;
       my $tries_text;
       if ($context eq 'link') {
           $tries_text = 'Previous Tries';
       } else {
           $tries_text = 'Tries';
       }
       if ( $Apache::lonhomework::type eq 'survey' ||
            $Apache::lonhomework::type eq 'surveycred' ||
            $Apache::lonhomework::type eq 'anonsurvey' ||
            $Apache::lonhomework::type eq 'anonsurveycred' ||
            $Apache::lonhomework::parsing_a_task) {
           if ($context eq 'link') {
               $tries_text = 'Previous Submissions';
           } else {
               $tries_text = 'Submissions';
           }
       }
       return $tries_text;
   }
   
 1;  1;
 __END__  __END__
   
   =pod
   
   =back
   
   =cut
     

Removed from v.1.248.4.2  
changed lines
  Added in v.1.264


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