--- loncom/xml/lonxml.pm 2005/02/28 22:17:09 1.358 +++ loncom/xml/lonxml.pm 2005/04/07 00:42:07 1.371 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA # XML Parser Module # -# $Id: lonxml.pm,v 1.358 2005/02/28 22:17:09 albertel Exp $ +# $Id: lonxml.pm,v 1.371 2005/04/07 00:42:07 albertel Exp $ # # Copyright Michigan State University Board of Trustees # @@ -174,17 +174,24 @@ sub xmlend { my ($target,$parser)=@_; my $mode='xml'; my $status='OPEN'; - if ($Apache::lonhomework::parsing_a_problem) { + if ($Apache::lonhomework::parsing_a_problem || + $Apache::lonhomework::parsing_a_task ) { $mode='problem'; $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') { $discussion.='\keephidden{ENDOFPROBLEM}\vskip 0.5mm\noindent\makebox[\textwidth/$number_of_columns][b]{\hrulefill}\end{document}'; &Apache::lonxml::newparser($parser,\$discussion,''); return ''; } else { - return $discussion.''; + return $discussion.&Apache::loncommon::endbodytag(); } } @@ -314,6 +321,7 @@ sub xmlparse { &setup_globals($request,$target); &Apache::inputtags::initialize_inputtags(); + &Apache::bridgetask::initialize_bridgetask(); &Apache::outputtags::initialize_outputtags(); &Apache::edit::initialize_edit(); &Apache::londefdef::initialize_londefdef(); @@ -368,6 +376,9 @@ sub xmlparse { } &do_registered_ssi(); if ($Apache::lonxml::counter_changed) { &store_counter() } + if ($ENV{'form.return_only_error_and_warning_counts'}) { + return "$errorcount:$warningcount"; + } return $finaloutput; } @@ -410,18 +421,17 @@ sub latex_special_symbols { $string=~s/([^\\])\#/$1\\\#/g; } else { $string=~s/\\/\\ensuremath{\\backslash}/g; - $string=~s/([^\\]|^)\%/$1\\\%/g; - $string=~s/([^\\]|^)\$/$1\\\$/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/\\\$|\$/\\\$/g; + $string=~s/\\\_|\_/\\\_/g; $string=~s/([^\\]|^)(\~|\^)/$1\\$2\\strut /g; $string=~s/(>|<)/\\ensuremath\{$1\}/g; #more or less $string=&Apache::lonprintout::character_chart($string); # any & or # leftover should be safe to just escape - $string=~s/([^\\]|^)\&/$1\\\&/g; - $string=~s/([^\\]|^)\#/$1\\\#/g; + $string=~s/\\\&|\&/\\\&/g; + $string=~s/\\\#|\#/\\\#/g; $string=~s/\|/\$\\mid\$/g; #single { or } How to escape? } @@ -685,12 +695,15 @@ sub init_safespace { $safeeval->permit(":base_math"); $safeeval->permit("sort"); $safeeval->permit("time"); + $safeeval->deny("rand"); + $safeeval->deny("srand"); $safeeval->deny(":base_io"); $safehole->wrap(\&Apache::scripttag::xmlparse,$safeeval,'&xmlparse'); $safehole->wrap(\&Apache::outputtags::multipart,$safeeval,'&multipart'); $safehole->wrap(\&Apache::lonnet::EXT,$safeeval,'&EXT'); $safehole->wrap(\&Apache::chemresponse::chem_standard_order,$safeeval, '&chem_standard_order'); + $safehole->wrap(\&Apache::response::check_status,$safeeval,'&check_status'); $safehole->wrap(\&Math::Cephes::asin,$safeeval,'&asin'); $safehole->wrap(\&Math::Cephes::acos,$safeeval,'&acos'); @@ -1047,7 +1060,8 @@ sub get_all_text { sub newparser { my ($parser,$contentref,$dir) = @_; push (@$parser,HTML::LCParser->new($contentref)); - $$parser['-1']->xml_mode('1'); + $$parser[-1]->xml_mode(1); + $$parser[-1]->marked_sections(1); if ( $dir eq '' ) { push (@Apache::lonxml::pwd, $Apache::lonxml::pwd[$#Apache::lonxml::pwd]); } else { @@ -1242,7 +1256,7 @@ $initialize $xml_help $buttons
- +
$buttons
@@ -1288,15 +1302,12 @@ sub handler { $Apache::lonxml::debug=$ENV{'user.debug'}; - if ($ENV{'browser.mathml'}) { - #&Apache::loncommon::content_type($request,'text/xml'); - &Apache::loncommon::content_type($request,'text/html'); - } else { - &Apache::loncommon::content_type($request,'text/html'); - } + &Apache::loncommon::content_type($request,'text/html'); &Apache::loncommon::no_cache($request); - $request->set_last_modified(&Apache::lonnet::metadata($request->uri, - 'lastrevisiondate')); + if ($ENV{'request.state'} eq 'published') { + $request->set_last_modified(&Apache::lonnet::metadata($request->uri, + 'lastrevisiondate')); + } $request->send_http_header; return OK if $request->header_only; @@ -1364,6 +1375,7 @@ ENDNOTFOUND if (!$ENV{'form.editmode'} || $ENV{'form.viewmode'}) { $result = &Apache::lonxml::xmlparse($request,$target,$filecontents, '',%mystyle); + undef($Apache::lonhomework::parsing_a_task); } }