Annotation of loncom/xml/lontex.pm, revision 1.15
1.1 harris41 1: # The LearningOnline Network with CAPA
2: # TeX Content Handler
3: #
1.15 ! raeburn 4: # $Id: lontex.pm,v 1.14 2023/12/22 13:38:01 raeburn Exp $
1.3 www 5: #
6: # Copyright Michigan State University Board of Trustees
7: #
8: # This file is part of the LearningOnline Network with CAPA (LON-CAPA).
9: #
10: # LON-CAPA is free software; you can redistribute it and/or modify
11: # it under the terms of the GNU General Public License as published by
12: # the Free Software Foundation; either version 2 of the License, or
13: # (at your option) any later version.
14: #
15: # LON-CAPA is distributed in the hope that it will be useful,
16: # but WITHOUT ANY WARRANTY; without even the implied warranty of
17: # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
18: # GNU General Public License for more details.
19: #
20: # You should have received a copy of the GNU General Public License
21: # along with LON-CAPA; if not, write to the Free Software
22: # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
23: #
24: # /home/httpd/html/adm/gpl.txt
25: #
26: # http://www.lon-capa.org/
27: #
28: #
29: # Copyright for TtHfunc and TtMfunc by Ian Hutchinson.
30: # TtHfunc and TtMfunc (the "Code") may be compiled and linked into
31: # binary executable programs or libraries distributed by the
32: # Michigan State University (the "Licensee"), but any binaries so
33: # distributed are hereby licensed only for use in the context
34: # of a program or computational system for which the Licensee is the
35: # primary author or distributor, and which performs substantial
36: # additional tasks beyond the translation of (La)TeX into HTML.
37: # The C source of the Code may not be distributed by the Licensee
38: # to any other parties under any circumstances.
39: #
1.1 harris41 40: # 05/29/00,05/30,10/11 Gerd Kortemeyer
41:
42: package Apache::lontex;
43:
44: use strict;
45: use Apache::File;
46: use Apache::lontexconvert;
47: use Apache::Constants qw(:common);
1.7 albertel 48: use Apache::lonnet;
1.15 ! raeburn 49: use Apache::loncommon;
! 50: use Apache::lonmsg;
! 51: use Apache::lonlocal;
1.1 harris41 52: use tth;
53:
54: # ================================================================ Main Handler
55:
1.9 albertel 56: sub footer {
57: my $xmlstring='';
58: if ($env{'request.state'} eq 'construct') {
59: $xmlstring.='<address>'.
60: $Apache::lontexconvert::errorstring.'</address>';
61: } else {
62: &Apache::lonmsg::author_res_msg($env{'request.filename'},
63: $Apache::lonxml::errorstring);
64: }
65: # -------------------------------------------------------------------- End Body
1.11 albertel 66: $xmlstring.=&Apache::loncommon::end_page({'discussion' => 1});
1.9 albertel 67: return $xmlstring;
68: }
69:
1.1 harris41 70: sub handler {
1.9 albertel 71: my ($r)= @_;
1.1 harris41 72: my @texcontents;
73: my $texstring;
74:
75: # ----------------------------------------------------------- Set document type
76:
1.7 albertel 77: if ($env{'browser.mathml'}) {
1.6 albertel 78: &Apache::loncommon::content_type($r,'text/xml');
1.1 harris41 79: } else {
1.6 albertel 80: &Apache::loncommon::content_type($r,'text/html');
1.1 harris41 81: }
82: $r->send_http_header;
83:
84: return OK if $r->header_only;
85:
86: # ------------------------------------------------------------------- Read file
87:
88: {
1.15 ! raeburn 89: if (-e $r->filename) {
! 90: my $fh=Apache::File->new($r->filename);
! 91: @texcontents=<$fh>;
! 92: close($fh);
! 93: } else {
! 94: my $filename=(split('/',$r->filename))[-1];
! 95: my $error =
! 96: '<p class="LC_error">'
! 97: .&mt('Unable to find [_1]',
! 98: '<span class="LC_filename">'.$filename.'</span>')
! 99: ."</p>";
! 100: &Apache::loncommon::simple_error_page($r,'Not available',
! 101: $error,{'no_auto_mt_msg' => 1});
! 102: return OK;
! 103: }
1.1 harris41 104: }
105:
106: $texstring=join("\n",@texcontents);
107:
108: # --------------------------------------------------------------- Render Output
109:
1.9 albertel 110: &Apache::loncommon::get_unprocessed_cgi($ENV{'QUERY_STRING'},
111: ['texengine','inhibitmenu']);
112:
1.8 albertel 113:
1.9 albertel 114: $r->print(&Apache::loncommon::start_page(undef,undef,
1.10 albertel 115: {'bgcolor' => '#FFFFFF',
1.9 albertel 116: 'force_register' => 1,
117: 'only_body' =>
118: ($env{'form.inhibitmenu'}
119: eq 'yes'), }));
120:
1.14 raeburn 121: my $displaymode;
122: if (&Apache::lonnet::EXT('resource.0.texdisplay') =~ /^(tth|mathjax)$/i) {
123: $displaymode = $1;
124: }
125: if ($env{'form.texengine'} =~ /^(tth|mathjax)$/i) {
126: $displaymode = $1;
127: }
1.9 albertel 128: $r->print(&Apache::lontexconvert::converted(\$texstring,
1.14 raeburn 129: $displaymode));
1.9 albertel 130: $r->print(&footer());
1.1 harris41 131:
132: return OK;
133: }
134:
135: 1;
136: __END__
137:
1.13 jms 138: =pod
139:
140: =head1 NAME
141:
142: Apache::lontex.pm
143:
144: =head1 SYNOPSIS
145:
146: Handler for tex files (somewhere in modules)
147:
148: This is part of the LearningOnline Network with CAPA project
149: described at http://www.lon-capa.org.
150:
151:
152: =head1 SUBROUTINES
153:
154: =over
155:
156: =item footer()
157:
158: Main Handler
159:
160: =back
161:
162: =cut
163:
1.1 harris41 164:
165:
166:
167:
168:
169:
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>