Diff for /loncom/xml/lonxml.pm between versions 1.101 and 1.106

version 1.101, 2001/07/12 15:26:03 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?');
Line 513  sub init_safespace { Line 561  sub init_safespace {
   $safeeval->permit(":base_math");    $safeeval->permit(":base_math");
   $safeeval->permit("sort");    $safeeval->permit("sort");
   $safeeval->deny(":base_io");    $safeeval->deny(":base_io");
     $safehole->wrap(\&Apache::scripttag::xmlparse,$safeeval,'&xmlparse');
   $safehole->wrap(\&Apache::lonnet::EXT,$safeeval,'&EXT');    $safehole->wrap(\&Apache::lonnet::EXT,$safeeval,'&EXT');
       
   $safehole->wrap(\&Math::Cephes::asin,$safeeval,'&asin');    $safehole->wrap(\&Math::Cephes::asin,$safeeval,'&asin');

Removed from v.1.101  
changed lines
  Added in v.1.106


FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>