Diff for /loncom/interface/lonprintout.pm between versions 1.341 and 1.356

version 1.341, 2004/12/13 23:28:43 version 1.356, 2005/02/07 12:00:13
Line 1 Line 1
 # The LearningOnline Network  #  The LearningOnline Network
 # Printout  # Printout
 #  #
 # $Id$  # $Id$
Line 432  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','1 cm'],       '1' => [ '7.1 in','9.8 in', '-0.57 in','-0.57 in','0.7 cm'],
      '2' => ['3.66 in','10.2 in', '-0.57 in','-0.57 in','1 cm']       '2' => ['3.66 in','9.8 in', '-0.57 in','-0.57 in','0.7 cm']
  },   },
  'album' => {   'album' => {
      '1' => [ '8.8 in', '6.8 in','-40 pt in',  '-60 pt','1 cm'],       '1' => [ '8.8 in', '6.8 in','-40 pt in',  '-60 pt','1 cm'],
Line 703  sub print_latex_header { Line 703  sub print_latex_header {
     }      }
     $output.='\newcommand{\keephidden}[1]{}\renewcommand{\deg}{$^{\circ}$}'."\n".      $output.='\newcommand{\keephidden}[1]{}\renewcommand{\deg}{$^{\circ}$}'."\n".
      '\usepackage{longtable}\usepackage{textcomp}\usepackage{makeidx}'."\n".       '\usepackage{longtable}\usepackage{textcomp}\usepackage{makeidx}'."\n".
      '\usepackage[dvips]{graphicx}\usepackage{epsfig}\usepackage{calc}'."\n".       '\usepackage[dvips]{graphicx}\usepackage{epsfig}'."\n".
        '\usepackage{picins}\usepackage{calc}'."\n".
      '\newenvironment{choicelist}{\begin{list}{}{\setlength{\rightmargin}{0in}'."\n".       '\newenvironment{choicelist}{\begin{list}{}{\setlength{\rightmargin}{0in}'."\n".
      '\setlength{\leftmargin}{0.13in}\setlength{\topsep}{0.05in}'."\n".       '\setlength{\leftmargin}{0.13in}\setlength{\topsep}{0.05in}'."\n".
      '\setlength{\itemsep}{0.022in}\setlength{\parsep}{0in}'."\n".       '\setlength{\itemsep}{0.022in}\setlength{\parsep}{0in}'."\n".
Line 788  sub output_data { Line 789  sub output_data {
     my %parmhash = %$rparmhash;      my %parmhash = %$rparmhash;
     my $bodytag=&Apache::loncommon::bodytag('Preparing Printout');      my $bodytag=&Apache::loncommon::bodytag('Preparing Printout');
     $r->print(<<ENDPART);      $r->print(<<ENDPART);
   
   
   
 <html>  <html>
 <script type="text/javascript" language="Javascript" >  <script type="text/javascript" language="Javascript" >
     var editbrowser;      var editbrowser;
Line 820  $bodytag Line 824  $bodytag
 Please stand by while processing your print request, this may take some time ...  Please stand by while processing your print request, this may take some time ...
 ENDPART  ENDPART
   
       #  Common settings for the %form has:
       # In some cases these settings get overriddent by specific cases, but the
       # settings are common enough to make it worthwhile factoring them out
       # here.
       #
       my %form;
       my $form{'grade_target'} = 'tex';
       my $form{'textwidth'}    = &tget_textwidth($helper, $LaTeXwidth);
   
     my $format_from_helper = $helper->{'VARS'}->{'FORMAT'};      my $format_from_helper = $helper->{'VARS'}->{'FORMAT'};
     my ($result,$selectionmade) = ('','');      my ($result,$selectionmade) = ('','');
     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 838  ENDPART Line 851  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'};
     my $user = $ENV{'user.name'};      my $user = $ENV{'user.name'};
     my $put_result = &Apache::lonnet::put('environment',{'construct.style'=>$helper->{'VARS'}->{'style_file'}},$dom,$user);      my $put_result = &Apache::lonnet::put('environment',{'construct.style'=>$helper->{'VARS'}->{'style_file'}},$dom,$user);
  }   }
  my %form;  
                 if ($helper->{'VARS'}->{'probstatus'} eq 'exam') {$form{'problemtype'}='exam';}                  if ($helper->{'VARS'}->{'probstatus'} eq 'exam') {$form{'problemtype'}='exam';}
  $form{'grade_target'}='tex';  
  $form{'textwidth'}=&get_textwidth($helper,$LaTeXwidth);  
  $form{'problem_split'}=$parmhash{'problem_stream_switch'};   $form{'problem_split'}=$parmhash{'problem_stream_switch'};
  $form{'suppress_tries'}=$parmhash{'suppress_tries'};   $form{'suppress_tries'}=$parmhash{'suppress_tries'};
  $form{'latex_type'}=$helper->{'VARS'}->{'LATEX_TYPE'};   $form{'latex_type'}=$helper->{'VARS'}->{'LATEX_TYPE'};
Line 882  ENDPART Line 894  ENDPART
     }      }
     if(($helper->{'VARS'}->{'ANSWER_TYPE'} eq 'no') ||      if(($helper->{'VARS'}->{'ANSWER_TYPE'} eq 'no') ||
        ($helper->{'VARS'}->{'ANSWER_TYPE'} eq 'only')) {         ($helper->{'VARS'}->{'ANSWER_TYPE'} eq 'only')) {
  my %form;   $form{'problem_split'}=$parmhash{'problem_stream_switch'};
  $form{'grade_target'}='answer';   $form{'grade_target'}='answer';
  $form{'answer_output_mode'}='tex';   $form{'answer_output_mode'}='tex';
  $form{'rndseed'}=$rndseed;   $form{'rndseed'}=$rndseed;
Line 893  ENDPART Line 905  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 929  ENDPART Line 941  ENDPART
  if ($urlp=~/\.(problem|exam|quiz|assess|survey|form|library|xml|html|htm|xhtml|xhtm)$/) {   if ($urlp=~/\.(problem|exam|quiz|assess|survey|form|library|xml|html|htm|xhtml|xhtm)$/) {
     my $texversion='';      my $texversion='';
     if ($helper->{'VARS'}->{'ANSWER_TYPE'} ne 'only') {      if ($helper->{'VARS'}->{'ANSWER_TYPE'} ne 'only') {
  my %form;  
  $form{'grade_target'}='tex';  
  $form{'textwidth'}=&get_textwidth($helper,$LaTeXwidth);  
  $form{'problem_split'}=$parmhash{'problem_stream_switch'};   $form{'problem_split'}=$parmhash{'problem_stream_switch'};
  $form{'suppress_tries'}=$parmhash{'suppress_tries'};   $form{'suppress_tries'}=$parmhash{'suppress_tries'};
  $form{'latex_type'}=$helper->{'VARS'}->{'LATEX_TYPE'};   $form{'latex_type'}=$helper->{'VARS'}->{'LATEX_TYPE'};
Line 941  ENDPART Line 950  ENDPART
     if((($helper->{'VARS'}->{'ANSWER_TYPE'} eq 'no') ||      if((($helper->{'VARS'}->{'ANSWER_TYPE'} eq 'no') ||
        ($helper->{'VARS'}->{'ANSWER_TYPE'} eq 'only')) &&          ($helper->{'VARS'}->{'ANSWER_TYPE'} eq 'only')) && 
        ($urlp=~/\.(problem|exam|quiz|assess|survey|form|library|page)$/)) {         ($urlp=~/\.(problem|exam|quiz|assess|survey|form|library|page)$/)) {
  my %form;  
  $form{'grade_target'}='answer';   $form{'grade_target'}='answer';
  $form{'answer_output_mode'}='tex';   $form{'answer_output_mode'}='tex';
  $form{'rndseed'}=$rndseed;   $form{'rndseed'}=$rndseed;
    $form{'problem_split'}=$parmhash{'problem_stream_switch'};
                         if ($urlp=~/\/res\//) {$ENV{'request.state'}='published';}                          if ($urlp=~/\/res\//) {$ENV{'request.state'}='published';}
  my $answer=&Apache::lonnet::ssi($urlp,%form);   my $answer=&Apache::lonnet::ssi($urlp,%form);
  if ($helper->{'VARS'}->{'ANSWER_TYPE'} eq 'no') {   if ($helper->{'VARS'}->{'ANSWER_TYPE'} eq 'no') {
Line 975  ENDPART Line 984  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;  
  $form{'grade_target'}='tex';  
  $form{'textwidth'}=&get_textwidth($helper,$LaTeXwidth);  
  $form{'latex_type'}=$helper->{'VARS'}->{'LATEX_TYPE'};   $form{'latex_type'}=$helper->{'VARS'}->{'LATEX_TYPE'};
  if ($currentURL=~/\/syllabus$/) {$currentURL=~s/\/res//;}   if ($currentURL=~/\/syllabus$/) {$currentURL=~s/\/res//;}
  my $texversion=&Apache::lonnet::ssi($currentURL,%form);   my $texversion=&Apache::lonnet::ssi($currentURL,%form);
Line 986  ENDPART Line 992  ENDPART
  } else {   } else {
     $result.=&unsupported($currentURL,$helper->{'VARS'}->{'LATEX_TYPE'});      $result.=&unsupported($currentURL,$helper->{'VARS'}->{'LATEX_TYPE'});
  }   }
     } elsif (($helper->{'VARS'}->{'PRINT_TYPE'} eq 'map_problems') or      } elsif (($helper->{'VARS'}->{'PRINT_TYPE'} eq 'map_problems')       or
              ($helper->{'VARS'}->{'PRINT_TYPE'} eq 'map_problems_pages') or               ($helper->{'VARS'}->{'PRINT_TYPE'} eq 'map_problems_pages') or
              ($helper->{'VARS'}->{'PRINT_TYPE'} eq 'all_problems') or               ($helper->{'VARS'}->{'PRINT_TYPE'} eq 'all_problems')       or
        ($helper->{'VARS'}->{'PRINT_TYPE'} eq 'all_resources')      or # BUGBUG
      ($helper->{'VARS'}->{'PRINT_TYPE'} eq 'select_sequences')) {        ($helper->{'VARS'}->{'PRINT_TYPE'} eq 'select_sequences')) { 
         #-- produce an output string          #-- produce an output string
  if ($helper->{'VARS'}->{'PRINT_TYPE'} eq 'map_problems') {   if ($helper->{'VARS'}->{'PRINT_TYPE'} eq 'map_problems') {
Line 997  ENDPART Line 1004  ENDPART
     $selectionmade = 3;      $selectionmade = 3;
  } elsif ($helper->{'VARS'}->{'PRINT_TYPE'} eq 'all_problems') {   } elsif ($helper->{'VARS'}->{'PRINT_TYPE'} eq 'all_problems') {
     $selectionmade = 4;      $selectionmade = 4;
    } elsif ($helper->{'VARS'}->{'PRINT_TYPE'} eq 'all_resources') {  #BUGBUG
       $selectionmade = 4;
  } elsif ($helper->{'VARS'}->{'PRINT_TYPE'} eq 'select_sequences') {   } elsif ($helper->{'VARS'}->{'PRINT_TYPE'} eq 'select_sequences') {
     $selectionmade = 7;      $selectionmade = 7;
  }   }
  my %form=();     
  $form{'grade_target'}='tex';  
  $form{'textwidth'}=&get_textwidth($helper,$LaTeXwidth);  
  $form{'problem_split'}=$parmhash{'problem_stream_switch'};   $form{'problem_split'}=$parmhash{'problem_stream_switch'};
  $form{'suppress_tries'}=$parmhash{'suppress_tries'};   $form{'suppress_tries'}=$parmhash{'suppress_tries'};
  $form{'latex_type'}=$helper->{'VARS'}->{'LATEX_TYPE'};   $form{'latex_type'}=$helper->{'VARS'}->{'LATEX_TYPE'};
Line 1011  ENDPART Line 1017  ENDPART
  my $flag_latex_header_remove = 'NO';   my $flag_latex_header_remove = 'NO';
  my $flag_page_in_sequence = 'NO';   my $flag_page_in_sequence = 'NO';
  my @master_seq=split /\|\|\|/, $helper->{'VARS'}->{'RESOURCES'};   my @master_seq=split /\|\|\|/, $helper->{'VARS'}->{'RESOURCES'};
    my %page_breaks;
    foreach my $break (split /\|\|\|/, $helper->{'VARS'}->{'FINISHPAGE'}) {
       $page_breaks{$break} = 1;
    }
  my $prevassignment='';   my $prevassignment='';
  &Apache::lonnet::delenv('form.counter');   &Apache::lonnet::delenv('form.counter');
  &Apache::lonxml::init_counter();   &Apache::lonxml::init_counter();
  for (my $i=0;$i<=$#master_seq;$i++) {   for (my $i=0;$i<=$#master_seq;$i++) {
   
       # Note due to document structure, not allowed to put \newpage
       # prior to the first resource
   
       if (defined $page_breaks{$master_seq[$i]}) {
    if($i != 0) {
       $result.="\\newpage\n";
    }
       }
     my (undef,undef,$urlp)=&Apache::lonnet::decode_symb($master_seq[$i]);      my (undef,undef,$urlp)=&Apache::lonnet::decode_symb($master_seq[$i]);
     $urlp=&Apache::lonnet::clutter($urlp);      $urlp=&Apache::lonnet::clutter($urlp);
     $form{'symb'}=$master_seq[$i];      $form{'symb'}=$master_seq[$i];
Line 1039  ENDPART Line 1058  ENDPART
  my $current_counter=$ENV{'form.counter'};   my $current_counter=$ENV{'form.counter'};
  if(($helper->{'VARS'}->{'ANSWER_TYPE'} eq 'no') ||   if(($helper->{'VARS'}->{'ANSWER_TYPE'} eq 'no') ||
    ($helper->{'VARS'}->{'ANSWER_TYPE'} eq 'only')) {     ($helper->{'VARS'}->{'ANSWER_TYPE'} eq 'only')) {
     my %form;  
     $form{'grade_target'}='answer';      $form{'grade_target'}='answer';
     $form{'answer_output_mode'}='tex';      $form{'answer_output_mode'}='tex';
     my $answer=&Apache::lonnet::ssi($urlp,%form);      my $answer=&Apache::lonnet::ssi($urlp,%form);
Line 1075  ENDPART Line 1093  ENDPART
  $result .= $texversion;   $result .= $texversion;
  $flag_latex_header_remove = 'YES';      $flag_latex_header_remove = 'YES';   
     } elsif ($urlp=~/\/(smppg|syllabus|aboutme|bulletinboard)$/) {       } elsif ($urlp=~/\/(smppg|syllabus|aboutme|bulletinboard)$/) { 
  my %form;  
  $form{'grade_target'}='tex';  
  $form{'textwidth'}=&get_textwidth($helper,$LaTeXwidth);  
  $form{'latex_type'}=$helper->{'VARS'}->{'LATEX_TYPE'};   $form{'latex_type'}=$helper->{'VARS'}->{'LATEX_TYPE'};
  if ($urlp=~/\/syllabus$/) {$urlp=~s/\/res//;}   if ($urlp=~/\/syllabus$/) {$urlp=~s/\/res//;}
  my $texversion=&Apache::lonnet::ssi($urlp,%form);   my $texversion=&Apache::lonnet::ssi($urlp,%form);
Line 1101  ENDPART Line 1116  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')){
   
   
      #-- prints assignments for whole class or for selected students         #-- prints assignments for whole class or for selected students  
  my $type;   my $type;
  if ($helper->{'VARS'}->{'PRINT_TYPE'} eq 'problems_for_students') {   if ($helper->{'VARS'}->{'PRINT_TYPE'} eq 'problems_for_students') {
Line 1130  ENDPART Line 1149  ENDPART
      $helper->{'VARS'}->{'NUMBER_TO_PRINT'}=$#students+1;       $helper->{'VARS'}->{'NUMBER_TO_PRINT'}=$#students+1;
  }   }
  my @master_seq=split /\|\|\|/, $helper->{'VARS'}->{'RESOURCES'};   my @master_seq=split /\|\|\|/, $helper->{'VARS'}->{'RESOURCES'};
   
  #loop over students   #loop over students
  my $flag_latex_header_remove = 'NO';    my $flag_latex_header_remove = 'NO'; 
  my %moreenv;   my %moreenv;
          $moreenv{'instructor_comments'}='hide';           $moreenv{'instructor_comments'}='hide';
  $moreenv{'textwidth'}=&get_textwidth($helper,$LaTeXwidth);   $moreenv{'textwidth'}=&get_textwidth($helper,$LaTeXwidth);
  $moreenv{'print_discussions'}=$helper->{'VARS'}->{'PRINT_DISCUSSIONS'};   $moreenv{'print_discussions'}=$helper->{'VARS'}->{'PRINT_DISCUSSIONS'};
    $moreenv{'problem_split'}    = $parmhash{'problem_stream_switch'};
  if ($helper->{'VARS'}->{'PRINT_DISCUSSIONS'} eq 'yes') {$moreenv{'problem_split'}='yes';}   if ($helper->{'VARS'}->{'PRINT_DISCUSSIONS'} eq 'yes') {$moreenv{'problem_split'}='yes';}
  my %prog_state=&Apache::lonhtmlcommon::Create_PrgWin($r,'Print Status','Class Print Status',$#students+1,'inline','75');   my %prog_state=&Apache::lonhtmlcommon::Create_PrgWin($r,'Print Status','Class Print Status',$#students+1,'inline','75');
  my $student_counter=-1;   my $student_counter=-1;
  foreach my $person (@students) {   foreach my $person (@students) {
   
              my $duefile="/home/httpd/prtspool/$ENV{'user.name'}_$ENV{'user.domain'}_printout.due";               my $duefile="/home/httpd/prtspool/$ENV{'user.name'}_$ENV{'user.domain'}_printout.due";
      if (-e $duefile) {       if (-e $duefile) {
  my $temp_file = Apache::File->new('>>'.$duefile);   my $temp_file = Apache::File->new('>>'.$duefile);
Line 1147  ENDPART Line 1169  ENDPART
      }       }
      $student_counter++;       $student_counter++;
      my $i=int($student_counter/$helper->{'VARS'}{'NUMBER_TO_PRINT'});       my $i=int($student_counter/$helper->{'VARS'}{'NUMBER_TO_PRINT'});
      my ($output,$fullname)=&print_resources($r,$helper,$person,$type,\%moreenv,\@master_seq,$flag_latex_header_remove);       my ($output,$fullname)=&print_resources($r,$helper,
        $person,$type,
        \%moreenv,\@master_seq,
        $flag_latex_header_remove);
      $print_array[$i].=$output;       $print_array[$i].=$output;
      $student_names[$i].=$person.':'.$fullname.'_END_';       $student_names[$i].=$person.':'.$fullname.'_END_';
      &Apache::lonhtmlcommon::Increment_PrgWin($r,\%prog_state,&mt('last student').' '.$fullname);       &Apache::lonhtmlcommon::Increment_PrgWin($r,\%prog_state,&mt('last student').' '.$fullname);
Line 1164  ENDPART Line 1189  ENDPART
  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 %moreenv = ('textwidth' => &get_textwidth($helper,$LaTeXwidth));   my %moreenv = ('textwidth' => &get_textwidth($helper,$LaTeXwidth));
    $moreenv{'problem_split'}    = $parmhash{'problem_stream_switch'};
  my $seed=time+($$<<16)+($$);   my $seed=time+($$<<16)+($$);
  my @allcodes;   my @allcodes;
  if ($old_name) {   if ($old_name) {
Line 1221  ENDPART Line 1247  ENDPART
     my $urlp = $list_of_files[$i];      my $urlp = $list_of_files[$i];
     $urlp=~s|//|/|;      $urlp=~s|//|/|;
     if ($urlp=~/\//) {      if ($urlp=~/\//) {
  my %form;   $form{'problem_split'}=$parmhash{'problem_stream_switch'};
  $form{'grade_target'}='tex';  
  $form{'textwidth'}=&get_textwidth($helper,$LaTeXwidth);  
  $form{'rndseed'}=$rndseed;   $form{'rndseed'}=$rndseed;
  if ($urlp =~ m|/home/([^/]+)/public_html|) {   if ($urlp =~ m|/home/([^/]+)/public_html|) {
     $urlp =~ s|/home/([^/]*)/public_html|/~$1|;      $urlp =~ s|/home/([^/]*)/public_html|/~$1|;
Line 1233  ENDPART Line 1257  ENDPART
  my $texversion=&Apache::lonnet::ssi($urlp,%form);   my $texversion=&Apache::lonnet::ssi($urlp,%form);
  if(($helper->{'VARS'}->{'ANSWER_TYPE'} eq 'no') ||   if(($helper->{'VARS'}->{'ANSWER_TYPE'} eq 'no') ||
    ($helper->{'VARS'}->{'ANSWER_TYPE'} eq 'only')) {     ($helper->{'VARS'}->{'ANSWER_TYPE'} eq 'only')) {
     my %form;  
     $form{'grade_target'}='answer';      $form{'grade_target'}='answer';
     $form{'answer_output_mode'}='tex';      $form{'answer_output_mode'}='tex';
     $form{'latex_type'}=$helper->{'VARS'}->{'LATEX_TYPE'};      $form{'latex_type'}=$helper->{'VARS'}->{'LATEX_TYPE'};
Line 1343  ENDPART Line 1366  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 1406  sub print_resources { Line 1429  sub print_resources {
  $namepostfix="\\\\Name: ";   $namepostfix="\\\\Name: ";
  $fullname = "CODE - ".$moreenv->{'CODE'};   $fullname = "CODE - ".$moreenv->{'CODE'};
     }      }
       my %page_breaks;
       foreach my $break (split /\|\|\|/,$helper->{'VARS'}->{'FINISHPAGE'}) {
    $page_breaks{$break} = 1;
       }
       my $i           = 0;
     #goes through all resources, checks if they are available for       #goes through all resources, checks if they are available for 
     #current student, and produces output         #current student, and produces output   
     &Apache::lonnet::delenv('form.counter');      &Apache::lonnet::delenv('form.counter');
     &Apache::lonxml::init_counter();      &Apache::lonxml::init_counter();
     foreach my $curresline (@{$master_seq})  {      foreach my $curresline (@{$master_seq})  {
    if (defined $page_breaks{$curresline}) {
       if($i != 0) {
    $current_output.= "\\newpage\n";
       }
    }
    $i++;
  if ( !($type eq 'problems' &&    if ( !($type eq 'problems' && 
        ($curresline!~ m/\.(problem|exam|quiz|assess|survey|form|library)$/)) ) {         ($curresline!~ m/\.(problem|exam|quiz|assess|survey|form|library)$/)) ) {
     my ($map,$id,$res_url) = &Apache::lonnet::decode_symb($curresline);      my ($map,$id,$res_url) = &Apache::lonnet::decode_symb($curresline);
Line 1515  sub handler { Line 1549  sub handler {
 # return OK;  # return OK;
   
     my %parmhash=&Apache::lonnet::coursedescription($ENV{'request.course.id'});      my %parmhash=&Apache::lonnet::coursedescription($ENV{'request.course.id'});
        
 # my $key;   # my $key; 
 # foreach $key (keys %parmhash) {  # foreach $key (keys %parmhash) {
 #    $r->print(' '.$key.'->'.$parmhash{$key}.'<-<br />');  #    $r->print(' '.$key.'->'.$parmhash{$key}.'<-<br />');
 # }  # }
 # return OK;  #
   
   
     
     &output_data($r,$helper,\%parmhash);      &output_data($r,$helper,\%parmhash);
     return OK;      return OK;
 }   } 
Line 1601  sub printHelper { Line 1637  sub printHelper {
         $helper->{VARS}->{'symb'} = &Apache::lonnet::symbread($helper->{VARS}->{'postdata'});          $helper->{VARS}->{'symb'} = &Apache::lonnet::symbread($helper->{VARS}->{'postdata'});
   
     }      }
           $helper->{VARS}->{'symb'}=
    &Apache::lonenc::check_encrypt($helper->{VARS}->{'symb'});
     my ($resourceTitle,$sequenceTitle,$mapTitle) = &details_for_menu($helper);      my ($resourceTitle,$sequenceTitle,$mapTitle) = &details_for_menu($helper);
     if ($sequenceTitle ne '') {$helper->{VARS}->{'assignment'}=$sequenceTitle;}      if ($sequenceTitle ne '') {$helper->{VARS}->{'assignment'}=$sequenceTitle;}
   
Line 1619  sub printHelper { Line 1656  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 1674  sub printHelper { Line 1712  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 1685  sub printHelper { Line 1723  sub printHelper {
   
     # If we're in a sequence...      # If we're in a sequence...
     if (($helper->{'VARS'}->{'construction'} ne '1') &&      if (($helper->{'VARS'}->{'construction'} ne '1') &&
   
  $helper->{VARS}->{'postdata'} &&   $helper->{VARS}->{'postdata'} &&
  $helper->{VARS}->{'assignment'}) {   $helper->{VARS}->{'assignment'}) {
         # Allow problems from sequence          # Allow problems from sequence
Line 1701  sub printHelper { Line 1740  sub printHelper {
       <filterfunc>return $isProblem;</filterfunc>        <filterfunc>return $isProblem;</filterfunc>
       <mapurl>$map</mapurl>        <mapurl>$map</mapurl>
       <valuefunc>return $symbFilter;</valuefunc>        <valuefunc>return $symbFilter;</valuefunc>
         <option text='Newpage' variable='FINISHPAGE' />
       </resource>        </resource>
     </state>      </state>
   
Line 1712  sub printHelper { Line 1752  sub printHelper {
       <filterfunc>return $isNotMap;</filterfunc>        <filterfunc>return $isNotMap;</filterfunc>
       <mapurl>$map</mapurl>        <mapurl>$map</mapurl>
       <valuefunc>return $symbFilter;</valuefunc>        <valuefunc>return $symbFilter;</valuefunc>
         <option text='Newpage' variable='FINISHPAGE' />
       </resource>        </resource>
     </state>      </state>
 HELPERFRAGMENT  HELPERFRAGMENT
Line 1719  HELPERFRAGMENT Line 1760  HELPERFRAGMENT
  &Apache::lonxml::xmlparse($r, 'helper', $helperFragment);   &Apache::lonxml::xmlparse($r, 'helper', $helperFragment);
     }      }
   
     # If the user is priviledged, allow them to print all       # If the user is privileged, allow them to print all 
     # problems in the course, optionally for selected students      # problems and resources  in the entier course, optionally for selected students
     if ($userPriviledged &&       if ($userPriviledged && 
         ($helper->{VARS}->{'postdata'}=~/\/res\// || $helper->{VARS}->{'postdata'}=~/\/(syllabus|smppg|aboutme|bulletinboard)$/)) {           ($helper->{VARS}->{'postdata'}=~/\/res\// || $helper->{VARS}->{'postdata'}=~/\/(syllabus|smppg|aboutme|bulletinboard)$/)) { 
   
         push @{$printChoices}, ['<b>Problems</b> from <b>entire course</b>', 'all_problems', 'ALL_PROBLEMS'];          push @{$printChoices}, ['<b>Problems</b> from <b>entire course</b>', 'all_problems', 'ALL_PROBLEMS'];
    push @{$printChoices}, ['<b>Resources</b> from <b>entire course</b>', 'all_resources', 'ALL_RESOURCES'];
          &Apache::lonxml::xmlparse($r, 'helper', <<ALL_PROBLEMS);           &Apache::lonxml::xmlparse($r, 'helper', <<ALL_PROBLEMS);
   <state name="ALL_PROBLEMS" title="Select Problem(s) to print">    <state name="ALL_PROBLEMS" title="Select Problem(s) to print">
     <message>(mark them then click "next" button) <br /></message>      <message>(mark them then click "next" button) <br /></message>
Line 1733  HELPERFRAGMENT Line 1776  HELPERFRAGMENT
       <filterfunc>return $isProblemOrMap;</filterfunc>        <filterfunc>return $isProblemOrMap;</filterfunc>
       <choicefunc>return $isNotMap;</choicefunc>        <choicefunc>return $isNotMap;</choicefunc>
       <valuefunc>return $symbFilter;</valuefunc>        <valuefunc>return $symbFilter;</valuefunc>
         <option text='Newpage' variable='FINISHPAGE' />
       </resource>
     </state>
     <state name="ALL_RESOURCES" title="Select Resource(s) to print">
       <message>(Mark them then click "next" button) <br /> </message>
       <resource variable="RESOURCES" toponly='0' multichoice='1'
                 suppressEmptySequences='0' addstatus='1' closeallpages='1'>
         <nextstate>PAGESIZE</nextstate>
         <filterfunc>return $isNotMap; </filterfunc>
         <mapurl> $map</mapursl>
         <valuefunc>return $symbFilter;</valuefunc>
         <option text='NewPage' variable='FINISHPAGE' />
     </resource>      </resource>
   </state>    </state>
 ALL_PROBLEMS  ALL_PROBLEMS
Line 1748  ALL_PROBLEMS Line 1803  ALL_PROBLEMS
       <filterfunc>return $isProblem;</filterfunc>        <filterfunc>return $isProblem;</filterfunc>
       <mapurl>$map</mapurl>        <mapurl>$map</mapurl>
       <valuefunc>return $symbFilter;</valuefunc>        <valuefunc>return $symbFilter;</valuefunc>
         <option text='New Page' variable='FINISHPAGE' />
       </resource>        </resource>
     <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">
Line 1763  RESOURCE_SELECTOR Line 1819  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" />
         <message><b>Select sort order</b> </message>
     <choices variable='student_sort'>      <choices variable='student_sort'>
       <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>
Line 1810  CHOOSE_ANON1 Line 1867  CHOOSE_ANON1
       <filterfunc>return $isNotMap;</filterfunc>        <filterfunc>return $isNotMap;</filterfunc>
       <mapurl>$map</mapurl>        <mapurl>$map</mapurl>
       <valuefunc>return $symbFilter;</valuefunc>        <valuefunc>return $symbFilter;</valuefunc>
         <option text='Newpage' variable='FINISHPAGE' />
       </resource>        </resource>
     <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">
Line 1893  CHOOSE_FROM_SUBDIR Line 1951  CHOOSE_FROM_SUBDIR
       <nextstate>CHOOSE_FROM_ANY_SEQUENCE</nextstate>        <nextstate>CHOOSE_FROM_ANY_SEQUENCE</nextstate>
       <filterfunc>return \$res->is_sequence;</filterfunc>        <filterfunc>return \$res->is_sequence;</filterfunc>
       <valuefunc>return $urlValue;</valuefunc>        <valuefunc>return $urlValue;</valuefunc>
         <option text='Newpage' variable='FINISHPAGE' />
       </resource>        </resource>
     </state>      </state>
   <state name="CHOOSE_FROM_ANY_SEQUENCE" title="Select Resources To Print">    <state name="CHOOSE_FROM_ANY_SEQUENCE" title="Select Resources To Print">
Line 1903  CHOOSE_FROM_SUBDIR Line 1962  CHOOSE_FROM_SUBDIR
       <filterfunc>return $isProblem</filterfunc>        <filterfunc>return $isProblem</filterfunc>
       <mapurl evaluate='1'>return '$escapedSequenceName';</mapurl>        <mapurl evaluate='1'>return '$escapedSequenceName';</mapurl>
       <valuefunc>return $symbFilter;</valuefunc>        <valuefunc>return $symbFilter;</valuefunc>
         <option text='Newpage' variable='FINISHPAGE' />
       </resource>        </resource>
     </state>      </state>
 CHOOSE_FROM_ANY_SEQUENCE  CHOOSE_FROM_ANY_SEQUENCE

Removed from v.1.341  
changed lines
  Added in v.1.356


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