version 1.329, 2004/07/13 18:13:46
|
version 1.336, 2004/08/19 20:53:48
|
Line 165 sub xmlbegin {
|
Line 165 sub xmlbegin {
|
} |
} |
|
|
sub xmlend { |
sub xmlend { |
|
my ($target,$parser)=@_; |
my $mode='xml'; |
my $mode='xml'; |
my $status='OPEN'; |
my $status='OPEN'; |
if ($Apache::lonhomework::parsing_a_problem) { |
if ($Apache::lonhomework::parsing_a_problem) { |
$mode='problem'; |
$mode='problem'; |
$status=$Apache::inputtags::status[-1]; |
$status=$Apache::inputtags::status[-1]; |
} |
} |
return &Apache::lonfeedback::list_discussion($mode,$status).'</html>'; |
my $discussion=&Apache::lonfeedback::list_discussion($mode,$status); |
|
if ($target eq 'tex') { |
|
$discussion.='<tex>\keephidden{ENDOFPROBLEM}\vskip 0.5mm\noindent\makebox[\textwidth/$number_of_columns][b]{\hrulefill}\end{document}</tex>'; |
|
&Apache::lonxml::newparser($parser,\$discussion,''); |
|
return ''; |
|
} else { |
|
return $discussion.'</html>'; |
|
} |
} |
} |
|
|
sub tokeninputfield { |
sub tokeninputfield { |
Line 400 sub latex_special_symbols {
|
Line 408 sub latex_special_symbols {
|
# any & or # leftover should be safe to just escape |
# any & or # leftover should be safe to just escape |
$string=~s/([^\\]|^)\&/$1\\\&/g; |
$string=~s/([^\\]|^)\&/$1\\\&/g; |
$string=~s/([^\\]|^)\#/$1\\\#/g; |
$string=~s/([^\\]|^)\#/$1\\\#/g; |
|
$string=~s/\|/\$\\mid\$/g; |
#single { or } How to escape? |
#single { or } How to escape? |
} |
} |
return $string; |
return $string; |
Line 746 sub init_safespace {
|
Line 755 sub init_safespace {
|
|
|
#need to inspect this class of ops |
#need to inspect this class of ops |
# $safeeval->deny(":base_orig"); |
# $safeeval->deny(":base_orig"); |
|
$safeeval->permit("require"); |
$safeinit .= ';$external::target="'.$target.'";'; |
$safeinit .= ';$external::target="'.$target.'";'; |
my $rndseed; |
my $rndseed; |
my ($symb,$courseid,$domain,$name) = &Apache::lonxml::whichuser(); |
my ($symb,$courseid,$domain,$name) = &Apache::lonxml::whichuser(); |
Line 754 sub init_safespace {
|
Line 764 sub init_safespace {
|
&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 1146 sub inserteditinfo {
|
Line 1135 sub inserteditinfo {
|
my $initialize=''; |
my $initialize=''; |
if ($filetype eq 'html') { |
if ($filetype eq 'html') { |
my $addbuttons=&Apache::lonhtmlcommon::htmlareaaddbuttons(); |
my $addbuttons=&Apache::lonhtmlcommon::htmlareaaddbuttons(); |
$initialize=&Apache::lonhtmlcommon::htmlareaheaders().(<<FULLPAGE); |
$initialize=&Apache::lonhtmlcommon::htmlareaheaders(). |
|
&Apache::lonhtmlcommon::spellheader().(<<FULLPAGE); |
<script type="text/javascript"> |
<script type="text/javascript"> |
$addbuttons |
$addbuttons |
|
|
Line 1176 $cleanbut
|
Line 1166 $cleanbut
|
<input type="submit" name="savethisfile" accesskey="s" value="$lt{'st'}" /> |
<input type="submit" name="savethisfile" accesskey="s" value="$lt{'st'}" /> |
<input type="submit" name="viewmode" accesskey="v" value="$lt{'vi'}" /> |
<input type="submit" name="viewmode" accesskey="v" value="$lt{'vi'}" /> |
BUTTONS |
BUTTONS |
|
$buttons.=&Apache::lonhtmlcommon::spelllink('xmledit','filecont'); |
my $editfooter=(<<ENDFOOTER); |
my $editfooter=(<<ENDFOOTER); |
$initialize |
$initialize |
<hr /> |
<hr /> |
<a name="editsection" /> |
<a name="editsection" /> |
<form method="post"> |
<form method="post" name="xmledit"> |
$xml_help |
$xml_help |
<input type="hidden" name="editmode" value="$lt{'ed'}" /> |
<input type="hidden" name="editmode" value="$lt{'ed'}" /> |
$buttons<br /> |
$buttons<br /> |
Line 1349 sub debug {
|
Line 1340 sub debug {
|
} |
} |
|
|
sub error { |
sub error { |
$errorcount++; |
$errorcount++; |
my $request=$Apache::lonxml::request; |
if (($Apache::lonxml::debug eq 1) || ($ENV{'request.state'} eq 'construct') ) { |
if (!$request) { $request=Apache->request; } |
# If printing in construction space, put the error inside <pre></pre> |
if (($Apache::lonxml::debug eq 1) || ($ENV{'request.state'} eq 'construct') ) { |
push(@Apache::lonxml::error_messages, |
# If printing in construction space, put the error inside <pre></pre> |
$Apache::lonxml::warnings_error_header. |
push(@Apache::lonxml::error_messages, |
"<b>ERROR:</b>".join("<br />\n",@_)."<br />\n"); |
$Apache::lonxml::warnings_error_header. |
$Apache::lonxml::warnings_error_header=''; |
"<b>ERROR:</b>".join("<br />\n",@_)."<br />\n"); |
} else { |
$Apache::lonxml::warnings_error_header=''; |
my $errormsg; |
} else { |
my ($symb)=&Apache::lonnet::symbread(); |
push(@Apache::lonxml::error_messages, |
if ( !$symb ) { |
"<b>An Error occured while processing this resource. The instructor has been notified.</b> <br />"); |
#public or browsers |
#notify author |
$errormsg=&mt("An error occured while processing this resource. The author has been notified."); |
&Apache::lonmsg::author_res_msg($ENV{'request.filename'},join('<br />',@_)); |
} |
#notify course |
#notify author |
if ( $ENV{'request.course.id'} ) { |
&Apache::lonmsg::author_res_msg($ENV{'request.filename'},join('<br />',@_)); |
my (undef,%users)=&Apache::lonfeedback::decide_receiver(undef,0,1,1,1); |
#notify course |
my $declutter=&Apache::lonnet::declutter($ENV{'request.filename'}); |
if ( $symb && $ENV{'request.course.id'} ) { |
foreach (keys %users) { |
my (undef,%users)=&Apache::lonfeedback::decide_receiver(undef,0,1,1,1); |
my ($user,$domain) = split(/:/, $_); |
my $declutter=&Apache::lonnet::declutter($ENV{'request.filename'}); |
&Apache::lonmsg::user_normal_msg($user,$domain, |
my @userlist; |
"Error [$declutter]",join('<br />',@_)); |
foreach (keys %users) { |
} |
my ($user,$domain) = split(/:/, $_); |
|
push(@userlist,"$user\@$domain"); |
|
&Apache::lonmsg::user_normal_msg($user,$domain, |
|
"Error [$declutter]",join('<br />',@_)); |
|
} |
|
if ($ENV{'request.role.adv'}) { |
|
$errormsg=&mt("An error occured while processing this resource. The course personnel ([_1]) and the author have been notified.",join(', ',@userlist)); |
|
} else { |
|
$errormsg=&mt("An error occured while processing this resource. The instructor has been notified."); |
|
} |
|
} |
|
push(@Apache::lonxml::error_messages,"<b>$errormsg</b> <br />"); |
} |
} |
} |
|
} |
} |
|
|
sub warning { |
sub warning { |