Diff for /loncom/xml/lonxml.pm between versions 1.277 and 1.283

version 1.277, 2003/09/15 13:38:19 version 1.283, 2003/10/02 05:45:38
Line 105  use Apache::loncommon(); Line 105  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 160  $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 175  sub xmlbegin { Line 182  sub xmlbegin {
 }  }
   
 sub xmlend {  sub xmlend {
       my $mode='xml';
       my $status='OPEN';
       if ($Apache::lonhomework::parsing_a_problem) {
    $mode='problem';
    $status=$Apache::inputtags::status[-1]; 
       }
     return &Apache::lonfeedback::list_discussion().'</html>';      return &Apache::lonfeedback::list_discussion().'</html>';
 }  }
   
Line 346  sub xmlparse { Line 359  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 466  sub inner_xmlparse { Line 480  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 477  sub inner_xmlparse { Line 491  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 485  sub inner_xmlparse { Line 501  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 596  sub setup_globals { Line 612  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 786  sub decreasedepth { Line 804  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 849  sub store_counter { Line 867  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 883  sub get_all_text { Line 897  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 991  sub writeallows { Line 1005  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 1081  sub inserteditinfo { Line 1108  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 1143  sub handler { Line 1173  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;

Removed from v.1.277  
changed lines
  Added in v.1.283


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