Diff for /loncom/interface/lonprintout.pm between versions 1.54 and 1.58

version 1.54, 2002/09/05 15:51:07 version 1.58, 2002/09/09 20:20:40
Line 45  use Apache::lonxml; Line 45  use Apache::lonxml;
 use Apache::lonnet;  use Apache::lonnet;
 use Apache::loncommon;  use Apache::loncommon;
 use Apache::inputtags;  use Apache::inputtags;
 use Apache::loncoursedata;  
 use Apache::grades;  use Apache::grades;
 use Apache::edit;  use Apache::edit;
 use Apache::File();  use Apache::File();
Line 62  sub headerform { Line 61  sub headerform {
 <body bgcolor="FFFFFF">  <body bgcolor="FFFFFF">
 <form method="post" enctype="multipart/form-data" action="/adm/printout" name="printform">  <form method="post" enctype="multipart/form-data" action="/adm/printout" name="printform">
 <tt>$ENV{'form.postdata'}</tt><p>  <tt>$ENV{'form.postdata'}</tt><p>
 <h1>What do you want to print? Make a choice.</h1><br />  
 ENDHEADER  ENDHEADER
 }  }
   
Line 70  ENDHEADER Line 68  ENDHEADER
 sub menu_for_output {  sub menu_for_output {
     my $r = shift;      my $r = shift;
     $r->print(<<ENDMENUOUT1);      $r->print(<<ENDMENUOUT1);
   <h1>What do you want to print? Make a choice.</h1><br />
 <input type="hidden" name="phase" value="two">  <input type="hidden" name="phase" value="two">
 <input type="hidden" name="url" value="$ENV{'form.postdata'}">  <input type="hidden" name="url" value="$ENV{'form.postdata'}">
 <input type="radio" name="choice" value="Standard LaTeX output for current document" checked>  Current document  <input type="radio" name="choice" value="Standard LaTeX output for current document" checked>  Current document
Line 85  ENDMENUOUT2 Line 84  ENDMENUOUT2
     }      }
     if ($ENV{'request.role'}=~m/^cc\./ or $ENV{'request.role'}=~m/^in\./ or $ENV{'request.role'}=~m/^ta\./) {       if ($ENV{'request.role'}=~m/^cc\./ or $ENV{'request.role'}=~m/^in\./ or $ENV{'request.role'}=~m/^ta\./) { 
  $r->print(<<ENDMENUOUT6);   $r->print(<<ENDMENUOUT6);
   <input type="radio" name="choice" value="All class print">  Print assignment (all problems from the primary sequence) for group of students<br />    <input type="radio" name="choice" value="All class print">  Print assignment (all problems from the primary sequence) for group of students<br /><br />
 ENDMENUOUT6  ENDMENUOUT6
     }      }
       my $subdirtoprint = &Apache::lonnet::filelocation("",$ENV{'form.url'});        my $subdirtoprint = &Apache::lonnet::filelocation("",$ENV{'form.url'});
Line 109  ENDMENUOUT4 Line 108  ENDMENUOUT4
      Number of columns: <select name="numberofcolumns">       Number of columns: <select name="numberofcolumns">
                          <option selected> 1 </option>                           <option selected> 1 </option>
                          <option> 2 </option>                           <option> 2 </option>
                          <option> 3 </option>  
                          <option> 4 </option>  
                          <option> 5 </option>  
                          <option> 6 </option>  
                          <option> 7 </option>  
                          <option> 8 </option>  
                          <option> 9 </option>  
                         </select>                           </select> 
    </td>     </td>
  </tr>   </tr>
