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

version 1.106, 2001/08/07 16:54:14 version 1.109, 2001/08/10 15:49:46
Line 13 Line 13
 # 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  # 7/27 H. K. Ng
 # 8/7 Gerd Kortemeyer  # 8/7,8/9,8/10 Gerd Kortemeyer
   
 package Apache::lonxml;   package Apache::lonxml; 
 use vars   use vars 
Line 97  sub xmlbegin { Line 97  sub xmlbegin {
 sub xmlend {  sub xmlend {
     my $discussion='';      my $discussion='';
     if ($ENV{'request.course.id'}) {      if ($ENV{'request.course.id'}) {
          my $crs='/'.$ENV{'request.course.id'};
          if ($ENV{'request.course.sec'}) {
             $crs.='_'.$ENV{'request.course.sec'};
          }                 
          $crs=~s/\_/\//g;
          my $seeid=&Apache::lonnet::allowed('rin',$crs);
        my $symb=&Apache::lonnet::symbread();         my $symb=&Apache::lonnet::symbread();
        if ($symb) {         if ($symb) {
           my %contrib=&Apache::lonnet::restore($symb,$ENV{'request.course.id'},            my %contrib=&Apache::lonnet::restore($symb,$ENV{'request.course.id'},
Line 109  sub xmlend { Line 115  sub xmlend {
               for ($idx=1;$idx<=$contrib{'version'};$idx++) {                for ($idx=1;$idx<=$contrib{'version'};$idx++) {
                   my $message=$contrib{$idx.':message'};                    my $message=$contrib{$idx.':message'};
                   $message=~s/\n/\<br \/\>/g;                    $message=~s/\n/\<br \/\>/g;
   $discussion.='<p><b>'.$contrib{$idx.':sendername'}.' at '.                    my $sender='Anonymous';
       $contrib{$idx.':senderdomain'}.'</b> ('.                    if ((!$contrib{$idx.':anonymous'}) || ($seeid)) {
                         $sender=$contrib{$idx.':sendername'}.' at '.
         $contrib{$idx.':senderdomain'};
                         if ($contrib{$idx.':anonymous'}) {
     $sender.=' (anonymous)';
                         }                   
                     }
     $discussion.='<p><b>'.$sender.'</b> ('.
                       localtime($contrib{$idx.':timestamp'}).                        localtime($contrib{$idx.':timestamp'}).
                       '):<blockquote>'.$message.                        '):<blockquote>'.$message.
                       '</blockquote></p>';                         '</blockquote></p>'; 
Line 172  ENDPARM Line 185  ENDPARM
           menu.currentStale=0;            menu.currentStale=0;
           menu.clearbut(3,1);            menu.clearbut(3,1);
           menu.switchbutton            menu.switchbutton
          (6,3,'catalog.gif','catalog','info','catalog_info()');
             menu.switchbutton
        (8,1,'eval.gif','evaluate','this','gopost("/adm/evaluate",currentURL)');         (8,1,'eval.gif','evaluate','this','gopost("/adm/evaluate",currentURL)');
           menu.switchbutton            menu.switchbutton
     (8,2,'fdbk.gif','feedback','on this','gopost("/adm/feedback",currentURL)');      (8,2,'fdbk.gif','feedback','on this','gopost("/adm/feedback",currentURL)');
Line 200  ENDPARM Line 215  ENDPARM
           menu.clearbut(7,3);            menu.clearbut(7,3);
           menu.menucltim=menu.setTimeout(            menu.menucltim=menu.setTimeout(
  'clearbut(2,1);clearbut(2,3);clearbut(8,1);clearbut(8,2);clearbut(8,3);'+   'clearbut(2,1);clearbut(2,3);clearbut(8,1);clearbut(8,2);clearbut(8,3);'+
  'clearbut(9,1);clearbut(9,2);clearbut(9,3);',   'clearbut(9,1);clearbut(9,2);clearbut(9,3);clearbut(6,3)',
   2000);    2000);
   
       }        }
Line 284  sub xmlparse { Line 299  sub xmlparse {
 }  }
   
 sub htmlclean {  sub htmlclean {
     my $raw=shift;      my ($raw,$full)=@_;
   
     my $tree = HTML::TreeBuilder->new;      my $tree = HTML::TreeBuilder->new;
     $tree->ignore_unknown(0);      $tree->ignore_unknown(0);
           
     $tree->parse($raw);      $tree->parse($raw);
     my %emptyhash=();  
   
     my $output= $tree->as_HTML(undef,' ',\%emptyhash), "\n";      my $output= $tree->as_HTML(undef,' ');
             
     $output=~s/\<(br|hr|img)([^\>\/]*)\>/\<$1$2 \/\>/gis;      $output=~s/\<(br|hr|img)([^\>\/]*)\>/\<$1$2 \/\>/gis;
     $output=~s/\<\/(br|hr|img)\>//gis;      $output=~s/\<\/(br|hr|img)\>//gis;
     $output=~s/\<[\/]*(body|head|html)\>//gis;      unless ($full) {
          $output=~s/\<[\/]*(body|head|html)\>//gis;
       }
   
     $tree = $tree->delete;      $tree = $tree->delete;
   
Line 831  SIMPLECONTENT Line 847  SIMPLECONTENT
 <form method="post">  <form method="post">
 <textarea cols="80" rows="40" name="filecont">$filecontents</textarea>  <textarea cols="80" rows="40" name="filecont">$filecontents</textarea>
 <br />  <br />
 <input type="submit" name="savethisfile" value="Save this file" />  <input type="submit" name="attemptclean" 
          value="Save and then attempt to clean HTML" />
   <input type="submit" name="savethisfile" value="Save this" />
 </form>  </form>
 ENDFOOTER  ENDFOOTER
       $result=~s/(\<body[^\>]*\>)/$1$editheader/is;        $result=~s/(\<body[^\>]*\>)/$1$editheader/is;
Line 862  sub handler { Line 880  sub handler {
 # Edit action? Save file.  # Edit action? Save file.
 #  #
   unless ($ENV{'request.state'} eq 'published') {    unless ($ENV{'request.state'} eq 'published') {
       if ($ENV{'form.savethisfile'}) {        if (($ENV{'form.savethisfile'}) || ($ENV{'form.attemptclean'})) {
   &storefile($file,$ENV{'form.filecont'});    &storefile($file,$ENV{'form.filecont'});
       }        }
   }    }
Line 882  sub handler { Line 900  sub handler {
 ENDNOTFOUND  ENDNOTFOUND
     $filecontents='';      $filecontents='';
   } else {    } else {
         unless ($ENV{'request.state'} eq 'published') {
            if ($ENV{'form.attemptclean'}) {
       $filecontents=&htmlclean($filecontents,1);
            }
         }
     $result = &Apache::lonxml::xmlparse($target,$filecontents,'',%mystyle);      $result = &Apache::lonxml::xmlparse($target,$filecontents,'',%mystyle);
   }    }
   

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


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