--- loncom/interface/lonprintout.pm 2001/12/07 23:35:54 1.10
+++ loncom/interface/lonprintout.pm 2002/01/22 10:42:57 1.13
@@ -1,6 +1,30 @@
# The LearningOnline Network
# Printout
#
+# $Id: lonprintout.pm,v 1.13 2002/01/22 10:42:57 sakharuk Exp $
+#
+# Copyright Michigan State University Board of Trustees
+#
+# This file is part of the LearningOnline Network with CAPA (LON-CAPA).
+#
+# LON-CAPA is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# LON-CAPA is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with LON-CAPA; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+#
+# /home/httpd/html/adm/gpl.txt
+#
+# http://www.lon-capa.org/
+#
# (Internal Server Error Handler
#
# (Login Screen
@@ -19,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();
@@ -70,14 +96,20 @@ 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);
+ $_ = $ENV{'form.url'};
+ if (/\.problem/) {
+ my %moreenv;
+ $moreenv{'form.grade_target'}='tex';
+ &Apache::lonnet::appenv(%moreenv);
+ my $texversion=&Apache::lonnet::ssi($ENV{'form.url'});
+ &Apache::lonnet::delenv('form.grade_target');
+ $texversion =~ s!\.gif!\.eps!;
+ $result .= $texversion;
+ } else {
+ my $file=&Apache::lonnet::filelocation("",$ENV{'form.url'});
+ my $filecontents=&Apache::lonnet::getfile($file);
+ $result = &Apache::lonxml::xmlparse('tex',$filecontents,'',%mystyle);
+ }
} elsif ($choice eq 'Standard LaTeX output for the primary sequence') {
my @master_seq = ();
my $keyword = 0;
@@ -133,6 +165,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
{
@@ -172,7 +274,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);
@@ -223,7 +338,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";
# }
+####