--- loncom/interface/lonmenu.pm	2007/08/30 22:35:41	1.225
+++ loncom/interface/lonmenu.pm	2007/10/30 23:46:02	1.230
@@ -1,7 +1,7 @@
 # The LearningOnline Network with CAPA
 # Routines to control the menu
 #
-# $Id: lonmenu.pm,v 1.225 2007/08/30 22:35:41 albertel Exp $
+# $Id: lonmenu.pm,v 1.230 2007/10/30 23:46:02 albertel Exp $
 #
 # Copyright Michigan State University Board of Trustees
 #
@@ -121,9 +121,7 @@ sub menubuttons {
 	    $navmaps=(<<ENDNAV);
 <a href="/adm/navmaps?postdata=$escurl&amp;postsymb=$escsymb" target="_top">$lt{'nav'}</a>
 ENDNAV
-            if (($env{'request.noversionuri'}=~/^\/adm\//) &&
-         ($env{'request.noversionuri'}!~/^\/adm\/wrapper\//) &&
-         ($env{'request.noversionuri'}!~/^\/adm\/.*\/(smppg|bulletinboard|aboutme)(\?|$)/)) {
+            if (&show_return_link()) {
                 my $escreload=&escape('return:');
                 $reloadlink=(<<ENDRELOAD);
 <a href="/adm/flip?postdata=$escreload" target="_top">$lt{'ret'}</a>
@@ -196,7 +194,7 @@ ENDINLINEMENU
 	    $navmaps=(<<ENDNAV);
 <td><a href="$link" target="_top">$lt{'nav'}</a></td>
 ENDNAV
-my $is_group = (&Apache::loncommon::course_type() eq 'Group');
+            my $is_group = (&Apache::loncommon::course_type() eq 'Group');
 	    if (&Apache::lonnet::allowed('mdc',$env{'request.course.id'})) {
                 my $text = ($is_group) ? $lt{'gdoc'} : $lt{'docs'};
 		$docs=(<<ENDDOCS);
@@ -208,16 +206,7 @@ ENDDOCS
 <td><a href="/adm/coursegroups" target="_top">$lt{'groups'}</a></td>
 ENDGROUPS
             }
-	    if (
-		($env{'request.noversionuri'}=~m[^/(res|public)/] &&
-		 $env{'request.symb'} eq '')
-		||
-		(($env{'request.noversionuri'}=~/^\/adm\//) &&
-		 ($env{'request.noversionuri'}!~/^\/adm\/wrapper\//) &&
-		 ($env{'request.noversionuri'}!~
-		        m[^/adm/.*/(smppg|bulletinboard|aboutme)($|\?)])
-		  )
-		 ) {
+	    if (&show_return_link()) {
                 my $escreload=&escape('return:');
                 $reloadlink=(<<ENDRELOAD);
 <td><a href="/adm/flip?postdata=$escreload" target="_top">$lt{'ret'}</a></td>
@@ -274,6 +263,19 @@ ENDINLINEMENU
     }
 }
 
+sub show_return_link {
+    return (($env{'request.noversionuri'}=~m{^/(res|public)/} &&
+	     $env{'request.symb'} eq '')
+	    ||
+	    ($env{'request.noversionuri'}=~ m{^/cgi-bin/printout.pl})
+	    ||
+	    (($env{'request.noversionuri'}=~/^\/adm\//) &&
+	     ($env{'request.noversionuri'}!~/^\/adm\/wrapper\//) &&
+	     ($env{'request.noversionuri'}!~
+	      m[^/adm/.*/(smppg|bulletinboard|aboutme)($|\?)])
+	     ));
+}
+
 # ====================================== This gets called in the header section
 
 sub registerurl {
@@ -573,8 +575,8 @@ ENDLINE
 $timesync
 $tablestart
 $inlinebuttons
-$newmail
 $tableend
+$newmail
 <script type="text/javascript">
 // END LON-CAPA Internal
 </script>
@@ -793,12 +795,19 @@ sub load_remote_msg {
 <p>$link</p>
 ENDREMOTEFORM
 }
+
+sub get_menu_name {
+    my $hostid = $Apache::lonnet::perlvar{'lonHostID'};
+    $hostid =~ s/\W//g;
+    return 'LCmenu'.$hostid;
+}
+
 # ================================================================= Reopen menu
 
 sub reopenmenu {
    if (($env{'browser.interface'} eq 'textual') ||
        ($env{'environment.remote'} eq 'off')) { return ''; }
-   my $menuname='LCmenu'.$Apache::lonnet::perlvar{'lonHostID'};
+   my $menuname = &get_menu_name();
    my $nothing = &Apache::lonhtmlcommon::javascript_nothing();
    return('window.open('.$nothing.',"'.$menuname.'","",false);');
 } 
@@ -811,7 +820,7 @@ sub open {
         ($env{'environment.remote'} eq 'off')) { 
 	return '<script type="text/javascript">self.name="loncapaclient";</script>';
     }
-    my $menuname='LCmenu'.$Apache::lonnet::perlvar{'lonHostID'};
+    my $menuname = &get_menu_name();
     
 #    unless (shift eq 'unix') {
 # resizing does not work on linux because of virtual desktop sizes
@@ -887,8 +896,6 @@ sub switch {
        my $text=$top.' '.$bot;
        $text=~s/\s*\-\s*//gs;
 
-       my $lonhttpdPort=$Apache::lonnet::perlvar{'lonhttpdPort'};
-       if (!defined($lonhttpdPort)) { $lonhttpdPort='8080'; }
        my $pic=
 	   '<img alt="'.$text.'" src="'.
 	   &Apache::loncommon::lonhttpdurl('/res/adm/pages/'.$img).
@@ -941,7 +948,7 @@ sub secondlevel {
 }
 
 sub openmenu {
-    my $menuname='LCmenu'.$Apache::lonnet::perlvar{'lonHostID'};
+    my $menuname = &get_menu_name();
     if (($env{'browser.interface'} eq 'textual') ||
         ($env{'environment.remote'} eq 'off')) { return ''; }
     my $nothing = &Apache::lonhtmlcommon::javascript_nothing();
@@ -1091,7 +1098,7 @@ sub rawconfig {
 sub close {
     if (($env{'browser.interface'} eq 'textual') ||
         ($env{'environment.remote'} eq 'off')) { return ''; }
-    my $menuname='LCmenu'.$Apache::lonnet::perlvar{'lonHostID'};
+    my $menuname = &get_menu_name();
     return(<<ENDCLOSE);
 <script type="text/javascript">
 window.status='Accessing Remote Control';