Line 126  ENDMENUOUT5 Line 118  ENDMENUOUT5
 }  }
   
   
   sub problem_choice_menu {
       my $r = shift;
       my $subdirtoprint = &Apache::lonnet::filelocation("",$ENV{'form.url'});
       $subdirtoprint =~ s/\/[^\/]+$//;
       my @list_of_files = ();
       if ($ENV{'request.role'}=~m/^au\./ or $ENV{'request.role'}=~m/^ca\./) {
    $subdirtoprint =~ s/^[^~]*~(\w+)\//\/home\/$1\/public_html\//;
       } else {
    $subdirtoprint =~ s/.*(\/res\/)/$1/;
       }
       my @content_directory = ();
       if ($ENV{'request.role'}=~m/^au\./ or $ENV{'request.role'}=~m/^ca\./) {
    @content_directory = &Apache::lonnet::dirlist($subdirtoprint,$ENV{'user.domain'}, $ENV{'user.name'},'');
       } else {
    @content_directory = &Apache::lonnet::dirlist($subdirtoprint);
       }
       for (my $iy=0;$iy<=$#content_directory;$iy++) {
    my @tempo_array = split(/&/,$content_directory[$iy]);
    if ($tempo_array[0] =~ m/^[^\.]+\.(problem|exam|quiz|assess|survey|form|library)$/) {
       push(@list_of_files,$tempo_array[0]);
    }
       }
       $subdirtoprint =~ s/\/$//;
       for (my $i=0;$i<=$#list_of_files;$i++) {
    $list_of_files[$i] = $subdirtoprint.'/'.$list_of_files[$i];
       }
       $r->print(<<ENDMENUOUT1);
   <input type="hidden" name="url" value="$ENV{'form.url'}">
   <input type="hidden" name="choice" value="$ENV{'form.choice'}">
   <input type="hidden" name="layout" value="$ENV{'form.layout'}">
   <input type="hidden" name="numberofcolumns" value="$ENV{'form.numberofcolumns'}">
   <h1>Mark problems which you want to print</h1>
   <script>
       function checkall() {
    for (i=0; i<document.forms.printform.elements.length; i++) {
               if 
             (document.forms.printform.elements[i].name.indexOf('whattoprint')==0) {
         document.forms.printform.elements[i].checked=true;
               }
           }
       }
   
   
       function uncheckall() {
    for (i=0; i<document.forms.printform.elements.length; i++) {
               if 
             (document.forms.printform.elements[i].name.indexOf('whattoprint')==0) {
         document.forms.printform.elements[i].checked=false;
               }
           }
       }
   </script>
   <input type=button onClick="checkall()" value="Check for All">&nbsp;
   <input type=button onClick="uncheckall()" value="Check for None">
   <p>
   ENDMENUOUT1
       my $i;
       foreach my $file (@list_of_files) {
    $r->print('<br /><input type=checkbox name="whattoprint'.$i.'" value="'.$file.'"> '.
                     $file);
    $i++;
       }
       $r->print(<<ENDMENUOUT2);
   <br />
   <input type="hidden" name="numberofproblems" value="$i">
   <input type="hidden" name="phase" value="three">
   <input type="submit" value="Submit">
   ENDMENUOUT2
   }
   
   
 sub additional_class_menu {  sub additional_class_menu {
     my $r = shift;      my $r = shift;
     $r->print(<<ENDMENUOUT1);      $r->print(<<ENDMENUOUT1);
Line 135  sub additional_class_menu { Line 198  sub additional_class_menu {
 <input type="hidden" name="numberofcolumns" value="$ENV{'form.numberofcolumns'}">  <input type="hidden" name="numberofcolumns" value="$ENV{'form.numberofcolumns'}">
 <h1>Mark students which assignments you want to print</h1>  <h1>Mark students which assignments you want to print</h1>
 ENDMENUOUT1  ENDMENUOUT1
     my $c = $r->connection;          my %courselist=&Apache::lonnet::dump(
     my %cache;                     'classlist',
     my $courseID = $ENV{'request.course.id'};     $ENV{'course.'.$ENV{'request.course.id'}.'.domain'},
     my $classlist = &Apache::loncoursedata::DownloadClasslist($courseID,$cache{'ClasslistTimestamp'},$c);     $ENV{'course.'.$ENV{'request.course.id'}.'.num'});
     &Apache::loncoursedata::ProcessClasslist(\%cache,$classlist,$courseID,$c);          my $now=time;
     my @all_students = split(':::',$cache{'NamesOfStudents'});      $r->print(<<ENDDISHEADER);
     my @active_students = ();  <script>
     foreach my $student (@all_students) {      function checkall() {
  if ($cache{$student.':Status'} eq 'Active') {   for (i=0; i<document.forms.printform.elements.length; i++) {
     push @active_students,$student;              if 
  }            (document.forms.printform.elements[i].name.indexOf('whomtoprint')==0) {
     }        document.forms.printform.elements[i].checked=true;
     my $what_to_print = '<table border="1">';                  }
           }
       }
   
       function checksec() {
    for (i=0; i<document.forms.printform.elements.length; i++) {
               if 
             (document.forms.printform.elements[i].value.indexOf
              (document.forms.printform.chksec.value)==0) {
         document.forms.printform.elements[i].checked=true;
               }
           }
       }
   
       function uncheckall() {
    for (i=0; i<document.forms.printform.elements.length; i++) {
               if 
             (document.forms.printform.elements[i].name.indexOf('whomtoprint')==0) {
         document.forms.printform.elements[i].checked=false;
               }
           }
       }
   </script>
   <input type=button onClick="checkall()" value="Check for All">&nbsp;
   <input type=button onClick="checksec()" value="Check for Section/Group">
   <input type=text size=5 name=chksec>&nbsp;
   <input type=button onClick="uncheckall()" value="Check for None">
   <p>
   ENDDISHEADER
     my $i = 0;      my $i = 0;
     foreach my $student (@active_students) {      foreach (sort keys %courselist) {
  $what_to_print .= '<tr><td><input type="checkbox" name="whomtoprint'.$i.'" value="'.$student.'">'.$cache{$student.':fullname'}.'</td></tr>';          my ($end,$start)=split(/\:/,$courselist{$_});
 # $what_to_print .= '<tr><td><input type="checkbox" name="whomtoprint'.$i.'" value="'.$cache{$student.':fullname'}.'">'.$cache{$student.':fullname'}.'</td></tr>';          my $active=1;
  $i++;          if (($end) && ($now>$end)) { $active=0; }
           if ($active) {
              my ($sname,$sdom)=split(/\:/,$_);
              my %reply=&Apache::lonnet::get('environment',
                 ['firstname','middlename','lastname','generation'],
                 $sdom,$sname);
              my $section=&Apache::lonnet::usection
          ($sdom,$sname,$ENV{'request.course.id'});
              $r->print(
           '<br /><input type=checkbox name="whomtoprint'.$i.'" value="'.$section.':'.$_.'"> '.
         $reply{'firstname'}.' '. 
                         $reply{'middlename'}.' '.
                         $reply{'lastname'}.' '.
                         $reply{'generation'}.
                         ' ('.$_.') '.$section);
      $i++;
           } 
     }      }
     $what_to_print .= '</table>';  
     $r->print(<<ENDMENUOUT2);      $r->print(<<ENDMENUOUT2);
     $what_to_print <br />  <br />
 <input type="hidden" name="numberofstudents" value="$i">  <input type="hidden" name="numberofstudents" value="$i">
 <input type="hidden" name="phase" value="three">  <input type="hidden" name="phase" value="three">
 <input type="submit" value="Submit">  <input type="submit" value="Submit">
Line 170  sub additional_print_menu { Line 276  sub additional_print_menu {
     for (my $i=0; $i<$ENV{'form.numberofstudents'};$i++) {      for (my $i=0; $i<$ENV{'form.numberofstudents'};$i++) {
  $what_to_print .= '<input type="hidden" name="whomtoprint'.$i.'" value="'.$ENV{'form.whomtoprint'.$i}.'">';   $what_to_print .= '<input type="hidden" name="whomtoprint'.$i.'" value="'.$ENV{'form.whomtoprint'.$i}.'">';
     }      }
       for (my $i=0; $i<$ENV{'form.numberofproblems'};$i++) {
    $what_to_print .= '<input type="hidden" name="whattoprint'.$i.'" value="'.$ENV{'form.whattoprint'.$i}.'">';
       }
     $r->print(<<ENDMENUOUT);      $r->print(<<ENDMENUOUT);
     $what_to_print      $what_to_print
 <input type="hidden" name="url" value="$ENV{'form.url'}">  <input type="hidden" name="url" value="$ENV{'form.url'}">
 <input type="hidden" name="choice" value="$ENV{'form.choice'}">  <input type="hidden" name="choice" value="$ENV{'form.choice'}">
 <input type="hidden" name="layout" value="$ENV{'form.layout'}">  <input type="hidden" name="layout" value="$ENV{'form.layout'}">
 <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="numberofcolumns" value="$ENV{'form.numberofcolumns'}">  <input type="hidden" name="numberofcolumns" value="$ENV{'form.numberofcolumns'}">
 Enter width of the page: <input type="text" name="width" width="10" value="9cm"> <br />  Define page layout parameters: <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>Left margin</b>: <input type="text" name="leftmargin" width="8" value="-0.57in"> <br />
 <input type="hidden" name="phase" value="four">  <input type="hidden" name="phase" value="four">
 <input type="submit" value="Submit">  <input type="submit" value="Submit">
 </form>  </form>
Line 339  ENDPART Line 452  ENDPART
         #loop over students          #loop over students
  foreach my $person (@students) {   foreach my $person (@students) {
     my $current_output = '';       my $current_output = ''; 
     my ($username,$userdomain) = split /:/,$person;      my ($usersection,$username,$userdomain) = split /:/,$person;
     my $fullname = &Apache::grades::get_fullname($username,$userdomain);      my $fullname = &Apache::grades::get_fullname($username,$userdomain);
             #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 $curres (@master_seq)  {      foreach my $curres (@master_seq)  {
Line 358  ENDPART Line 471  ENDPART
     $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 /;
     $result .= $current_output;      $result .= $current_output;
  }   }
   
  $result = &additional_cleanup($result);   $result = &additional_cleanup($result);
   
   
   
   
   
   
     } elsif ($choice eq 'Subdirectory print') {            } elsif ($choice eq 'Subdirectory print') {      
  my $subdirtoprint = &Apache::lonnet::filelocation("",$ENV{'form.url'});      #prints selected problems from the subdirectory 
  $subdirtoprint =~ s/\/[^\/]+$//;          my @list_of_files = ();
  my @list_of_files = ();   for (my $i=0; $i<$ENV{'form.numberofproblems'};$i++) {
  if ($ENV{'request.role'}=~m/^au\./ or $ENV{'request.role'}=~m/^ca\./) {      if ($ENV{'form.whattoprint'.$i}=~/^\//) {
     $subdirtoprint =~ s/^[^~]*~(\w+)\//\/home\/$1\/public_html\//;  # $result.= $ENV{'form.whattoprint'.$i}.' FFF ';
  } else {   push @list_of_files,$ENV{'form.whattoprint'.$i};
     $subdirtoprint =~ s/.*(\/res\/)/$1/;  
  }  
  my @content_directory = ();  
  if ($ENV{'request.role'}=~m/^au\./ or $ENV{'request.role'}=~m/^ca\./) {  
     @content_directory = &Apache::lonnet::dirlist($subdirtoprint,$ENV{'user.domain'}, $ENV{'user.name'},'');  
  } else {  
     @content_directory = &Apache::lonnet::dirlist($subdirtoprint);  
  }  
  for (my $iy=0;$iy<=$#content_directory;$iy++) {  
     my @tempo_array = split(/&/,$content_directory[$iy]);  
     if ($tempo_array[0] =~ m/^[^\.]+\.(problem|exam|quiz|assess|survey|form|library)$/) {  
  push(@list_of_files,$tempo_array[0]);  
     }      }
  }   }
  $subdirtoprint =~ s/\/$//;  
  for (my $i=0;$i<=$#list_of_files;$i++) {   for (my $i=0;$i<=$#list_of_files;$i++) {
     my $urlp = $subdirtoprint.'/'.$list_of_files[$i];      my $urlp = $list_of_files[$i];
     my %moreenv;      if ($urlp=~/\//) {
     $moreenv{'form.grade_target'}='tex';   my %moreenv;
     &Apache::lonnet::appenv(%moreenv);   $moreenv{'form.grade_target'}='tex';
     if ($ENV{'request.role'}=~m/^au\./ or $ENV{'request.role'}=~m/^ca\./) {    &Apache::lonnet::appenv(%moreenv);
  $urlp =~ s/\/home\/([^\/]*)\/public_html/\/~$1/;    if ($ENV{'request.role'}=~m/^au\./ or $ENV{'request.role'}=~m/^ca\./) { 
     }      $urlp =~ s/\/home\/([^\/]*)\/public_html/\/~$1/; 
     my $texversion=&Apache::lonnet::ssi($urlp);   }
     &Apache::lonnet::delenv('form.grade_target');   my $texversion=&Apache::lonnet::ssi($urlp);
     $texversion =~ s/(\\begin{document})/$1 {\\tiny\\begin{verbatim}$urlp\\end{verbatim}}/;   &Apache::lonnet::delenv('form.grade_target');
     $result .= $texversion;      $texversion =~ s/(\\begin{document})/$1 {\\tiny\\begin{verbatim}$urlp\\end{verbatim}}/;
    $result .= $texversion;
       }   
  }   }
  $result = &additional_cleanup($result);   $result = &additional_cleanup($result);
   
Line 417  ENDPART Line 512  ENDPART
         $courseidinfo = $ENV{'course.physnet_'.$1.'.description'};          $courseidinfo = $ENV{'course.physnet_'.$1.'.description'};
 # $result =~ s/\\documentclass\[letterpaper\]{article}/\\documentclass\[twocolumn\]{article}/;  # $result =~ s/\\documentclass\[letterpaper\]{article}/\\documentclass\[twocolumn\]{article}/;
  $result =~ s/\\documentclass\[letterpaper\]{article}/\\documentclass{article}/;   $result =~ s/\\documentclass\[letterpaper\]{article}/\\documentclass{article}/;
  $result =~ s/\\begin{document}/\\textheight 25\.9cm\\oddsidemargin = -0\.57in\\evensidemargin = -0\.57in\\textwidth= 9cm\\newlength{\\minipagewidth}\\setlength{\\minipagewidth}{\\textwidth\/$number_of_columns-0\.2cm}\\renewcommand{\\ref}{\\keephidden\}\\begin{document}\\voffset=-1\.8cm\\setcounter{page}{1}\\parbox{\\minipagewidth}{\\noindent\\fbox{\\textbf{$ENV{'environment.firstname'} $ENV{'environment.lastname'}}}\\hskip 1\.4in $courseidinfo} \\vskip 5 mm /;   if ($choice ne 'All class print') { 
       $result =~ s/\\begin{document}/\\textheight 25\.9cm\\oddsidemargin = -0\.57in\\evensidemargin = -0\.57in\\textwidth= 9cm\\newlength{\\minipagewidth}\\setlength{\\minipagewidth}{\\textwidth\/$number_of_columns-0\.2cm}\\renewcommand{\\ref}{\\keephidden\}\\begin{document}\\voffset=-1\.8cm\\setcounter{page}{1}\\parbox{\\minipagewidth}{\\noindent\\fbox{\\textbf{$ENV{'environment.firstname'} $ENV{'environment.lastname'}}}\\hskip 1\.4in $courseidinfo} \\vskip 5 mm /;
           } else {
       $result =~ s/\\begin{document}/\\textheight 25\.9cm\\oddsidemargin = -0\.57in\\evensidemargin = -0\.57in\\textwidth= 9cm\\newlength{\\minipagewidth}\\setlength{\\minipagewidth}{\\textwidth\/$number_of_columns-0\.2cm}\\renewcommand{\\ref}{\\keephidden\}\\begin{document}\\voffset=-1\.8cm\\setcounter{page}{1}  \\vskip 5 mm /;
    }
  $result =~ s/\\includegraphics{/\\includegraphics\[width=9\.0 cm\]{/g;   $result =~ s/\\includegraphics{/\\includegraphics\[width=9\.0 cm\]{/g;
 # $result =~ s/\\includegraphics{/\\includegraphics\[width=\\textwidth\]{/g;  # $result =~ s/\\includegraphics{/\\includegraphics\[width=\\textwidth\]{/g;
 # $result =~ s/(\\end{document})/\\newline\\noindent\\makebox\[9.0cm\]\[b\]{\\hrulefill}\\newline\\noindent\\tiny Dept\. of Physics and Astronomy, MSU\\makebox\[1.5cm\]\[b\]{\\hfill}LON-CAPA\\copyright MSU GNU\/GPL $1/;  # $result =~ s/(\\end{document})/\\newline\\noindent\\makebox\[9.0cm\]\[b\]{\\hrulefill}\\newline\\noindent\\tiny Dept\. of Physics and Astronomy, MSU\\makebox\[1.5cm\]\[b\]{\\hfill}LON-CAPA\\copyright MSU GNU\/GPL $1/;
Line 896  sub handler { Line 995  sub handler {
      if ($ENV{'form.phase'} eq 'two') {       if ($ENV{'form.phase'} eq 'two') {
  if($ENV{'form.choice'} eq 'All class print') {   if($ENV{'form.choice'} eq 'All class print') {
      &additional_class_menu($r);       &additional_class_menu($r);
    } elsif($ENV{'form.choice'} eq 'Subdirectory print') {
        &problem_choice_menu($r);
  } else {   } else {
      $ENV{'form.phase'} = 'three';       $ENV{'form.phase'} = 'three';
  }   }

Removed from v.1.54  
changed lines
  Added in v.1.58


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