--- loncom/xml/lonxml.pm	2003/01/09 22:45:50	1.221.2.1
+++ loncom/xml/lonxml.pm	2003/01/15 23:59:27	1.225
@@ -1,7 +1,7 @@
 # The LearningOnline Network with CAPA
 # XML Parser Module 
 #
-# $Id: lonxml.pm,v 1.221.2.1 2003/01/09 22:45:50 albertel Exp $
+# $Id: lonxml.pm,v 1.225 2003/01/15 23:59:27 www Exp $
 #
 # Copyright Michigan State University Board of Trustees
 #
@@ -192,7 +192,8 @@ sub xmlend {
               my $idx;
               for ($idx=1;$idx<=$contrib{'version'};$idx++) {
 		my $hidden=($contrib{'hidden'}=~/\.$idx\./);
-		unless (($hidden) && (!$seeid)) {
+		my $deleted=($contrib{'deleted'}=~/\.$idx\./);
+		unless ((($hidden) && (!$seeid)) || ($deleted)) {
                  my $message=$contrib{$idx.':message'};
                  $message=~s/\n/\<br \/\>/g;
 		 $message=&Apache::lontexconvert::msgtexconverted($message);
@@ -226,8 +227,10 @@ sub xmlend {
                           } else {
                              $sender.=' <a href="/adm/feedback?hide='.
 				 $symb.':::'.$idx.'">Hide</a>';
-			  }
-                      }                   
+			  }                     
+                          $sender.=' <a href="/adm/feedback?deldisc='.
+				 $symb.':::'.$idx.'">Delete</a>';
+                      }
                   } else {
                       if ($screenname) {
 			  $sender='<i>'.$screenname.'</i>';
@@ -405,8 +408,7 @@ sub registerurl {
     }
     if ($Apache::lonxml::registered && !$forcereg) { return ''; }
     $Apache::lonxml::registered=1;
-    my $nothing='';
-    if ($ENV{'browser.type'} eq 'explorer') { $nothing='javascript:void(0);'; }
+    my $reopen=&Apache::lonmenu::reopenmenu();
     my $newmail='';
     if (&Apache::lonmsg::newmail()) { 
        $newmail='menu.setstatus("you have","messages");';
@@ -496,7 +498,7 @@ ENDPARM
 // BEGIN LON-CAPA Internal
 
     function LONCAPAreg() {
-	  menu=window.open("$nothing","LONCAPAmenu","",false);
+	  menu=$reopen;
           menu.clearTimeout(menu.menucltim);
           $timesync
           $newmail
@@ -507,7 +509,7 @@ ENDPARM
           menu.currentStale=0;
           menu.clearbut(3,1);
           menu.switchbutton
-       (6,3,'catalog.gif','catalog','info','catalog_info()');
+       (6,3,'catalog.gif','catalog','info','catalog_info()','Show catalog information');
           menu.switchbutton
        (8,1,'eval.gif','evaluate','this','gopost("/adm/evaluate",currentURL)','Provide my evaluation of this resource');
           menu.switchbutton
@@ -529,7 +531,7 @@ ENDPARM
     }
 
     function LONCAPAstale() {
-	  menu=window.open("$nothing","LONCAPAmenu","",false);
+	  menu=$reopen
           menu.currentStale=1;
           if (menu.reloadURL!='' && menu.reloadURL!= null) { 
              menu.switchbutton
@@ -556,7 +558,7 @@ ENDREGTHIS
 // BEGIN LON-CAPA Internal
 
     function LONCAPAreg() {
-	  menu=window.open("$nothing","LONCAPAmenu","",false);
+	  menu=$reopen
           $timesync
           menu.currentStale=1;
           menu.clearbut(2,1);
@@ -771,7 +773,7 @@ sub inner_xmlparse {
       if ($token->[0] eq 'E') { 
 	&end_tag($stack,$parstack,$token);
       }
-    }
+    }	
     if ($#$pars > -1) {
 	pop @$pars;
 	pop @Apache::lonxml::pwd;
@@ -1113,7 +1115,9 @@ sub store_counter {
 sub get_all_text {
  my($tag,$pars)= @_;
  &Apache::lonxml::debug("Got a ".ref($pars));
+ my $gotfullstack=1;
  if (ref($pars) ne 'ARRAY') {
+     $gotfullstack=0;
      $pars=[$pars];
  }
  my $depth=0;
@@ -1145,7 +1149,16 @@ sub get_all_text {
        pop(@$pars);
        pop(@Apache::lonxml::pwd);
      }
-     if (($depth >=0) && ($#$pars == 0) ) { $top_empty=1; }
+     if (($depth >=0) && ($#$pars == 0) ) {        &debug("here4");$top_empty=1; }
+   }
+   if ($top_empty && $depth >= 0) {
+       #never found the end tag ran out of text, throw error send back blank
+       &error('Never found end tag for &lt;'.$tag.'&gt;');
+       if ($gotfullstack) {
+	   my $newstring='</'.$tag.'>'.$result;
+	   &Apache::lonxml::newparser($pars,\$newstring);
+       }
+       $result='';
    }
  } else {
      while ($#$pars > -1) {