version 1.88, 2008/11/20 13:11:43
|
version 1.92, 2009/10/26 10:17:58
|
Line 27
|
Line 27
|
# |
# |
### |
### |
|
|
=head1 NAME |
|
|
|
Apache::lonpage - Page Handler |
|
|
|
=head1 SYNOPSIS |
|
|
|
Invoked by /etc/httpd/conf/srm.conf: |
|
|
|
<LocationMatch "^/res/.*\.page$> |
|
SetHandler perl-script |
|
PerlHandler Apache::lonpage |
|
</LocationMatch> |
|
|
|
=head1 INTRODUCTION |
|
|
|
This module renders a .page resource. |
|
|
|
This is part of the LearningOnline Network with CAPA project |
|
described at http://www.lon-capa.org. |
|
|
|
=head1 HANDLER SUBROUTINE |
|
|
|
This routine is called by Apache and mod_perl. |
|
|
|
=over 4 |
|
|
|
=item * |
|
|
|
set document type for header only |
|
|
|
=item * |
|
|
|
tie db file |
|
|
|
=item * |
|
|
|
render page |
|
|
|
=item * |
|
|
|
add to symb list |
|
|
|
=item * |
|
|
|
page parms |
|
|
|
=item * |
|
|
|
Get SSI output, post parameters |
|
|
|
=item * |
|
|
|
SSI cell rendering |
|
|
|
=item * |
|
|
|
Deal with Applet codebases |
|
|
|
=item * |
|
|
|
Build page |
|
|
|
=item * |
|
|
|
send headers |
|
|
|
=item * |
|
|
|
start body |
|
|
|
=item * |
|
|
|
start form |
|
|
|
=item * |
|
|
|
start table |
|
|
|
=item * |
|
|
|
submit element, etc, render page, untie hash |
|
|
|
=back |
|
|
|
=head1 OTHER SUBROUTINES |
|
|
|
=over 4 |
|
|
|
=item * |
|
|
|
euclid() : Euclid's method for determining the greatest common denominator. |
|
|
|
=item * |
|
|
|
tracetable() : Build page table. |
|
|
|
=back |
|
|
|
=cut |
|
|
|
|
|
package Apache::lonpage; |
package Apache::lonpage; |
Line 372 sub handler {
|
Line 274 sub handler {
|
if ($target eq 'tex') { |
if ($target eq 'tex') { |
$output =~ s/^([^&]+)\\begin{document}//; |
$output =~ s/^([^&]+)\\begin{document}//; |
$output =~ s/\\end{document}//; |
$output =~ s/\\end{document}//; |
$output = '\parbox{\minipagewidth}{ '.$output.' }'; |
# $output = '\parbox{\minipagewidth}{ '.$output.' }'; |
#some additional cleanup necessary for LateX (due to limitations of table environment |
#some additional cleanup necessary for LateX (due to limitations of table environment |
$output =~ s/(\\vskip\s*\d+mm)\s*(\\\\)+/$1/g; |
$output =~ s/(\\vskip\s*\d+mm)\s*(\\\\)+/$1/g; |
} |
} |
Line 440 sub handler {
|
Line 342 sub handler {
|
} |
} |
$thisdir=~s/\/[^\/]*$//; |
$thisdir=~s/\/[^\/]*$//; |
foreach (@rlinks) { |
foreach (@rlinks) { |
unless (($_=~/^http:\/\//i) || |
unless (($_=~/^https?\:\/\//i) || |
($_=~/^\//) || |
($_=~/^\//) || |
($_=~/^javascript:/i) || |
($_=~/^javascript:/i) || |
($_=~/^mailto:/i) || |
($_=~/^mailto:/i) || |
Line 495 sub handler {
|
Line 397 sub handler {
|
.'">'); |
.'">'); |
} |
} |
} elsif ($target eq 'tex') { |
} elsif ($target eq 'tex') { |
$r->print('\documentclass{article} |
# I think this is not needed as the header |
\newcommand{\keephidden}[1]{} |
# will be put in for each of the page parts |
\usepackage[dvips]{graphicx} |
# by the londefdef.pm now that we are opening up |
\usepackage{epsfig} |
# the parts of a page. |
\usepackage{calc} |
#$r->print('\documentclass{article} |
\usepackage{longtable} |
# \newcommand{\keephidden}[1]{} |
\begin{document}'); |
# \usepackage[dvips]{graphicx} |
|
# \usepackage{epsfig} |
|
# \usepackage{calc} |
|
# \usepackage{longtable} |
|
# \begin{document}'); |
} |
} |
# ----------------------------------------------------------------- Start table |
# ----------------------------------------------------------------- Start table |
if ($target eq 'tex') { |
if ($target eq 'tex') { |
$r->print('\begin{longtable}INSERTTHEHEADOFLONGTABLE\endfirsthead\endhead '); |
# # $r->print('\begin{longtable}INSERTTHEHEADOFLONGTABLE\endfirsthead\endhead '); |
if ($number_of_columns le $lcm) {$number_of_columns=$lcm;}; |
if ($number_of_columns le $lcm) {$number_of_columns=$lcm;}; |
} else { |
} else { |
$r->print('<table width="100%" cols="'.$lcm.'" border="0">'); |
$r->print('<table width="100%" cols="'.$lcm.'" border="0">'); |
Line 572 sub handler {
|
Line 478 sub handler {
|
unless ($target eq 'tex') { |
unless ($target eq 'tex') { |
$r->print('</td>'); |
$r->print('</td>'); |
} else { |
} else { |
for (my $incol=1;$incol<=$avespan;$incol++) { |
# for (my $incol=1;$incol<=$avespan;$incol++) { |
$r->print(' & '); |
# $r->print(' & '); |
} |
# } |
} |
} |
} |
} |
unless ($target eq 'tex') { |
unless ($target eq 'tex') { |
$r->print('</tr>'); |
$r->print('</tr>'); |
} else { |
} else { |
$r->print('REMOVETHEHEADOFLONGTABLE\\\\'); |
# $r->print('REMOVETHEHEADOFLONGTABLE\\\\'); |
} |
} |
} |
} |
} |
} |
unless ($target eq 'tex') { |
unless ($target eq 'tex') { |
$r->print("\n</table>"); |
$r->print("\n</table>"); |
} else { |
} else { |
$r->print('\end{longtable}\strut'); |
# $r->print('\end{longtable}\strut'); |
} |
} |
# ---------------------------------------------------------------- Submit, etc. |
# ---------------------------------------------------------------- Submit, etc. |
if ($nforms) { |
if ($nforms) { |
Line 692 sub get_buttons {
|
Line 598 sub get_buttons {
|
__END__ |
__END__ |
|
|
|
|
|
=head1 NAME |
|
|
|
Apache::lonpage - Page Handler |
|
|
|
=head1 SYNOPSIS |
|
|
|
Invoked by /etc/httpd/conf/srm.conf: |
|
|
|
<LocationMatch "^/res/.*\.page$> |
|
SetHandler perl-script |
|
PerlHandler Apache::lonpage |
|
</LocationMatch> |
|
|
|
=head1 INTRODUCTION |
|
|
|
This module renders a .page resource. |
|
|
|
This is part of the LearningOnline Network with CAPA project |
|
described at http://www.lon-capa.org. |
|
|
|
=head1 HANDLER SUBROUTINE |
|
|
|
This routine is called by Apache and mod_perl. |
|
|
|
=over 4 |
|
|
|
=item * |
|
|
|
set document type for header only |
|
|
|
=item * |
|
|
|
tie db file |
|
|
|
=item * |
|
|
|
render page |
|
|
|
=item * |
|
|
|
add to symb list |
|
|
|
=item * |
|
|
|
page parms |
|
|
|
=item * |
|
|
|
Get SSI output, post parameters |
|
|
|
=item * |
|
|
|
SSI cell rendering |
|
|
|
=item * |
|
|
|
Deal with Applet codebases |
|
|
|
=item * |
|
|
|
Build page |
|
|
|
=item * |
|
|
|
send headers |
|
|
|
=item * |
|
|
|
start body |
|
|
|
=item * |
|
|
|
start form |
|
|
|
=item * |
|
|
|
start table |
|
|
|
=item * |
|
|
|
submit element, etc, render page, untie hash |
|
|
|
=back |
|
|
|
=head1 OTHER SUBROUTINES |
|
|
|
=over 4 |
|
|
|
=item * |
|
|
|
euclid() : Euclid's method for determining the greatest common denominator. |
|
|
|
=item * |
|
|
|
tracetable() : Build page table. |
|
|
|
=back |
|
|
|
=cut |
|
|
|
|