[LON-CAPA-cvs] cvs: loncom /interface lonprintout.pm
sakharuk
lon-capa-cvs@mail.lon-capa.org
Thu, 15 May 2003 19:11:26 -0000
This is a MIME encoded message
--sakharuk1053025886
Content-Type: text/plain
sakharuk Thu May 15 15:11:26 2003 EDT
Modified files:
/loncom/interface lonprintout.pm
Log:
Old code is removed. Some changes were done to restore meaningful names of subroutines.
--sakharuk1053025886
Content-Type: text/plain
Content-Disposition: attachment; filename="sakharuk-20030515151126.txt"
Index: loncom/interface/lonprintout.pm
diff -u loncom/interface/lonprintout.pm:1.176 loncom/interface/lonprintout.pm:1.177
--- loncom/interface/lonprintout.pm:1.176 Thu May 15 12:16:36 2003
+++ loncom/interface/lonprintout.pm Thu May 15 15:11:26 2003
@@ -1,7 +1,7 @@
# The LearningOnline Network
# Printout
#
-# $Id: lonprintout.pm,v 1.176 2003/05/15 16:16:36 bowersj2 Exp $
+# $Id: lonprintout.pm,v 1.177 2003/05/15 19:11:26 sakharuk Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -56,734 +56,6 @@
my %hash;
my $LaTeXwidth = 0;
-sub headerform {
- my $r = shift;
- $r->print(<<ENDHEADER);
-<html>
-<head>
-<title>LON-CAPA output for printing</title>
-</head>
-<body bgcolor="FFFFFF">
-<form method="post" enctype="multipart/form-data" action="/adm/printout" name="printform">
-ENDHEADER
-
- if ($ENV{'form.postdata'}=~m|^/res/|) {
- $r->print(<<ENDHEADER1);
-<b>Path to current document: </b><tt>$ENV{'form.postdata'}</tt><p>
-ENDHEADER1
- }
-}
-
-
-sub menu_for_output {
- my $r = shift;
- my ($title_for_single_resource,$title_for_sequence,$title_for_main_map) = &details_for_menu;
- my $assignment = $title_for_sequence;
- if ($title_for_single_resource ne '') {$title_for_single_resource = '"'.$title_for_single_resource.'"';}
- if ($title_for_sequence ne '') {$title_for_sequence = '"'.$title_for_sequence.'"';}
- if ($title_for_main_map ne '') {$title_for_main_map = '"'.$title_for_main_map.'"';}
- $ENV{'form.postdata'} =~ s|http://[^/]+||;
- my $subdir_to_print = $ENV{'form.postdata'};
- $subdir_to_print =~ m/\/([^\/]+)$/;
- $subdir_to_print =~ s/\Q$1\E//;
- $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="url" value="$ENV{'form.postdata'}">
-<input type="hidden" name="assignment" value="$assignment">
-<input type="radio" name="choice" value="Standard LaTeX output for current document" checked> Current document <b>$title_for_single_resource</b>
-(prints what you just saw on the screen)<br />
-ENDMENUOUT1
- if ($ENV{'form.postdata'}=~/\/res\//) {
- $r->print(<<ENDMENUOUT2);
-<input type="radio" name="choice" value="Standard LaTeX output for the primary sequence"> Problem(s) from <b>$title_for_sequence</b><br />
-<input type="radio" name="choice" value="Standard LaTeX output for whole primary sequence"> Problem(s) plus page(s) or html/xml file(s) from <b>$title_for_sequence</b><br />
-ENDMENUOUT2
- }
- if (($ENV{'request.role'}=~m/^cc\./ or $ENV{'request.role'}=~m/^in\./ or $ENV{'request.role'}=~m/^ta\./) and ($ENV{'form.postdata'}=~/\/res\//)) {
- $r->print(<<ENDMENUOUT6);
-<input type="radio" name="choice" value="Standard LaTeX output for the top level sequence"> All problems in this course (<b>warning:</b> this may be time consuming) <br />
-<br />
-<input type="radio" name="choice" value="All class print"> All problems from <b>$title_for_sequence</b> for selected students<br /><br />
-ENDMENUOUT6
- }
- my $subdirtoprint = &Apache::lonnet::filelocation("",$ENV{'form.url'});
- $subdirtoprint =~ s/\/[^\/]+$//;
- if ((&Apache::lonnet::allowed('bre',$subdirtoprint) eq 'F') and ($ENV{'form.postdata'}=~/\.(problem|exam|quiz|assess|survey|form|library|page|xml|html|htm|xhtml|xhtm)/)) {
- $r->print(<<ENDMENUOUT4);
- <input type="radio" name="choice" value="Subdirectory print"> Problems from current subdirectory <b>$subdir_to_print</b><br />
-ENDMENUOUT4
- }
- $r->print(<<ENDMENUOUT5);
-<br /><hr /><br />
-<h1>And what page format do you prefer?</h1>
-<table>
- <tr>
- <td>
- <input type="radio" name="layout" value="CBI"> Landscape <br />
- <input type="radio" name="layout" value="CAPA" checked> Portrait <br />
- </td>
- <td> </td>
- <td rawspan="2">
- Number of columns: <select name="numberofcolumns">
- <option> 1 </option>
- <option selected> 2 </option>
- </select>
- </td>
- <td rawspan="2">
- Paper size (format [width x height]): <select name="papersize">
- <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>
- </select>
- </td>
- </tr>
-
-</table>
-</br>
-<input type="submit" value="Submit your choice">
-ENDMENUOUT5
-}
-
-
-sub sequence_content_menu {
- my ($key_to,$r) = @_;
- my $primary_sequence;
- my $symbolic = &Apache::lonnet::symbread($ENV{'form.url'});
- my @sequence = split('___',$symbolic);
- $primary_sequence=&Apache::lonnet::clutter($sequence[0]);
- my @master_seq = &coming_from_hash($primary_sequence);
- my @titles_master_seq = ();
- for (my $i=0;$i<=$#master_seq;$i++) {
- my ($path,$title,$symb) = split /&&/,$master_seq[$i];
- $master_seq[$i] = $path.'&&'.$symb;
- push @titles_master_seq, $title;
- }
- my @master_seq_view = @master_seq;
- if ($ENV{'user.adv'}) {
- for (my $i=0;$i<=$#master_seq_view;$i++) {
- $master_seq_view[$i]=~/___\d+___(.+)$/;
- $master_seq_view[$i]='/'.$1;
- }
- } else {
- for (my $i=0;$i<=$#master_seq_view;$i++) {
- $master_seq_view[$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="papersize" value="$ENV{'form.papersize'}">
-<input type="hidden" name="assignment" value="$ENV{'form.assignment'}">
-<input type="hidden" name="numberofcolumns" value="$ENV{'form.numberofcolumns'}">
-<h1>Mark item(s) 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('whatfile')==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('whatfile')==0) {
- document.forms.printform.elements[i].checked=false;
- }
- }
- }
-</script>
-<b>
-<input type=button onClick="checkall()" value="Check All">
-<input type=button onClick="uncheckall()" value="Uncheck">
-<input type="submit" value="Submit">
-<p>
-ENDMENUOUT1
- my $inc=0;
- for (my $i=0;$i<=$#master_seq_view;$i++) {
- if ($key_to==1 && $master_seq[$i]=~/\.(problem|exam|quiz|assess|survey|form|library)$/) {
- $r->print('<br /><input type=checkbox name="whatfile'.$inc.'" value="'.$master_seq[$i].'"> '."\n".'<b>'.
- $titles_master_seq[$i].'</b> <small>'.$master_seq_view[$i].'</small>');
- $inc++;
- } elsif ($key_to==0 && $master_seq[$i]=~/\.(problem|exam|quiz|assess|survey|form|library|xml|htm|html|page)$/) {
- $r->print('<br /><input type=checkbox name="whatfile'.$inc.'" value="'.$master_seq[$i].'"> '."\n".'<b>'.
- $titles_master_seq[$i].'</b> <small>'.$master_seq_view[$i].'</small>');
- $inc++;
- }
- }
- $r->print(<<ENDMENUOUT2);
-<br /><br />
-<input type="hidden" name="numberoffiles" value="$inc">
-<input type="hidden" name="phase" value="three">
-<input type=button onClick="checkall()" value="Check All">
-<input type=button onClick="uncheckall()" value="Uncheck">
-<input type="submit" value="Submit">
-ENDMENUOUT2
-
-}
-
-
-sub problem_choice_menu {
- my $r = shift;
- my $subdirtoprint = &Apache::lonnet::filelocation("",$ENV{'form.url'});
- $subdirtoprint =~ s/\/[^\/]+$//;
- my @list_of_files = ();
- my @content_directory = ();
- $r->print("Subdir: " . $subdirtoprint . "<br />");
- if ($subdirtoprint =~ m|/home/([^/]+)/public_html|) {
- #localmachine CSTR space
- my $user=$1;
- my $domain=$Apache::lonnet::perlvar{'lonDefDomain'};
- @content_directory = &Apache::lonnet::dirlist($subdirtoprint,
- $domain, $user,'');
- } else {
- #local library server res space (allows to print only from the own library server)
- @content_directory = &Apache::lonnet::dirlist($subdirtoprint,$ENV{'user.domain'}, $ENV{'user.name'},'');
- }
- 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 All">
-<input type=button onClick="uncheckall()" value="Uncheck">
-<input type="submit" value="Submit">
-<p>
-ENDMENUOUT1
- my $i=0;
- foreach my $file (sort @list_of_files) {
- $r->print('<br /><input type=checkbox name="whattoprint'.$i.'" value="'.$file.'"> '.
- $file);
- $i++;
- }
- $r->print(<<ENDMENUOUT2);
-<br /><br />
-<input type="hidden" name="papersize" value="$ENV{'form.papersize'}">
-<input type="hidden" name="numberofproblems" value="$i">
-<input type="hidden" name="phase" value="three">
-<input type=button onClick="checkall()" value="Check All">
-<input type=button onClick="uncheckall()" value="Uncheck">
-<input type="submit" value="Submit">
-ENDMENUOUT2
-}
-
-
-sub additional_class_menu {
- my $r = shift;
- $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'}">
-<input type="hidden" name="assignment" value="$ENV{'form.assignment'}">
-<h1>Select student(s) whose assignment you want to print</h1>
-ENDMENUOUT1
- my %courselist=&Apache::lonnet::dump(
- 'classlist',
- $ENV{'course.'.$ENV{'request.course.id'}.'.domain'},
- $ENV{'course.'.$ENV{'request.course.id'}.'.num'});
- my $now=time;
- $r->print(<<ENDDISHEADER);
-<script>
- function checkall() {
- 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=true;
- }
- }
- }
-
- 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 All">
-<input type=button onClick="checksec()" value="Type Section/Group then click">
-<input type=text size=5 name=chksec>
-<input type=button onClick="uncheckall()" value="Uncheck">
-<p>
-ENDDISHEADER
- my $i = 0;
- foreach (sort keys %courselist) {
- my ($end,$start)=split(/\:/,$courselist{$_});
- my $active=1;
- 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'});
- if ($section == -1) { $section = ''; }
- $r->print(
- '<br /><input type=checkbox name="whomtoprint'.$i.'" value="'.$section.':'.$_.'"> '.
- $reply{'firstname'}.' '.
- $reply{'middlename'}.' '.
- $reply{'lastname'}.' '.
- $reply{'generation'}.
- ' ('.$_.') '.$section);
- $i++;
- }
- }
- $r->print(<<ENDMENUOUT2);
-<br /><br /><br />
-<table><tr><td width=300>Number of blank pages added to each student assignments to print these assignments on physically different sheets (<b>requires manual addjustment</b>): <select name="addedpages"><option selected>0</option>
- <option>1</option>
- <option>2</option>
- <option>3</option>
- </select></td></tr></table>
-<br />
-<input type="hidden" name="papersize" value="$ENV{'form.papersize'}">
-<input type="hidden" name="numberofstudents" value="$i">
-<input type="hidden" name="phase" value="three">
-<input type="submit" value="Submit">
-ENDMENUOUT2
-}
-
-
-sub additional_print_menu {
- my $r = shift;
- my $what_to_print = '';
- for (my $i=0; $i<$ENV{'form.numberofstudents'};$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}.'">';
- }
- for (my $i=0; $i<$ENV{'form.numberoffiles'};$i++) {
- $what_to_print .= '<input type="hidden" name="whatfile'.$i.'" value="'.$ENV{'form.whatfile'.$i}.'">';
- }
- $r->print(<<ENDMENUOUT);
- $what_to_print
-<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="papersize" value="$ENV{'form.papersize'}">
-<input type="hidden" name="numberofstudents" value="$ENV{'form.numberofstudents'}">
-<input type="hidden" name="numberofproblems" value="$ENV{'form.numberofproblems'}">
-<input type="hidden" name="numberoffiles" value="$ENV{'form.numberoffiles'}">
-<input type="hidden" name="numberofcolumns" value="$ENV{'form.numberofcolumns'}">
-<input type="hidden" name="assignment" value="$ENV{'form.assignment'}">
-<input type="hidden" name="addedpages" value="$ENV{'form.addedpages'}">
-Define one column 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="submit" value="Submit">
-</form>
-</body>
-</html>
-ENDMENUOUT
-}
-
-
-sub output_data {
- my $r = shift;
- $r->print(<<ENDPART);
-<html>
-<head>
-<title>LON-CAPA output for printing</title>
-</head>
-<body bgcolor="FFFFFF">
-<hr>
-ENDPART
-
- my $choice = $ENV{'form.choice'};
- my $layout = $ENV{'form.layout'};
- my $numberofcolumns = $ENV{'form.numberofcolumns'};
- my $papersize = $ENV{'form.papersize'};
- my $laystyle = 'book';
- my $assignment = $ENV{'form.assignment'};
- if ($choice eq 'Subdirectory print') {
- if ($ENV{'form.layout'} eq '') {$layout = 'CAPA';}
- if ($ENV{'form.papersize'} eq '') {$papersize = 'Letter [8 1/2x11 in]';}
- if ($ENV{'form.numberofcolumns'} eq '') {$numberofcolumns = 2;}
- }
- if (($choice eq 'Standard LaTeX output for current document') &&
- ($ENV{'form.url'}=~m|^/~|)) {
- if ($ENV{'form.layout'} eq '') {$layout = 'CAPA';}
- if ($ENV{'form.papersize'} eq '') {$papersize = 'Letter [8 1/2x11 in]';}
- if ($ENV{'form.numberofcolumns'} eq '') {$numberofcolumns = 2;}
- }
- my $result = '';
- my $number_of_columns = 1; #used only for pages to determine the width of the cell
- my $selectionmade = '';
- my ($textwidth,$textheight,$oddoffset,$evenoffset) = &page_format($papersize,$layout,$numberofcolumns);
- if ($numberofcolumns == 1) {
- $textwidth=$ENV{'form.width'};
- $textheight=$ENV{'form.height'};
- }
- my $LaTeXwidth;
- if ($textwidth=~/(\d+\s*cm)/) {
- $LaTeXwidth = $1*10;
- } elsif ($textwidth=~/(\d+\s*mm)/) {
- $LaTeXwidth = $1;
- }
- if ($choice eq 'Standard LaTeX output for current document') {
- #-- single document - problem, page, html, xml, ...
- $selectionmade = 1;
- if ($ENV{'form.url'}=~/\.(problem|exam|quiz|assess|survey|form|library|page|xml|html|htm|xhtml|xhtm)$/) {
- my %moreenv;
- if (&Apache::lonnet::allowed('bre',$ENV{'form.url'})) {
- $ENV{'form.url'}=~s/http:\/\/[^\/]+//;
- }
- $moreenv{'request.filename'}=$ENV{'form.url'};
- my %form;
- $form{'textwidth'}=$LaTeXwidth;
- $form{'grade_target'}='tex';
- &Apache::lonnet::appenv(%moreenv);
- my $texversion=&Apache::lonnet::ssi($ENV{'form.url'},%form);
- &Apache::lonnet::delenv('form.counter');
- $result .= $texversion;
- if ($ENV{'form.url'}=~m/\.page\s*$/) {
- ($result,$number_of_columns) = &page_cleanup($result);
- }
- } else {
- $result='\documentclass[letterpaper]{article}\usepackage{calc}\begin{document}Printout of this type of document is currently not supported: ';
- if ($ENV{'form.url'}=~/\/(aboutme|syllabus|bulletinboard|smppg)$/) {
- $result.=$1;
- } else {
- $result.=$ENV{'form.url'};
- }
- $result.=' \end{document}'
- }
- } elsif ($choice eq 'Standard LaTeX output for the primary sequence' or
- $choice eq 'Standard LaTeX output for whole primary sequence') {
- #-- minimal sequence to which the current document belongs
- #-- where is the primary sequence containing file?
- my @master_seq = ();
- for (my $i=0; $i<$ENV{'form.numberoffiles'};$i++) {
- if ($ENV{'form.whatfile'.$i}=~/\S/) {
- push @master_seq,$ENV{'form.whatfile'.$i};
- }
- }
- #-- produce an output string
- my $flag_latex_header_remove = 'NO';
- my $flag_page_in_sequence = 'NO';
- for (my $i=0;$i<=$#master_seq;$i++) {
- my ($urlp,$symb) = split /&&/, $master_seq[$i];
- if ($choice eq 'Standard LaTeX output for the primary sequence') {
- $selectionmade = 2;
- } elsif ($choice eq 'Standard LaTeX output for whole primary sequence') {
- $selectionmade = 3;
- }
- my %form;
- $form{'textwidth'}=$LaTeXwidth;
- $form{'grade_target'}='tex';
- $form{'symb'}=$symb;
- #&Apache::lonnet::logthis("Trying to get $urlp with symb $symb");
- my $texversion=&Apache::lonnet::ssi($urlp,%form);
- if ($urlp =~ m/\.page/) {
- ($texversion,my $number_of_columns_page) = &page_cleanup($texversion);
- if ($number_of_columns_page > $number_of_columns) {$number_of_columns=$number_of_columns_page;}
- $texversion =~ s/\\end{document}\d*/\\end{document}/;
- $flag_page_in_sequence = 'YES';
- }
- if ($flag_latex_header_remove ne 'NO') {
- $texversion = &latex_header_footer_remove($texversion);
- } else {
- $texversion =~ s/\\end{document}//;
- }
- $result .= $texversion;
- $flag_latex_header_remove = 'YES';
- }
- &Apache::lonnet::delenv('form.counter');
- if ($flag_page_in_sequence eq 'YES') {$result =~ s/\\usepackage{calc}/\\usepackage{calc}\\usepackage{longtable}/;}
- $result .= '\end{document}';
- } elsif ($choice eq 'Standard LaTeX output for the top level sequence') {
- # where is the main sequence of the course?
- $selectionmade = 4;
- my $main_seq=&Apache::lonnet::clutter($ENV{'request.course.uri'});
- my @file_seq = &coming_from_hash($main_seq);
- for (my $i=0;$i<=$#file_seq;$i++) {
- my ($path,$title,$symb) = split /&&/,$file_seq[$i];
- $file_seq[$i] = $path.'&&'.$symb;
- }
- my $flag_latex_header_remove = 'NO';
- #-- produce an output string
- for (my $i=0;$i<=$#file_seq;$i++) {
- if (not $file_seq[$i]=~/^&&/) {
- my ($urlp,$symb) = split /&&/, $file_seq[$i];
- $urlp=~s/\/home\/httpd\/html//;
- if ($urlp=~m/\.(problem|exam|quiz|assess|survey|form|library)/) {
- my %form;
- $form{'grade_target'}='tex';
- $form{'textwidth'}=$LaTeXwidth;
- $form{'symb'}=$symb;
- my $texversion=&Apache::lonnet::ssi($urlp,%form);
- if ($flag_latex_header_remove ne 'NO') {
- $texversion = &latex_header_footer_remove($texversion);
- } else {
- $texversion =~ s/\\end{document}//;
- }
- $result .= $texversion;
- $flag_latex_header_remove = 'YES';
- }
- }
- }
- $result .= '\end{document}';
- } elsif ($choice eq 'All class print') {
- #-- prints assignments for whole class or for selected students
- $selectionmade = 5;
- my @students = ();
- for (my $i=0; $i<$ENV{'form.numberofstudents'};$i++) {
- if ($ENV{'form.whomtoprint'.$i}=~/:/) {
- push @students,$ENV{'form.whomtoprint'.$i};
- }
- }
- #where is the primary sequence containing current resource (the same for all students)?
- my $symbolic = &Apache::lonnet::symbread($ENV{'form.url'});
- my @sequence = split('___',$symbolic);
- my $primary_sequence;
-
- $primary_sequence=&Apache::lonnet::clutter($sequence[0]);
- my @master_seq = &coming_from_hash($primary_sequence);
- for (my $i=0;$i<=$#master_seq;$i++) {
- my ($path,$title,$symb) = split /&&/,$master_seq[$i];
- $master_seq[$i] = $path.'&&'.$symb;
- }
- #loop over students
- my $flag_latex_header_remove = 'NO';
- my %moreenv;
- $moreenv{'form.textwidth'}=$LaTeXwidth;
- &Apache::lonnet::appenv(%moreenv);
- my %prog_state=&Apache::lonhtmlcommon::Create_PrgWin($r,'Print Status','Class Print Status',$#students+1);
- foreach my $person (@students) {
- my $current_output = '';
- my ($usersection,$username,$userdomain) = split /:/,$person;
- my $fullname = &get_name($username,$userdomain);
- #goes through all resources, checks if they are available for current student, and produces output
- foreach my $curresline (@master_seq) {
- my ($curres,$symb) = split /&&/, $curresline;
- if ($curres=~ m/\.(problem|exam|quiz|assess|survey|form|library)/) {
- my ($map,$id,$res_url) = split(/___/,$symb);
- if (&Apache::lonnet::allowed('bre',$res_url)) {
- my $rendered = &Apache::loncommon::get_student_view($symb,$username,$userdomain,
- $ENV{'request.course.id'},'tex');
- if ($flag_latex_header_remove eq 'YES') {
- $rendered = &latex_header_footer_remove($rendered);
- } else {
- $rendered =~ s/\\end{document}//;
- }
- $current_output .= $rendered;
- }
- $flag_latex_header_remove = 'YES';
- }
- }
- my $courseidinfo = $ENV{'course.'.$ENV{'request.course.id'}.'.description'};
- if ($current_output=~/\\documentclass/) {
- $current_output =~ s/\\begin{document}/\\setlength{\\topmargin}{1cm}\\usepackage{fancyhdr}\\pagestyle{fancy}\\rhead{}\\chead{} \\begin{document}\\noindent\\lhead{\\textit{\\textbf{$fullname}} - $courseidinfo \\hfill \\thepage \\\\ \\textit{$assignment}}\\vskip 3 mm /;
- } else {
- my $blanspages = '';
- for (my $j=0;$j<$ENV{'form.addedpages'};$j++) {$blanspages.='\clearpage\strut\clearpage';}
- $current_output = '\strut\\newline\\noindent\\makebox[\\textwidth/$number_of_columns][b]{\\hrulefill}\\newline\\noindent{\\tiny Printed from LON-CAPA\\copyright MSU{\\hfill} Licensed under GNU General Public License }\\newpage \\vskip 3mm'.$blanspages.'\setcounter{page}{1}\noindent\parbox{\minipagewidth}{\noindent\\lhead{\\textit{\\textbf{'.$fullname.'}} - '.$courseidinfo.' \\hfill \\thepage \\\\ \\textit{'.$assignment.'}}\hskip 1.4in } \vskip 5 mm '.$current_output;
- }
- $result .= $current_output;
- &Apache::lonnet::delenv('form.counter');
- &Apache::lonxml::init_counter();
- &Apache::lonhtmlcommon::Increment_PrgWin($r,\%prog_state,
- 'last student '.$fullname);
- }
- &Apache::lonhtmlcommon::Close_PrgWin($r,\%prog_state);
- $result .= '\end{document}';
- &Apache::lonnet::delenv('form.textwidth');
- } elsif ($choice eq 'Subdirectory print') {
- #prints selected problems from the subdirectory
- $selectionmade = 6;
- my @list_of_files = ();
- for (my $i=0; $i<$ENV{'form.numberofproblems'};$i++) {
- if ($ENV{'form.whattoprint'.$i}=~/^\//) {
- push @list_of_files,$ENV{'form.whattoprint'.$i};
- }
- }
- my $flag_latex_header_remove = 'NO';
- for (my $i=0;$i<=$#list_of_files;$i++) {
- my $urlp = $list_of_files[$i];
- if ($urlp=~/\//) {
- my %form;
- $form{'grade_target'}='tex';
- $form{'textwidth'}=$LaTeXwidth;
- if ($urlp =~ m|/home/([^/]+)/public_html|) {
- $urlp =~ s|/home/([^/]*)/public_html|/~$1|;
- } else {
- $urlp =~ s|^/home/httpd/html||;
- }
- my $texversion=&Apache::lonnet::ssi($urlp,%form);
- #this chunck is responsible for printing the path to problem
- my $newurlp = '';
- my $HowMany = length($urlp)*2;
- if ($HowMany > $LaTeXwidth) {
- my @temporrary = split '/',$urlp;
- my $HowManyNew = 0;
- for (my $ii=0;$ii<=$#temporrary;$ii++) {
- if ($temporrary[$ii] ne '') {
- $HowManyNew += length($temporrary[$ii])*2;
- if ($HowManyNew < $LaTeXwidth ) {
- $newurlp .= '/'.$temporrary[$ii];
- } else {
- $HowManyNew = 0;
- $newurlp .= '|\vskip -1 mm \noindent \verb|';
- $ii--;
- }
- }
- }
- }
- $texversion =~ s/(\\begin{minipage}{\\textwidth})/$1 {\\small\\noindent\\verb|$newurlp\|\\vskip 0 mm}/;
- if ($flag_latex_header_remove ne 'NO') {
- $texversion = &latex_header_footer_remove($texversion);
- } else {
- $texversion =~ s/\\end{document}//;
- }
- $result .= $texversion;
- }
- $flag_latex_header_remove = 'YES';
- }
- $result .= '\end{document}';
- }
-#-------------------------------------------------------- corrections for the different page formats
- $result = &page_format_transformation($papersize,$layout,$numberofcolumns,$choice,$result,$assignment);
- if ($layout eq 'CBI') {
- $laystyle = 'album';
- }
- $result = &latex_corrections($number_of_columns,$result);
- #changes page's parameters for the one column output
- if ($ENV{'form.numberofcolumns'} == 1) {
- $result =~ s/\\textwidth= 9cm/\\textwidth= $ENV{'form.width'}/;
- $result =~ s/\\textheight 25\.9cm/\\textheight $ENV{'form.height'}/;
- $result =~ s/\\evensidemargin = -0\.57in/\\evensidemargin= $ENV{'form.leftmargin'}/;
- $result =~ s/\\oddsidemargin = -0\.57in/\\oddsidemargin= $ENV{'form.leftmargin'}/;
- }
-#-- writing .tex file in prtspool
- my $temp_file;
- my $filename = "/home/httpd/prtspool/$ENV{'user.name'}_$ENV{'user.domain'}_printout_".time."_".rand(10000000).".tex";
- unless ($temp_file = Apache::File->new('>'.$filename)) {
- $r->log_error("Couldn't open $filename for output $!");
- return SERVER_ERROR;
- }
- print $temp_file $result;
-$r->print(<<FINALEND);
-<meta http-equiv="Refresh" content="0; url=/cgi-bin/printout.pl?$filename&$laystyle&$numberofcolumns&$selectionmade">
-</body>
-</html>
-FINALEND
-}
-
-
-sub coming_from_hash {
-
- my $mainsequence = shift;
- my @resourcelist = ();
- my $mapid = $hash{'map_pc_'.$mainsequence};
- my $mapstart = $hash{'map_start_'.$mainsequence};
- my $mapfinish = $hash{'map_finish_'.$mainsequence};
- my $current_resource = $mapstart;
- while ($current_resource ne $mapfinish) {
- if ($hash{'src_'.$current_resource}=~/\.sequence$/) {
- push @resourcelist,&coming_from_hash($hash{'src_'.$current_resource});
- } else {
- my $presymb=&Apache::lonnet::declutter($mainsequence);
- my $rid = $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;
- }
- my $symb = $presymb.'___'.$rid.'___'.
- &Apache::lonnet::declutter($hash{'src_'.$current_resource});
- push @resourcelist,$hash{'src_'.$current_resource}.'&&'.$hash{'title_'.$current_resource}.'&&'.$symb;
- }
- $current_resource = $hash{'goesto_'.$hash{'to_'.$current_resource}};
- }
- #needs if final resource in the map (type="finish") contains something
- if ($hash{'src_'.$current_resource}=~/\.sequence$/) {
- push @resourcelist,&coming_from_hash($hash{'src_'.$current_resource});
- } else {
- my $presymb=&Apache::lonnet::declutter($mainsequence);
- my $rid = $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;
- }
- my $symb = $presymb.'___'.$rid.'___'.
- &Apache::lonnet::declutter($hash{'src_'.$current_resource});
- push @resourcelist,$hash{'src_'.$current_resource}.'&&'.$hash{'title_'.$current_resource}.'&&'.$symb;
- }
- $current_resource = $hash{'goesto_'.$hash{'to_'.$current_resource}};
- return @resourcelist;
-}
-
sub latex_header_footer_remove {
my $text = shift;
@@ -1038,76 +310,7 @@
}
- sub page_format {
- my ($papersize,$layout,$numberofcolumns) = @_;
- 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 = '93 mm';
- $textheight = '25.9 cm';
- $oddoffset = '-0.57 in';
- $evenoffset = '-0.57 in';
- }
- } elsif ($layout eq 'CBI') {
- if ($numberofcolumns eq '1') {
- $textwidth = '8.8 in';
- $textheight = '6.8 in';
- $oddoffset = '-40 pt';
- $evenoffset = '-60 pt';
- } elsif ($numberofcolumns == 2) {
- $textwidth = '4.2 in';
- $textheight = '6.8 in';
- $oddoffset = '-40 pt';
- $evenoffset = '-60 pt';
- }
- }
-# } elsif($papersize=~/Legal/) {
-# } elsif($papersize=~/Ledger/) {
-# } elsif($papersize=~/Executive/) {
- } elsif($papersize=~/A4/) {
- if ($layout eq 'CAPA') {
- if ($numberofcolumns == 1) {
- $textwidth = '18 cm';
- $textheight = '28 cm';
- $oddoffset = '-0.57 in';
- $evenoffset = '-0.57 in';
- } elsif ($numberofcolumns == 2) {
- $textwidth = '96 mm';
- $textheight = '2 cm';
- $oddoffset = '-0.57 in';
- $evenoffset = '-0.57 in';
- }
- } elsif ($layout eq 'CBI') {
- if ($numberofcolumns eq '1') {
- $textwidth = '8.5 in';
- $textheight = '7.7 in';
- $oddoffset = '-40 pt';
- $evenoffset = '-60 pt';
- } elsif ($numberofcolumns == 2) {
- $textwidth = '3.9 in';
- $textheight = '7.7 in';
- $oddoffset = '-40 pt';
- $evenoffset = '-60 pt';
- }
- }
-# } elsif($papersize=~/A3/) {
-# } elsif($papersize=~/A2/) {
-# } elsif($papersize=~/A5/) {
-# } elsif($papersize=~/A6/) {
- }
- return $textwidth,$textheight,$oddoffset,$evenoffset;
-}
-
-
-sub page_format_new {
+sub page_format {
#
#Correspondence between $papersize variable and real paper format:
# 0 - "Letter [8 1/2x11 in]"
@@ -1196,6 +399,7 @@
'header');
}
+
sub page_format_transformation {
my ($papersize,$layout,$numberofcolumns,$choice,$text,$assignment) = @_;
my ($textwidth,$textheight,$oddoffset,$evenoffset);
@@ -1211,35 +415,6 @@
undef,'header');
}
my $courseidinfo = &Apache::lonxml::latex_special_symbols(&Apache::lonnet::unescape($ENV{'course.'.$ENV{'request.course.id'}.'.description'}),'','','header');
- if ($layout eq 'CBI') {
- $text =~ s/\\begin{document}/\\setlength{\\oddsidemargin}{$oddoffset}\\setlength{\\evensidemargin}{$evenoffset}\\setlength{\\topmargin}{200pt}\\setlength{\\textwidth}{$textwidth}\\setlength{\\textheight}{$textheight}\\setlength{\\parindent}{20pt}\\setlength{\\marginparwidth}{90pt}\\setlength{\\textfloatsep}{8pt plus 2\.0pt minus 4\.0pt}\\newlength{\\minipagewidth}\\setlength{\\minipagewidth}{\\textwidth\/\$number_of_columns-0\.2cm} \\begin{document}\\setcounter{page}{1}\\noindent\\parbox{\\minipagewidth}{\\noindent\\fbox{\\textbf{$name}} \\hfill $courseidinfo} \\vskip 5 mm /;
- } elsif ($layout eq 'CAPA') {
- if ($choice ne 'All class print') {
- $text =~ s/\\begin{document}/\\textheight $textheight\\oddsidemargin = $evenoffset\\evensidemargin = $evenoffset\\textwidth= $textwidth\\newlength{\\minipagewidth}\\setlength{\\minipagewidth}{\\textwidth\/\$number_of_columns-0\.2cm}\\renewcommand{\\ref}{\\keephidden\}\\usepackage{fancyhdr}\\pagestyle{fancy}\\rhead{}\\chead{}\\lhead{\\textbf{$name} - $courseidinfo \\hfill \\thepage \\\\ \\textit{$assignment}}\\begin{document}\\voffset=-0\.8 cm\\setcounter{page}{1}/;
- } else {
- $text =~ s/\\pagestyle{fancy}\\rhead{}\\chead{}\s*\\begin{document}/\\textheight $textheight\\oddsidemargin = $evenoffset\\evensidemargin = $evenoffset\\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 /;
-
- }
- }
- return $text;
-}
-
-
-sub page_format_transformation_new {
- my ($papersize,$layout,$numberofcolumns,$choice,$text,$assignment) = @_;
- my ($textwidth,$textheight,$oddoffset,$evenoffset);
- $assignment=~s/_/ /g;
- if ($numberofcolumns != 1) {
- ($textwidth,$textheight,$oddoffset,$evenoffset) = &page_format_new($papersize,$layout,$numberofcolumns);
- } else {
- ($textwidth,$textheight,$oddoffset,$evenoffset) = ($ENV{'form.width'},$ENV{'form.height'},$ENV{'form.leftmargin'},$ENV{'form.leftmargin'});
- }
- my $name = &get_name();
- if ($name =~ /^\s*$/) {
- $name=&Apache::lonxml::latex_special_symbols($ENV{'user.name'},undef,
- undef,'header');
- }
- my $courseidinfo = &Apache::lonxml::latex_special_symbols(&Apache::lonnet::unescape($ENV{'course.'.$ENV{'request.course.id'}.'.description'}),'','','header');
if ($layout eq 'album') {
$text =~ s/\\begin{document}/\\setlength{\\oddsidemargin}{$oddoffset}\\setlength{\\evensidemargin}{$evenoffset}\\setlength{\\topmargin}{200pt}\\setlength{\\textwidth}{$textwidth}\\setlength{\\textheight}{$textheight}\\setlength{\\parindent}{20pt}\\setlength{\\marginparwidth}{90pt}\\setlength{\\textfloatsep}{8pt plus 2\.0pt minus 4\.0pt}\\newlength{\\minipagewidth}\\setlength{\\minipagewidth}{\\textwidth\/\$number_of_columns-0\.2cm} \\begin{document}\\setcounter{page}{1}\\noindent\\parbox{\\minipagewidth}{\\noindent\\fbox{\\textbf{$name}} \\hfill $courseidinfo} \\vskip 5 mm /;
} elsif ($layout eq 'book') {
@@ -1254,7 +429,6 @@
}
-
sub page_cleanup {
my $result = shift;
@@ -1325,7 +499,7 @@
}
-sub output_data_new {
+sub output_data {
my ($r,$helper) = @_;
$r->print(<<ENDPART);
<html>
@@ -1346,7 +520,7 @@
} else {
$laystyle='book';
}
- my ($textwidth,$textheight,$oddoffset,$evenoffset) = &page_format_new($papersize,$laystyle,$numberofcolumns);
+ my ($textwidth,$textheight,$oddoffset,$evenoffset) = &page_format($papersize,$laystyle,$numberofcolumns);
my $assignment = $ENV{'form.assignment'};
my $LaTeXwidth;
if ($textwidth=~/(\d+)\s*cm/) {
@@ -1569,7 +743,7 @@
$result .= '\end{document}';
}
#-------------------------------------------------------- corrections for the different page formats
- $result = &page_format_transformation_new($papersize,$laystyle,$numberofcolumns,$helper->{'VARS'}->{'PRINT_TYPE'},$result,$helper->{VARS}->{'assignment'});
+ $result = &page_format_transformation($papersize,$laystyle,$numberofcolumns,$helper->{'VARS'}->{'PRINT_TYPE'},$result,$helper->{VARS}->{'assignment'});
# if ($layout eq 'CBI') {
# $laystyle = 'album';
# }
@@ -1605,32 +779,6 @@
my $r = shift;
my $helper;
- # A hook for me to work without disturbing Alex.
- if (!$ENV{'form.jeremy'}) {
- my $result = printHelper($r);
- if (!ref($result)) {
- return $result;
- }
- $helper = $result;
-
-
-
- my $key;
- foreach $key (keys %{$helper->{'VARS'}}) {
- $r->print(' '.$key.'->'.$helper->{'VARS'}->{$key}.'<-<br />');
- }
-# return OK;
-
-
- &output_data_new($r,$helper);
-
-
-
-
-
-
- return OK;
- }
# my $loaderror=&Apache::lonnet::overloaderror($r);
# if ($loaderror) { return $loaderror; }
# $loaderror=
@@ -1638,50 +786,20 @@
# $ENV{'course.'.$ENV{'request.course.id'}.'.home'});
# if ($loaderror) { return $loaderror; }
- $r->content_type('text/html');
- $r->send_http_header;
- $r->print(&Apache::loncommon::bodytag("Printing"));
-
- if ($ENV{'request.course.id'}) {
- my $fn=$ENV{'request.course.fn'};
- tie(%hash,'GDBM_File',"$fn.db",&GDBM_READER(),0640);
+ my $result = printHelper($r);
+ if (!ref($result)) {
+ return $result;
}
-
-#-- start form
- &headerform($r);
-#-- menu for output
- unless ($ENV{'form.phase'}) {
- &menu_for_output($r);
- }
-#-- additional menu for class printing
- if ($ENV{'form.phase'} eq 'two') {
- if($ENV{'form.choice'} eq 'Standard LaTeX output for whole primary sequence') {
- &sequence_content_menu(0,$r);
- } elsif($ENV{'form.choice'} eq 'Standard LaTeX output for the primary sequence') {
- &sequence_content_menu(1,$r);
- } elsif($ENV{'form.choice'} eq 'All class print') {
- &additional_class_menu($r);
- } elsif($ENV{'form.choice'} eq 'Subdirectory print') {
- &problem_choice_menu($r);
- } else {
- $ENV{'form.phase'} = 'three';
- }
- }
-#-- additional menu for page layout (one column case)
- if ($ENV{'form.phase'} eq 'three') {
- if($ENV{'form.numberofcolumns'} == 1) {
- &additional_print_menu($r);
- } else {
- $ENV{'form.phase'} = 'four';
- }
- }
-#-- core part
- if ($ENV{'form.phase'} eq 'four') {
- &output_data($r);
- }
- untie %hash;
- return OK;
+ $helper = $result;
+# my $key;
+# foreach $key (keys %{$helper->{'VARS'}}) {
+# $r->print(' '.$key.'->'.$helper->{'VARS'}->{$key}.'<-<br />');
+# }
+# return OK;
+
+ &output_data($r,$helper);
+ return OK;
}
use Apache::lonhelper;
--sakharuk1053025886--