Diff for /loncom/interface/lonprintout.pm between versions 1.332 and 1.344

version 1.332, 2004/09/29 06:06:34 version 1.344, 2004/12/27 14:07:28
Line 41  use Apache::lonnavmaps; Line 41  use Apache::lonnavmaps;
 use Apache::lonratedt;  use Apache::lonratedt;
 use POSIX qw(strftime);  use POSIX qw(strftime);
 use Apache::lonlocal;  use Apache::lonlocal;
 use GDBM_File;  
   
   
 my %hash;  
 my $LaTeXwidth = 0;  my $LaTeXwidth = 0;
   
   
   #   Compare two students by name.  The students are in the form
   #   returned by the helper:
   #      user:domain:section:last,   first:status
   #   This is a helper function for the perl sort built-in  therefore:
   # Implicit Inputs:
   #    $a     - The first element to compare (global)
   #    $b     - The second element to compare (global)
   # Returns:
   #   -1   - $a < $b
   #    0   - $a == $b
   #   +1   - $a > $b
   #   Note that the initial comparison is done on the last names with the
   #   first names only used to break the tie.
   #
   #
   sub compare_names {
       #  First split the names up into the primary fields.
   
       my ($u1, $d1, $s1, $n1, $stat1) = split(/:/, $a);
       my ($u2, $d2, $s2, $n2, $stat2) = split(/:/, $b);
   
       # Now split the last name and first name of each n:
       #
   
       my ($l1,$f1) = split(/,/, $n1);
       my ($l2,$f2) = split(/,/, $n2);
   
       # We don't bother to remove the leading/trailing whitespace from the
       # firstname, unless the last names compare identical.
   
       if($l1 lt $l2) {
    return -1;
       }
       if($l1 gt $l2) {
    return  1;
       }
   
       # Break the tie on the first name, but there are leading (possibly trailing
       # whitespaces to get rid of first 
       #
       $f1 =~ s/^\s+//; # Remove leading...
       $f1 =~ s/\s+$//; # Trailing spaces from first 1...
       
       $f2 =~ s/^\s+//;
       $f2 =~ s/\s+$//; # And the same for first 2...
   
       if($f1 lt $f2) {
    return -1;
       }
       if($f1 gt $f2) {
    return 1;
       }
       
       #  Must be the same name.
   
       return 0;
   }
   
 sub latex_header_footer_remove {  sub latex_header_footer_remove {
     my $text = shift;      my $text = shift;
     $text =~ s/\\end{document}//;      $text =~ s/\\end{document}//;
Line 377  sub character_chart { Line 432  sub character_chart {
 my %page_formats=  my %page_formats=
     ('letter' => {      ('letter' => {
  'book' => {   'book' => {
      '1' => [ '7.1 in','10.2 in', '-0.57 in','-0.57 in','0 in'],       '1' => [ '7.1 in','10.2 in', '-0.57 in','-0.57 in','1 cm'],
      '2' => ['3.66 in','10.2 in', '-0.57 in','-0.57 in','0 in']       '2' => ['3.66 in','10.2 in', '-0.57 in','-0.57 in','1 cm']
  },   },
  'album' => {   'album' => {
      '1' => [ '8.8 in', '6.8 in','-40 pt in',  '-60 pt','0 in'],       '1' => [ '8.8 in', '6.8 in','-40 pt in',  '-60 pt','1 cm'],
      '2' => [ '4.4 in', '6.8 in','-0.5 in', '-1.5 in','3.5 in']       '2' => [ '4.4 in', '6.8 in','-0.5 in', '-1.5 in','3.5 in']
  },   },
      },       },
Line 519  sub page_format_transformation { Line 574  sub page_format_transformation {
  $fancypagestatement="\\rhead{}\\chead{}\\lhead{\\textbf{$name} $courseidinfo \\hfill \\thepage \\\\ \\textit{$assignment}}";   $fancypagestatement="\\rhead{}\\chead{}\\lhead{\\textbf{$name} $courseidinfo \\hfill \\thepage \\\\ \\textit{$assignment}}";
     }      }
     if ($layout eq 'album') {      if ($layout eq 'album') {
     $text =~ s/\\begin{document}/\\setlength{\\oddsidemargin}{$oddoffset}\\setlength{\\evensidemargin}{$evenoffset}$topmargintoinsert\\setlength{\\textwidth}{$textwidth}\\setlength{\\textheight}{$textheight}\\setlength{\\textfloatsep}{8pt plus 2\.0pt minus 4\.0pt}\\newlength{\\minipagewidth}\\setlength{\\minipagewidth}{\\textwidth\/\$number_of_columns-0\.2cm}\\usepackage{fancyhdr}\\pagestyle{fancy}$fancypagestatement\\begin{document}\\voffset=-0\.8 cm\\setcounter{page}{1} /;      $text =~ s/\\begin{document}/\\setlength{\\oddsidemargin}{$oddoffset}\\setlength{\\evensidemargin}{$evenoffset}$topmargintoinsert\n\\setlength{\\textwidth}{$textwidth}\\setlength{\\textheight}{$textheight}\\setlength{\\textfloatsep}{8pt plus 2\.0pt minus 4\.0pt}\n\\newlength{\\minipagewidth}\\setlength{\\minipagewidth}{\\textwidth\/\$number_of_columns-0\.2cm}\\usepackage{fancyhdr}\\addtolength{\\headheight}{\\baselineskip}\n\\pagestyle{fancy}$fancypagestatement\\begin{document}\\voffset=-0\.8 cm\\setcounter{page}{1}\n /;
     } elsif ($layout eq 'book') {      } elsif ($layout eq 'book') {
  if ($choice ne 'All class print') {    if ($choice ne 'All class print') { 
     $text =~ s/\\begin{document}/\\textheight $textheight\\oddsidemargin = $evenoffset\\evensidemargin = $evenoffset $topmargintoinsert\\textwidth= $textwidth\\newlength{\\minipagewidth}\\setlength{\\minipagewidth}{\\textwidth\/\$number_of_columns-0\.2cm}\\renewcommand{\\ref}{\\keephidden\}\\usepackage{fancyhdr}\\pagestyle{fancy}$fancypagestatement\\begin{document}\\voffset=-0\.8 cm\\setcounter{page}{1}/;      $text =~ s/\\begin{document}/\\textheight $textheight\\oddsidemargin = $evenoffset\\evensidemargin = $evenoffset $topmargintoinsert\n\\textwidth= $textwidth\\newlength{\\minipagewidth}\\setlength{\\minipagewidth}{\\textwidth\/\$number_of_columns-0\.2cm}\n\\renewcommand{\\ref}{\\keephidden\}\\usepackage{fancyhdr}\\addtolength{\\headheight}{\\baselineskip}\\pagestyle{fancy}$fancypagestatement\\begin{document}\n\\voffset=-0\.8 cm\\setcounter{page}{1}\n/;
  } else {   } else {
     $text =~ s/\\pagestyle{fancy}\\rhead{}\\chead{}\s*\\begin{document}/\\textheight = $textheight\\oddsidemargin = $evenoffset\\evensidemargin = $evenoffset $topmargintoinsert\\textwidth= $textwidth\\newlength{\\minipagewidth}\\setlength{\\minipagewidth}{\\textwidth\/\$number_of_columns-0\.2cm}\\renewcommand{\\ref}{\\keephidden\}\\pagestyle{fancy}\\rhead{}\\chead{}\\begin{document}\\voffset=-0\.8cm\\setcounter{page}{1}  \\vskip 5 mm /;      $text =~ s/\\pagestyle{fancy}\\rhead{}\\chead{}\s*\\begin{document}/\\textheight = $textheight\\oddsidemargin = $evenoffset\n\\evensidemargin = $evenoffset $topmargintoinsert\\textwidth= $textwidth\\newlength{\\minipagewidth}\n\\setlength{\\minipagewidth}{\\textwidth\/\$number_of_columns-0\.2cm}\\renewcommand{\\ref}{\\keephidden\}\\pagestyle{fancy}\\rhead{}\\chead{}\\begin{document}\\voffset=-0\.8cm\n\\setcounter{page}{1}  \\vskip 5 mm\n /;
  }   }
  if ($papersize eq 'a4') {   if ($papersize eq 'a4') {
     $text =~ s/(\\begin{document})/$1\\special{papersize=210mm,297mm}/;      $text =~ s/(\\begin{document})/$1\\special{papersize=210mm,297mm}/;
Line 554  sub page_cleanup { Line 609  sub page_cleanup {
   
   
 sub details_for_menu {  sub details_for_menu {
       my ($helper)=@_;
     my $name_of_resourse = &Apache::lonnet::gettitle($ENV{'form.postdata'});      my $postdata=$ENV{'form.postdata'};
     my $symbolic = &Apache::lonnet::symbread($ENV{'form.postdata'});      if (!$postdata) { $postdata=$helper->{VARS}{'postdata'}; }
       my $name_of_resource = &Apache::lonnet::gettitle($postdata);
       my $symbolic = &Apache::lonnet::symbread($postdata);
     my ($map,$id,$resource)=&Apache::lonnet::decode_symb($symbolic);      my ($map,$id,$resource)=&Apache::lonnet::decode_symb($symbolic);
     $map=&Apache::lonnet::clutter($map);      $map=&Apache::lonnet::clutter($map);
     my $name_of_sequence = &Apache::lonnet::gettitle($map);      my $name_of_sequence = &Apache::lonnet::gettitle($map);
Line 569  sub details_for_menu { Line 626  sub details_for_menu {
  $ENV{'request.course.uri'} =~ m|([^/]+)$|;   $ENV{'request.course.uri'} =~ m|([^/]+)$|;
  $name_of_map = $1;   $name_of_map = $1;
     }      }
     return ($name_of_resourse,$name_of_sequence,$name_of_map);      return ($name_of_resource,$name_of_sequence,$name_of_map);
   
 }  }
   
   
Line 645  sub print_latex_header { Line 701  sub print_latex_header {
     if ($mode eq 'batchmode') {      if ($mode eq 'batchmode') {
  $output.='\batchmode';   $output.='\batchmode';
     }      }
     $output.='\newcommand{\keephidden}[1]{}\renewcommand{\deg}{$^{\circ}$}'.      $output.='\newcommand{\keephidden}[1]{}\renewcommand{\deg}{$^{\circ}$}'."\n".
      '\usepackage{longtable}\usepackage{textcomp}\usepackage{makeidx}'.       '\usepackage{longtable}\usepackage{textcomp}\usepackage{makeidx}'."\n".
      '\usepackage[dvips]{graphicx}\usepackage{epsfig}\usepackage{calc}'.       '\usepackage[dvips]{graphicx}\usepackage{epsfig}'."\n".
      '\newenvironment{choicelist}{\begin{list}{}{\setlength{\rightmargin}{0in}'.       '\usepackage{picins}\usepackage{calc}'."\n".
      '\setlength{\leftmargin}{0.13in}\setlength{\topsep}{0.05in}'.       '\newenvironment{choicelist}{\begin{list}{}{\setlength{\rightmargin}{0in}'."\n".
      '\setlength{\itemsep}{0.022in}\setlength{\parsep}{0in}'.       '\setlength{\leftmargin}{0.13in}\setlength{\topsep}{0.05in}'."\n".
      '\setlength{\belowdisplayskip}{0.04in}\setlength{\abovedisplayskip}{0.05in}'.       '\setlength{\itemsep}{0.022in}\setlength{\parsep}{0in}'."\n".
      '\setlength{\abovedisplayshortskip}{-0.04in}'.       '\setlength{\belowdisplayskip}{0.04in}\setlength{\abovedisplayskip}{0.05in}'."\n".
      '\setlength{\belowdisplayshortskip}{0.04in}}}{\end{list}}'.       '\setlength{\abovedisplayshortskip}{-0.04in}'."\n".
      '\renewenvironment{theindex}{\begin{list}{}{{\vskip 1mm \noindent \large'.       '\setlength{\belowdisplayshortskip}{0.04in}}}{\end{list}}'."\n".
      '\textbf{Index}} \newline \setlength{\rightmargin}{0in}'.       '\renewenvironment{theindex}{\begin{list}{}{{\vskip 1mm \noindent \large'."\n".
      '\setlength{\leftmargin}{0.13in}\setlength{\topsep}{0.01in}'.       '\textbf{Index}} \newline \setlength{\rightmargin}{0in}'."\n".
      '\setlength{\itemsep}{0.1in}\setlength{\parsep}{-0.02in}'.       '\setlength{\leftmargin}{0.13in}\setlength{\topsep}{0.01in}'."\n".
      '\setlength{\belowdisplayskip}{0.01in}\setlength{\abovedisplayskip}{0.01in}'.       '\setlength{\itemsep}{0.1in}\setlength{\parsep}{-0.02in}'."\n".
      '\setlength{\abovedisplayshortskip}{-0.04in}'.       '\setlength{\belowdisplayskip}{0.01in}\setlength{\abovedisplayskip}{0.01in}'."\n".
      '\setlength{\belowdisplayshortskip}{0.01in}}}{\end{list}}\begin{document}';       '\setlength{\abovedisplayshortskip}{-0.04in}'."\n".
        '\setlength{\belowdisplayshortskip}{0.01in}}}{\end{list}}\begin{document}'."\n";
     return $output;           return $output;     
 }  }
   
Line 690  sub path_to_problem { Line 747  sub path_to_problem {
 sub recalcto_mm {  sub recalcto_mm {
     my $textwidth=shift;      my $textwidth=shift;
     my $LaTeXwidth;      my $LaTeXwidth;
     if ($textwidth=~/(\d+\.?\d*)\s*cm/) {      if ($textwidth=~/(-?\d+\.?\d*)\s*cm/) {
  $LaTeXwidth = $1*10;   $LaTeXwidth = $1*10;
     } elsif ($textwidth=~/(\d+\.?\d*)\s*mm/) {      } elsif ($textwidth=~/(-?\d+\.?\d*)\s*mm/) {
  $LaTeXwidth = $1;   $LaTeXwidth = $1;
     } elsif ($textwidth=~/(\d+\.?\d*)\s*in/) {      } elsif ($textwidth=~/(-?\d+\.?\d*)\s*in/) {
  $LaTeXwidth = $1*25.4;   $LaTeXwidth = $1*25.4;
     }      }
     $LaTeXwidth.=' mm';      $LaTeXwidth.=' mm';
Line 782  ENDPART Line 839  ENDPART
           
     if ($helper->{'VARS'}->{'PRINT_TYPE'} eq 'current_document') {      if ($helper->{'VARS'}->{'PRINT_TYPE'} eq 'current_document') {
       #-- single document - problem, page, html, xml, ...        #-- single document - problem, page, html, xml, ...
  my $currentURL;   my ($currentURL,$cleanURL);
  if ($helper->{'VARS'}->{'construction'} ne '1') {   if ($helper->{'VARS'}->{'construction'} ne '1') {
             #prints published resource              #prints published resource
     $currentURL=$helper->{'VARS'}->{'postdata'};      $currentURL=$helper->{'VARS'}->{'postdata'};
       $cleanURL=&Apache::lonenc::check_decrypt($currentURL);
  } else {   } else {
             #prints resource from the construction space              #prints resource from the construction space
     $currentURL='/'.$helper->{'VARS'}->{'filename'};      $currentURL='/'.$helper->{'VARS'}->{'filename'};
     if ($currentURL=~/([^?]+)/) {$currentURL=$1;}      if ($currentURL=~/([^?]+)/) {$currentURL=$1;}
       $cleanURL=$currentURL;
  }   }
  $selectionmade = 1;   $selectionmade = 1;
  if ($currentURL=~/\.(problem|exam|quiz|assess|survey|form|library|page|xml|html|htm|xhtml|xhtm)$/) {   if ($cleanURL=~/\.(problem|exam|quiz|assess|survey|form|library|page|xml|html|htm|xhtml|xhtm)$/) {
     my $rndseed=time;      my $rndseed=time;
     my $texversion='';      my $texversion='';
     if ($helper->{'VARS'}->{'ANSWER_TYPE'} ne 'only') {      if ($helper->{'VARS'}->{'ANSWER_TYPE'} ne 'only') {
  my %moreenv;   my %moreenv;
  $moreenv{'request.filename'}=$currentURL;   $moreenv{'request.filename'}=$cleanURL;
  if ($helper->{'VARS'}->{'style_file'}=~/\w/) {   if ($helper->{'VARS'}->{'style_file'}=~/\w/) {
     $moreenv{'construct.style'}=$helper->{'VARS'}->{'style_file'};      $moreenv{'construct.style'}=$helper->{'VARS'}->{'style_file'};
     my $dom = $ENV{'user.domain'};      my $dom = $ENV{'user.domain'};
Line 837  ENDPART Line 896  ENDPART
     $texversion=&print_latex_header($helper->{'VARS'}->{'LATEX_TYPE'});      $texversion=&print_latex_header($helper->{'VARS'}->{'LATEX_TYPE'});
     if ($helper->{'VARS'}->{'construction'} ne '1') {      if ($helper->{'VARS'}->{'construction'} ne '1') {
  $texversion.='\vskip 0 mm \noindent\textbf{'.&Apache::lonnet::gettitle($helper->{'VARS'}->{'symb'}).'}\vskip 0 mm ';   $texversion.='\vskip 0 mm \noindent\textbf{'.&Apache::lonnet::gettitle($helper->{'VARS'}->{'symb'}).'}\vskip 0 mm ';
  $texversion.=&path_to_problem ($currentURL,$LaTeXwidth);   $texversion.=&path_to_problem($cleanURL,$LaTeXwidth);
     } else {      } else {
  $texversion.='\vskip 0 mm \noindent\textbf{Prints from construction space - there is no title.}\vskip 0 mm ';   $texversion.='\vskip 0 mm \noindent\textbf{Prints from construction space - there is no title.}\vskip 0 mm ';
  my $URLpath=$currentURL;   my $URLpath=$cleanURL;
  $URLpath=~s/~([^\/]+)/public_html\/$1\/$1/;   $URLpath=~s/~([^\/]+)/public_html\/$1\/$1/;
  $texversion.=&path_to_problem ($URLpath,$LaTeXwidth);   $texversion.=&path_to_problem ($URLpath,$LaTeXwidth);
     }      }
Line 919  ENDPART Line 978  ENDPART
     }      }
     if ($helper->{VARS}->{'construction'} eq '1') {$result=~s/(\\begin{document})/$1 \\fbox\{RANDOM SEED IS $rndseed\} /;}      if ($helper->{VARS}->{'construction'} eq '1') {$result=~s/(\\begin{document})/$1 \\fbox\{RANDOM SEED IS $rndseed\} /;}
     $result .= '\end{document}';         $result .= '\end{document}';   
  } elsif ($currentURL=~/\/(smppg|syllabus|aboutme|bulletinboard)$/) {    } elsif ($cleanURL=~/\/(smppg|syllabus|aboutme|bulletinboard)$/) { 
  my %form;   my %form;
  $form{'grade_target'}='tex';   $form{'grade_target'}='tex';
  $form{'textwidth'}=&get_textwidth($helper,$LaTeXwidth);   $form{'textwidth'}=&get_textwidth($helper,$LaTeXwidth);
Line 966  ENDPART Line 1025  ENDPART
     my $assignment=&Apache::lonxml::latex_special_symbols(&Apache::lonnet::gettitle($sequence),'header'); #tittle of the assignment which contains this problem      my $assignment=&Apache::lonxml::latex_special_symbols(&Apache::lonnet::gettitle($sequence),'header'); #tittle of the assignment which contains this problem
     if ($selectionmade==7) {$helper->{VARS}->{'assignment'}=$assignment;}      if ($selectionmade==7) {$helper->{VARS}->{'assignment'}=$assignment;}
     if ($i==0) {$prevassignment=$assignment;}      if ($i==0) {$prevassignment=$assignment;}
     #&Apache::lonnet::logthis("Trying to get $urlp with symb $master_seq[$i]");  
     my $texversion='';      my $texversion='';
     if ($urlp=~/\.(problem|exam|quiz|assess|survey|form|library|page|xml|html|htm|xhtml|xhtm)$/) {      if ($urlp=~/\.(problem|exam|quiz|assess|survey|form|library|page|xml|html|htm|xhtml|xhtm)$/) {
  $texversion.=&Apache::lonnet::ssi($urlp,%form);   $texversion.=&Apache::lonnet::ssi($urlp,%form);
Line 1015  ENDPART Line 1073  ENDPART
     my $courseidinfo = &get_course();      my $courseidinfo = &get_course();
     if (defined($courseidinfo)) { $courseidinfo=' - '.$courseidinfo }      if (defined($courseidinfo)) { $courseidinfo=' - '.$courseidinfo }
     $prevassignment=$assignment;      $prevassignment=$assignment;
     $result .='\newpage \noindent\parbox{\minipagewidth}{\noindent\\lhead{\\textit{\\textbf{'.$name.'}}'.$courseidinfo.' \\hfill \\thepage \\\\ \\textit{'.$assignment.'}}} \vskip -5 mm ';      $result .='\newpage \noindent\parbox{\minipagewidth}{\noindent\\lhead{\\textit{\\textbf{'.$name.'}}'.$courseidinfo.' \\hfill \\thepage \\\\ \\textit{'.$assignment.'}}} \vskip 5 mm ';
  }   }
  $result .= $texversion;   $result .= $texversion;
  $flag_latex_header_remove = 'YES';      $flag_latex_header_remove = 'YES';   
Line 1046  ENDPART Line 1104  ENDPART
     if (&Apache::loncommon::connection_aborted($r)) { last; }      if (&Apache::loncommon::connection_aborted($r)) { last; }
  }   }
  &Apache::lonnet::delenv('form.counter');   &Apache::lonnet::delenv('form.counter');
  if ($flag_page_in_sequence eq 'YES') {$result =~ s/\\usepackage{calc}/\\usepackage{calc}\\usepackage{longtable}/;}   if ($flag_page_in_sequence eq 'YES') {
       $result =~ s/\\usepackage{calc}/\\usepackage{calc}\\usepackage{longtable}/;
    }
  $result .= '\end{document}';   $result .= '\end{document}';
      } elsif (($helper->{'VARS'}->{'PRINT_TYPE'} eq 'problems_for_students') ||       } elsif (($helper->{'VARS'}->{'PRINT_TYPE'} eq 'problems_for_students') ||
       ($helper->{'VARS'}->{'PRINT_TYPE'} eq 'resources_for_students')){        ($helper->{'VARS'}->{'PRINT_TYPE'} eq 'resources_for_students')){
Line 1060  ENDPART Line 1120  ENDPART
      $type='resources';       $type='resources';
  }   }
  my @students=split /\|\|\|/, $helper->{'VARS'}->{'STUDENTS'};   my @students=split /\|\|\|/, $helper->{'VARS'}->{'STUDENTS'};
    #   The normal sort order is by section then by students within the
    #   section. If the helper var student_sort is 1, then the user has elected
    #   to override this and output the students by name.
    #    Each element of the students array is of the form:
    #       username:domain:section:last, first:status
    #    
    #   
    if ($helper->{'VARS'}->{'student_sort'}    eq 1) {
        @students = sort compare_names  @students;
    }
          if ($helper->{'VARS'}->{'NUMBER_TO_PRINT'} eq '0' ||           if ($helper->{'VARS'}->{'NUMBER_TO_PRINT'} eq '0' ||
      $helper->{'VARS'}->{'NUMBER_TO_PRINT'} eq 'all' ) {       $helper->{'VARS'}->{'NUMBER_TO_PRINT'} eq 'all' ) {
      $helper->{'VARS'}->{'NUMBER_TO_PRINT'}=$#students+1;       $helper->{'VARS'}->{'NUMBER_TO_PRINT'}=$#students+1;
Line 1098  ENDPART Line 1168  ENDPART
  my $num_todo=$helper->{'VARS'}->{'NUMBER_TO_PRINT_TOTAL'};   my $num_todo=$helper->{'VARS'}->{'NUMBER_TO_PRINT_TOTAL'};
  my $code_name=$helper->{'VARS'}->{'ANON_CODE_STORAGE_NAME'};   my $code_name=$helper->{'VARS'}->{'ANON_CODE_STORAGE_NAME'};
  my $old_name=$helper->{'VARS'}->{'REUSE_OLD_CODES'};   my $old_name=$helper->{'VARS'}->{'REUSE_OLD_CODES'};
  my @master_seq=split /\|\|\|/, $helper->{'VARS'}->{'RESOURCES'};  
  my ($type) = split(/_/,$helper->{'VARS'}->{'PRINT_TYPE'});  
  my $number_per_page=$helper->{'VARS'}->{'NUMBER_TO_PRINT'};  
  if ($number_per_page eq '0' || $number_per_page eq 'all') {  
      $number_per_page=$num_todo;  
  }  
  my $flag_latex_header_remove = 'NO';   
  my %moreenv = ('textwidth' => &get_textwidth($helper,$LaTeXwidth));   my %moreenv = ('textwidth' => &get_textwidth($helper,$LaTeXwidth));
  my %prog_state=&Apache::lonhtmlcommon::Create_PrgWin($r,'Print Status','Class Print Status',$num_todo,'inline','75');  
  my $seed=time+($$<<16)+($$);   my $seed=time+($$<<16)+($$);
  my @allcodes;   my @allcodes;
  if ($old_name) {   if ($old_name) {
      my %result=&Apache::lonnet::get('CODEs',[$old_name],$cdom,$cnum);       my %result=&Apache::lonnet::get('CODEs',[$old_name],$cdom,$cnum);
      @allcodes=split(',',$result{$old_name});       @allcodes=split(',',$result{$old_name});
        $num_todo=scalar(@allcodes);
  } else {   } else {
      my %allcodes;       my %allcodes;
      srand($seed);       srand($seed);
Line 1125  ENDPART Line 1188  ENDPART
      }       }
      @allcodes=keys(%allcodes);       @allcodes=keys(%allcodes);
  }   }
    my @master_seq=split /\|\|\|/, $helper->{'VARS'}->{'RESOURCES'};
    my ($type) = split(/_/,$helper->{'VARS'}->{'PRINT_TYPE'});
    my $number_per_page=$helper->{'VARS'}->{'NUMBER_TO_PRINT'};
    if ($number_per_page eq '0' || $number_per_page eq 'all') {
        $number_per_page=$num_todo;
    }
    my $flag_latex_header_remove = 'NO'; 
    my %prog_state=&Apache::lonhtmlcommon::Create_PrgWin($r,'Print Status','Class Print Status',$num_todo,'inline','75');
  my $count=0;   my $count=0;
  foreach my $code (sort(@allcodes)) {   foreach my $code (sort(@allcodes)) {
      my $file_num=int($count/$number_per_page);       my $file_num=int($count/$number_per_page);
Line 1219  ENDPART Line 1290  ENDPART
     for (my $i=1;$i<=$#print_array;$i++) {$print_array[$i] = &latex_corrections($number_of_columns,$print_array[$i],$selectionmade);}      for (my $i=1;$i<=$#print_array;$i++) {$print_array[$i] = &latex_corrections($number_of_columns,$print_array[$i],$selectionmade);}
     #changes page's parameters for the one column output       #changes page's parameters for the one column output 
     if ($numberofcolumns == 1) {      if ($numberofcolumns == 1) {
  $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'} /;
     }      }
 #-- writing .tex file in prtspool   #-- writing .tex file in prtspool 
     my $temp_file;      my $temp_file;
Line 1277  ENDPART Line 1348  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=$helper->{'VARS'}->{'postdata'};   $URLback=&Apache::lonnet::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 1411  sub print_resources { Line 1482  sub print_resources {
     if ($usersection ne '') {$courseidinfo.=' - Sec. '.$usersection}      if ($usersection ne '') {$courseidinfo.=' - Sec. '.$usersection}
     my $currentassignment=&Apache::lonxml::latex_special_symbols($helper->{VARS}->{'assignment'},'header');      my $currentassignment=&Apache::lonxml::latex_special_symbols($helper->{VARS}->{'assignment'},'header');
     if ($current_output=~/\\documentclass/) {      if ($current_output=~/\\documentclass/) {
  $current_output =~ s/\\begin{document}/\\setlength{\\topmargin}{1cm} \\begin{document}\\noindent\\lhead{\\textit{\\textbf{$fullname}}$courseidinfo \\hfill \\thepage \\\\ \\textit{$currentassignment}$namepostfix}\\vskip 3 mm /;   $current_output =~ s/\\begin{document}/\\setlength{\\topmargin}{1cm} \\begin{document}\\noindent\\parbox{\\minipagewidth}{\\noindent\\lhead{\\textit{\\textbf{$fullname}}$courseidinfo \\hfill \\thepage \\\\ \\textit{$currentassignment}$namepostfix}}\\vskip 5 mm /;
     } else {      } else {
  my $blankpages = '';   my $blankpages = '';
  for (my $j=0;$j<$helper->{'VARS'}->{'EMPTY_PAGES'};$j++) {$blankpages.='\clearpage\strut\clearpage';}   for (my $j=0;$j<$helper->{'VARS'}->{'EMPTY_PAGES'};$j++) {$blankpages.='\clearpage\strut\clearpage';}
  $current_output = '\strut\vspace*{-6 mm}\\newline\\noindent\\makebox[\\textwidth/$number_of_columns][b]{\\hrulefill}\vspace*{-2 mm}\\newline\\noindent{\\tiny Printed from LON-CAPA\\copyright MSU{\\hfill} Licensed under GNU General Public License }\\newpage '.$blankpages.'\setcounter{page}{1}\noindent\parbox{\minipagewidth}{\noindent\\lhead{\\textit{\\textbf{'.$fullname.'}}'.$courseidinfo.' \\hfill \\thepage \\\\ \\textit{'.$currentassignment.'}'.$namepostfix.'}} \vskip -5 mm '.$current_output;   $current_output = '\strut\vspace*{-6 mm}\\newline\\noindent\\makebox[\\textwidth/$number_of_columns][b]{\\hrulefill}\vspace*{-2 mm}\\newline\\noindent{\\tiny Printed from LON-CAPA\\copyright MSU{\\hfill} Licensed under GNU General Public License }\\newpage '.$blankpages.'\setcounter{page}{1}\noindent\parbox{\minipagewidth}{\noindent\\lhead{\\textit{\\textbf{'.$fullname.'}}'.$courseidinfo.' \\hfill \\thepage \\\\ \\textit{'.$currentassignment.'}'.$namepostfix.'}} \vskip 5 mm '.$current_output;
     }      }
     return ($current_output,$fullname);      return ($current_output,$fullname);
   
Line 1474  use Data::Dumper; Line 1545  use Data::Dumper;
 sub printHelper {  sub printHelper {
     my $r = shift;      my $r = shift;
   
     if ($ENV{'request.course.id'}) {  
  my $fn=$ENV{'request.course.fn'};  
  tie(%hash,'GDBM_File',"$fn.db",&GDBM_READER(),0640);  
     }  
   
     if ($r->header_only) {      if ($r->header_only) {
         if ($ENV{'browser.mathml'}) {          if ($ENV{'browser.mathml'}) {
             &Apache::loncommon::content_type($r,'text/xml');              &Apache::loncommon::content_type($r,'text/xml');
Line 1513  sub printHelper { Line 1579  sub printHelper {
     $helper->declareVar('construction');      $helper->declareVar('construction');
     $helper->declareVar('assignment');      $helper->declareVar('assignment');
     $helper->declareVar('style_file');      $helper->declareVar('style_file');
       $helper->declareVar('student_sort');
           
     # This will persistently load in the data we want from the      # This will persistently load in the data we want from the
     # very first screen.      # very first screen.
Line 1539  sub printHelper { Line 1606  sub printHelper {
         $helper->{VARS}->{'symb'} = &Apache::lonnet::symbread($helper->{VARS}->{'postdata'});          $helper->{VARS}->{'symb'} = &Apache::lonnet::symbread($helper->{VARS}->{'postdata'});
   
     }      }
           $helper->{VARS}->{'symb'}=
     my ($resourceTitle,$sequenceTitle,$mapTitle) = &details_for_menu;   &Apache::lonenc::check_encrypt($helper->{VARS}->{'symb'});
       my ($resourceTitle,$sequenceTitle,$mapTitle) = &details_for_menu($helper);
     if ($sequenceTitle ne '') {$helper->{VARS}->{'assignment'}=$sequenceTitle;}      if ($sequenceTitle ne '') {$helper->{VARS}->{'assignment'}=$sequenceTitle;}
   
           
Line 1557  sub printHelper { Line 1625  sub printHelper {
                          0, rindex($helper->{VARS}->{'filename'}, '/') + 1);                           0, rindex($helper->{VARS}->{'filename'}, '/') + 1);
     } else {      } else {
         ($map, $id, $url) = &Apache::lonnet::decode_symb($symb);          ($map, $id, $url) = &Apache::lonnet::decode_symb($symb);
         $helper->{VARS}->{'postdata'} = Apache::lonnet::clutter($url);          $helper->{VARS}->{'postdata'} = 
       &Apache::lonenc::check_encrypt(&Apache::lonnet::clutter($url));
   
         if (!$resourceTitle) { # if the resource doesn't have a title, use the filename          if (!$resourceTitle) { # if the resource doesn't have a title, use the filename
             my $postdata = $helper->{VARS}->{'postdata'};              my $postdata = $helper->{VARS}->{'postdata'};
Line 1612  sub printHelper { Line 1681  sub printHelper {
     my $isNotMap = '!$res->is_sequence()';      my $isNotMap = '!$res->is_sequence()';
     $isNotMap .= ' && !$res->randomout()' if !$userCanSeeHidden;      $isNotMap .= ' && !$res->randomout()' if !$userCanSeeHidden;
     my $isMap = '$res->is_map()';      my $isMap = '$res->is_map()';
     my $symbFilter = '$res->symb()';      my $symbFilter = '$res->shown_symb()';
     my $urlValue = '$res->src()';      my $urlValue = '$res->link()';
   
     $helper->declareVar('SEQUENCE');      $helper->declareVar('SEQUENCE');
   
Line 1701  RESOURCE_SELECTOR Line 1770  RESOURCE_SELECTOR
         &Apache::lonxml::xmlparse($r, 'helper', <<CHOOSE_STUDENTS);          &Apache::lonxml::xmlparse($r, 'helper', <<CHOOSE_STUDENTS);
   <state name="CHOOSE_STUDENTS" title="Select Students and Resources">    <state name="CHOOSE_STUDENTS" title="Select Students and Resources">
       <student multichoice='1' variable="STUDENTS" nextstate="PAGESIZE" />        <student multichoice='1' variable="STUDENTS" nextstate="PAGESIZE" />
       <choices variable='student_sort'>
         <choice computer='0'>Sort by section then student</choice>
         <choice computer='1'>Sort by students across sections.</choice>
       </choices>
     $resource_selector      $resource_selector
   </state>    </state>
 CHOOSE_STUDENTS  CHOOSE_STUDENTS
Line 1709  CHOOSE_STUDENTS Line 1782  CHOOSE_STUDENTS
  my $cnum = $ENV{'course.'.$ENV{'request.course.id'}.'.num'};   my $cnum = $ENV{'course.'.$ENV{'request.course.id'}.'.num'};
         my @names=&Apache::lonnet::getkeys('CODEs',$cdom,$cnum);          my @names=&Apache::lonnet::getkeys('CODEs',$cdom,$cnum);
  my $namechoice='<choice></choice>';   my $namechoice='<choice></choice>';
  foreach my $name (@names) {   foreach my $name (sort {uc($a) cmp uc($b)} @names) {
     if ($name =~ /^error: 2 /) { next; }      if ($name =~ /^error: 2 /) { next; }
     $namechoice.='<choice computer="'.$name.'">'.$name.'</choice>';      $namechoice.='<choice computer="'.$name.'">'.$name.'</choice>';
  }   }
Line 1759  RESOURCE_SELECTOR Line 1832  RESOURCE_SELECTOR
  &Apache::lonxml::xmlparse($r, 'helper', <<CHOOSE_STUDENTS1);   &Apache::lonxml::xmlparse($r, 'helper', <<CHOOSE_STUDENTS1);
   <state name="CHOOSE_STUDENTS1" title="Select Students and Resources">    <state name="CHOOSE_STUDENTS1" title="Select Students and Resources">
     <student multichoice='1' variable="STUDENTS" nextstate="PAGESIZE" />      <student multichoice='1' variable="STUDENTS" nextstate="PAGESIZE" />
       <choices variable='student_sort'>
         <choice computer='0'>Sort by section then student</choice>
         <choice computer='1'>Sort by students across sections.</choice>
       </choices>
   
     $resource_selector      $resource_selector
     </state>      </state>
 CHOOSE_STUDENTS1  CHOOSE_STUDENTS1
Line 1963  RNDSEED Line 2041  RNDSEED
   
     $r->print($helper->display());      $r->print($helper->display());
   
     Apache::lonhelper::unregisterHelperTags();      &Apache::lonhelper::unregisterHelperTags();
   
     untie %hash;  
   
     return OK;      return OK;
 }  }

Removed from v.1.332  
changed lines
  Added in v.1.344


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