version 1.102, 2001/07/12 15:53:44
|
version 1.106, 2001/08/07 16:54:14
|
Line 12
|
Line 12
|
# 6/2,6/3,6/8,6/9 Gerd Kortemeyer |
# 6/2,6/3,6/8,6/9 Gerd Kortemeyer |
# 6/12,6/13 H. K. Ng |
# 6/12,6/13 H. K. Ng |
# 6/16 Gerd Kortemeyer |
# 6/16 Gerd Kortemeyer |
|
# 7/27 H. K. Ng |
|
# 8/7 Gerd Kortemeyer |
|
|
package Apache::lonxml; |
package Apache::lonxml; |
use vars |
use vars |
qw(@pwd @outputstack $redirection $import @extlinks $metamode $evaluate %insertlist @namespace); |
qw(@pwd @outputstack $redirection $import @extlinks $metamode $evaluate %insertlist @namespace); |
use strict; |
use strict; |
use HTML::TokeParser; |
use HTML::TokeParser; |
|
use HTML::TreeBuilder; |
use Safe; |
use Safe; |
use Safe::Hole; |
use Safe::Hole; |
use Math::Cephes qw(:trigs :hypers :bessels erf erfc); |
use Math::Cephes qw(:trigs :hypers :bessels erf erfc); |
Line 92 sub xmlbegin {
|
Line 95 sub xmlbegin {
|
} |
} |
|
|
sub xmlend { |
sub xmlend { |
return '</html>'; |
my $discussion=''; |
|
if ($ENV{'request.course.id'}) { |
|
my $symb=&Apache::lonnet::symbread(); |
|
if ($symb) { |
|
my %contrib=&Apache::lonnet::restore($symb,$ENV{'request.course.id'}, |
|
$ENV{'course.'.$ENV{'request.course.id'}.'.domain'}, |
|
$ENV{'course.'.$ENV{'request.course.id'}.'.num'}); |
|
if ($contrib{'version'}) { |
|
$discussion.= |
|
'<address><hr /><h2>Course Discussion of Resource</h2>'; |
|
my $idx; |
|
for ($idx=1;$idx<=$contrib{'version'};$idx++) { |
|
my $message=$contrib{$idx.':message'}; |
|
$message=~s/\n/\<br \/\>/g; |
|
$discussion.='<p><b>'.$contrib{$idx.':sendername'}.' at '. |
|
$contrib{$idx.':senderdomain'}.'</b> ('. |
|
localtime($contrib{$idx.':timestamp'}). |
|
'):<blockquote>'.$message. |
|
'</blockquote></p>'; |
|
} |
|
$discussion.='</address>'; |
|
} |
|
} |
|
} |
|
return $discussion.'</html>'; |
} |
} |
|
|
sub fontsettings() { |
sub fontsettings() { |
Line 107 sub fontsettings() {
|
Line 134 sub fontsettings() {
|
sub registerurl { |
sub registerurl { |
my $forcereg=shift; |
my $forcereg=shift; |
if ($Apache::lonxml::registered) { return ''; } |
if ($Apache::lonxml::registered) { return ''; } |
|
$Apache::lonxml::registered=1; |
if (($ENV{'REQUEST_URI'}!~/^\/(res\/)*adm\//) || ($forcereg)) { |
if (($ENV{'REQUEST_URI'}!~/^\/(res\/)*adm\//) || ($forcereg)) { |
my $hwkadd=''; |
my $hwkadd=''; |
if ($ENV{'REQUEST_URI'}=~/\.(problem|exam|quiz|assess|survey|form)$/) { |
if ($ENV{'REQUEST_URI'}=~/\.(problem|exam|quiz|assess|survey|form)$/) { |
Line 255 sub xmlparse {
|
Line 283 sub xmlparse {
|
return $finaloutput; |
return $finaloutput; |
} |
} |
|
|
|
sub htmlclean { |
|
my $raw=shift; |
|
|
|
my $tree = HTML::TreeBuilder->new; |
|
$tree->ignore_unknown(0); |
|
|
|
$tree->parse($raw); |
|
my %emptyhash=(); |
|
|
|
my $output= $tree->as_HTML(undef,' ',\%emptyhash), "\n"; |
|
|
|
$output=~s/\<(br|hr|img)([^\>\/]*)\>/\<$1$2 \/\>/gis; |
|
$output=~s/\<\/(br|hr|img)\>//gis; |
|
$output=~s/\<[\/]*(body|head|html)\>//gis; |
|
|
|
$tree = $tree->delete; |
|
|
|
return $output; |
|
} |
|
|
sub inner_xmlparse { |
sub inner_xmlparse { |
my ($target,$stack,$parstack,$pars,$safeeval,$style_for_target)=@_; |
my ($target,$stack,$parstack,$pars,$safeeval,$style_for_target)=@_; |
&Apache::lonxml::debug('Reentrant parser starting, again?'); |
&Apache::lonxml::debug('Reentrant parser starting, again?'); |