--- loncom/xml/lonxml.pm 2003/09/19 20:29:29 1.279
+++ loncom/xml/lonxml.pm 2003/10/02 05:45:38 1.283
@@ -1,7 +1,7 @@
# The LearningOnline Network with CAPA
# XML Parser Module
#
-# $Id: lonxml.pm,v 1.279 2003/09/19 20:29:29 albertel Exp $
+# $Id: lonxml.pm,v 1.283 2003/10/02 05:45:38 albertel Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -105,6 +105,7 @@ use Apache::loncommon();
use Apache::lonfeedback();
use Apache::lonmsg();
use Apache::loncacc();
+use Apache::lonlocal;
#================================================== Main subroutine: xmlparse
#debugging control, to turn on debugging modify the correct handler
@@ -159,6 +160,12 @@ $Apache::lonxml::usestyle=1;
$Apache::lonxml::style_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 {
my $output='';
if ($ENV{'browser.mathml'}) {
@@ -352,6 +359,7 @@ sub xmlparse {
if ($ENV{'request.uri'}) {
&writeallows($ENV{'request.uri'});
}
+ &do_registered_ssi();
if ($Apache::lonxml::counter_changed) { &store_counter() }
return $finaloutput;
}
@@ -472,7 +480,7 @@ sub inner_xmlparse {
&Apache::lonxml::error("Unknown token event :$token->[0]:$token->[1]:");
}
#evaluate variable refs in result
- if ($result ne "") {
+ if ($Apache::lonxml::post_evaluate &&$result ne "") {
my $extras;
if (!$Apache::lonxml::usestyle) {
$extras=$Apache::lonxml::style_values;
@@ -483,6 +491,8 @@ sub inner_xmlparse {
$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') ) {
#Style file definitions should be correct
if ($target eq 'tex' && ($Apache::lonxml::usestyle)) {
@@ -602,6 +612,8 @@ sub setup_globals {
&init_counter();
@Apache::lonxml::pwd=();
@Apache::lonxml::extlinks=();
+ @Apache::lonxml::ssi_info=();
+ $Apache::lonxml::post_evaluate=1;
if ($target eq 'meta') {
$Apache::lonxml::redirection = 0;
$Apache::lonxml::metamode = 1;
@@ -792,7 +804,7 @@ sub decreasedepth {
$Apache::lonxml::olddepth=$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';
}
my $curdepth=join('_',@Apache::lonxml::depthcounter);
@@ -855,17 +867,13 @@ sub store_counter {
sub get_all_text {
my($tag,$pars,$style)= @_;
- &Apache::lonxml::debug("Got a ".ref($pars));
my $gotfullstack=1;
if (ref($pars) ne 'ARRAY') {
$gotfullstack=0;
$pars=[$pars];
}
- &Apache::lonxml::debug("Got a ".ref($style));
if (ref($style) ne 'HASH') {
$style={};
- } else {
- &Apache::lonhomework::showhash(%$style);
}
my $depth=0;
my $token;
@@ -889,7 +897,7 @@ sub get_all_text {
} elsif ($token->[0] eq 'E') {
if ( $token->[1] =~ /^$tag$/i) { $depth--; }
#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=
'