--- loncom/xml/lonxml.pm 2003/11/06 19:24:11 1.291 +++ loncom/xml/lonxml.pm 2003/11/21 20:21:20 1.295 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA # XML Parser Module # -# $Id: lonxml.pm,v 1.291 2003/11/06 19:24:11 sakharuk Exp $ +# $Id: lonxml.pm,v 1.295 2003/11/21 20:21:20 albertel Exp $ # # Copyright Michigan State University Board of Trustees # @@ -167,6 +167,9 @@ $Apache::lonxml::style_end_values=''; #should we do the postag variable interpolation $Apache::lonxml::post_evaluate=1; +#a header message to emit in the case of any generated warning or errors +$Apache::lonxml::warnings_error_header=''; + sub xmlbegin { my $output=''; if ($ENV{'browser.mathml'}) { @@ -337,8 +340,8 @@ sub xmlparse { &Apache::style::styleparser($target,$styletext)); } } - } elsif ($ENV{'construction_space_style'} && ($ENV{'request.state'} eq 'construct')) { - my $location=&Apache::lonnet::filelocation('',$ENV{'construction_space_style'}); + } elsif ($ENV{'construct.style'} && ($ENV{'request.state'} eq 'construct')) { + my $location=&Apache::lonnet::filelocation('',$ENV{'construct.style'}); my $styletext=&Apache::lonnet::getfile($location); if ($styletext ne '-1') { %style_for_target = (%style_for_target, @@ -404,7 +407,9 @@ sub latex_special_symbols { $string=~s/\\ /\\char92 /g; $string=~s/\^/\\\^ /g; $string=~s/\~/\\char126 /g; - $string=~s/(&[^A-Za-z\#])/\\$1/g; + #fixup & if it doesn't look like + # { or α + $string=~s/(&(?!((\#[0-9]+)|([a-z]+));))/\\$1/gi; $string=~s/([^&])\#/$1\\#/g; $string=~s/(\$|_|{|})/\\$1/g; $string=~s/\\char92 /\\texttt{\\char92}/g; @@ -623,6 +628,7 @@ sub setup_globals { @Apache::lonxml::extlinks=(); @Apache::lonxml::ssi_info=(); $Apache::lonxml::post_evaluate=1; + $Apache::lonxml::warnings_error_header=''; if ($target eq 'meta') { $Apache::lonxml::redirection = 0; $Apache::lonxml::metamode = 1; @@ -992,6 +998,7 @@ sub parstring { my $val=$token->[2]->{$_}; $val =~ s/([\%\@\\\"\'])/\\$1/g; #if ($val =~ m/^[\%\@]/) { $val="\\".$val; } + if ($val !~ m/^\s*\$[a-z_]/i) { $val =~ s/\$/\\\$/g; } $temp .= "my \$$_=\"$val\";"; } } @@ -1298,7 +1305,9 @@ sub error { $errorcount++; if (($Apache::lonxml::debug eq 1) || ($ENV{'request.state'} eq 'construct') ) { # If printing in construction space, put the error inside
- print "ERROR:".join("\n",@_)."\n"; + print $Apache::lonxml::warnings_error_header. + "ERROR:".join("\n",@_)."\n"; + $Apache::lonxml::warnings_error_header=''; } else { print "An Error occured while processing this resource. The instructor has been notified.