version 1.288, 2003/10/27 19:00:11
|
version 1.308, 2004/03/04 23:01:31
|
Line 167 $Apache::lonxml::style_end_values='';
|
Line 167 $Apache::lonxml::style_end_values='';
|
#should we do the postag variable interpolation |
#should we do the postag variable interpolation |
$Apache::lonxml::post_evaluate=1; |
$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 { |
sub xmlbegin { |
my $output=''; |
my $output=''; |
if ($ENV{'browser.mathml'}) { |
if ($ENV{'browser.mathml'}) { |
Line 189 sub xmlend {
|
Line 192 sub xmlend {
|
$mode='problem'; |
$mode='problem'; |
$status=$Apache::inputtags::status[-1]; |
$status=$Apache::inputtags::status[-1]; |
} |
} |
return &Apache::lonfeedback::list_discussion().'</html>'; |
return &Apache::lonfeedback::list_discussion($mode,$status).'</html>'; |
} |
} |
|
|
sub tokeninputfield { |
sub tokeninputfield { |
Line 337 sub xmlparse {
|
Line 340 sub xmlparse {
|
&Apache::style::styleparser($target,$styletext)); |
&Apache::style::styleparser($target,$styletext)); |
} |
} |
} |
} |
|
} 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, |
|
&Apache::style::styleparser($target,$styletext)); |
|
} |
} |
} |
#&printalltags(); |
#&printalltags(); |
my @pars = (); |
my @pars = (); |
Line 395 sub latex_special_symbols {
|
Line 405 sub latex_special_symbols {
|
$string =~ s/_/ /g; |
$string =~ s/_/ /g; |
} else { |
} else { |
$string=~s/\\ /\\char92 /g; |
$string=~s/\\ /\\char92 /g; |
$string=~s/\^/\\\^ /g; |
$string=~s/\^/\\\^\\strut /g; |
$string=~s/\~/\\char126 /g; |
$string=~s/\~/\\char126 /g; |
$string=~s/(&[^A-Za-z\#])/\\$1/g; |
#fixup & if it doesn't look like |
$string=~s/([^&])\#/$1\\#/g; |
# { or α |
|
$string=~s/(&(?!((\#[0-9]+)|([a-z][a-z0-9]*));))/\\$1/gi; |
|
$string=~s/([^&\\])\#/$1\\#/g; |
|
$string=~s/\#\#/\#\\#/g; |
$string=~s/(\$|_|{|})/\\$1/g; |
$string=~s/(\$|_|{|})/\\$1/g; |
$string=~s/\\char92 /\\texttt{\\char92}/g; |
$string=~s/\\char92 /\\texttt{\\char92}/g; |
$string=~s/(>|<)/\$$1\$/g; #more or less |
$string=~s/(>|<)/\$$1\$/g; #more or less |
Line 616 sub setup_globals {
|
Line 629 sub setup_globals {
|
@Apache::lonxml::extlinks=(); |
@Apache::lonxml::extlinks=(); |
@Apache::lonxml::ssi_info=(); |
@Apache::lonxml::ssi_info=(); |
$Apache::lonxml::post_evaluate=1; |
$Apache::lonxml::post_evaluate=1; |
|
$Apache::lonxml::warnings_error_header=''; |
if ($target eq 'meta') { |
if ($target eq 'meta') { |
$Apache::lonxml::redirection = 0; |
$Apache::lonxml::redirection = 0; |
$Apache::lonxml::metamode = 1; |
$Apache::lonxml::metamode = 1; |
Line 736 sub init_safespace {
|
Line 750 sub init_safespace {
|
$safehole->wrap(\&Math::Random::random_set_seed_from_phrase,$safeeval,'&random_set_seed_from_phrase'); |
$safehole->wrap(\&Math::Random::random_set_seed_from_phrase,$safeeval,'&random_set_seed_from_phrase'); |
$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'); |
|
|
#need to inspect this class of ops |
#need to inspect this class of ops |
# $safeeval->deny(":base_orig"); |
# $safeeval->deny(":base_orig"); |
Line 746 sub init_safespace {
|
Line 761 sub init_safespace {
|
$safeinit .= ';$external::randomseed='.$rndseed.';'; |
$safeinit .= ';$external::randomseed='.$rndseed.';'; |
&Apache::lonxml::debug("Setting rndseed to $rndseed"); |
&Apache::lonxml::debug("Setting rndseed to $rndseed"); |
&Apache::run::run($safeinit,$safeeval); |
&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 { |
sub default_homework_load { |
Line 845 sub get_all_text_unbalanced {
|
Line 882 sub get_all_text_unbalanced {
|
|
|
sub increment_counter { |
sub increment_counter { |
my ($increment) = @_; |
my ($increment) = @_; |
if ($ENV{'form.freeze_counter'} ne 'yes') { |
if (defined($increment) && $increment gt 0) { |
if (defined($increment) && $increment gt 0) { |
$Apache::lonxml::counter+=$increment; |
$Apache::lonxml::counter+=$increment; |
} else { |
} else { |
$Apache::lonxml::counter++; |
$Apache::lonxml::counter++; |
|
} |
|
$Apache::lonxml::counter_changed=1; |
|
} |
} |
|
$Apache::lonxml::counter_changed=1; |
} |
} |
|
|
sub init_counter { |
sub init_counter { |
Line 1062 ENDSCRIPT
|
Line 1097 ENDSCRIPT
|
|
|
sub storefile { |
sub storefile { |
my ($file,$contents)=@_; |
my ($file,$contents)=@_; |
|
&Apache::lonnet::correct_line_ends(\$contents); |
if (my $fh=Apache::File->new('>'.$file)) { |
if (my $fh=Apache::File->new('>'.$file)) { |
print $fh $contents; |
print $fh $contents; |
$fh->close(); |
$fh->close(); |
Line 1122 sub inserteditinfo {
|
Line 1158 sub inserteditinfo {
|
'ed' => 'Edit'); |
'ed' => 'Edit'); |
my $buttons=(<<BUTTONS); |
my $buttons=(<<BUTTONS); |
$cleanbut |
$cleanbut |
<input type="submit" name="savethisfile" value="$lt{'st'}" /> |
<input type="submit" name="savethisfile" accesskey="s" value="$lt{'st'}" /> |
<input type="submit" name="viewmode" value="$lt{'vi'}" /> |
<input type="submit" name="viewmode" accesskey="v" value="$lt{'vi'}" /> |
BUTTONS |
BUTTONS |
my $editfooter=(<<ENDFOOTER); |
my $editfooter=(<<ENDFOOTER); |
<hr /> |
<hr /> |
Line 1282 sub display_title {
|
Line 1318 sub display_title {
|
} |
} |
|
|
sub debug { |
sub debug { |
if ($Apache::lonxml::debug eq 1) { |
if ($Apache::lonxml::debug eq "1") { |
$|=1; |
$|=1; |
print('<font size="-2"<pre>DEBUG:'.&HTML::Entities::encode($_[0])."</pre></font>\n"); |
my $request=$Apache::lonxml::request; |
} |
if (!$request) { $request=Apache->request; } |
|
$request->print('<font size="-2"><pre>DEBUG:'.&HTML::Entities::encode($_[0])."</pre></font>\n"); |
|
} |
} |
} |
|
|
sub error { |
sub error { |
$errorcount++; |
$errorcount++; |
|
my $request=$Apache::lonxml::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> |
print "<b>ERROR:</b>".join("\n",@_)."\n"; |
$request->print($Apache::lonxml::warnings_error_header. |
|
"<b>ERROR:</b>".join("<br />\n",@_)."<br />\n"); |
|
$Apache::lonxml::warnings_error_header=''; |
} else { |
} else { |
print "<b>An Error occured while processing this resource. The instructor has been notified.</b> <br />"; |
$request->print("<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 1307 sub error {
|
Line 1349 sub error {
|
"Error [$declutter]",join('<br />',@_)); |
"Error [$declutter]",join('<br />',@_)); |
} |
} |
} |
} |
|
|
#FIXME probably shouldn't have me get everything forever. |
|
&Apache::lonmsg::user_normal_msg('albertel','msu',"Error in $ENV{'request.filename'}",join('<br />',@_)); |
|
#&Apache::lonmsg::user_normal_msg('albertel','103',"Error in $ENV{'request.filename'}",$_[0]); |
|
} |
} |
} |
} |
|
|
sub warning { |
sub warning { |
$warningcount++; |
$warningcount++; |
|
|
if ($ENV{'form.grade_target'} ne 'tex') { |
if ($ENV{'form.grade_target'} ne 'tex') { |
if ($ENV{'request.state'} eq 'construct' || $Apache::lonxml::debug) { |
if ($ENV{'request.state'} eq 'construct' || $Apache::lonxml::debug) { |
print "<b>W</b>ARNING<b>:</b>".join('<br />',@_)."<br />\n"; |
my $request=$Apache::lonxml::request; |
} |
if (!$request) { $request=Apache->request; } |
} |
$request->print($Apache::lonxml::warnings_error_header. |
|
"<b>W</b>ARNING<b>:</b>".join('<br />',@_)."<br />\n"); |
|
$Apache::lonxml::warnings_error_header=''; |
|
} |
|
} |
} |
} |
|
|
sub get_param { |
sub get_param { |
Line 1329 sub get_param {
|
Line 1371 sub get_param {
|
if ( ! $context ) { $context = -1; } |
if ( ! $context ) { $context = -1; } |
my $args =''; |
my $args =''; |
if ( $#$parstack > (-2-$context) ) { $args=$$parstack[$context]; } |
if ( $#$parstack > (-2-$context) ) { $args=$$parstack[$context]; } |
|
if ( ! $Apache::lonxml::usestyle ) { |
|
$args=$Apache::lonxml::style_values.$args; |
|
} |
if ( ! $args ) { return undef; } |
if ( ! $args ) { return undef; } |
if ( $case_insensitive ) { |
if ( $case_insensitive ) { |
if ($args =~ s/(my \$)(\Q$param\E)(=\")/$1.lc($2).$3/ei) { |
if ($args =~ s/(my \$)(\Q$param\E)(=\")/$1.lc($2).$3/ei) { |
Line 1352 sub get_param_var {
|
Line 1397 sub get_param_var {
|
if ( ! $context ) { $context = -1; } |
if ( ! $context ) { $context = -1; } |
my $args =''; |
my $args =''; |
if ( $#$parstack > (-2-$context) ) { $args=$$parstack[$context]; } |
if ( $#$parstack > (-2-$context) ) { $args=$$parstack[$context]; } |
|
if ( ! $Apache::lonxml::usestyle ) { |
|
$args=$Apache::lonxml::style_values.$args; |
|
} |
&Apache::lonxml::debug("Args are $args param is $param"); |
&Apache::lonxml::debug("Args are $args param is $param"); |
if ($case_insensitive) { |
if ($case_insensitive) { |
if (! ($args=~s/(my \$)(\Q$param\E)(=\")/$1.lc($2).$3/ei)) { |
if (! ($args=~s/(my \$)(\Q$param\E)(=\")/$1.lc($2).$3/ei)) { |