--- 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"  />&nbsp; <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>