--- loncom/interface/lonprintout.pm 2001/12/19 17:17:46 1.11
+++ loncom/interface/lonprintout.pm 2002/02/21 04:12:16 1.14
@@ -1,7 +1,7 @@
# The LearningOnline Network
# Printout
#
-# $Id: lonprintout.pm,v 1.11 2001/12/19 17:17:46 albertel Exp $
+# $Id: lonprintout.pm,v 1.14 2002/02/21 04:12:16 albertel Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -43,6 +43,8 @@ use strict;
use Apache::Constants qw(:common :http);
use Apache::lonxml;
use Apache::lonnet;
+use Apache::inputtags;
+use Apache::edit;
use Apache::File();
@@ -94,14 +96,18 @@ ENDPART
my $filename;
if ($choice eq 'Standard LaTeX output for current document') {
- my $access=&Apache::lonnet::allowed('bre',$ENV{'form.url'});
- if (($access ne '2') && ($access ne 'F')) {
- $ENV{'user.error.msg'}="$ENV{'form.url'}:bre:1:1:Access Denied";
- return HTTP_NOT_ACCEPTABLE;
- }
- my $file=&Apache::lonnet::filelocation("",$ENV{'form.url'});
- my $filecontents=&Apache::lonnet::getfile($file);
- $result = &Apache::lonxml::xmlparse('tex',$filecontents,'',%mystyle);
+ my %moreenv;
+ my $currequest=$ENV{'request.filename'};
+ $moreenv{'form.grade_target'}='tex';
+ $moreenv{'request.filename'}=$ENV{'form.url'};
+ &Apache::lonnet::appenv(%moreenv);
+ my $texversion=&Apache::lonnet::ssi($ENV{'form.url'});
+ &Apache::lonnet::delenv('form.grade_target');
+ %moreenv = ();
+ $moreenv{'request.filename'}=$currequest;
+ &Apache::lonnet::appenv(%moreenv);
+ $texversion =~ s!\.gif!\.eps!;
+ $result .= $texversion;
} elsif ($choice eq 'Standard LaTeX output for the primary sequence') {
my @master_seq = ();
my $keyword = 0;
@@ -157,6 +163,76 @@ ENDPART
$output_seq = ''.$output_seq.' ';
#-- final accord
$result = &Apache::lonxml::xmlparse('tex',$output_seq,'',%mystyle);
+ } elsif ($choice eq 'Standard LaTeX output for the top level sequence') {
+
+#-- where is the main sequence of the course?
+
+ my @master_seq = ();
+ my $keyword = 0;
+ my $output_seq = '';
+
+ my $main_seq = '/res/'.$ENV{'request.course.uri'};
+ my $file=&Apache::lonnet::filelocation("",$main_seq);
+ my $filecontents=&Apache::lonnet::getfile($file);
+ my @file_seq = &content_map($filecontents);
+
+#-- temporary solution (without sequence inside sequence) - have to be generalized
+
+
+
+
+# if (defined @master_seq) {
+# my $old_value = $#master_seq;
+# my $total_value = $#master_seq + $#file_seq +2;
+# for (my $j=0; $j<=$old_value-$keyword+1; $j++) {
+# $master_seq[$total_value-$j] = $master_seq[$old_value-$j];
+# }
+# for (my $j=0; $j<=$#file_seq; $j++){
+# $master_seq[$keyword+$j] = $file_seq[$j];
+# }
+# @file_seq = ();
+# $keyword = 0;
+# } else {
+ @master_seq = @file_seq;
+# @file_seq = ();
+# }
+
+#-- checking wether .sequence file is among the set of files
+# my $current_file = '';
+# for (my $i=0; $i<=$#file_seq; $i++) {
+# $_ = $file_seq[$i];
+# if (m/(.*)\.sequence/) {
+# $current_file = $_;
+# $keyword = $i;
+# last;
+# }
+# }
+
+#-- produce an output string
+ for (my $i=0;$i<=$#master_seq;$i++) {
+ $_ = $master_seq[$i];
+ m/\"(.*)\"/;
+ $_ = $1;
+ my $urlp = $1;
+ if (/\.problem/) {
+ my %moreenv;
+ $moreenv{'form.grade_target'}='tex';
+ &Apache::lonnet::appenv(%moreenv);
+ my $texversion=&Apache::lonnet::ssi($urlp);
+ &Apache::lonnet::delenv('form.grade_target');
+ $texversion =~ s!\.gif!\.eps!;
+ $result .= $texversion;
+ }
+ }
+#-- additional cleanup for output
+ my $first_app = index($result,'\documentclass',0);
+ $first_app = index($result,'\documentclass',$first_app+5);
+ while ($first_app != -1) {
+ my $second_app = index($result,'begin{document}',$first_app);
+ $first_app = rindex($result,'\end{document}',$first_app);
+ substr($result,$first_app,$second_app-$first_app+15) = '\vskip 7 mm';
+ $first_app = index($result,'\documentclass',$first_app+5);
+ }
}
#-- writing .tex file in prtspool
{
@@ -196,7 +272,7 @@ sub content_map {
$_ = $chunk;
m/to=\"(\d+)\"/;
push @number_seq,$1;
- $startlink = index($map_string,'',$stalink);
+ if ($ahed1 != -1) {
+ if ($ahed1 < $ahed2) {
+ $startlink = $ahed1;
+ } else {
+ $startlink = rindex($map_string,'src="',$stalink);
+ }
+ } else {
+ $startlink = rindex($map_string,'src="',$stalink);
+ }
+
+ }
$startlink = index($map_string,'"',$startlink);
$endlink = index($map_string,'"',$startlink+1);
$chunk = substr($map_string,$startlink,$endlink-$startlink+1);
@@ -247,7 +336,11 @@ sub handler {
__END__
+
+
+#### Test block
# my $ere;
# foreach $ere (%ENV) {
-# $r->print(' SS '.$ere.' => '.$ENV{$ere}.' FF '."\n\n");
+# $result .= ' SS '.$ere.' => '.$ENV{$ere}.' FF '."\n\n";
# }
+####