--- loncom/interface/lonprintout.pm 2003/10/27 19:01:31 1.259 +++ loncom/interface/lonprintout.pm 2004/01/12 21:53:27 1.267 @@ -1,7 +1,7 @@ # The LearningOnline Network # Printout # -# $Id: lonprintout.pm,v 1.259 2003/10/27 19:01:31 sakharuk Exp $ +# $Id: lonprintout.pm,v 1.267 2004/01/12 21:53:27 sakharuk Exp $ # # Copyright Michigan State University Board of Trustees # @@ -475,11 +475,7 @@ sub page_format_transformation { my ($papersize,$layout,$numberofcolumns,$choice,$text,$assignment,$tableofcontents,$indexlist) = @_; my ($textwidth,$textheight,$oddoffset,$evenoffset,$topmargin); $assignment=&Apache::lonxml::latex_special_symbols($assignment,'header'); - if ($numberofcolumns != 1) { - ($textwidth,$textheight,$oddoffset,$evenoffset,$topmargin) = &page_format($papersize,$layout,$numberofcolumns,$topmargin); - } else { - ($textwidth,$textheight,$oddoffset,$evenoffset) = ($ENV{'form.width'},$ENV{'form.height'},$ENV{'form.leftmargin'},$ENV{'form.leftmargin'}); - } + ($textwidth,$textheight,$oddoffset,$evenoffset,$topmargin) = &page_format($papersize,$layout,$numberofcolumns,$topmargin); my $name = &get_name(); my $courseidinfo = &get_course(); if (defined($courseidinfo)) { $courseidinfo=' - '.$courseidinfo } @@ -658,6 +654,30 @@ sub output_data { my $bodytag=&Apache::loncommon::bodytag('Preparing Printout'); $r->print(<<ENDPART); <html> +<script type="text/javascript" language="Javascript" > + var editbrowser; + function openbrowser(formname,elementname,only,omit) { + var url = '/res/?'; + if (editbrowser == null) { + url += 'launch=1&'; + } + url += 'catalogmode=interactive&'; + url += 'mode=parmset&'; + url += 'form=' + formname + '&'; + if (only != null) { + url += 'only=' + only + '&'; + } + if (omit != null) { + url += 'omit=' + omit + '&'; + } + url += 'element=' + elementname + ''; + var title = 'Browser'; + var options = 'scrollbars=1,resizable=1,menubar=0'; + options += ',width=700,height=600'; + editbrowser = open(url,title,options,'1'); + editbrowser.focus(); + } +</script> <head> <title>LON-CAPA output for printing</title> </head> @@ -705,6 +725,12 @@ ENDPART if ($helper->{'VARS'}->{'ANSWER_TYPE'} ne 'only') { my %moreenv; $moreenv{'request.filename'}=$currentURL; + 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; @@ -863,9 +889,9 @@ 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]"); - $form{'freeze_counter'}='no'; my $texversion.=&Apache::lonnet::ssi($urlp,%form); if ($urlp=~/\.page$/) { ($texversion,my $number_of_columns_page) = &page_cleanup($texversion); @@ -873,13 +899,19 @@ ENDPART $texversion =~ s/\\end{document}\d*/\\end{document}/; $flag_page_in_sequence = 'YES'; } + my $lonidsdir=$r->dir_config('lonIDsDir'); + my $envfile=$ENV{'user.environment'}; + $envfile=~/\/([^\/]+)\.id$/; + $envfile=$1; + &Apache::lonnet::transfer_profile_to_env($lonidsdir,$envfile); + my $current_counter=$ENV{'form.counter'}; if(($helper->{'VARS'}->{'ANSWER_TYPE'} eq 'no') || ($helper->{'VARS'}->{'ANSWER_TYPE'} eq 'only')) { my %form; $form{'grade_target'}='answer'; $form{'answer_output_mode'}='tex'; - $form{'freeze_counter'}='yes'; my $answer=&Apache::lonnet::ssi($urlp,%form); + &Apache::lonnet::appenv(('form.counter' => $current_counter)); if ($helper->{'VARS'}->{'ANSWER_TYPE'} eq 'no') { $texversion=~s/(\\keephidden{ENDOFPROBLEM})/$answer$1/; } else { @@ -945,12 +977,19 @@ ENDPART if (&Apache::lonnet::allowed('bre',$res_url)) { my $rendered = &Apache::loncommon::get_student_view($curresline,$username,$userdomain, $ENV{'request.course.id'},'tex'); + my $lonidsdir=$r->dir_config('lonIDsDir'); + my $envfile=$ENV{'user.environment'}; + $envfile=~/\/([^\/]+)\.id$/; + $envfile=$1; + &Apache::lonnet::transfer_profile_to_env($lonidsdir,$envfile); + my $current_counter=$ENV{'form.counter'}; if(($helper->{'VARS'}->{'ANSWER_TYPE'} eq 'no') || ($helper->{'VARS'}->{'ANSWER_TYPE'} eq 'only')) { my %form; $form{'answer_output_mode'}='tex'; $form{'latex_type'}=$helper->{'VARS'}->{'LATEX_TYPE'}; my $ansrendered = &Apache::loncommon::get_student_answers($curresline,$username,$userdomain,$ENV{'request.course.id'},%form); + &Apache::lonnet::appenv(('form.counter' => $current_counter)); if ($helper->{'VARS'}->{'ANSWER_TYPE'} eq 'no') { $rendered=~s/(\\keephidden{ENDOFPROBLEM})/$ansrendered$1/; } else { @@ -1066,10 +1105,10 @@ ENDPART $result = &latex_corrections($number_of_columns,$result); #changes page's parameters for the one column output if ($numberofcolumns == 1) { - $result =~ s/\\textwidth= 9cm/\\textwidth= $helper->{'VARS'}->{'pagesize.width'} $helper->{'VARS'}->{'pagesize.widthunit'} /; - $result =~ s/\\textheight 25\.9cm/\\textheight $helper->{'VARS'}->{'pagesize.height'} $helper->{'VARS'}->{'pagesize.heightunit'} /; - $result =~ s/\\evensidemargin = -0\.57in/\\evensidemargin= $helper->{'VARS'}->{'pagesize.lmargin'} $helper->{'VARS'}->{'pagesize.lmarginunit'} /; - $result =~ s/\\oddsidemargin = -0\.57in/\\oddsidemargin= $helper->{'VARS'}->{'pagesize.lmargin'} $helper->{'VARS'}->{'pagesize.lmarginunit'} /; + $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/\\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'} /; } #-- writing .tex file in prtspool my $temp_file; @@ -1121,6 +1160,9 @@ sub handler { # foreach $key (keys %{$helper->{'VARS'}}) { # $r->print(' '.$key.'->'.$helper->{'VARS'}->{$key}.'<-<br />'); # } +# foreach $key (keys %ENV) { +# $r->print(' '.$key.'->'.$ENV{$key}.'<-<br />'); +# } # return OK; my %parmhash=&Apache::lonnet::coursedescription($ENV{'request.course.id'}); @@ -1186,6 +1228,7 @@ sub printHelper { $helper->declareVar('filename'); $helper->declareVar('construction'); $helper->declareVar('assignment'); + $helper->declareVar('style_file'); # This will persistently load in the data we want from the # very first screen. @@ -1516,31 +1559,27 @@ CHOOSE_FROM_ANY_SEQUENCE addMessage("</td></tr>"); } - if ($helper->{VARS}->{'construction'}) { - addMessage("<tr><td align='right'>Print With URL: </td><td>"); - $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("</td></tr>"); - } if ($helper->{'VARS'}->{'construction'}) { - my $xmlfrag .= <<'RNDSEED'; + my $stylevalue=$ENV{'construct.style'}; + my $xmlfrag .= <<"RNDSEED"; <message><tr><td align='right'>Use random seed: </td><td></message> <string variable="curseed" size="15" maxlength="15"> <defaultvalue> return $helper->{VARS}->{'curseed'}; </defaultvalue> - </string> + </string> + <message></td></tr><tr><td align="right">Use style file:</td><td></message> + <message><input type="text" size="40" name="style_file_value" value="$stylevalue" /> <a href="javascript:openbrowser('helpform','style_file','sty')">Select style file</a> </td><td></message> <message></td></tr></message> RNDSEED &Apache::lonxml::xmlparse($r, 'helper', $xmlfrag); + $helper->{'VARS'}->{'style_file'}=$ENV{'form.style_file_value'}; } } + + + if ($startedTable) { addMessage("</table>"); } @@ -1603,6 +1642,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]", @@ -1630,15 +1670,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 .= <<STATEHTML; <hr width="33%" /> <table cellpadding="3"> <tr> - <td align="center"><b>Page layout</b></td> - <td align="center"><b>Number of columns</b></td> - <td align="center"><b>Paper type</b></td> + <td align="center"><b>$PageLayout</b></td> + <td align="center"><b>$NumberOfColumns</b></td> + <td align="center"><b>$PaperType</b></td> </tr> <tr> <td>