version 1.357, 2005/02/26 05:37:23
|
version 1.371, 2005/04/07 00:42:07
|
Line 174 sub xmlend {
|
Line 174 sub xmlend {
|
my ($target,$parser)=@_; |
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 || |
|
$Apache::lonhomework::parsing_a_task ) { |
$mode='problem'; |
$mode='problem'; |
$status=$Apache::inputtags::status[-1]; |
$status=$Apache::inputtags::status[-1]; |
} |
} |
my $discussion=&Apache::lonfeedback::list_discussion($mode,$status); |
my $discussion; |
|
&Apache::loncommon::get_unprocessed_cgi |
|
($ENV{'query_string'},['LONCAPA_INTERNAL_no_discussion']); |
|
if (! exists($ENV{'form.LONCAPA_INTERNAL_no_discussion'}) || |
|
$ENV{'form.LONCAPA_INTERNAL_no_discussion'} ne 'true') { |
|
$discussion=&Apache::lonfeedback::list_discussion($mode,$status); |
|
} |
if ($target eq 'tex') { |
if ($target eq 'tex') { |
$discussion.='<tex>\keephidden{ENDOFPROBLEM}\vskip 0.5mm\noindent\makebox[\textwidth/$number_of_columns][b]{\hrulefill}\end{document}</tex>'; |
$discussion.='<tex>\keephidden{ENDOFPROBLEM}\vskip 0.5mm\noindent\makebox[\textwidth/$number_of_columns][b]{\hrulefill}\end{document}</tex>'; |
&Apache::lonxml::newparser($parser,\$discussion,''); |
&Apache::lonxml::newparser($parser,\$discussion,''); |
return ''; |
return ''; |
} else { |
} else { |
return $discussion.'</html>'; |
return $discussion.&Apache::loncommon::endbodytag(); |
} |
} |
} |
} |
|
|
Line 314 sub xmlparse {
|
Line 321 sub xmlparse {
|
|
|
&setup_globals($request,$target); |
&setup_globals($request,$target); |
&Apache::inputtags::initialize_inputtags(); |
&Apache::inputtags::initialize_inputtags(); |
|
&Apache::bridgetask::initialize_bridgetask(); |
&Apache::outputtags::initialize_outputtags(); |
&Apache::outputtags::initialize_outputtags(); |
&Apache::edit::initialize_edit(); |
&Apache::edit::initialize_edit(); |
&Apache::londefdef::initialize_londefdef(); |
&Apache::londefdef::initialize_londefdef(); |
Line 358 sub xmlparse {
|
Line 366 sub xmlparse {
|
|
|
my @stack = (); |
my @stack = (); |
my @parstack = (); |
my @parstack = (); |
&initdepth; |
&initdepth(); |
|
&init_alarm(); |
my $finaloutput = &inner_xmlparse($target,\@stack,\@parstack,\@pars, |
my $finaloutput = &inner_xmlparse($target,\@stack,\@parstack,\@pars, |
$safeeval,\%style_for_target); |
$safeeval,\%style_for_target); |
|
|
Line 368 sub xmlparse {
|
Line 376 sub xmlparse {
|
} |
} |
&do_registered_ssi(); |
&do_registered_ssi(); |
if ($Apache::lonxml::counter_changed) { &store_counter() } |
if ($Apache::lonxml::counter_changed) { &store_counter() } |
|
if ($ENV{'form.return_only_error_and_warning_counts'}) { |
|
return "$errorcount:$warningcount"; |
|
} |
return $finaloutput; |
return $finaloutput; |
} |
} |
|
|
Line 410 sub latex_special_symbols {
|
Line 421 sub latex_special_symbols {
|
$string=~s/([^\\])\#/$1\\\#/g; |
$string=~s/([^\\])\#/$1\\\#/g; |
} else { |
} else { |
$string=~s/\\/\\ensuremath{\\backslash}/g; |
$string=~s/\\/\\ensuremath{\\backslash}/g; |
$string=~s/([^\\]|^)\%/$1\\\%/g; |
$string=~s/\\\%|\%/\\\%/g; |
$string=~s/([^\\]|^)\$/$1\\\$/g; |
$string=~s/\\{|{/\\{/g; |
$string=~s/([^\\])\_/$1\\_/g; |
$string=~s/\\}|}/\\}/g; |
$string=~s/\$\$/\$\\\$/g; |
$string=~s/\\\$|\$/\\\$/g; |
$string=~s/\_\_/\_\\\_/g; |
$string=~s/\\\_|\_/\\\_/g; |
$string=~s/\#\#/\#\\\#/g; |
|
$string=~s/([^\\]|^)(\~|\^)/$1\\$2\\strut /g; |
$string=~s/([^\\]|^)(\~|\^)/$1\\$2\\strut /g; |
$string=~s/(>|<)/\\ensuremath\{$1\}/g; #more or less |
$string=~s/(>|<)/\\ensuremath\{$1\}/g; #more or less |
$string=&Apache::lonprintout::character_chart($string); |
$string=&Apache::lonprintout::character_chart($string); |
# any & or # leftover should be safe to just escape |
# any & or # leftover should be safe to just escape |
$string=~s/([^\\]|^)\&/$1\\\&/g; |
$string=~s/\\\&|\&/\\\&/g; |
$string=~s/([^\\]|^)\#/$1\\\#/g; |
$string=~s/\\\#|\#/\\\#/g; |
$string=~s/\|/\$\\mid\$/g; |
$string=~s/\|/\$\\mid\$/g; |
#single { or } How to escape? |
#single { or } How to escape? |
} |
} |
Line 685 sub init_safespace {
|
Line 695 sub init_safespace {
|
$safeeval->permit(":base_math"); |
$safeeval->permit(":base_math"); |
$safeeval->permit("sort"); |
$safeeval->permit("sort"); |
$safeeval->permit("time"); |
$safeeval->permit("time"); |
|
$safeeval->deny("rand"); |
|
$safeeval->deny("srand"); |
$safeeval->deny(":base_io"); |
$safeeval->deny(":base_io"); |
$safehole->wrap(\&Apache::scripttag::xmlparse,$safeeval,'&xmlparse'); |
$safehole->wrap(\&Apache::scripttag::xmlparse,$safeeval,'&xmlparse'); |
$safehole->wrap(\&Apache::outputtags::multipart,$safeeval,'&multipart'); |
$safehole->wrap(\&Apache::outputtags::multipart,$safeeval,'&multipart'); |
$safehole->wrap(\&Apache::lonnet::EXT,$safeeval,'&EXT'); |
$safehole->wrap(\&Apache::lonnet::EXT,$safeeval,'&EXT'); |
$safehole->wrap(\&Apache::chemresponse::chem_standard_order,$safeeval, |
$safehole->wrap(\&Apache::chemresponse::chem_standard_order,$safeeval, |
'&chem_standard_order'); |
'&chem_standard_order'); |
|
$safehole->wrap(\&Apache::response::check_status,$safeeval,'&check_status'); |
|
|
$safehole->wrap(\&Math::Cephes::asin,$safeeval,'&asin'); |
$safehole->wrap(\&Math::Cephes::asin,$safeeval,'&asin'); |
$safehole->wrap(\&Math::Cephes::acos,$safeeval,'&acos'); |
$safehole->wrap(\&Math::Cephes::acos,$safeeval,'&acos'); |
Line 792 sub default_homework_load {
|
Line 805 sub default_homework_load {
|
} |
} |
} |
} |
|
|
|
{ |
|
my $alarm_depth; |
|
sub init_alarm { |
|
alarm(0); |
|
$alarm_depth=0; |
|
} |
|
|
|
sub start_alarm { |
|
if ($alarm_depth<1) { |
|
my $old=alarm($Apache::lonnet::perlvar{'lonScriptTimeout'}); |
|
if ($old) { |
|
&Apache::lonxml::error("Cancelled an alarm of $old, this shouldn't occur."); |
|
} |
|
} |
|
$alarm_depth++; |
|
} |
|
|
|
sub end_alarm { |
|
$alarm_depth--; |
|
if ($alarm_depth<1) { alarm(0); } |
|
} |
|
} |
my $metamode_was; |
my $metamode_was; |
sub startredirection { |
sub startredirection { |
if (!$Apache::lonxml::redirection) { |
if (!$Apache::lonxml::redirection) { |
Line 1025 sub get_all_text {
|
Line 1060 sub get_all_text {
|
sub newparser { |
sub newparser { |
my ($parser,$contentref,$dir) = @_; |
my ($parser,$contentref,$dir) = @_; |
push (@$parser,HTML::LCParser->new($contentref)); |
push (@$parser,HTML::LCParser->new($contentref)); |
$$parser['-1']->xml_mode('1'); |
$$parser[-1]->xml_mode(1); |
|
$$parser[-1]->marked_sections(1); |
if ( $dir eq '' ) { |
if ( $dir eq '' ) { |
push (@Apache::lonxml::pwd, $Apache::lonxml::pwd[$#Apache::lonxml::pwd]); |
push (@Apache::lonxml::pwd, $Apache::lonxml::pwd[$#Apache::lonxml::pwd]); |
} else { |
} else { |
Line 1220 $initialize
|
Line 1256 $initialize
|
$xml_help |
$xml_help |
<input type="hidden" name="editmode" value="$lt{'ed'}" /> |
<input type="hidden" name="editmode" value="$lt{'ed'}" /> |
$buttons<br /> |
$buttons<br /> |
<textarea cols="80" rows="44" name="filecont" id="filecont">$filecontents</textarea> |
<textarea style="width:100%" cols="80" rows="44" name="filecont" id="filecont">$filecontents</textarea> |
<br />$buttons |
<br />$buttons |
<br /> |
<br /> |
</form> |
</form> |
Line 1266 sub handler {
|
Line 1302 sub handler {
|
|
|
$Apache::lonxml::debug=$ENV{'user.debug'}; |
$Apache::lonxml::debug=$ENV{'user.debug'}; |
|
|
if ($ENV{'browser.mathml'}) { |
&Apache::loncommon::content_type($request,'text/html'); |
&Apache::loncommon::content_type($request,'text/xml'); |
|
} else { |
|
&Apache::loncommon::content_type($request,'text/html'); |
|
} |
|
&Apache::loncommon::no_cache($request); |
&Apache::loncommon::no_cache($request); |
$request->set_last_modified(&Apache::lonnet::metadata($request->uri, |
if ($ENV{'request.state'} eq 'published') { |
'lastrevisiondate')); |
$request->set_last_modified(&Apache::lonnet::metadata($request->uri, |
|
'lastrevisiondate')); |
|
} |
$request->send_http_header; |
$request->send_http_header; |
|
|
return OK if $request->header_only; |
return OK if $request->header_only; |
Line 1341 ENDNOTFOUND
|
Line 1375 ENDNOTFOUND
|
if (!$ENV{'form.editmode'} || $ENV{'form.viewmode'}) { |
if (!$ENV{'form.editmode'} || $ENV{'form.viewmode'}) { |
$result = &Apache::lonxml::xmlparse($request,$target,$filecontents, |
$result = &Apache::lonxml::xmlparse($request,$target,$filecontents, |
'',%mystyle); |
'',%mystyle); |
|
undef($Apache::lonhomework::parsing_a_task); |
} |
} |
} |
} |
|
|