--- loncom/xml/lonxml.pm 2006/04/20 02:58:14 1.411
+++ loncom/xml/lonxml.pm 2006/12/28 03:00:24 1.430.2.1
@@ -1,7 +1,7 @@
# The LearningOnline Network with CAPA
# XML Parser Module
#
-# $Id: lonxml.pm,v 1.411 2006/04/20 02:58:14 albertel Exp $
+# $Id: lonxml.pm,v 1.430.2.1 2006/12/28 03:00:24 albertel Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -251,7 +251,7 @@ sub printtokenheader {
my ($target,$token,$tsymb,$tcrsid,$tudom,$tuname)=@_;
unless ($token) { return ''; }
- my ($symb,$courseid,$domain,$name) = &Apache::lonxml::whichuser();
+ my ($symb,$courseid,$domain,$name) = &Apache::lonnet::whichuser();
unless ($tsymb) {
$tsymb=$symb;
}
@@ -342,6 +342,11 @@ sub xmlparse {
my $finaloutput = &inner_xmlparse($target,\@stack,\@parstack,\@pars,
$safeeval,\%style_for_target,1);
+ if (@stack) {
+ &warning("At end of file some tags were still left unclosed, ".
+ '<'.join('>, <',reverse(@stack)).
+ '>');
+ }
if ($env{'request.uri'}) {
&writeallows($env{'request.uri'});
}
@@ -366,13 +371,14 @@ sub latex_special_symbols {
return $string;
}
if ($where eq 'header') {
- $string =~ s/(\\|_|\^)/ /g;
+ $string =~ s/\\/\$\\backslash\$/g; # \ -> $\backslash$ per LaTex line by line pg 10.
$string =~ s/(\$|%|\{|\})/\\$1/g;
- $string =~ s/_/ /g;
$string=&Apache::lonprintout::character_chart($string);
# any & or # leftover should be safe to just escape
$string=~s/([^\\])\&/$1\\\&/g;
$string=~s/([^\\])\#/$1\\\#/g;
+ $string =~ s/_/\\_/g; # _ -> \_
+ $string =~ s/\^/\\\^{}/g; # ^ -> \^{}
} else {
$string=~s/\\/\\ensuremath{\\backslash}/g;
$string=~s/\\\%|\%/\\\%/g;
@@ -771,8 +777,11 @@ sub init_safespace {
$safehole->wrap(\&Math::Random::random_set_seed,$safeeval,'&random_set_seed');
$safehole->wrap(\&Apache::lonxml::error,$safeeval,'&LONCAPA_INTERNAL_ERROR');
$safehole->wrap(\&Apache::lonxml::debug,$safeeval,'&LONCAPA_INTERNAL_DEBUG');
+ $safehole->wrap(\&Apache::lonnet::logthis,$safeeval,'&LONCAPA_INTERNAL_LOGTHIS');
+ $safehole->wrap(\&Apache::inputtags::finalizeawards,$safeeval,'&LONCAPA_INTERNAL_FINALIZEAWARDS');
$safehole->wrap(\&Apache::caparesponse::get_sigrange,$safeeval,'&LONCAPA_INTERNAL_get_sigrange');
-
+# use Data::Dumper;
+# $safehole->wrap(\&Data::Dumper::Dumper,$safeeval,'&LONCAPA_INTERNAL_Dumper');
#need to inspect this class of ops
# $safeeval->deny(":base_orig");
$safeeval->permit("require");
@@ -812,7 +821,7 @@ sub delete_package_recurse {
sub initialize_rndseed {
my ($safeeval)=@_;
my $rndseed;
- my ($symb,$courseid,$domain,$name) = &Apache::lonxml::whichuser();
+ my ($symb,$courseid,$domain,$name) = &Apache::lonnet::whichuser();
$rndseed=&Apache::lonnet::rndseed($symb,$courseid,$domain,$name);
my $safeinit = '$external::randomseed="'.$rndseed.'";';
&Apache::lonxml::debug("Setting rndseed to $rndseed");
@@ -1013,7 +1022,7 @@ sub store_counter {
}
sub remember_problem_counter {
- &Apache::lonnet::transfer_profile_to_env();
+ &Apache::lonnet::transfer_profile_to_env(undef,undef,1);
$state = $env{'form.counter'};
}
@@ -1024,7 +1033,7 @@ sub store_counter {
}
sub get_problem_counter {
if ($Apache::lonxml::counter_changed) { &store_counter() }
- &Apache::lonnet::transfer_profile_to_env();
+ &Apache::lonnet::transfer_profile_to_env(undef,undef,1);
return $env{'form.counter'};
}
}
@@ -1148,19 +1157,23 @@ sub newparser {
}
sub parstring {
- my ($token) = @_;
- my $temp='';
- foreach (@{$token->[3]}) {
- unless ($_=~/\W/) {
- my $val=$token->[2]->{$_};
- $val =~ s/([\%\@\\\"\'])/\\$1/g;
- $val =~ s/(\$[^{a-zA-Z_])/\\$1/g;
- $val =~ s/(\$)$/\\$1/;
- #if ($val =~ m/^[\%\@]/) { $val="\\".$val; }
- $temp .= "my \$$_=\"$val\";";
- }
- }
- return $temp;
+ my ($token) = @_;
+ my (@vars,@values);
+ foreach my $attr (@{$token->[3]}) {
+ if ($attr!~/\W/) {
+ my $val=$token->[2]->{$attr};
+ $val =~ s/([\%\@\\\"\'])/\\$1/g;
+ $val =~ s/(\$[^\{a-zA-Z_])/\\$1/g;
+ $val =~ s/(\$)$/\\$1/;
+ #if ($val =~ m/^[\%\@]/) { $val="\\".$val; }
+ push(@vars,"\$$attr");
+ push(@values,"\"$val\"");
+ }
+ }
+ my $var_init =
+ (@vars) ? 'my ('.join(',',@vars).') = ('.join(',',@values).');'
+ : '';
+ return $var_init;
}
sub extlink {
@@ -1319,16 +1332,19 @@ FULLPAGE
my $cleanbut = '';
my $titledisplay=&display_title();
- my %lt=&Apache::lonlocal::texthash('st' => 'Save this',
- 'vi' => 'View',
+ my %lt=&Apache::lonlocal::texthash('st' => 'Save and Edit',
+ 'vi' => 'Save and View',
+ 'dv' => 'Discard Edits and View',
+ 'un' => 'undo',
'ed' => 'Edit');
my $buttons=(<