--- loncom/interface/lonprintout.pm 2003/11/06 19:23:02 1.262 +++ loncom/interface/lonprintout.pm 2004/02/19 19:35:06 1.270.2.1 @@ -1,7 +1,7 @@ # The LearningOnline Network # Printout # -# $Id: lonprintout.pm,v 1.262 2003/11/06 19:23:02 sakharuk Exp $ +# $Id: lonprintout.pm,v 1.270.2.1 2004/02/19 19:35:06 albertel Exp $ # # Copyright Michigan State University Board of Trustees # @@ -515,17 +515,16 @@ sub page_cleanup { sub details_for_menu { - my $name_of_resourse = $hash{'title_'.$hash{'ids_'.$ENV{'form.postdata'}}}; + my $name_of_resourse = &Apache::lonnet::gettitle($ENV{'form.postdata'}); my $symbolic = &Apache::lonnet::symbread($ENV{'form.postdata'}); my ($map,$id,$resource)=&Apache::lonnet::decode_symb($symbolic); $map=&Apache::lonnet::clutter($map); - my $name_of_sequence; - $name_of_sequence = $hash{'title_'.$hash{'ids_'.$map}}; + my $name_of_sequence = &Apache::lonnet::gettitle($map); if ($name_of_sequence =~ /^\s*$/) { $map =~ m|([^/]+)$|; $name_of_sequence = $1; } - my $name_of_map = $hash{'title_'.$hash{'ids_'.&Apache::lonnet::clutter($ENV{'request.course.uri'})}}; + my $name_of_map = &Apache::lonnet::gettitle($ENV{'request.course.uri'}); if ($name_of_map =~ /^\s*$/) { $ENV{'request.course.uri'} =~ m|([^/]+)$|; $name_of_map = $1; @@ -648,12 +647,50 @@ sub path_to_problem { return '{\small\noindent\verb|'.$newurlp.'|\vskip 0 mm}'; } +sub recalcto_mm { + my $textwidth=shift; + my $LaTeXwidth; + if ($textwidth=~/(\d+\.?\d*)\s*cm/) { + $LaTeXwidth = $1*10; + } elsif ($textwidth=~/(\d+\.?\d*)\s*mm/) { + $LaTeXwidth = $1; + } elsif ($textwidth=~/(\d+\.?\d*)\s*in/) { + $LaTeXwidth = $1*25.4; + } + $LaTeXwidth.=' mm'; + return $LaTeXwidth; +} + sub output_data { my ($r,$helper,$rparmhash) = @_; my %parmhash = %$rparmhash; my $bodytag=&Apache::loncommon::bodytag('Preparing Printout'); $r->print(< + LON-CAPA output for printing @@ -673,16 +710,7 @@ ENDPART } my ($textwidth,$textheight,$oddoffset,$evenoffset) = &page_format($papersize,$laystyle,$numberofcolumns); my $assignment = $ENV{'form.assignment'}; - my $LaTeXwidth; - if ($textwidth=~/(\d+\.?\d*)\s*cm/) { - $LaTeXwidth = $1*10; - } elsif ($textwidth=~/(\d+\.?\d*)\s*mm/) { - $LaTeXwidth = $1; - } elsif ($textwidth=~/(\d+\.?\d*)\s*in/) { - $LaTeXwidth = $1*25.4; - } - $LaTeXwidth.=' mm'; - + my $LaTeXwidth=&recalcto_mm($textwidth); if ($helper->{'VARS'}->{'PRINT_TYPE'} eq 'current_document') { #-- single document - problem, page, html, xml, ... my $currentURL; @@ -701,10 +729,20 @@ ENDPART if ($helper->{'VARS'}->{'ANSWER_TYPE'} ne 'only') { my %moreenv; $moreenv{'request.filename'}=$currentURL; - if ($helper->{'VARS'}->{'style_file'}=~/\w/) {$moreenv{'construction_space_style'}=$helper->{'VARS'}->{'style_file'};} + if ($helper->{'VARS'}->{'style_file'}=~/\w/) { + $moreenv{'construct.style'}=$helper->{'VARS'}->{'style_file'}; + my $dom = $ENV{'user.domain'}; + my $user = $ENV{'user.name'}; + my $put_result = &Apache::lonnet::put('environment',{'construct.style'=>$helper->{'VARS'}->{'style_file'}},$dom,$user); + } my %form; $form{'grade_target'}='tex'; - $form{'textwidth'}=$LaTeXwidth; + if ($helper->{'VARS'}->{'pagesize.width'}=~/\d+/ && + $helper->{'VARS'}->{'pagesize.widthunit'}=~/\w+/) { + $form{'textwidth'}=&recalcto_mm($helper->{'VARS'}->{'pagesize.width'}.' '.$helper->{'VARS'}->{'pagesize.widthunit'}); + } else { + $form{'textwidth'}=$LaTeXwidth; + } $form{'problem_split'}=$parmhash{'problem_stream_switch'}; $form{'latex_type'}=$helper->{'VARS'}->{'LATEX_TYPE'}; if ($helper->{'VARS'}->{'curseed'}) { @@ -714,7 +752,7 @@ ENDPART &Apache::lonnet::appenv(%moreenv); &Apache::lonnet::delenv('form.counter'); &Apache::lonxml::init_counter(); - $texversion=&Apache::lonnet::ssi($currentURL,%form); + $texversion.=&Apache::lonnet::ssi($currentURL,%form); &Apache::lonnet::delenv('form.counter'); &Apache::lonnet::delenv('request.filename'); } @@ -769,7 +807,12 @@ ENDPART if ($helper->{'VARS'}->{'ANSWER_TYPE'} ne 'only') { my %form; $form{'grade_target'}='tex'; - $form{'textwidth'}=$LaTeXwidth; + if ($helper->{'VARS'}->{'pagesize.width'}=~/\d+/ && + $helper->{'VARS'}->{'pagesize.widthunit'}=~/\w+/) { + $form{'textwidth'}=&recalcto_mm($helper->{'VARS'}->{'pagesize.width'}.' '.$helper->{'VARS'}->{'pagesize.widthunit'}); + } else { + $form{'textwidth'}=$LaTeXwidth; + } $form{'problem_split'}=$parmhash{'problem_stream_switch'}; $form{'latex_type'}=$helper->{'VARS'}->{'LATEX_TYPE'}; $form{'rndseed'}=$rndseed; @@ -815,7 +858,12 @@ ENDPART } elsif ($currentURL=~/\/smppg$/) { my %form; $form{'grade_target'}='tex'; - $form{'textwidth'}=$LaTeXwidth; + if ($helper->{'VARS'}->{'pagesize.width'}=~/\d+/ && + $helper->{'VARS'}->{'pagesize.widthunit'}=~/\w+/) { + $form{'textwidth'}=&recalcto_mm($helper->{'VARS'}->{'pagesize.width'}.' '.$helper->{'VARS'}->{'pagesize.widthunit'}); + } else { + $form{'textwidth'}=$LaTeXwidth; + } $form{'latex_type'}=$helper->{'VARS'}->{'LATEX_TYPE'}; my $texversion=&Apache::lonnet::ssi($currentURL,%form); $result .= $texversion; @@ -837,13 +885,19 @@ ENDPART #-- produce an output string my %form=(); $form{'grade_target'}='tex'; - $form{'textwidth'}=$LaTeXwidth; + if ($helper->{'VARS'}->{'pagesize.width'}=~/\d+/ && + $helper->{'VARS'}->{'pagesize.widthunit'}=~/\w+/) { + $form{'textwidth'}=&recalcto_mm($helper->{'VARS'}->{'pagesize.width'}.' '.$helper->{'VARS'}->{'pagesize.widthunit'}); + } else { + $form{'textwidth'}=$LaTeXwidth; + } $form{'problem_split'}=$parmhash{'problem_stream_switch'}; $form{'latex_type'}=$helper->{'VARS'}->{'LATEX_TYPE'}; my $flag_latex_header_remove = 'NO'; my $flag_page_in_sequence = 'NO'; my @master_seq=split /\|\|\|/, $helper->{'VARS'}->{'RESOURCES'}; my $prevassignment=''; + &Apache::lonnet::delenv('form.counter'); &Apache::lonxml::init_counter(); for (my $i=0;$i<=$#master_seq;$i++) { my (undef,undef,$urlp)=&Apache::lonnet::decode_symb($master_seq[$i]); @@ -860,6 +914,7 @@ ENDPART $form{'symb'}=$master_seq[$i]; my ($sequence)=&Apache::lonnet::decode_symb($master_seq[$i]); 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 ($i==0) {$prevassignment=$assignment;} #&Apache::lonnet::logthis("Trying to get $urlp with symb $master_seq[$i]"); my $texversion.=&Apache::lonnet::ssi($urlp,%form); @@ -928,7 +983,12 @@ ENDPART #loop over students my $flag_latex_header_remove = 'NO'; my %moreenv; - $moreenv{'form.textwidth'}=$LaTeXwidth; + if ($helper->{'VARS'}->{'pagesize.width'}=~/\d+/ && + $helper->{'VARS'}->{'pagesize.widthunit'}=~/\w+/) { + $moreenv{'textwidth'}=&recalcto_mm($helper->{'VARS'}->{'pagesize.width'}.' '.$helper->{'VARS'}->{'pagesize.widthunit'}); + } else { + $moreenv{'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) { @@ -1014,7 +1074,12 @@ ENDPART if ($urlp=~/\//) { my %form; $form{'grade_target'}='tex'; - $form{'textwidth'}=$LaTeXwidth; + if ($helper->{'VARS'}->{'pagesize.width'}=~/\d+/ && + $helper->{'VARS'}->{'pagesize.widthunit'}=~/\w+/) { + $form{'textwidth'}=&recalcto_mm($helper->{'VARS'}->{'pagesize.width'}.' '.$helper->{'VARS'}->{'pagesize.widthunit'}); + } else { + $form{'textwidth'}=$LaTeXwidth; + } $form{'rndseed'}=$rndseed; if ($urlp =~ m|/home/([^/]+)/public_html|) { $urlp =~ s|/home/([^/]*)/public_html|/~$1|; @@ -1130,6 +1195,9 @@ sub handler { # foreach $key (keys %{$helper->{'VARS'}}) { # $r->print(' '.$key.'->'.$helper->{'VARS'}->{$key}.'<-
'); # } +# foreach $key (keys %ENV) { +# $r->print(' '.$key.'->'.$ENV{$key}.'<-
'); +# } # return OK; my %parmhash=&Apache::lonnet::coursedescription($ENV{'request.course.id'}); @@ -1526,34 +1594,27 @@ CHOOSE_FROM_ANY_SEQUENCE addMessage(""); } - if ($helper->{VARS}->{'construction'}) { - addMessage("Print With URL: "); - $paramHash = Apache::lonhelper::getParamHash(); - $paramHash->{'variable'} = 'CONSTR_RESOURSE_URL'; - $helper->declareVar('CONSTR_RESOURSE_URL'); - $paramHash->{CHOICES} = [ - ['No', 'no'], - ['Yes', 'yes'] ]; - Apache::lonhelper::dropdown->new(); - addMessage(""); - } if ($helper->{'VARS'}->{'construction'}) { - my $xmlfrag .= <<'RNDSEED'; + my $stylevalue=$ENV{'construct.style'}; + my $xmlfrag .= <<"RNDSEED"; Use random seed: return $helper->{VARS}->{'curseed'}; - Use style file: - - + Use style file: +   Select style file RNDSEED &Apache::lonxml::xmlparse($r, 'helper', $xmlfrag); + $helper->{'VARS'}->{'style_file'}=$ENV{'form.style_file_value'}; } } + + + if ($startedTable) { addMessage(""); } @@ -1616,6 +1677,7 @@ use Apache::lonhelper; no strict; @ISA = ("Apache::lonhelper::element"); use strict; +use Apache::lonlocal; my $maxColumns = 2; my @paperSize = ("Letter [8 1/2x11 in]", "Legal [8 1/2x14 in]", @@ -1643,15 +1705,17 @@ sub render { my $helper = Apache::lonhelper::getHelper(); my $result = ''; my $var = $self->{'variable'}; - + my $PageLayout=&mt('Page layout'); + my $NumberOfColumns=&mt('Number of columns'); + my $PaperType=&mt('Paper type'); $result .= < - - - + + +
Page layoutNumber of columnsPaper type$PageLayout$NumberOfColumns$PaperType