--- loncom/xml/lonxml.pm 2000/10/11 13:07:49 1.25
+++ loncom/xml/lonxml.pm 2000/11/06 14:32:35 1.32
@@ -29,10 +29,16 @@ use Apache::scripttag;
@Apache::lonxml::pwd=();
$Apache::lonxml::outputstack = '';
$Apache::lonxml::redirection = 1;
+$Apache::lonxml::textredirection = 1;
+$Apache::lonxml::on_offimport = 0;
sub xmlparse {
my ($target,$content_file_string,$safeinit,%style_for_target) = @_;
+ if ($target eq 'meta')
+ {$Apache::lonxml::textredirection = 0;
+ $Apache::lonxml::on_offimport = 1;
+ }
my @pars = ();
@Apache::lonxml::pwd=();
my $pwd=$ENV{'request.filename'};
@@ -50,6 +56,7 @@ sub xmlparse {
#need to inspect this class of ops
# $safeeval->deny(":base_orig");
$safeinit .= ';$external::target='.$target.';';
+ $safeinit .= ';$external::randomseed='.&Apache::lonnet::rndseed().';';
&Apache::run::run($safeinit,$safeeval);
#-------------------- Redefinition of the target in the case of compound target
@@ -62,9 +69,10 @@ sub xmlparse {
while ( $#pars > -1 ) {
while ($token = $pars[$#pars]->get_token) {
if ($token->[0] eq 'T') {
- $result=$token->[1];
+ if ($Apache::lonxml::textredirection == 1) {$result=$token->[1];}
# $finaloutput .= &Apache::run::evaluate($token->[1],$safeeval,'');
} elsif ($token->[0] eq 'S') {
+# if ($target eq 'meta' and $token->[2]->{metaout} eq 'ON') {$Apache::lonxml::textredirection = 1;}
# add tag to stack
push (@stack,$token->[1]);
# add parameters list to another stack
@@ -87,6 +95,7 @@ sub xmlparse {
\@pars, $safeeval, \%style_for_target);
}
} elsif ($token->[0] eq 'E') {
+# if ($target eq 'meta') {$Apache::lonxml::textredirection = 0;}
#clear out any tags that didn't end
while ($token->[1] ne $stack[$#stack]
&& ($#stack > -1)) {pop @stack;pop @parstack;&decreasedepth($token);}
@@ -149,7 +158,7 @@ sub recurse {
while ( $#pat > -1 ) {
while ($tokenpat = $pat[$#pat]->get_token) {
if ($tokenpat->[0] eq 'T') {
- $partstring = $tokenpat->[1];
+ if ($Apache::lonxml::textredirection == 1) {$partstring = $tokenpat->[1];}
} elsif ($tokenpat->[0] eq 'S') {
push (@innerstack,$tokenpat->[1]);
push (@innerparstack,&parstring($tokenpat));
@@ -201,17 +210,11 @@ sub callsub {
my $sub1;
no strict 'refs';
if (my $space=$Apache::lonxml::alltags{$token->[1]}) {
-# &Apache::lonxml::debug("Calling sub $sub in $space
\n");
-# if ( $sub eq "start_parserlib" ) {
-# print "me:".%$style.":\n";
-# }
+ #&Apache::lonxml::debug("Calling sub $sub in $space
\n");
$sub1="$space\:\:$sub";
$Apache::lonxml::curdepth=join('_',@Apache::lonxml::depthcounter);
$currentstring = &$sub1($target,$token,$parstack,$parser,
$safeeval,$style);
-# if ( $sub eq "start_parserlib" ) {
-# print "me2:".%$style.":";
-# }
} else {
#&Apache::lonxml::debug("NOT Calling sub $sub in $space
\n");
if (defined($token->[4])) {
@@ -296,32 +299,18 @@ sub parstring {
} @{$token->[3]};
return $temp;
}
-#<<<<<<< lonxml.pm
sub handler {
my $request=shift;
my $target='web';
$Apache::lonxml::debug=1;
- $request->content_type('text/html');
-# $request->send_http_header;
if ($ENV{'browser.mathml'}) {
- $request->print( ''
- .''
- .']>'
- .''
- .'