Diff for /loncom/xml/lonxml.pm between versions 1.278 and 1.285

version 1.278, 2003/09/15 19:56:44 version 1.285, 2003/10/11 21:06:11
Line 96  use Apache::style(); Line 96  use Apache::style();
 use Apache::run();  use Apache::run();
 use Apache::londefdef();  use Apache::londefdef();
 use Apache::scripttag();  use Apache::scripttag();
   use Apache::languagetags();
 use Apache::edit();  use Apache::edit();
 use Apache::inputtags();  use Apache::inputtags();
 use Apache::outputtags();  use Apache::outputtags();
Line 105  use Apache::loncommon(); Line 106  use Apache::loncommon();
 use Apache::lonfeedback();  use Apache::lonfeedback();
 use Apache::lonmsg();  use Apache::lonmsg();
 use Apache::loncacc();  use Apache::loncacc();
   use Apache::lonlocal;
   
 #==================================================   Main subroutine: xmlparse    #==================================================   Main subroutine: xmlparse  
 #debugging control, to turn on debugging modify the correct handler  #debugging control, to turn on debugging modify the correct handler
Line 159  $Apache::lonxml::usestyle=1; Line 161  $Apache::lonxml::usestyle=1;
 $Apache::lonxml::style_values='';  $Apache::lonxml::style_values='';
 $Apache::lonxml::style_end_values='';  $Apache::lonxml::style_end_values='';
   
   #array of ssi calls that need to occur after we are done parsing
   @Apache::lonxml::ssi_info=();
   
   #should we do the postag variable interpolation
   $Apache::lonxml::post_evaluate=1;
   
 sub xmlbegin {  sub xmlbegin {
   my $output='';    my $output='';
   if ($ENV{'browser.mathml'}) {    if ($ENV{'browser.mathml'}) {
Line 273  sub printtokenheader { Line 281  sub printtokenheader {
         my %idhash=&Apache::lonnet::idrget($tudom,($tuname));          my %idhash=&Apache::lonnet::idrget($tudom,($tuname));
  return    return 
  '<img align="right" src="/cgi-bin/barcode.png?encode='.$token.'" />'.   '<img align="right" src="/cgi-bin/barcode.png?encode='.$token.'" />'.
                'Checked out for '.$plainname.                 &mt('Checked out for').' '.$plainname.
                '<br />User: '.$tuname.' at '.$tudom.                 '<br />'.&mt('User').': '.$tuname.' at '.$tudom.
        '<br />ID: '.$idhash{$tuname}.         '<br />'.&mt('ID').': '.$idhash{$tuname}.
        '<br />CourseID: '.$tcrsid.         '<br />'.&mt('CourseID').': '.$tcrsid.
        '<br />Course: '.$ENV{'course.'.$tcrsid.'.description'}.         '<br />'.&mt('Course').': '.$ENV{'course.'.$tcrsid.'.description'}.
                '<br />DocID: '.$token.                 '<br />'.&mt('DocID').': '.$token.
                '<br />Time: '.localtime().'<hr />';                 '<br />'.&mt('Time').': '.&Apache::lonlocal::locallocaltime().'<hr />';
     } else {      } else {
         return $token;          return $token;
     }      }
Line 352  sub xmlparse { Line 360  sub xmlparse {
  if ($ENV{'request.uri'}) {   if ($ENV{'request.uri'}) {
     &writeallows($ENV{'request.uri'});      &writeallows($ENV{'request.uri'});
  }   }
    &do_registered_ssi();
  if ($Apache::lonxml::counter_changed) { &store_counter() }   if ($Apache::lonxml::counter_changed) { &store_counter() }
  return $finaloutput;   return $finaloutput;
 }  }
Line 472  sub inner_xmlparse { Line 481  sub inner_xmlparse {
  &Apache::lonxml::error("Unknown token event :$token->[0]:$token->[1]:");   &Apache::lonxml::error("Unknown token event :$token->[0]:$token->[1]:");
       }        }
       #evaluate variable refs in result        #evaluate variable refs in result
       if ($result ne "") {        if ($Apache::lonxml::post_evaluate &&$result ne "") {
   my $extras;    my $extras;
   if (!$Apache::lonxml::usestyle) {    if (!$Apache::lonxml::usestyle) {
       $extras=$Apache::lonxml::style_values;        $extras=$Apache::lonxml::style_values;
Line 483  sub inner_xmlparse { Line 492  sub inner_xmlparse {
   $result= &Apache::run::evaluate($result,$safeeval,$extras);    $result= &Apache::run::evaluate($result,$safeeval,$extras);
  }   }
       }        }
         $Apache::lonxml::post_evaluate=1;
   
       if (($token->[0] eq 'T') || ($token->[0] eq 'C') || ($token->[0] eq 'D') ) {        if (($token->[0] eq 'T') || ($token->[0] eq 'C') || ($token->[0] eq 'D') ) {
   #Style file definitions should be correct    #Style file definitions should be correct
   if ($target eq 'tex' && ($Apache::lonxml::usestyle)) {    if ($target eq 'tex' && ($Apache::lonxml::usestyle)) {
Line 491  sub inner_xmlparse { Line 502  sub inner_xmlparse {
       }        }
   
       # Encode any high ASCII characters        # Encode any high ASCII characters
       if (!$Apache::lonxml::prevent_entity_encode) {  #      if (!$Apache::lonxml::prevent_entity_encode) {
  $result=&HTML::Entities::encode($result,"\200-\377");  # $result=&HTML::Entities::encode($result,"\200-\377");
       }  #      }
       if ($Apache::lonxml::redirection) {        if ($Apache::lonxml::redirection) {
  $Apache::lonxml::outputstack['-1'] .= $result;   $Apache::lonxml::outputstack['-1'] .= $result;
       } else {        } else {
Line 602  sub setup_globals { Line 613  sub setup_globals {
   &init_counter();    &init_counter();
   @Apache::lonxml::pwd=();    @Apache::lonxml::pwd=();
   @Apache::lonxml::extlinks=();    @Apache::lonxml::extlinks=();
     @Apache::lonxml::ssi_info=();
     $Apache::lonxml::post_evaluate=1;
   if ($target eq 'meta') {    if ($target eq 'meta') {
     $Apache::lonxml::redirection = 0;      $Apache::lonxml::redirection = 0;
     $Apache::lonxml::metamode = 1;      $Apache::lonxml::metamode = 1;
Line 792  sub decreasedepth { Line 805  sub decreasedepth {
     $Apache::lonxml::olddepth=$Apache::lonxml::depth+1;      $Apache::lonxml::olddepth=$Apache::lonxml::depth+1;
   }    }
   if (  $Apache::lonxml::depth < -1) {    if (  $Apache::lonxml::depth < -1) {
     &Apache::lonxml::warning("Missing tags, unable to properly run file.");      &Apache::lonxml::warning(&mt("Missing tags, unable to properly run file."));
     $Apache::lonxml::depth='-1';      $Apache::lonxml::depth='-1';
   }    }
   my $curdepth=join('_',@Apache::lonxml::depthcounter);    my $curdepth=join('_',@Apache::lonxml::depthcounter);
Line 855  sub store_counter { Line 868  sub store_counter {
   
 sub get_all_text {  sub get_all_text {
     my($tag,$pars,$style)= @_;      my($tag,$pars,$style)= @_;
     &Apache::lonxml::debug("Got a ".ref($pars));  
     my $gotfullstack=1;      my $gotfullstack=1;
     if (ref($pars) ne 'ARRAY') {      if (ref($pars) ne 'ARRAY') {
  $gotfullstack=0;   $gotfullstack=0;
  $pars=[$pars];   $pars=[$pars];
     }      }
     &Apache::lonxml::debug("Got a ".ref($style));  
     if (ref($style) ne 'HASH') {      if (ref($style) ne 'HASH') {
  $style={};   $style={};
     } else {  
  &Apache::lonhomework::showhash(%$style);  
     }      }
     my $depth=0;      my $depth=0;
     my $token;      my $token;
Line 889  sub get_all_text { Line 898  sub get_all_text {
  } elsif ($token->[0] eq 'E')  {   } elsif ($token->[0] eq 'E')  {
     if ( $token->[1] =~ /^$tag$/i) { $depth--; }      if ( $token->[1] =~ /^$tag$/i) { $depth--; }
     #skip sending back the last end tag      #skip sending back the last end tag
     if ($depth == 0 && exists($$style{'/'.$token->[1]})) {      if ($depth == 0 && exists($$style{'/'.$token->[1]}) && $Apache::lonxml::usestyle) {
  my $string=   my $string=
     '<LONCAPA_INTERNAL_TURN_STYLE_OFF end="yes" />'.      '<LONCAPA_INTERNAL_TURN_STYLE_OFF end="yes" />'.
  $$style{'/'.$token->[1]}.   $$style{'/'.$token->[1]}.
Line 997  sub writeallows { Line 1006  sub writeallows {
     &Apache::lonnet::appenv(%httpref);      &Apache::lonnet::appenv(%httpref);
 }  }
   
   sub register_ssi {
       my ($url,%form)=@_;
       push (@Apache::lonxml::ssi_info,{'url'=>$url,'form'=>\%form});
       return '';
   }
   
   sub do_registered_ssi {
       foreach my $info (@Apache::lonxml::ssi_info) {
    my %form=%{ $info->{'form'}};
    my $url=$info->{'url'};
    &Apache::lonnet::ssi($url,%form);
       }
   }
 #  #
 # Afterburner handles anchors, highlights and links  # Afterburner handles anchors, highlights and links
 #  #
Line 1087  sub inserteditinfo { Line 1109  sub inserteditinfo {
       }        }
       my $cleanbut = '';        my $cleanbut = '';
       if ($filetype eq 'html') {        if ($filetype eq 'html') {
   $cleanbut='<input type="submit" name="attemptclean"     $cleanbut='<input type="submit" name="attemptclean" value="'.
                        value="Save and then attempt to clean HTML" />';        &mt('Save and then attempt to clean HTML').'" />';
       }        }
       my $titledisplay=&display_title();        my $titledisplay=&display_title();
         my %lt=&Apache::lonlocal::texthash('st' => 'Save this',
    'vi' => 'View',
    'ed' => 'Edit');
       my $buttons=(<<BUTTONS);        my $buttons=(<<BUTTONS);
 $cleanbut  $cleanbut
 <input type="submit" name="savethisfile" value="Save this" />  <input type="submit" name="savethisfile" value="$lt{'st'}" />
 <input type="submit" name="viewmode" value="View" />  <input type="submit" name="viewmode" value="$lt{'vi'}" />
 BUTTONS  BUTTONS
       my $editfooter=(<<ENDFOOTER);        my $editfooter=(<<ENDFOOTER);
 <hr />  <hr />
 <a name="editsection" />  <a name="editsection" />
 <form method="post">  <form method="post">
 $xml_help  $xml_help
 <input type="hidden" name="editmode" value="Edit" />  <input type="hidden" name="editmode" value="$lt{'ed'}" />
 $buttons<br />  $buttons<br />
 <textarea cols="80" rows="40" name="filecont">$filecontents</textarea>  <textarea cols="80" rows="40" name="filecont">$filecontents</textarea>
 <br />$buttons  <br />$buttons
Line 1149  sub handler { Line 1174  sub handler {
     $Apache::lonxml::debug=$ENV{'user.debug'};      $Apache::lonxml::debug=$ENV{'user.debug'};
           
     if ($ENV{'browser.mathml'}) {      if ($ENV{'browser.mathml'}) {
  $request->content_type('text/xml');   &Apache::loncommon::content_type($request,'text/xml');
     } else {      } else {
  $request->content_type('text/html');   &Apache::loncommon::content_type($request,'text/html');
     }      }
     &Apache::loncommon::no_cache($request);      &Apache::loncommon::no_cache($request);
     $request->send_http_header;      $request->send_http_header;
Line 1172  sub handler { Line 1197  sub handler {
     unless ($ENV{'request.state'} eq 'published') {      unless ($ENV{'request.state'} eq 'published') {
  if (($ENV{'form.savethisfile'}) || ($ENV{'form.attemptclean'})) {   if (($ENV{'form.savethisfile'}) || ($ENV{'form.attemptclean'})) {
     if (&storefile($file,$ENV{'form.filecont'})) {      if (&storefile($file,$ENV{'form.filecont'})) {
  $request->print("<font COLOR=\"#0000FF\">Updated: ". strftime("%d %b %H:%M:%S",localtime())." </font>");   $request->print("<font COLOR=\"#0000FF\">".&mt('Updated').": ".
   &Apache::lonlocal::locallocaltime(time)." </font>");
     }       } 
  }   }
     }      }
Line 1180  sub handler { Line 1206  sub handler {
     my $result = '';      my $result = '';
     my $filecontents=&Apache::lonnet::getfile($file);      my $filecontents=&Apache::lonnet::getfile($file);
     if ($filecontents eq -1) {      if ($filecontents eq -1) {
    my $bodytag=&Apache::loncommon::bodytag('File Error');
    my $fnf=&mt('File not found');
  $result=(<<ENDNOTFOUND);   $result=(<<ENDNOTFOUND);
 <html>  <html>
 <head>  <head>
 <title>File not found</title>  <title>$fnf</title>
 </head>  </head>
 <body bgcolor="#FFFFFF">  $bodytag
 <b>File not found: $file</b>  <b>$fnf: $file</b>
 </body>  </body>
 </html>  </html>
 ENDNOTFOUND  ENDNOTFOUND

Removed from v.1.278  
changed lines
  Added in v.1.285


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