version 1.13, 2000/10/16 17:29:11
|
version 1.29, 2001/11/29 19:23:48
|
Line 1
|
Line 1
|
# The LearningOnline Network with CAPA |
# The LearningOnline Network with CAPA |
# Page Handler |
# Page Handler |
# |
# |
|
# $Id$ |
|
# |
|
# 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/ |
|
# |
# (TeX Content Handler |
# (TeX Content Handler |
# |
# |
# 05/29/00,05/30 Gerd Kortemeyer) |
# 05/29/00,05/30 Gerd Kortemeyer) |
# 08/30,08/31,09/06,09/14,09/15,09/16,09/19,09/20,09/21,09/23, |
# 08/30,08/31,09/06,09/14,09/15,09/16,09/19,09/20,09/21,09/23, |
# 10/02,10/10,10/14,10/16 Gerd Kortemeyer |
# 10/02,10/10,10/14,10/16,10/18,10/19,10/31,11/6,11/14,11/16, |
|
# 08/13/01,08/30,10/1 Gerd Kortemeyer |
|
|
package Apache::lonpage; |
package Apache::lonpage; |
|
|
use strict; |
use strict; |
use Apache::Constants qw(:common :http); |
use Apache::Constants qw(:common :http); |
use Apache::lonnet(); |
use Apache::lonnet(); |
|
use Apache::lonxml(); |
use HTML::TokeParser; |
use HTML::TokeParser; |
use GDBM_File; |
use GDBM_File; |
|
|
Line 168 sub handler {
|
Line 194 sub handler {
|
my %ssilink=(); |
my %ssilink=(); |
my %ssivlink=(); |
my %ssivlink=(); |
my %ssialink=(); |
my %ssialink=(); |
|
|
|
my %metalink=(); |
|
|
my %cellemb=(); |
my %cellemb=(); |
|
|
my $allscript=''; |
my $allscript=''; |
Line 187 sub handler {
|
Line 216 sub handler {
|
map { |
map { |
my $src=$hash{'src_'.$_}; |
my $src=$hash{'src_'.$_}; |
$src=~/\.(\w+)$/; |
$src=~/\.(\w+)$/; |
|
$metalink{$_}=$src.'.meta'; |
$cellemb{$_}=Apache::lonnet::fileembstyle($1); |
$cellemb{$_}=Apache::lonnet::fileembstyle($1); |
if ($cellemb{$_} eq 'ssi') { |
if ($cellemb{$_} eq 'ssi') { |
# --------------------------------------------------------- This is an SSI cell |
# --------------------------------------------------------- This is an SSI cell |
Line 242 sub handler {
|
Line 272 sub handler {
|
$xmlbody=$token->[4]; |
$xmlbody=$token->[4]; |
} |
} |
} elsif ($token->[1] eq 'meta') { |
} elsif ($token->[1] eq 'meta') { |
|
if ($token->[4] !~ m:/>$:) { |
$allmeta.="\n".$token->[4].'</meta>'; |
$allmeta.="\n".$token->[4].'</meta>'; |
|
} else { |
|
$allmeta.="\n".$token->[4]; |
|
} |
} elsif (($token->[1] eq 'script') && |
} elsif (($token->[1] eq 'script') && |
($bodydef==0)) { |
($bodydef==0)) { |
$allscript.="\n\n" |
$allscript.="\n\n" |
Line 258 sub handler {
|
Line 292 sub handler {
|
$nforms++; |
$nforms++; |
$output=~s/\<form[^\>]*\>//gsi; |
$output=~s/\<form[^\>]*\>//gsi; |
$output=~s/\<\/form[^\>]*\>//gsi; |
$output=~s/\<\/form[^\>]*\>//gsi; |
|
$output=~ |
|
s/\<((?:input|select|button|textarea)[^\>]+)name\s*\=\s*[\'\"]*([\w\.\:]+)[\'\"]*([^\>]*)\>/\<$1 name="$prefix$2" $3\>/gsi; |
} |
} |
$thisdir=~s/\/[^\/]*$//; |
$thisdir=~s/\/[^\/]*$//; |
map { |
map { |
Line 268 sub handler {
|
Line 304 sub handler {
|
$output=~s/(\"|\'|\=\s*)$_(\"|\'|\s|\>)/$1$newlocation$2/; |
$output=~s/(\"|\'|\=\s*)$_(\"|\'|\s|\>)/$1$newlocation$2/; |
} |
} |
} @rlinks; |
} @rlinks; |
$output=~s/\<\s*applet/\<applet codebase=\"$thisdir\" /gi; |
# -------------------------------------------------- Deal with Applet codebases |
|
$output=~s/(\<applet[^\>]+)(codebase\=[^\S\>]+)*([^\>]*)\>/$1.($2?$2:' codebase="'.$thisdir.'"').$3.'>'/gei; |
$ssibody{$_}=$output; |
$ssibody{$_}=$output; |
|
|
# ---------------------------------------------------------------- End SSI cell |
# ---------------------------------------------------------------- End SSI cell |
} |
} |
} @colcont; |
} @colcont; |
Line 295 sub handler {
|
Line 331 sub handler {
|
} |
} |
# ------------------------------------------------------------------------ Head |
# ------------------------------------------------------------------------ Head |
$r->print("\n<head>\n".$allmeta); |
$r->print("\n<head>\n".$allmeta); |
|
$allscript=~ |
|
s/\/\/ BEGIN LON\-CAPA Internal.+\/\/ END LON\-CAPA Internal\s//gs; |
if ($allscript) { |
if ($allscript) { |
$r->print("\n<script>\n".$allscript."\n</script>\n"); |
$r->print("\n<script language='JavaScript'>\n". |
|
$allscript."\n</script>\n"); |
} |
} |
|
$r->print(&Apache::lonxml::registerurl(1)); |
$r->print("\n</head>\n"); |
$r->print("\n</head>\n"); |
# ------------------------------------------------------------------ Start body |
# ------------------------------------------------------------------ Start body |
if ($isxml) { |
if ($isxml) { |
$r->print($xmlbody); |
$r->print($xmlbody); |
} else { |
} else { |
$r->print('<body bgcolor="#FFFFFF">'); |
$r->print( |
|
'<body bgcolor="#FFFFFF" onLoad="'.&Apache::lonxml::loadevents. |
|
'" onUnload="'.&Apache::lonxml::unloadevents.'">'); |
} |
} |
# ------------------------------------------------------------------ Start form |
# ------------------------------------------------------------------ Start form |
if ($nforms) { |
if ($nforms) { |
Line 319 sub handler {
|
Line 361 sub handler {
|
my $avespan=$lcm/($#colcont+1); |
my $avespan=$lcm/($#colcont+1); |
for ($j=0;$j<=$#colcont;$j++) { |
for ($j=0;$j<=$#colcont;$j++) { |
my $rid=$colcont[$j]; |
my $rid=$colcont[$j]; |
|
my $metainfo='<a href="'. |
|
$metalink{$rid}.'" target="LONcatInfo">'. |
|
'<img src="/adm/lonMisc/cat_button.gif" border=0>'. |
|
'</img></a>'; |
|
if ( |
|
($hash{'src_'.$rid}=~/\.(problem|exam|quiz|assess|survey|form)$/) && |
|
(&Apache::lonnet::allowed('mgr',$ENV{'request.course.id'}))) { |
|
my ($mapid,$resid)=split(/\./,$rid); |
|
my $symb= |
|
&Apache::lonnet::declutter($hash{'map_id_'.$mapid}). |
|
'___'.$resid.'___'. |
|
&Apache::lonnet::declutter($hash{'src_'.$rid}); |
|
$metainfo.= |
|
'<a href="/adm/grades?symb='.$symb. |
|
'&command=submission" target="LONcatInfo">'. |
|
'<img src="/adm/lonMisc/subm_button.gif" border=0>'. |
|
'</img></a>'. |
|
'<a href="/adm/grades?symb='.$symb. |
|
'&command=viewgrades" target="LONcatInfo">'. |
|
'<img src="/adm/lonMisc/pgrd_button.gif" border=0>'. |
|
'</img></a>'. |
|
'<a href="/adm/parmset?symb='.$symb.'" target="LONcatInfo">'. |
|
'<img src="/adm/lonMisc/pprm_button.gif" border=0>'. |
|
'</img></a>'; |
|
} |
|
$metainfo.='<br></br>'; |
$r->print('<td colspan="'.$avespan.'"'); |
$r->print('<td colspan="'.$avespan.'"'); |
if ($cellemb{$rid} eq 'ssi') { |
if ($cellemb{$rid} eq 'ssi') { |
if ($ssibgcolor{$rid}) { |
if ($ssibgcolor{$rid}) { |
$r->print(' bgcolor="'. |
$r->print(' bgcolor="'. |
$ssibgcolor{$rid}.'"'); |
$ssibgcolor{$rid}.'"'); |
} |
} |
$r->print('><font'); |
$r->print('>'.$metainfo.'<font'); |
if ($ssitext{$rid}) { |
if ($ssitext{$rid}) { |
$r->print(' text="'.$ssitext{$rid}.'"'); |
$r->print(' text="'.$ssitext{$rid}.'"'); |
} |
} |
Line 341 sub handler {
|
Line 409 sub handler {
|
|
|
$r->print('>'.$ssibody{$rid}.'</font>'); |
$r->print('>'.$ssibody{$rid}.'</font>'); |
} elsif ($cellemb{$rid} eq 'img') { |
} elsif ($cellemb{$rid} eq 'img') { |
$r->print('><img src="'. |
$r->print('>'.$metainfo.'<img src="'. |
$hash{'src_'.$rid}.'"></img>'); |
$hash{'src_'.$rid}.'"></img>'); |
} elsif ($cellemb{$rid} eq 'emb') { |
} elsif ($cellemb{$rid} eq 'emb') { |
$r->print('><embed src="'. |
$r->print('>'.$metainfo.'<embed src="'. |
$hash{'src_'.$rid}.'"></embed>'); |
$hash{'src_'.$rid}.'"></embed>'); |
} |
} |
$r->print('</td>'); |
$r->print('</td>'); |
Line 359 sub handler {
|
Line 427 sub handler {
|
'<input name="all_submit" value="Submit All" type="'. |
'<input name="all_submit" value="Submit All" type="'. |
(($nforms>1)?'submit':'hidden').'"></input></form>'); |
(($nforms>1)?'submit':'hidden').'"></input></form>'); |
} |
} |
$r->print('</body></html>'); |
$r->print('</body>'.&Apache::lonxml::xmlend()); |
# -------------------------------------------------------------------- End page |
# -------------------------------------------------------------------- End page |
} |
} |
# ------------------------------------------------------------- End render page |
# ------------------------------------------------------------- End render page |