--- loncom/xml/lonxml.pm 2003/09/19 20:29:29 1.279
+++ loncom/xml/lonxml.pm 2003/10/04 20:49:40 1.284
@@ -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.284 2003/10/04 20:49:40 www 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'}) {
@@ -273,13 +280,13 @@ sub printtokenheader {
my %idhash=&Apache::lonnet::idrget($tudom,($tuname));
return
''.
- 'Checked out for '.$plainname.
- '
User: '.$tuname.' at '.$tudom.
- '
ID: '.$idhash{$tuname}.
- '
CourseID: '.$tcrsid.
- '
Course: '.$ENV{'course.'.$tcrsid.'.description'}.
- '
DocID: '.$token.
- '
Time: '.localtime().'
';
+ &mt('Checked out for').' '.$plainname.
+ '
'.&mt('User').': '.$tuname.' at '.$tudom.
+ '
'.&mt('ID').': '.$idhash{$tuname}.
+ '
'.&mt('CourseID').': '.$tcrsid.
+ '
'.&mt('Course').': '.$ENV{'course.'.$tcrsid.'.description'}.
+ '
'.&mt('DocID').': '.$token.
+ '
'.&mt('Time').': '.&Apache::lonlocal::locallocaltime().'
';
} else {
return $token;
}
@@ -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=
''.
$$style{'/'.$token->[1]}.
@@ -997,6 +1005,19 @@ sub writeallows {
&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
#
@@ -1087,21 +1108,24 @@ sub inserteditinfo {
}
my $cleanbut = '';
if ($filetype eq 'html') {
- $cleanbut='';
+ $cleanbut='';
}
my $titledisplay=&display_title();
+ my %lt=&Apache::lonlocal::texthash('st' => 'Save this',
+ 'vi' => 'View',
+ 'ed' => 'Edit');
my $buttons=(<
-
+
+
BUTTONS
my $editfooter=(<