--- loncom/xml/lonxml.pm 2001/05/13 20:01:11 1.74 +++ loncom/xml/lonxml.pm 2001/05/25 14:02:10 1.77 @@ -10,7 +10,7 @@ package Apache::lonxml; use vars -qw(@pwd @outputstack $redirection $import @extlinks $metamode $evaluate %insertlist); +qw(@pwd @outputstack $redirection $import @extlinks $metamode $evaluate %insertlist @namespace); use strict; use HTML::TokeParser; use Safe; @@ -60,6 +60,9 @@ $evaluate = 1; # data structure for eidt mode, determines what tags can go into what other tags %insertlist=(); +#stores the list of active tag namespaces +@namespace=(); + sub xmlbegin { my $output=''; if ($ENV{'browser.mathml'}) { @@ -165,6 +168,7 @@ sub xmlparse { my $safehole = new Safe::Hole; $safeeval->permit("entereval"); $safeeval->permit(":base_math"); + $safeeval->permit("sort"); $safeeval->deny(":base_io"); $safehole->wrap(\&Apache::lonnet::EXT,$safeeval,'&EXT'); #need to inspect this class of ops @@ -376,6 +380,7 @@ sub callsub { } elsif ($target eq 'modified') { if ($token->[0] eq 'S') { $currentstring = $token->[4]; + $currentstring.=&Apache::edit::handle_insert(); } else { $currentstring = $token->[2]; } @@ -643,27 +648,35 @@ sub warning { } sub register_insert { - my @data = split /\n/, &Apache::lonnet::getfile('/home/httpd/html/res/adm/includes/insertlist.tab'); + my @data = split /\n/, &Apache::lonnet::getfile('/home/httpd/lonTabs/insertlist.tab'); my $i; + my $tagnum=0; my @order; for ($i=0;$i < $#data; $i++) { my $line = $data[$i]; if ( $line =~ /^\#/ || $line =~ /^\s*\n/) { next; } if ( $line =~ /TABLE/ ) { last; } my ($tag,$descrip,$function,$show) = split(/,/, $line); - if ($show eq 'no') { next; } - $insertlist{"$tag.description"} = $descrip; - $insertlist{"$tag.function"} = $function; - push (@order,$tag); + $insertlist{"$tagnum.tag"} = $tag; + $insertlist{"$tagnum.description"} = $descrip; + $insertlist{"$tagnum.function"} = $function; + $insertlist{"$tagnum.show"}= $show; + $tagnum++; } + $i++; #skipping TABLE line + $tagnum = 0; for (;$i < $#data;$i++) { my $line = $data[$i]; - my ($tag,@which) = split(/ +/,$line); + my ($mnemonic,@which) = split(/ +/,$line); + my $tag = $insertlist{"$tagnum.tag"}; for (my $j=0;$j <$#which;$j++) { if ( $which[$j] eq 'Y' ) { - push(@{ $insertlist{"$tag.which"} },$order[$j]); + if ($insertlist{"$j.show"} ne 'no') { + push(@{ $insertlist{"$tag.which"} },$j); + } } } + $tagnum++; } } 1;