--- loncom/xml/lonxml.pm	2005/02/28 22:21:40	1.359
+++ loncom/xml/lonxml.pm	2005/03/23 22:02:32	1.367
@@ -1,7 +1,7 @@
 # The LearningOnline Network with CAPA
 # XML Parser Module 
 #
-# $Id: lonxml.pm,v 1.359 2005/02/28 22:21:40 albertel Exp $
+# $Id: lonxml.pm,v 1.367 2005/03/23 22:02:32 albertel Exp $
 #
 # Copyright Michigan State University Board of Trustees
 #
@@ -178,13 +178,19 @@ sub xmlend {
 	$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.='<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>';
+	return $discussion.&Apache::loncommon::endbodytag();
     }
 }
 
@@ -368,6 +374,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 +419,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?
     }
@@ -1047,7 +1055,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 +1251,7 @@ $initialize
 $xml_help
 <input type="hidden" name="editmode" value="$lt{'ed'}" />
 $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 />
 </form>
@@ -1288,14 +1297,12 @@ sub handler {
     
     $Apache::lonxml::debug=$ENV{'user.debug'};
     
-    if ($ENV{'browser.mathml'}) {
-	&Apache::loncommon::content_type($request,'text/xml');
-    } 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;