--- 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 <show>no</show>
+    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 {