--- loncom/xml/lonxml.pm 2007/02/23 00:39:35 1.440 +++ loncom/xml/lonxml.pm 2007/04/07 00:04:40 1.442 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA # XML Parser Module # -# $Id: lonxml.pm,v 1.440 2007/02/23 00:39:35 albertel Exp $ +# $Id: lonxml.pm,v 1.442 2007/04/07 00:04:40 albertel Exp $ # # Copyright Michigan State University Board of Trustees # @@ -585,17 +585,23 @@ sub callsub { } elsif ($token->[0] eq 'E') { $currentstring = &Apache::edit::tag_end($target,$token); } - } elsif ($target eq 'modified') { + } + } + if ($target eq 'modified' && $nodefault eq '') { + if ($currentstring eq '') { + if ($token->[0] eq 'S') { + $currentstring = $token->[4]; + } elsif ($token->[0] eq 'E') { + $currentstring = $token->[2]; + } else { + $currentstring = $token->[2]; + } + } if ($token->[0] eq 'S') { - $currentstring = $token->[4]; $currentstring.=&Apache::edit::handle_insert(); } elsif ($token->[0] eq 'E') { - $currentstring = $token->[2]; $currentstring.=&Apache::edit::handle_insertafter($token->[1]); - } else { - $currentstring = $token->[2]; } - } } } use strict 'refs'; @@ -1736,6 +1742,7 @@ sub register_insert_xml { my $parser = HTML::LCParser->new($Apache::lonnet::perlvar{'lonTabDir'} .'/insertlist.xml'); my ($tagnum,$in_help)=(0,0); + my @alltags; my $tag; while (my $token = $parser->get_token()) { if ($token->[0] eq 'S') { @@ -1744,6 +1751,7 @@ sub register_insert_xml { $tag = $token->[2]{'name'}; $insertlist{"$tagnum.tag"} = $tag; $insertlist{"$tag.num"} = $tagnum; + push(@alltags,$tag); } elsif ($in_help && $token->[1] eq 'file') { $key = $tag.'.helpfile'; } elsif ($in_help && $token->[1] eq 'description') { @@ -1757,11 +1765,7 @@ sub register_insert_xml { } elsif ($token->[1] eq 'help') { $in_help=1; } elsif ($token->[1] eq 'allow') { - my $allow = $parser->get_text(); - foreach my $element (split(',',$allow)) { - $element =~ s/(^\s*|\s*$ )//gx; - push(@{ $insertlist{$tag.'.which'} },$element); - } + $key = $tag.'.allow'; } if (defined($key)) { $insertlist{$key} = $parser->get_text(); @@ -1776,6 +1780,17 @@ sub register_insert_xml { } } } + + # parse the allows and ignore tags set to no + foreach my $tag (@alltags) { + my $allow = $insertlist{"$tag.allow"}; + foreach my $element (split(',',$allow)) { + $element =~ s/(^\s*|\s*$ )//gx; + if ($insertlist{"$element.show"} ne 'no') { + push(@{ $insertlist{$tag.'.which'} },$element); + } + } + } } sub register_insert {