--- loncom/xml/lonxml.pm 2001/05/04 21:17:24 1.72 +++ loncom/xml/lonxml.pm 2001/05/15 20:50:03 1.76 @@ -6,10 +6,11 @@ # 6/1/1 Gerd Kortemeyer # 2/21,3/13 Guy # 3/29,5/4 Gerd Kortemeyer +# 5/10 Scott Harrison package Apache::lonxml; use vars -qw(@pwd @outputstack $redirection $import @extlinks $metamode $evaluate); +qw(@pwd @outputstack $redirection $import @extlinks $metamode $evaluate %insertlist @namespace); use strict; use HTML::TokeParser; use Safe; @@ -56,6 +57,11 @@ $metamode = 0; # turns on and of run::evaluate actually derefencing var refs $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=''; @@ -364,14 +370,16 @@ sub callsub { &Apache::lonxml::debug("nodefalt:$nodefault:"); if ($currentstring eq '' && $nodefault eq '') { if ($target eq 'edit') { + &Apache::lonxml::debug("doing default edit for $token->[1]"); if ($token->[0] eq 'S') { - $currentstring = &Apache::edit::tag_start($token,$target); + $currentstring = &Apache::edit::tag_start($target,$token); } elsif ($token->[0] eq 'E') { - $currentstring = &Apache::edit::tag_end($token,$target); + $currentstring = &Apache::edit::tag_end($target,$token); } } elsif ($target eq 'modified') { if ($token->[0] eq 'S') { $currentstring = $token->[4]; + $currentstring.=&Apache::edit::handle_insert(); } else { $currentstring = $token->[2]; } @@ -611,7 +619,7 @@ sub debug { } sub error { - if ($Apache::lonxml::debug eq 1) { + if (($Apache::lonxml::debug eq 1) || ($ENV{'request.state'} eq 'construct') ) { print "ERROR:".$_[0]."
\n"; } else { print "An Error occured while processing this resource. The instructor has been notified.
"; @@ -625,19 +633,51 @@ sub error { &Apache::lonmsg::user_normal_msg($user,$domain,"Error in $ENV{'request.filename'}",$_[0]); } } - + #FIXME probably shouldn't have me get everything forever. &Apache::lonmsg::user_normal_msg('albertel','msu',"Error in $ENV{'request.filename'}",$_[0]); - #&Apache::lonmsg::user_normal_msg('albertel','103',"Error in $ENV{'request.filename'}",$_[0]); + #&Apache::lonmsg::user_normal_msg('albertel','103',"Error in $ENV{'request.filename'}",$_[0]); } } sub warning { - #if ($Apache::lonxml::debug eq 1) { + if ($ENV{'request.state'} eq 'construct') { print "WARNING:".$_[0]."
\n"; - # } + } } +sub register_insert { + 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); + $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 ($mnemonic,@which) = split(/ +/,$line); + my $tag = $insertlist{"$tagnum.tag"}; + for (my $j=0;$j <$#which;$j++) { + if ( $which[$j] eq 'Y' ) { + if ($insertlist{"$j.show"} ne 'no') { + push(@{ $insertlist{"$tag.which"} },$j); + } + } + } + $tagnum++; + } +} 1; __END__