Diff for /loncom/interface/lonprintout.pm between versions 1.431 and 1.439

version 1.431, 2006/03/15 22:11:04 version 1.439, 2006/05/30 12:46:09
Line 42  use Apache::lonratedt; Line 42  use Apache::lonratedt;
 use POSIX qw(strftime);  use POSIX qw(strftime);
 use Apache::lonlocal;  use Apache::lonlocal;
 use Carp;  use Carp;
   use lib '/home/httpd/lib/perl/';
   use LONCAPA;
   
 my %perm;  my %perm;
   
Line 707  sub get_name { Line 709  sub get_name {
 sub get_course {  sub get_course {
     my $courseidinfo;      my $courseidinfo;
     if (defined($env{'request.course.id'})) {      if (defined($env{'request.course.id'})) {
  $courseidinfo = &Apache::lonxml::latex_special_symbols(&Apache::lonnet::unescape($env{'course.'.$env{'request.course.id'}.'.description'}),'header');   $courseidinfo = &Apache::lonxml::latex_special_symbols(&unescape($env{'course.'.$env{'request.course.id'}.'.description'}),'header');
     }      }
     return $courseidinfo;      return $courseidinfo;
 }  }
Line 1022  sub output_data { Line 1024  sub output_data {
     my ($r,$helper,$rparmhash) = @_;      my ($r,$helper,$rparmhash) = @_;
     my %parmhash = %$rparmhash;      my %parmhash = %$rparmhash;
     my $resources_printed = '';      my $resources_printed = '';
     my $html=&Apache::lonxml::xmlbegin();      my $js = <<ENDPART;
     my $headtag     = &Apache::loncommon::headtag('Preparing Printout');  <script type="text/javascript">
     my $end_headtag = &Apache::loncommon::endheadtag();  
     my $bodytag     = &Apache::loncommon::bodytag('Preparing Printout');  
     $r->print(<<ENDPART);  
 $html  
 $headtag  
 <script type="text/javascript" language="Javascript">  
     var editbrowser;      var editbrowser;
     function openbrowser(formname,elementname,only,omit) {      function openbrowser(formname,elementname,only,omit) {
         var url = '/res/?';          var url = '/res/?';
Line 1053  $headtag Line 1049  $headtag
         editbrowser.focus();          editbrowser.focus();
     }      }
 </script>  </script>
 $end_headtag  
 $bodytag  
 <p>  
 Please stand by while processing your print request, this may take some time ...  
 </p>  
 ENDPART  ENDPART
   
       my $start_page  = &Apache::loncommon::start_page('Preparing Printout',$js);
       my $msg = &mt('Please stand by while processing your print request, this may take some time ...');
   
       $r->print($start_page."\n<p>\n$msg\n</p>\n");
   
     # fetch the pagebreaks and store them in the course environment      # fetch the pagebreaks and store them in the course environment
     # The page breaks will be pulled into the hash %page_breaks which is      # The page breaks will be pulled into the hash %page_breaks which is
Line 1330  ENDPART Line 1324  ENDPART
  $resources_printed .= $urlp.':';   $resources_printed .= $urlp.':';
   
  &Apache::lonxml::remember_problem_counter();   &Apache::lonxml::remember_problem_counter();
   
  $texversion.=&Apache::lonnet::ssi($urlp,%form);   $texversion.=&Apache::lonnet::ssi($urlp,%form);
  if ($urlp=~/\.page$/) {   if ($urlp=~/\.page$/) {
     ($texversion,my $number_of_columns_page) = &page_cleanup($texversion);      ($texversion,my $number_of_columns_page) = &page_cleanup($texversion);
Line 1679  ENDPART Line 1672  ENDPART
        $selectionmade,          $selectionmade, 
        $helper->{'VARS'}->{'ANSWER_TYPE'});         $helper->{'VARS'}->{'ANSWER_TYPE'});
     }      }
     #changes page's parameters for the one column output       &Apache::lonnet::logthis("Resetting page e.g. height -> $helper->{'VARS'}->{'pagesize.height'}");
     if ($numberofcolumns == 1) {      &Apache::lonnet::logthis("Before: $result \n--------------------------\n");
  $result =~ s/\\textwidth\s*=\s*-?\d*\.?\d*\s*(cm|mm|in)/\\textwidth= $helper->{'VARS'}->{'pagesize.width'} $helper->{'VARS'}->{'pagesize.widthunit'} /;      $result =~ s/\\textwidth\s*=\s*-?\d*\.?\d*\s*(cm|mm|in)/\\textwidth= $helper->{'VARS'}->{'pagesize.width'} $helper->{'VARS'}->{'pagesize.widthunit'} /;
  $result =~ s/\\textheight\s*=\s*-?\d*\.?\d*\s*(cm|mm|in)/\\textheight $helper->{'VARS'}->{'pagesize.height'} $helper->{'VARS'}->{'pagesize.heightunit'} /;      $result =~ s/\\textheight\s*=?\s*-?\d*\.?\d*\s*(cm|mm|in)/\\textheight $helper->{'VARS'}->{'pagesize.height'} $helper->{'VARS'}->{'pagesize.heightunit'} /;
  $result =~ s/\\evensidemargin\s*=\s*-?\d*\.?\d*\s*(cm|mm|in)/\\evensidemargin= $helper->{'VARS'}->{'pagesize.lmargin'} $helper->{'VARS'}->{'pagesize.lmarginunit'} /;      $result =~ s/\\evensidemargin\s*=\s*-?\d*\.?\d*\s*(cm|mm|in)/\\evensidemargin= $helper->{'VARS'}->{'pagesize.lmargin'} $helper->{'VARS'}->{'pagesize.lmarginunit'} /;
  $result =~ s/\\oddsidemargin\s*=\s*-?\d*\.?\d*\s*(cm|mm|in)/\\oddsidemargin= $helper->{'VARS'}->{'pagesize.lmargin'} $helper->{'VARS'}->{'pagesize.lmarginunit'} /;      $result =~ s/\\oddsidemargin\s*=\s*-?\d*\.?\d*\s*(cm|mm|in)/\\oddsidemargin= $helper->{'VARS'}->{'pagesize.lmargin'} $helper->{'VARS'}->{'pagesize.lmarginunit'} /;
     }  
       &Apache::lonnet::logthis("After: $result \n----------------------------------\n");
   
 #-- writing .tex file in prtspool   #-- writing .tex file in prtspool 
     my $temp_file;      my $temp_file;
Line 1741  ENDPART Line 1735  ENDPART
     my $URLback=''; #link to original document      my $URLback=''; #link to original document
     if ($helper->{'VARS'}->{'construction'} ne '1') {      if ($helper->{'VARS'}->{'construction'} ne '1') {
  #prints published resource   #prints published resource
  $URLback=&Apache::lonnet::escape('/adm/flip?postdata=return:');   $URLback=&escape('/adm/flip?postdata=return:');
     } else {      } else {
  #prints resource from the construction space   #prints resource from the construction space
  $URLback='/'.$helper->{'VARS'}->{'filename'};   $URLback='/'.$helper->{'VARS'}->{'filename'};
Line 2242  ALL_PROBLEMS Line 2236  ALL_PROBLEMS
       </resource>        </resource>
     </state>      </state>
     <state name="PRINT_FORMATTING" title="How should results be printed?">      <state name="PRINT_FORMATTING" title="How should results be printed?">
     <nextstate>NUMBER_PER_PDF</nextstate>  
     <message><br /><big><i><b>How should the results be printed?</b></i></big><br /></message>      <message><br /><big><i><b>How should the results be printed?</b></i></big><br /></message>
     <choices variable="EMPTY_PAGES">      <choices variable="EMPTY_PAGES">
       <choice computer='0'>Start each student\'s assignment on a new page/column (add a pagefeed after each assignment)</choice>        <choice computer='0'>Start each student\'s assignment on a new page/column (add a pagefeed after each assignment)</choice>
Line 2250  ALL_PROBLEMS Line 2243  ALL_PROBLEMS
       <choice computer='2'>Add two empty pages/column after each student\'s assignment</choice>        <choice computer='2'>Add two empty pages/column after each student\'s assignment</choice>
       <choice computer='3'>Add three empty pages/column after each student\'s assignment</choice>        <choice computer='3'>Add three empty pages/column after each student\'s assignment</choice>
     </choices>      </choices>
     </state>  
     <state name="NUMBER_PER_PDF" title="Number printed at once">  
     <nextstate>PAGESIZE</nextstate>      <nextstate>PAGESIZE</nextstate>
     <message><hr width='33%' /><b>How do you want assignments split into PDF files? </b></message>      <message><hr width='33%' /><b>How do you want assignments split into PDF files? </b></message>
     <choices variable="SPLIT_PDFS">      <choices variable="SPLIT_PDFS">
        <choice computer="all">All assignments in a single PDF file</choice>         <choice computer="all">All assignments in a single PDF file</choice>
        <choice computer="sections">Each PDF contains exactly one section</choice>         <choice computer="sections">Each PDF contains exactly one section</choice>
        <choice computer="oneper">Each PDF contains exactly one assignment</choice>         <choice computer="oneper">Each PDF contains exactly one assignment</choice>
        <choice computer="usenumber">Specify Number:</choice>         <choice computer="usenumber" relatedvalue="NUMBER_TO_PRINT" relateddefault="all">
               Specify Number:</choice>
     </choices>      </choices>
     <string variable="NUMBER_TO_PRINT" maxlength="5" size="5"><defaultvalue>"all"</defaultvalue></string>  
     </state>      </state>
 RESOURCE_SELECTOR  RESOURCE_SELECTOR
   
Line 2271  RESOURCE_SELECTOR Line 2262  RESOURCE_SELECTOR
       <choice computer='0'>Sort by section then student</choice>        <choice computer='0'>Sort by section then student</choice>
       <choice computer='1'>Sort by students across sections.</choice>        <choice computer='1'>Sort by students across sections.</choice>
     </choices>      </choices>
         <message><br /><hr /><br /> </message>
       <student multichoice='1' variable="STUDENTS" nextstate="SELECT_PROBLEMS" coursepersonnel="1"/>        <student multichoice='1' variable="STUDENTS" nextstate="SELECT_PROBLEMS" coursepersonnel="1"/>
   </state>    </state>
     $resource_selector      $resource_selector
Line 2302  CHOOSE_STUDENTS Line 2294  CHOOSE_STUDENTS
     if ($code =~ /^[A-Z]+$/) { # Alpha code      if ($code =~ /^[A-Z]+$/) { # Alpha code
  $choice = &letters_to_num($code);   $choice = &letters_to_num($code);
     }      }
     $code_selection .= '   <choice computer="'.$choice.'">'.$code."</choice>\n";      push(@{$helper->{DATA}{ALL_CODE_CHOICES}},[$code,$choice]);
    }
    if (%codes_to_print) {
       $code_selection .='   
                <exec>
                  push(@{$state->{CHOICES}},@{$helper->{DATA}{ALL_CODE_CHOICES}});
               </exec>
               '.$/;
  }   }
   
   
  open(FH,$Apache::lonnet::perlvar{'lonTabDir'}.'/scantronformat.tab');   open(FH,$Apache::lonnet::perlvar{'lonTabDir'}.'/scantronformat.tab');
  my $codechoice='';   my $codechoice='';
  foreach my $line (<FH>) {   foreach my $line (<FH>) {
Line 2358  CHOOSE_STUDENTS Line 2359  CHOOSE_STUDENTS
         </validator>          </validator>
     </string>      </string>
     <message></td></tr><tr><td colspan="2"><hr width='33%' /></td></tr><tr><td></message>      <message></td></tr><tr><td colspan="2"><hr width='33%' /></td></tr><tr><td></message>
       <message><b>Choose single code from list</b></message>
       <message></td><td></message>
       <choices variable="CODE_SELECTED_FROM_LIST" multichoice="0" allowempty="0">
           $code_selection
       </choices>
       <message></td></tr><tr><td colspan="2"><hr width='33%' /></td></tr><tr><td></message>
     <message><b>Reprint a set of saved CODEs:</b></message>      <message><b>Reprint a set of saved CODEs:</b></message>
     <message></td><td></message>      <message></td><td></message>
     <dropdown variable="REUSE_OLD_CODES">      <dropdown variable="REUSE_OLD_CODES">
Line 2397  CHOOSE_ANON1 Line 2404  CHOOSE_ANON1
       <choice computer='2'>Add two empty pages/column after each student\'s assignment</choice>        <choice computer='2'>Add two empty pages/column after each student\'s assignment</choice>
       <choice computer='3'>Add three empty pages/column after each student\'s assignment</choice>        <choice computer='3'>Add three empty pages/column after each student\'s assignment</choice>
     </choices>      </choices>
     </state>  
     <state name="NUMBER_PER_PDF" title="Number assignments per pdf">  
     <nextstate>PAGESIZE</nextstate>      <nextstate>PAGESIZE</nextstate>
     <message><hr width='33%' /><b>How do you want assignments split into PDF files? </b></message>      <message><hr width='33%' /><b>How do you want assignments split into PDF files? </b></message>
     <choices variable="SPLIT_PDFS">      <choices variable="SPLIT_PDFS">
        <choice computer="all">All assignments in a single PDF file</choice>         <choice computer="all">All assignments in a single PDF file</choice>
        <choice computer="sections">Each PDF contains exactly one section</choice>         <choice computer="sections">Each PDF contains exactly one section</choice>
        <choice computer="oneper">Each PDF contains exactly one assignment</choice>         <choice computer="oneper">Each PDF contains exactly one assignment</choice>
        <choice computer="usenumber">Specify Number:</choice>         <choice computer="usenumber" relatedvalue="NUMBER_TO_PRINT" relateddefault="all">
              Specify Number:</choice>
     </choices>      </choices>
     <string variable="NUMBER_TO_PRINT" maxlength="5" size="5"><defaultvalue>"all"</defaultvalue></string>  
     </state>      </state>
 RESOURCE_SELECTOR  RESOURCE_SELECTOR
   
Line 2417  RESOURCE_SELECTOR Line 2422  RESOURCE_SELECTOR
       <choice computer='0'>Sort by section then student</choice>        <choice computer='0'>Sort by section then student</choice>
       <choice computer='1'>Sort by students across sections.</choice>        <choice computer='1'>Sort by students across sections.</choice>
     </choices>      </choices>
       <message><br /><hr /><br /></message>
     <student multichoice='1' variable="STUDENTS" nextstate="SELECT_RESOURCES" coursepersonnel="1" />      <student multichoice='1' variable="STUDENTS" nextstate="SELECT_RESOURCES" coursepersonnel="1" />
   
     </state>      </state>
Line 2464  CHOOSE_STUDENTS1 Line 2470  CHOOSE_STUDENTS1
         </validator>          </validator>
     </string>      </string>
     <message></td></tr><tr><td colspan="2"><hr width='33%' /></td></tr><tr><td></message>      <message></td></tr><tr><td colspan="2"><hr width='33%' /></td></tr><tr><td></message>
       <message><b>Choose single code from list</b></message>
       <message></td><td></message>
       <dropdown variable="CODE_SELECTED_FROM_LIST" multichoice="0" allowempty="0">
           $code_selection
       </dropdown>
       <message></td></tr><tr><td colspan="2"><hr width='33%' /></td></tr><tr><td></message>
     <message><b>Reprint a set of saved CODEs:</b></message>      <message><b>Reprint a set of saved CODEs:</b></message>
     <message></td><td></message>      <message></td><td></message>
     <dropdown variable="REUSE_OLD_CODES">      <dropdown variable="REUSE_OLD_CODES">
Line 2872  sub render { Line 2884  sub render {
         $result .= '<br /><font color="#FF0000">' . $self->{ERROR_MSG} . '</font><br />';          $result .= '<br /><font color="#FF0000">' . $self->{ERROR_MSG} . '</font><br />';
     }      }
   
       my $width = 18;
       my $format = $helper->{VARS}->{$self->{'formatvar'}};
       if (substr($format, 2, 1) ne '1') {
    $width = 9;
       }
   
     $result .= <<ELEMENTHTML;      $result .= <<ELEMENTHTML;
   
 <p>How should the column be formatted?</p>  <p>How should the column be formatted?</p>
Line 2879  sub render { Line 2897  sub render {
 <table cellpadding='3'>  <table cellpadding='3'>
   <tr>    <tr>
     <td align='right'><b>Width</b>:</td>      <td align='right'><b>Width</b>:</td>
     <td align='left'><input type='text' name='$var.width' value='18' size='4'></td>      <td align='left'><input type='text' name='$var.width' value='$width' size='4'></td>
     <td align='left'>      <td align='left'>
       <select name='$var.widthunit'>        <select name='$var.widthunit'>
         <option>cm</option><option>in</option>          <option>cm</option><option>in</option>
Line 2920  sub preprocess { Line 2938  sub preprocess {
     my $helper = Apache::lonhelper::getHelper();      my $helper = Apache::lonhelper::getHelper();
   
     my $format = $helper->{VARS}->{$self->{'formatvar'}};      my $format = $helper->{VARS}->{$self->{'formatvar'}};
     if (substr($format, 2, 1) ne '1') {  #    if (substr($format, 2, 1) ne '1') {
         $helper->changeState($self->{NEXTSTATE});  #        $helper->changeState($self->{NEXTSTATE});
     }  #    }
         
     return 1;      return 1;
 }  }

Removed from v.1.431  
changed lines
  Added in v.1.439


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