--- loncom/xml/lonxml.pm	2003/05/28 21:05:33	1.258
+++ loncom/xml/lonxml.pm	2003/08/07 19:31:16	1.266.2.1
@@ -1,7 +1,7 @@
 # The LearningOnline Network with CAPA
 # XML Parser Module 
 #
-# $Id: lonxml.pm,v 1.258 2003/05/28 21:05:33 albertel Exp $
+# $Id: lonxml.pm,v 1.266.2.1 2003/08/07 19:31:16 albertel Exp $
 #
 # Copyright Michigan State University Board of Trustees
 #
@@ -70,6 +70,7 @@ use Math::Cephes();
 use Math::Random();
 use Opcode();
 
+
 sub register {
   my ($space,@taglist) = @_;
   foreach my $temptag (@taglist) {
@@ -95,6 +96,8 @@ use Apache::run();
 use Apache::londefdef();
 use Apache::scripttag();
 use Apache::edit();
+use Apache::inputtags();
+use Apache::outputtags();
 use Apache::lonnet();
 use Apache::File();
 use Apache::loncommon();
@@ -151,6 +154,10 @@ $Apache::lonxml::counter_changed=0;
 #internal check on whether to look at style defs
 $Apache::lonxml::usestyle=1;
 
+#locations used to store the parameter string for style substitutions
+$Apache::lonxml::style_values='';
+$Apache::lonxml::style_end_values='';
+
 sub xmlbegin {
   my $output='';
   if ($ENV{'browser.mathml'}) {
@@ -382,7 +389,7 @@ sub fontsettings() {
     if (($ENV{'browser.os'} eq 'mac') && (!$ENV{'browser.mathml'})) { 
 	$headerstring.=
 	    '<meta Content-Type="text/html; charset=x-mac-roman">';
-    } elsif (!$ENV{'browser.mathml'}) {
+    } elsif (!$ENV{'browser.mathml'} && $ENV{'browser.unicode'}) {
 	$headerstring.=
 	    '<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />';
     }
@@ -497,7 +504,7 @@ sub inner_xmlparse {
   my $dontpop=0;
   while ( $#$pars > -1 ) {
     while ($token = $$pars['-1']->get_token) {
-      if (($token->[0] eq 'T') || ($token->[0] eq 'C') || ($token->[0] eq 'D') ) {
+      if (($token->[0] eq 'T') || ($token->[0] eq 'C') ) {
 	if ($metamode<1) {
 	    my $text=$token->[1];
 	    if ($token->[0] eq 'C' && $target eq 'tex') {
@@ -506,8 +513,13 @@ sub inner_xmlparse {
 	    }
 	    $result.=$text;
 	}
+      } elsif (($token->[0] eq 'D')) {
+	if ($metamode<1 && $target eq 'web') {
+	    my $text=$token->[1];
+	    $result.=$text;
+	}
       } elsif ($token->[0] eq 'PI') {
-	if ($metamode<1) {
+	if ($metamode<1 && $target eq 'web') {
 	  $result=$token->[2];
 	}
       } elsif ($token->[0] eq 'S') {
@@ -523,6 +535,7 @@ sub inner_xmlparse {
 	      '<LONCAPA_INTERNAL_TURN_STYLE_ON />';
 	    &Apache::lonxml::newparser($pars,\$string);
 	    $Apache::lonxml::style_values=$$parstack[-1];
+	    $Apache::lonxml::style_end_values=$$parstack[-1];
 	} else {
 	  $result = &callsub("start_$token->[1]", $target, $token, $stack,
 			     $parstack, $pars, $safeeval, $style_for_target);
@@ -534,7 +547,8 @@ sub inner_xmlparse {
 	    my $string=$$style_for_target{'/'.$token->[1]}.
 	      '<LONCAPA_INTERNAL_TURN_STYLE_ON end="'.$token->[1].'" />';
 	    &Apache::lonxml::newparser($pars,\$string);
-	    $Apache::lonxml::style_values=$$parstack[-1];
+	    $Apache::lonxml::style_values=$Apache::lonxml::style_end_values;
+	    $Apache::lonxml::style_end_values='';
 	    $dontpop=1;
 	} else {
 	    #clear out any tags that didn't end
@@ -1128,13 +1142,7 @@ sub inserteditinfo {
       my ($result,$filecontents)=@_;
       $filecontents = &HTML::Entities::encode($filecontents);
 #      my $editheader='<a href="#editsection">Edit below</a><hr />';
-      my $xml_help = '<table><tr><td>'.
-	  &Apache::loncommon::help_open_topic("Greek_Symbols",'Greek Symbols',
-					      undef,undef,600)
-	      .'</td><td>'.
-          &Apache::loncommon::help_open_topic("Other_Symbols",'Other Symbols',
-					      undef,undef,600)
-	      .'</td></tr></table>';
+      my $xml_help = Apache::loncommon::helpLatexCheatsheet();
       my $titledisplay=&display_title();
       my $buttons=(<<BUTTONS);
 <input type="submit" name="attemptclean" 
@@ -1238,6 +1246,10 @@ ENDNOTFOUND
 	    if ($ENV{'form.attemptclean'}) {
 		$filecontents=&htmlclean($filecontents,1);
 	    }
+#
+# we are in construction space, see if edit mode forced
+            &Apache::loncommon::get_unprocessed_cgi
+                          ($ENV{'QUERY_STRING'},['editmode']);
 	}
 	if (!$ENV{'form.editmode'} || $ENV{'form.viewmode'}) {
 	    $result = &Apache::lonxml::xmlparse($request,$target,$filecontents,
@@ -1314,8 +1326,11 @@ sub error {
 
 sub warning {
   $warningcount++;
-  if ($ENV{'request.state'} eq 'construct' || $Apache::lonxml::debug) {
-    print "<b>W</b>ARNING<b>:</b>".join('<br />',@_)."<br />\n";
+  
+  if ($ENV{'form.grade_target'} ne 'tex') {
+      if ($ENV{'request.state'} eq 'construct' || $Apache::lonxml::debug) {
+        print "<b>W</b>ARNING<b>:</b>".join('<br />',@_)."<br />\n";
+      }
   }
 }
 
@@ -1424,10 +1439,11 @@ sub description {
 # calls to lonnet functions for this setup.
 # - looks for form.grade_ parameters
 sub whichuser {
+  my ($passedsymb)=@_;
   my ($symb,$courseid,$domain,$name,$publicuser);
   if (defined($ENV{'form.grade_symb'})) {
     my $tmp_courseid=$ENV{'form.grade_courseid'};
-    my $allowed=&Apache::lonnet::allowed('mgr',$tmp_courseid);
+    my $allowed=&Apache::lonnet::allowed('vgr',$tmp_courseid);
     if ($allowed) {
       $symb=$ENV{'form.grade_symb'};
       $courseid=$ENV{'form.grade_courseid'};
@@ -1435,7 +1451,11 @@ sub whichuser {
       $name=$ENV{'form.grade_username'};
     }
   } else {
-      $symb=&Apache::lonnet::symbread();
+      if (!$passedsymb) {
+          $symb=&Apache::lonnet::symbread();
+      } else {
+          $symb=$passedsymb;
+      }
       $courseid=$ENV{'request.course.id'};
       $domain=$ENV{'user.domain'};
       $name=$ENV{'user.name'};