version 1.305, 2004/03/02 21:31:22
|
version 1.314, 2004/03/30 07:16:24
|
Line 401 sub latex_special_symbols {
|
Line 401 sub latex_special_symbols {
|
my ($string,$where)=@_; |
my ($string,$where)=@_; |
if ($where eq 'header') { |
if ($where eq 'header') { |
$string =~ s/(\\|_|\^)/ /g; |
$string =~ s/(\\|_|\^)/ /g; |
$string =~ s/(\$|%|\#|&|\{|\})/\\$1/g; |
$string =~ s/(\$|%|\{|\})/\\$1/g; |
$string =~ s/_/ /g; |
$string =~ s/_/ /g; |
} else { |
$string=&Apache::lonprintout::character_chart($string); |
$string=~s/\\ /\\char92 /g; |
# any & or # leftover should be safe to just escape |
$string=~s/\^/\\\^\\strut /g; |
$string=~s/([^\\])\&/$1\\\&/g; |
$string=~s/\~/\\char126 /g; |
$string=~s/([^\\])\#/$1\\\#/g; |
#fixup & if it doesn't look like |
} else { |
# { or α |
$string=~s/\\/\\ensuremath{\\backslash}/g; |
$string=~s/(&(?!((\#[0-9]+)|([a-z]+));))/\\$1/gi; |
$string=~s/([^\\]|^)\%/$1\\\%/g; |
$string=~s/([^&\\])\#/$1\\#/g; |
$string=~s/([^\\]|^)(\$|_)/$1\\$2/g; |
$string=~s/\#\#/\#\\#/g; |
$string=~s/\$\$/\$\\\$/g; |
$string=~s/(\$|_|{|})/\\$1/g; |
$string=~s/\#\#/\#\\\#/g; |
$string=~s/\\char92 /\\texttt{\\char92}/g; |
$string=~s/([^\\]|^)(\~|\^)/$1\\$2\\strut /g; |
$string=~s/(>|<)/\$$1\$/g; #more or less |
$string=~s/(>|<)/\\ensuremath\{$1\}/g; #more or less |
if ($string=~m/\d%/) {$string =~ s/(\d)%/$1\\%/g;} #percent after digit |
$string=&Apache::lonprintout::character_chart($string); |
if ($string=~m/\s%/) {$string =~ s/(\s)%/$1\\%/g;} #percent after space |
# any & or # leftover should be safe to just escape |
if ($string eq '%.') {$string = '\%.';} #percent at the end of statement |
$string=~s/([^\\]|^)\&/$1\\\&/g; |
|
$string=~s/([^\\]|^)\#/$1\\\#/g; |
|
#single { or } How to escape? |
} |
} |
return $string; |
return $string; |
} |
} |
Line 751 sub init_safespace {
|
Line 753 sub init_safespace {
|
$safehole->wrap(\&Math::Random::random_get_seed,$safeeval,'&random_get_seed'); |
$safehole->wrap(\&Math::Random::random_get_seed,$safeeval,'&random_get_seed'); |
$safehole->wrap(\&Math::Random::random_set_seed,$safeeval,'&random_set_seed'); |
$safehole->wrap(\&Math::Random::random_set_seed,$safeeval,'&random_set_seed'); |
$safehole->wrap(\&Apache::lonxml::error,$safeeval,'&LONCAPA_INTERNAL_ERROR'); |
$safehole->wrap(\&Apache::lonxml::error,$safeeval,'&LONCAPA_INTERNAL_ERROR'); |
|
$safehole->wrap(\&Apache::lonxml::debug,$safeeval,'&LONCAPA_INTERNAL_DEBUG'); |
|
|
#need to inspect this class of ops |
#need to inspect this class of ops |
# $safeeval->deny(":base_orig"); |
# $safeeval->deny(":base_orig"); |
Line 766 sub init_safespace {
|
Line 769 sub init_safespace {
|
sub __LC_INTERNAL_EVALUATE__ { |
sub __LC_INTERNAL_EVALUATE__ { |
my ($__LC__a,$__LC__b,$__LC__c)=@_; |
my ($__LC__a,$__LC__b,$__LC__c)=@_; |
my $__LC__prefix; |
my $__LC__prefix; |
my $__LC__msg; |
|
while(1){ |
while(1){ |
{ |
{ |
#use strict; |
use strict; |
|
no strict "vars"; |
if (eval(defined(eval($__LC__a.$__LC__b)))) { |
if (eval(defined(eval($__LC__a.$__LC__b)))) { |
return $__LC__msg.$__LC__prefix.eval($__LC__a.$__LC__b.$__LC__c); |
return $__LC__prefix.eval($__LC__a.$__LC__b.$__LC__c); |
} |
} |
} |
} |
$__LC__prefix.=substr($__LC__a,0,1,""); |
$__LC__prefix.=substr($__LC__a,0,1,""); |
if ($__LC__a!~/^(\$|&|\#)/) { last; } |
if ($__LC__a!~/^(\$|&|\#)/) { last; } |
} |
} |
return $__LC__prefix.$__LC__a.$__LC__b.$__LC__c.$__LC__msg; |
return $__LC__prefix.$__LC__a.$__LC__b.$__LC__c; |
} |
} |
EVALUATESUB |
EVALUATESUB |
$safeeval->permit("require"); |
$safeeval->permit("require"); |
Line 964 sub get_all_text {
|
Line 967 sub get_all_text {
|
#never found the end tag ran out of text, throw error send back blank |
#never found the end tag ran out of text, throw error send back blank |
&error('Never found end tag for <'.$tag. |
&error('Never found end tag for <'.$tag. |
'> current string <pre>'. |
'> current string <pre>'. |
&HTML::Entities::encode($result). |
&HTML::Entities::encode($result,'<>&"'). |
'</pre>'); |
'</pre>'); |
if ($gotfullstack) { |
if ($gotfullstack) { |
my $newstring='</'.$tag.'>'.$result; |
my $newstring='</'.$tag.'>'.$result; |
Line 1141 SIMPLECONTENT
|
Line 1144 SIMPLECONTENT
|
|
|
sub inserteditinfo { |
sub inserteditinfo { |
my ($result,$filecontents,$filetype)=@_; |
my ($result,$filecontents,$filetype)=@_; |
$filecontents = &HTML::Entities::encode($filecontents); |
$filecontents = &HTML::Entities::encode($filecontents,'<>&"'); |
# my $editheader='<a href="#editsection">Edit below</a><hr />'; |
# my $editheader='<a href="#editsection">Edit below</a><hr />'; |
my $xml_help = ''; |
my $xml_help = ''; |
if ($filetype eq 'html') { |
if ($filetype eq 'html') { |
Line 1237 sub handler {
|
Line 1240 sub handler {
|
unless ($ENV{'request.state'} eq 'published') { |
unless ($ENV{'request.state'} eq 'published') { |
if (($ENV{'form.savethisfile'}) || ($ENV{'form.attemptclean'})) { |
if (($ENV{'form.savethisfile'}) || ($ENV{'form.attemptclean'})) { |
if (&storefile($file,$ENV{'form.filecont'})) { |
if (&storefile($file,$ENV{'form.filecont'})) { |
$request->print("<font COLOR=\"#0000FF\">".&mt('Updated').": ". |
&Apache::lonxml::info("<font COLOR=\"#0000FF\">". |
&Apache::lonlocal::locallocaltime(time)." </font>"); |
&mt('Updated').": ". |
|
&Apache::lonlocal::locallocaltime(time). |
|
" </font>"); |
} |
} |
} |
} |
} |
} |
Line 1290 ENDNOTFOUND
|
Line 1295 ENDNOTFOUND
|
if ($ENV{'form.editmode'} && (!($ENV{'form.viewmode'}))) { |
if ($ENV{'form.editmode'} && (!($ENV{'form.viewmode'}))) { |
my $displayfile=$request->uri; |
my $displayfile=$request->uri; |
$displayfile=~s/^\/[^\/]*//; |
$displayfile=~s/^\/[^\/]*//; |
$result='<html><body bgcolor="#FFFFFF"><h3>'.$displayfile. |
$result='<html><body bgcolor="#FFFFFF">'. |
|
&Apache::lonxml::message_location().'<h3>'. |
|
$displayfile. |
'</h3></body></html>'; |
'</h3></body></html>'; |
$result=&inserteditinfo($result,$filecontents,$filetype); |
$result=&inserteditinfo($result,$filecontents,$filetype); |
} |
} |
Line 1298 ENDNOTFOUND
|
Line 1305 ENDNOTFOUND
|
if ($filetype eq 'html') { writeallows($request->uri); } |
if ($filetype eq 'html') { writeallows($request->uri); } |
|
|
|
|
|
&Apache::lonxml::add_messages(\$result); |
$request->print($result); |
$request->print($result); |
|
|
return OK; |
return OK; |
Line 1322 sub debug {
|
Line 1329 sub debug {
|
$|=1; |
$|=1; |
my $request=$Apache::lonxml::request; |
my $request=$Apache::lonxml::request; |
if (!$request) { $request=Apache->request; } |
if (!$request) { $request=Apache->request; } |
$request->print('<font size="-2"><pre>DEBUG:'.&HTML::Entities::encode($_[0])."</pre></font>\n"); |
$request->print('<font size="-2"><pre>DEBUG:'.&HTML::Entities::encode($_[0],'<>&"')."</pre></font>\n"); |
} |
} |
} |
} |
|
|
Line 1332 sub error {
|
Line 1339 sub error {
|
if (!$request) { $request=Apache->request; } |
if (!$request) { $request=Apache->request; } |
if (($Apache::lonxml::debug eq 1) || ($ENV{'request.state'} eq 'construct') ) { |
if (($Apache::lonxml::debug eq 1) || ($ENV{'request.state'} eq 'construct') ) { |
# If printing in construction space, put the error inside <pre></pre> |
# If printing in construction space, put the error inside <pre></pre> |
$request->print($Apache::lonxml::warnings_error_header. |
push(@Apache::lonxml::error_messages, |
"<b>ERROR:</b>".join("<br />\n",@_)."<br />\n"); |
$Apache::lonxml::warnings_error_header. |
|
"<b>ERROR:</b>".join("<br />\n",@_)."<br />\n"); |
$Apache::lonxml::warnings_error_header=''; |
$Apache::lonxml::warnings_error_header=''; |
} else { |
} else { |
$request->print("<b>An Error occured while processing this resource. The instructor has been notified.</b> <br />"); |
push(@Apache::lonxml::error_messages, |
|
"<b>An Error occured while processing this resource. The instructor has been notified.</b> <br />"); |
#notify author |
#notify author |
&Apache::lonmsg::author_res_msg($ENV{'request.filename'},join('<br />',@_)); |
&Apache::lonmsg::author_res_msg($ENV{'request.filename'},join('<br />',@_)); |
#notify course |
#notify course |
Line 1359 sub warning {
|
Line 1368 sub warning {
|
if ($ENV{'request.state'} eq 'construct' || $Apache::lonxml::debug) { |
if ($ENV{'request.state'} eq 'construct' || $Apache::lonxml::debug) { |
my $request=$Apache::lonxml::request; |
my $request=$Apache::lonxml::request; |
if (!$request) { $request=Apache->request; } |
if (!$request) { $request=Apache->request; } |
$request->print($Apache::lonxml::warnings_error_header. |
push(@Apache::lonxml::warning_messages, |
"<b>W</b>ARNING<b>:</b>".join('<br />',@_)."<br />\n"); |
$Apache::lonxml::warnings_error_header. |
|
"<b>W</b>ARNING<b>:</b>".join('<br />',@_)."<br />\n"); |
$Apache::lonxml::warnings_error_header=''; |
$Apache::lonxml::warnings_error_header=''; |
} |
} |
} |
} |
} |
} |
|
|
|
sub info { |
|
if ($ENV{'form.grade_target'} ne 'tex' |
|
&& $ENV{'request.state'} eq 'construct') { |
|
push(@Apache::lonxml::info_messages,join('<br />',@_)."<br />\n"); |
|
} |
|
} |
|
|
|
sub message_location { |
|
return '__LONCAPA_INTERNAL_MESSAGE_LOCATION__'; |
|
} |
|
|
|
sub add_messages { |
|
my ($msg)=@_; |
|
my $result=join(' ', |
|
@Apache::lonxml::info_messages, |
|
@Apache::lonxml::error_messages, |
|
@Apache::lonxml::warning_messages); |
|
undef(@Apache::lonxml::info_messages); |
|
undef(@Apache::lonxml::error_messages); |
|
undef(@Apache::lonxml::warning_messages); |
|
$$msg=~s/__LONCAPA_INTERNAL_MESSAGE_LOCATION__/$result/; |
|
$$msg=~s/__LONCAPA_INTERNAL_MESSAGE_LOCATION__//g; |
|
} |
|
|
sub get_param { |
sub get_param { |
my ($param,$parstack,$safeeval,$context,$case_insensitive) = @_; |
my ($param,$parstack,$safeeval,$context,$case_insensitive) = @_; |
if ( ! $context ) { $context = -1; } |
if ( ! $context ) { $context = -1; } |