Diff for /loncom/xml/lonxml.pm between versions 1.348 and 1.356

version 1.348, 2004/11/30 22:57:16 version 1.356, 2005/02/17 08:34:56
Line 149  $Apache::lonxml::post_evaluate=1; Line 149  $Apache::lonxml::post_evaluate=1;
 $Apache::lonxml::warnings_error_header='';  $Apache::lonxml::warnings_error_header='';
   
 sub xmlbegin {  sub xmlbegin {
   my $output='';      my ($style)=@_;
   @htmlareafields=();      my $output='';
   if ($ENV{'browser.mathml'}) {      @htmlareafields=();
       $output='<?xml version="1.0"?>'      if ($ENV{'browser.mathml'}) {
    $output='<?xml version="1.0"?>'
             .'<?xml-stylesheet type="text/css" href="/adm/MathML/mathml.css"?>'              .'<?xml-stylesheet type="text/css" href="/adm/MathML/mathml.css"?>'
             .'<!DOCTYPE html SYSTEM "/adm/MathML/mathml.dtd" '              .'<!DOCTYPE html SYSTEM "/adm/MathML/mathml.dtd" '
             .'[<!ENTITY mathns "http://www.w3.org/1998/Math/MathML">]>'              .'[<!ENTITY mathns "http://www.w3.org/1998/Math/MathML">]>'
             .'<html xmlns:math="http://www.w3.org/1998/Math/MathML" '               .'<html xmlns:math="http://www.w3.org/1998/Math/MathML" ' 
  .'xmlns="http://www.w3.org/TR/REC-html40">';      .'xmlns="http://www.w3.org/TR/REC-html40">';
   } else {      } else {
       $output='<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">   $output='<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html>';
 <html>';      }
   }      if ($style eq 'encode') {
   return $output;   $output=&HTML::Entities::encode($output,'<>&"');
       }
       return $output;
 }  }
   
 sub xmlend {  sub xmlend {
Line 284  sub printtokenheader { Line 287  sub printtokenheader {
     }      }
 }  }
   
 sub fontsettings() {  sub fontsettings {
     my $headerstring='';      my $headerstring='';
     if (($ENV{'browser.os'} eq 'mac') && (!$ENV{'browser.mathml'})) {       if (($ENV{'browser.os'} eq 'mac') && (!$ENV{'browser.mathml'})) { 
  $headerstring.=   $headerstring.=
Line 368  sub xmlparse { Line 371  sub xmlparse {
   
 sub htmlclean {  sub htmlclean {
     my ($raw,$full)=@_;      my ($raw,$full)=@_;
   # Take care of CRLF etc
   
     my $tree = HTML::TreeBuilder->new;      $raw=~s/\r\f/\n/gs; $raw=~s/\f\r/\n/gs;
     $tree->ignore_unknown(0);      $raw=~s/\r\n/\n/gs; $raw=~s/\n\r/\n/gs;
       $raw=~s/\f/\n/gs; $raw=~s/\r/\n/gs;
     $tree->parse($raw);      $raw=~s/\&\#10\;/\n/gs; $raw=~s/\&\#13\;/\n/gs;
   
     my $output= $tree->as_HTML(undef,' ');  # Generate empty tags, remove wrong end tags
       $raw=~s/\<(br|hr|img|meta|allow|basefont)([^\>\/]*?)\>/\<$1$2 \/\>/gis;
     $output=~s/\<(br|hr|img|meta|allow)(.*?)\>/\<$1$2 \/\>/gis;      $raw=~s/\<\/(br|hr|img|meta|allow|basefont)\>//gis;
     $output=~s/\<\/(br|hr|img|meta|allow)\>//gis;  
     unless ($full) {      unless ($full) {
        $output=~s/\<[\/]*(body|head|html)\>//gis;         $raw=~s/\<[\/]*(body|head|html)\>//gis;
     }      }
   # Make standard tags lowercase
     $tree = $tree->delete;      foreach ('html','body','head','meta','h1','h2','h3','h4','b','i','m',
                'table','tr','td','th','p','br','hr','img','embed','font',
     return $output;               'a','strong','center','title','basefont','li','ol','ul',
                'input','select','form','option','script','pre') {
    $raw=~s/\<$_\s*\>/\<$_\>/gis;
           $raw=~s/\<\/$_\s*\>/<\/$_\>/gis;
           $raw=~s/\<$_\s([^\>]*)\>/<$_ $1\>/gis;
       }
       return $raw;
 }  }
   
 sub latex_special_symbols {  sub latex_special_symbols {
Line 1261  sub handler { Line 1270  sub handler {
  &Apache::loncommon::content_type($request,'text/html');   &Apache::loncommon::content_type($request,'text/html');
     }      }
     &Apache::loncommon::no_cache($request);      &Apache::loncommon::no_cache($request);
       $request->set_last_modified(&Apache::lonnet::metadata($request->uri,
     'lastrevisiondate'));
     $request->send_http_header;      $request->send_http_header;
           
     return OK if $request->header_only;      return OK if $request->header_only;
Line 1338  ENDNOTFOUND Line 1349  ENDNOTFOUND
  if ($ENV{'form.editmode'} && (!($ENV{'form.viewmode'}))) {   if ($ENV{'form.editmode'} && (!($ENV{'form.viewmode'}))) {
     my $displayfile=$request->uri;      my $displayfile=$request->uri;
     $displayfile=~s/^\/[^\/]*//;      $displayfile=~s/^\/[^\/]*//;
     $result='<html><body bgcolor="#FFFFFF">'.      my $bodytag='<body bgcolor="#FFFFFF">';
       if ($ENV{'environment.remote'} eq 'off') {
    $bodytag=&Apache::loncommon::bodytag();
       }
       $result='<html>'.$bodytag.
  &Apache::lonxml::message_location().'<h3>'.   &Apache::lonxml::message_location().'<h3>'.
  $displayfile.   $displayfile.
  '</h3></body></html>';   '</h3></body></html>';
Line 1378  sub debug { Line 1393  sub debug {
 }  }
   
 sub show_error_warn_msg {  sub show_error_warn_msg {
       if ($ENV{'request.filename'} eq '/home/httpd/html/res/lib/templates/simpleproblem.problem' &&
    &Apache::lonnet::allowed('mdc',$ENV{'request.course.id'})) {
    return 1;
       }
     return (($Apache::lonxml::debug eq 1) ||      return (($Apache::lonxml::debug eq 1) ||
     ($ENV{'request.state'} eq 'construct') ||      ($ENV{'request.state'} eq 'construct') ||
     ($Apache::lonhomework::browse eq 'F'      ($Apache::lonhomework::browse eq 'F'
Line 1592  sub whichuser { Line 1611  sub whichuser {
   my ($passedsymb)=@_;    my ($passedsymb)=@_;
   my ($symb,$courseid,$domain,$name,$publicuser);    my ($symb,$courseid,$domain,$name,$publicuser);
   if (defined($ENV{'form.grade_symb'})) {    if (defined($ENV{'form.grade_symb'})) {
     my $tmp_courseid=$ENV{'form.grade_courseid'};        my ($tmp_courseid)=
     my $allowed=&Apache::lonnet::allowed('vgr',$tmp_courseid);    &Apache::loncommon::get_env_multiple('form.grade_courseid');
     if (!$allowed &&         my $allowed=&Apache::lonnet::allowed('vgr',$tmp_courseid);
  exists($ENV{'request.course.sec'}) &&         if (!$allowed && 
  $ENV{'request.course.sec'} !~ /^\s*$/) {    exists($ENV{'request.course.sec'}) && 
  $allowed=&Apache::lonnet::allowed('vgr',$ENV{'form.grade_courseid'}.    $ENV{'request.course.sec'} !~ /^\s*$/) {
   '/'.$ENV{'request.course.sec'});    $allowed=&Apache::lonnet::allowed('vgr',$tmp_courseid.
     }      '/'.$ENV{'request.course.sec'});
     if ($allowed) {  
       $symb=$ENV{'form.grade_symb'};  
       $courseid=$ENV{'form.grade_courseid'};  
       $domain=$ENV{'form.grade_domain'};  
       $name=$ENV{'form.grade_username'};  
     }  
   } else {  
       if (!$passedsymb) {  
           $symb=&Apache::lonnet::symbread();  
       } else {  
           $symb=$passedsymb;  
       }        }
       $courseid=$ENV{'request.course.id'};        if ($allowed) {
       $domain=$ENV{'user.domain'};    ($symb)=&Apache::loncommon::get_env_multiple('form.grade_symb');
       $name=$ENV{'user.name'};    $courseid=$tmp_courseid;
       if ($name eq 'public' && $domain eq 'public') {    ($domain)=&Apache::loncommon::get_env_multiple('form.grade_domain');
   if (!defined($ENV{'form.username'})) {    ($name)=&Apache::loncommon::get_env_multiple('form.grade_username');
       $ENV{'form.username'}.=time.rand(10000000);    return ($symb,$courseid,$domain,$name,$publicuser);
   }        }
   $name.=$ENV{'form.username'};    }
     if (!$passedsymb) {
         $symb=&Apache::lonnet::symbread();
     } else {
         $symb=$passedsymb;
     }
     $courseid=$ENV{'request.course.id'};
     $domain=$ENV{'user.domain'};
     $name=$ENV{'user.name'};
     if ($name eq 'public' && $domain eq 'public') {
         if (!defined($ENV{'form.username'})) {
     $ENV{'form.username'}.=time.rand(10000000);
       }        }
         $name.=$ENV{'form.username'};
   }    }
   return ($symb,$courseid,$domain,$name,$publicuser);    return ($symb,$courseid,$domain,$name,$publicuser);
 }  }

Removed from v.1.348  
changed lines
  Added in v.1.356


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