Diff for /loncom/interface/lonprintout.pm between versions 1.72 and 1.75

version 1.72, 2002/09/19 20:18:09 version 1.75, 2002/09/24 13:52:24
Line 316  sub additional_print_menu { Line 316  sub additional_print_menu {
 <input type="hidden" name="numberofstudents" value="$ENV{'form.numberofstudents'}">  <input type="hidden" name="numberofstudents" value="$ENV{'form.numberofstudents'}">
 <input type="hidden" name="numberofproblems" value="$ENV{'form.numberofproblems'}">  <input type="hidden" name="numberofproblems" value="$ENV{'form.numberofproblems'}">
 <input type="hidden" name="numberofcolumns" value="$ENV{'form.numberofcolumns'}">  <input type="hidden" name="numberofcolumns" value="$ENV{'form.numberofcolumns'}">
 Define page layout parameters: <br />  Define one column layout parameters: <br />
 <b>Width</b>: <input type="text" name="width" width="8" value="9cm"> <br />  <b>Width</b>: <input type="text" name="width" width="8" value="9cm"> <br />
 <b>Height</b>: <input type="text" name="height" width="8" value="25.9cm"> <br />  <b>Height</b>: <input type="text" name="height" width="8" value="25.9cm"> <br />
 <b>Left margin</b>: <input type="text" name="leftmargin" width="8" value="-0.57in"> <br />  <b>Left margin</b>: <input type="text" name="leftmargin" width="8" value="-0.57in"> <br />
Line 342  ENDPART Line 342  ENDPART
   
     my $choice = $ENV{'form.choice'};      my $choice = $ENV{'form.choice'};
     my $layout = $ENV{'form.layout'};      my $layout = $ENV{'form.layout'};
     my $numberofcolumns = $ENV{'form.numberofcolumns'};                     my $numberofcolumns = $ENV{'form.numberofcolumns'};  
       my $papersize = $ENV{'form.papersize'};          
     my $laystyle = 'book';      my $laystyle = 'book';
     my $result = '';      my $result = '';
     my $number_of_columns = 1; #used only for pages to determine the width of the cell      my $number_of_columns = 1; #used only for pages to determine the width of the cell
Line 369  ENDPART Line 370  ENDPART
       #-- minimal sequence to which the current document belongs        #-- minimal sequence to which the current document belongs
         #-- where is the primary sequence containing file?          #-- where is the primary sequence containing file?
  my $symbolic = &Apache::lonnet::symbread($ENV{'form.url'});   my $symbolic = &Apache::lonnet::symbread($ENV{'form.url'});
  $symbolic =~ m/([^_]+)_/;   my @sequence = split('___',$symbolic);
  my $primary_sequence = '/res/'.$1;       my $primary_sequence = '/res/'.$sequence[0];   
  my @master_seq = &coming_from_hash($primary_sequence);   my @master_seq = &coming_from_hash($primary_sequence,$sequence[0]);
         #-- produce an output string          #-- produce an output string
  my $flag_latex_header_remove = 'NO';   my $flag_latex_header_remove = 'NO';
  my $flag_page_in_sequence = 'NO';   my $flag_page_in_sequence = 'NO';
Line 384  ENDPART Line 385  ENDPART
     my %moreenv;      my %moreenv;
     $moreenv{'form.grade_target'}='tex';      $moreenv{'form.grade_target'}='tex';
     &Apache::lonnet::appenv(%moreenv);      &Apache::lonnet::appenv(%moreenv);
       &Apache::lonnet::logthis("Trying to get $urlp with symb $symb");
     my $texversion=&Apache::lonnet::ssi($urlp,('symb'=>$symb));      my $texversion=&Apache::lonnet::ssi($urlp,('symb'=>$symb));
     &Apache::lonnet::delenv('form.grade_target');      &Apache::lonnet::delenv('form.grade_target');
     if ($flag_latex_header_remove ne 'NO') {      if ($flag_latex_header_remove ne 'NO') {
Line 423  ENDPART Line 425  ENDPART
         # where is the main sequence of the course?          # where is the main sequence of the course?
  $selectionmade = 4;   $selectionmade = 4;
  my $main_seq = '/res/'.$ENV{'request.course.uri'};   my $main_seq = '/res/'.$ENV{'request.course.uri'};
  my @file_seq = &coming_from_hash($main_seq);   my @file_seq = &coming_from_hash_whole($main_seq);
  my $flag_latex_header_remove = 'NO';   my $flag_latex_header_remove = 'NO';
         #-- produce an output string          #-- produce an output string
  for (my $i=0;$i<=$#file_seq;$i++) {   for (my $i=0;$i<=$#file_seq;$i++) {
Line 433  ENDPART Line 435  ENDPART
  my %moreenv;   my %moreenv;
  $moreenv{'form.grade_target'}='tex';   $moreenv{'form.grade_target'}='tex';
  &Apache::lonnet::appenv(%moreenv);   &Apache::lonnet::appenv(%moreenv);
  my $texversion=&Apache::lonnet::ssi($urlp);   my $texversion=&Apache::lonnet::ssi($urlp,('symb'=>$symb));
  &Apache::lonnet::delenv('form.grade_target');       &Apache::lonnet::delenv('form.grade_target');    
  if ($flag_latex_header_remove ne 'NO') {   if ($flag_latex_header_remove ne 'NO') {
     $texversion = &latex_header_footer_remove($texversion);      $texversion = &latex_header_footer_remove($texversion);
  } else {   } else {
     $texversion =~ s/\\end{document}//;      $texversion =~ s/\\end{document}//;
  }   }
  $result .= $texversion;           $result .= $texversion;  
    $flag_latex_header_remove = 'YES';
     }      }
     $flag_latex_header_remove = 'YES';    
  }       }    
  $result .= '\end{document}';   $result .= '\end{document}';
     } elsif ($choice eq 'All class print') {       } elsif ($choice eq 'All class print') { 
     #-- prints assignments for whole class or for selected students        #-- prints assignments for whole class or for selected students  
  $selectionmade = 5;   $selectionmade = 5;
         my (@students,@st_output) = ((),());          my @students = ();
  for (my $i=0; $i<$ENV{'form.numberofstudents'};$i++) {   for (my $i=0; $i<$ENV{'form.numberofstudents'};$i++) {
     if ($ENV{'form.whomtoprint'.$i}=~/:/) {      if ($ENV{'form.whomtoprint'.$i}=~/:/) {
  push @students,$ENV{'form.whomtoprint'.$i};   push @students,$ENV{'form.whomtoprint'.$i};
Line 456  ENDPART Line 458  ENDPART
  }   }
  #where is the primary sequence containing current resource (the same for all students)?   #where is the primary sequence containing current resource (the same for all students)?
  my $symbolic = &Apache::lonnet::symbread($ENV{'form.url'});   my $symbolic = &Apache::lonnet::symbread($ENV{'form.url'});
  $symbolic =~ m/([^_]+)_/;   my @sequence = split('___',$symbolic);
  my $primary_sequence = '/res/'.$1;   my $primary_sequence = '/res/'.$sequence[0];
  my @master_seq = &coming_from_hash($primary_sequence);    my @master_seq = &coming_from_hash($primary_sequence,$sequence[0]); 
         #loop over students          #loop over students
  my $flag_latex_header_remove = 'NO';     my $flag_latex_header_remove = 'NO';  
  foreach my $person (@students) {   foreach my $person (@students) {
Line 468  ENDPART Line 470  ENDPART
             #goes through all resources, checks if they are available for current student, and produces output                 #goes through all resources, checks if they are available for current student, and produces output   
     foreach my $curresline (@master_seq)  {      foreach my $curresline (@master_seq)  {
  my ($curres,$symb) = split /&&/, $curresline;   my ($curres,$symb) = split /&&/, $curresline;
  $curres =~ s/^"//;                  if ($curres=~ m/\.(problem|exam|quiz|assess|survey|form|library)/) {
  $curres =~ s/"$//;  
                 if ($curres=~/\w+/) {  
     my ($map,$id,$res_url) = split(/___/,$symb);      my ($map,$id,$res_url) = split(/___/,$symb);
     if (&Apache::lonnet::allowed('bre',$res_url)) {      if (&Apache::lonnet::allowed('bre',$res_url)) {
  my $rendered = &Apache::loncommon::get_student_view($symb,$username,$userdomain,   my $rendered = &Apache::loncommon::get_student_view($symb,$username,$userdomain,
                                                                         $ENV{'request.course.id'},'tex');                                                                          $ENV{'request.course.id'},'tex');
  if ($flag_latex_header_remove ne 'NO') {   if ($flag_latex_header_remove eq 'YES') {
     $rendered = &latex_header_footer_remove($rendered);      $rendered = &latex_header_footer_remove($rendered);
  } else {   } else {
     $rendered =~ s/\\end{document}//;      $rendered =~ s/\\end{document}//;
  }   }
  $current_output .= $rendered;   $current_output .= $rendered;
     }      }
       $flag_latex_header_remove = 'YES';
  }   }
  $flag_latex_header_remove = 'YES';    
     }      }
     if ($current_output=~/\\documentclass/) {      if ($current_output=~/\\documentclass/) {
  $current_output =~ s/\\begin{document}/\\begin{document}\\noindent\\parbox{\\minipagewidth}{\\noindent\\fbox{\\textbf{$fullname}}\\hskip 1\.4in } \\vskip 5 mm /;   $current_output =~ s/\\begin{document}/\\begin{document}\\noindent\\parbox{\\minipagewidth}{\\noindent\\fbox{\\textbf{$fullname}}\\hskip 1\.4in } \\vskip 5 mm /;
Line 526  ENDPART Line 526  ENDPART
  }   }
  $result .= '\end{document}';         $result .= '\end{document}';      
     }      }
 #-- corrections for the different page formats  #-------------------------------------------------------- corrections for the different page formats
       my ($textwidth,$textheight,$oddoffset,$evenoffset) = (0,0,0,0);
       if ($papersize=~/Letter/) {
    if ($layout eq 'CAPA') {
       if ($numberofcolumns == 1) {
    $textwidth = '18 cm';
    $textheight = '25.9 cm';
    $oddoffset = '-0.57 in';
    $evenoffset = '-0.57 in';
       } elsif ($numberofcolumns == 2) {
    $textwidth = '9 cm';
    $textheight = '25.9 cm';
    $oddoffset = '-0.57 in';
    $evenoffset = '-0.57 in';
       }
    } elsif ($layout eq 'CBI') {
       if ($numberofcolumns == 1) {
    $textwidth = '8.8 in';
    $textheight = '6.8 in';
    $oddoffset = '-40 pt';
    $evenoffset = '-60 pt';
       } elsif ($numberofcolumns == 2) {
    $textwidth = '4.4 in';
    $textheight = '6.8 in';
    $oddoffset = '-40 pt';
    $evenoffset = '-60 pt';
       }
    }
   #    } elsif($papersize=~/Legal/) {
   # $textwidth = ;
   #        $textheight = ;
   #        $offset = ;
   #    } elsif($papersize=~/Ledger/) {
   # $textwidth = ;
   #        $textheight = ;
   #        $offset = ;
   #    } elsif($papersize=~/Executive/) {
   # $textwidth = ;
   #        $textheight = ;
   #        $offset = ;
   #    } elsif($papersize=~/A4/) {
   # $textwidth = ;
   #        $textheight = ;
   #        $offset = ;
   #    } elsif($papersize=~/A3/) {
   # $textwidth = ;
   #        $textheight = ;
   #        $offset = ;
   #    } elsif($papersize=~/A2/) {
   # $textwidth = ;
   #        $textheight = ;
   #        $offset = ;
   #    } elsif($papersize=~/A5/) {
   # $textwidth = ;
   #        $textheight = ;
   #        $offset = ;
   #    } elsif($papersize=~/A6/) {
   # $textwidth = ;
   #        $textheight = ;
   #        $offset = ;
   #                                           <option selected> Letter [8 1/2x11 in] </option>
   #                                            <option> Legal [8 1/2x14 in] </option>
   #                                            <option> Ledger/Tabloid [11x17 in] </option>
   #                                            <option> Executive [7 1/2x10 in] </option>
   #                                            <option> A2 [420x594 mm] </option>
   #                                            <option> A3 [297x420 mm] </option>
   #                                            <option> A4 [210x297 mm] </option>
   #                                            <option> A5 [148x210 mm] </option>
   #                                            <option> A6 [105x148 mm] </option>
   #
       }
   
     if ($layout eq 'CBI' and $numberofcolumns eq '1') {      if ($layout eq 'CBI' and $numberofcolumns eq '1') {
  $result =~ s/\\begin{document}/\\setlength{\\oddsidemargin}{-40pt}\\setlength{\\evensidemargin}{-60pt}\\setlength{\\topmargin}{200pt}\\setlength{\\textwidth}{4\.4in}\\setlength{\\textheight}{6\.8in}\\setlength{\\parindent}{20pt}\\setlength{\\marginparwidth}{90pt}\\setlength{\\textfloatsep}{8pt plus 2\.0pt minus 4\.0pt} \\begin{document}/;   $result =~ s/\\begin{document}/\\setlength{\\oddsidemargin}{-40pt}\\setlength{\\evensidemargin}{-60pt}\\setlength{\\topmargin}{200pt}\\setlength{\\textwidth}{4\.4in}\\setlength{\\textheight}{6\.8in}\\setlength{\\parindent}{20pt}\\setlength{\\marginparwidth}{90pt}\\setlength{\\textfloatsep}{8pt plus 2\.0pt minus 4\.0pt} \\begin{document}/;
  $result =~ s/\$number_of_columns/$number_of_columns/g;   $result =~ s/\$number_of_columns/$number_of_columns/g;
Line 575  ENDPART Line 646  ENDPART
     $result =~ s/\\\\\s*\\noindent\s*(\\\\)+/\\\\\\noindent /g;      $result =~ s/\\\\\s*\\noindent\s*(\\\\)+/\\\\\\noindent /g;
     $result =~ s/{\\par }\s*\\\\/\\\\/gm;      $result =~ s/{\\par }\s*\\\\/\\\\/gm;
  $result =~ s/\\\\\s+\[/ \[/g;   $result =~ s/\\\\\s+\[/ \[/g;
     $result =~ s/&#952;/\$\\theta\$/g; #converts theta from html into tex  
     $result =~ s/\b__+\b/\\makebox\[1 cm\]\[b\]{\\hrulefill}/g;      $result =~ s/\b__+\b/\\makebox\[1 cm\]\[b\]{\\hrulefill}/g;
     #conversion of html characters to LaTeX equivalents      #conversion of html characters to LaTeX equivalents
     if ($result =~ m/&(\w+|#\d+);/) {      if ($result =~ m/&(\w+|#\d+);/) {
Line 599  FINALEND Line 669  FINALEND
 }  }
   
   
 sub coming_from_hash {  sub coming_from_hash_whole {
   
     my $mainsequence = shift;      my $mainsequence = shift;
     my @resourcelist = ();      my @resourcelist = ();
     my $mapid = $hash{'map_pc_'.$mainsequence};      my $mapid = $hash{'map_pc_'.$mainsequence};
     my $mapstart = $hash{'map_start_'.$mainsequence};      my $mapstart = $hash{'map_start_'.$mainsequence};
     my $mapfinish = $hash{'map_finish_'.$mainsequence};      my $mapfinish = $hash{'map_finish_'.$mainsequence};
     my $symb = &Apache::lonnet::symbread($hash{'src_'.$mapstart});      my $current_resource = $mapstart;
       while ($current_resource ne $mapfinish) {
    if ($hash{'src_'.$current_resource}=~/\.sequence$/) {
       push @resourcelist,&coming_from_hash_whole($hash{'src_'.$current_resource});
    } else {
               $mainsequence =~ /\/res\/(.*)$/;
       my $presymb = $1;
       my $rid = $hash{'ids_'.$hash{'src_'.$current_resource}};
               if ($rid=~/,/) {
    my @rid = split /,/, $rid;
    foreach my $rid_element (@rid) {
       if ($rid_element =~ m/^$mapid\.(\d*)/) {
    $rid = $1; 
    last;
       }
    }
       } else {
    $rid =~ m/^$mapid\.(\d*)/;
                   $rid = $1;  
       }
       $hash{'src_'.$current_resource} =~ m/\/res\/(.*)$/;
       my $symb = $presymb.'___'.$rid.'___'.$1;    
       push @resourcelist,$hash{'src_'.$current_resource}.'&&'.$symb;
    }
    $current_resource = $hash{'goesto_'.$hash{'to_'.$current_resource}};
       }
       return @resourcelist;
   }
   
   
   sub coming_from_hash {
   
       my ($mainsequence,$symb) = @_;
       my @resourcelist = ();
       my $mapid = $hash{'map_pc_'.$mainsequence};
       my $mapstart = $hash{'map_start_'.$mainsequence};
       my $mapfinish = $hash{'map_finish_'.$mainsequence};
     my ($presymb) = split(/___/,$symb);      my ($presymb) = split(/___/,$symb);
     $presymb = $presymb.'___';      $presymb = $presymb.'___';
     my $current_resource = $mapstart;      my $current_resource = $mapstart;
Line 986  sub character_chart { Line 1092  sub character_chart {
 #    $result =~ s/&#254;//g;  #    $result =~ s/&#254;//g;
 #    $result =~ s/&thorn;//g;  #    $result =~ s/&thorn;//g;
     $result =~ s/&#255;/\\"{y}/g;      $result =~ s/&#255;/\\"{y}/g;
     $result =~ s/&yuml;/\\"{y}/g;      $result =~ s/&yuml;/\\"{y}/g;    
       $result =~ s/&#952;/\$\\theta\$/g; #converts theta from html into tex
     return $result;      return $result;
 }  }
   
Line 1085  sub handler { Line 1192  sub handler {
 1;  1;
 __END__  __END__
   
   
   
   
 #### Test block  
 #    my $ere;  
 #    foreach $ere (%ENV) {  
 # $result .= ' SS '.$ere.' => '.$ENV{$ere}.' FF '."\n\n";  
 #    }  
 ####  

Removed from v.1.72  
changed lines
  Added in v.1.75


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