--- loncom/xml/lonxml.pm 2004/07/08 14:35:12 1.327
+++ loncom/xml/lonxml.pm 2004/10/18 19:50:43 1.332.2.2
@@ -1,7 +1,7 @@
# The LearningOnline Network with CAPA
# XML Parser Module
#
-# $Id: lonxml.pm,v 1.327 2004/07/08 14:35:12 sakharuk Exp $
+# $Id: lonxml.pm,v 1.332.2.2 2004/10/18 19:50:43 albertel Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -389,9 +389,10 @@ sub latex_special_symbols {
} else {
$string=~s/\\/\\ensuremath{\\backslash}/g;
$string=~s/([^\\]|^)\%/$1\\\%/g;
- $string=~s/\b_{2,}\b/ \\makebox\[1 cm\]\[b\]{\\hrulefill}/g;
- $string=~s/([^\\]|^)(\$|_)/$1\\$2/g;
+ $string=~s/([^\\]|^)\$/$1\\\$/g;
+ $string=~s/([^\\])\_/$1\\_/g;
$string=~s/\$\$/\$\\\$/g;
+ $string=~s/\_\_/\_\\\_/g;
$string=~s/\#\#/\#\\\#/g;
$string=~s/([^\\]|^)(\~|\^)/$1\\$2\\strut /g;
$string=~s/(>|<)/\\ensuremath\{$1\}/g; #more or less
@@ -399,6 +400,7 @@ sub latex_special_symbols {
# any & or # leftover should be safe to just escape
$string=~s/([^\\]|^)\&/$1\\\&/g;
$string=~s/([^\\]|^)\#/$1\\\#/g;
+ $string=~s/\|/\$\\mid\$/g;
#single { or } How to escape?
}
return $string;
@@ -745,6 +747,7 @@ sub init_safespace {
#need to inspect this class of ops
# $safeeval->deny(":base_orig");
+ $safeeval->permit("require");
$safeinit .= ';$external::target="'.$target.'";';
my $rndseed;
my ($symb,$courseid,$domain,$name) = &Apache::lonxml::whichuser();
@@ -753,27 +756,6 @@ sub init_safespace {
&Apache::lonxml::debug("Setting rndseed to $rndseed");
&Apache::run::run($safeinit,$safeeval);
- my $subroutine=<<'EVALUATESUB';
-sub __LC_INTERNAL_EVALUATE__ {
- my ($__LC__a,$__LC__b,$__LC__c)=@_;
- my $__LC__prefix;
- while(1){
- {
- use strict;
- no strict "vars";
- if (eval(defined(eval($__LC__a.$__LC__b)))) {
- return $__LC__prefix.eval($__LC__a.$__LC__b.$__LC__c);
- }
- }
- $__LC__prefix.=substr($__LC__a,0,1,"");
- if ($__LC__a!~/^(\$|&|\#)/) { last; }
- }
- return $__LC__prefix.$__LC__a.$__LC__b.$__LC__c;
-}
-EVALUATESUB
- $safeeval->permit("require");
- $safeeval->reval($subroutine);
- $safeeval->deny("require");
}
sub default_homework_load {
@@ -788,18 +770,26 @@ sub default_homework_load {
}
}
+my $metamode_was;
sub startredirection {
- $Apache::lonxml::redirection++;
- push (@Apache::lonxml::outputstack, '');
+ if (!$Apache::lonxml::redirection) {
+ $metamode_was=$Apache::lonxml::metamode;
+ }
+ $Apache::lonxml::metamode=0;
+ $Apache::lonxml::redirection++;
+ push (@Apache::lonxml::outputstack, '');
}
sub endredirection {
- if (!$Apache::lonxml::redirection) {
- &Apache::lonxml::error("Endredirection was called, before a startredirection, perhaps you have unbalanced tags. Some debuging information:".join ":",caller);
- return '';
- }
- $Apache::lonxml::redirection--;
- pop @Apache::lonxml::outputstack;
+ if (!$Apache::lonxml::redirection) {
+ &Apache::lonxml::error("Endredirection was called, before a startredirection, perhaps you have unbalanced tags. Some debuging information:".join ":",caller);
+ return '';
+ }
+ $Apache::lonxml::redirection--;
+ if (!$Apache::lonxml::redirection) {
+ $Apache::lonxml::metamode=$metamode_was;
+ }
+ pop @Apache::lonxml::outputstack;
}
sub end_tag {
@@ -1167,6 +1157,7 @@ $cleanbut
BUTTONS
+ $buttons.=&Apache::lonhtmlcommon::htmlareaselectactive('filecont');
my $editfooter=(<
@@ -1538,6 +1529,12 @@ sub whichuser {
if (defined($ENV{'form.grade_symb'})) {
my $tmp_courseid=$ENV{'form.grade_courseid'};
my $allowed=&Apache::lonnet::allowed('vgr',$tmp_courseid);
+ if (!$allowed &&
+ exists($ENV{'request.course.sec'}) &&
+ $ENV{'request.course.sec'} !~ /^\s*$/) {
+ $allowed=&Apache::lonnet::allowed('vgr',$ENV{'form.grade_courseid'}.
+ '/'.$ENV{'request.course.sec'});
+ }
if ($allowed) {
$symb=$ENV{'form.grade_symb'};
$courseid=$ENV{'form.grade_courseid'};