--- 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'};