--- loncom/interface/lonmenu.pm	2006/03/16 22:21:15	1.167
+++ loncom/interface/lonmenu.pm	2006/04/20 02:58:17	1.174
@@ -1,7 +1,7 @@
 # The LearningOnline Network with CAPA
 # Routines to control the menu
 #
-# $Id: lonmenu.pm,v 1.167 2006/03/16 22:21:15 albertel Exp $
+# $Id: lonmenu.pm,v 1.174 2006/04/20 02:58:17 albertel Exp $
 #
 # Copyright Michigan State University Board of Trustees
 #
@@ -40,7 +40,6 @@ package Apache::lonmenu;
 
 use strict;
 use Apache::lonnet;
-use Apache::Constants qw(:common);
 use Apache::lonhtmlcommon();
 use Apache::loncommon();
 use Apache::lonenc();
@@ -50,9 +49,6 @@ use vars qw(@desklines $readdesk);
 
 
 my @inlineremote;
-my $font;
-my $tabbg;
-my $pgbg;
 
 # ================================================================ Little texts
 
@@ -68,11 +64,26 @@ sub initlittle {
                                        'groups' => 'Groups');
 }
 
+sub get_colors {
+    my ($font,$pgbg,$tabbg);
+    if ($env{'browser.interface'} eq 'textual') {
+	$pgbg='#FFFFFF';
+        $tabbg='#FFFFFF';
+	$font='#000000';
+    } else {
+	my $domain   =&Apache::loncommon::determinedomain();
+	my $function =&Apache::loncommon::get_users_function();
+	
+        $pgbg  =&Apache::loncommon::designparm($function.'.pgbg', $domain);
+        $tabbg =&Apache::loncommon::designparm($function.'.tabbg',$domain);
+        $font  =&Apache::loncommon::designparm($function.'.font', $domain);
+    }
+    return ($font,$pgbg,$tabbg);
+}
 # ============================= This gets called at the top of the body section
 
 sub menubuttons {
     my $forcereg=shift;
-    my $target  =shift;
     my $registration=shift;
     my $titletable=shift;
     &Apache::loncommon::get_unprocessed_cgi($ENV{'QUERY_STRING'},
@@ -107,11 +118,10 @@ sub menubuttons {
         }
     }
 
+    my ($font,$pgbg,$tabbg) = &get_colors();
+
     if ($env{'browser.interface'} eq 'textual') {
 # Textual display only
-        $pgbg='#FFFFFF';
-        $tabbg='#FFFFFF';
-	$font='#000000';
         if ($env{'request.course.id'}) {
 	    $navmaps=(<<ENDNAV);
 <a href="/adm/navmaps?postdata=$escurl&postsymb=$escsymb" target="_top">$lt{'nav'}</a>
@@ -153,27 +163,15 @@ $reloadlink $navmaps $docs $groups
 </script>
 $form
 ENDMAINMENU
-        if ($registration) { $output.=&innerregister($forcereg,$target); }
+        if ($registration) { $output.=&innerregister($forcereg); }
 	return $output."<hr />";
     } elsif ($env{'environment.remote'} eq 'off') {
 # Remote Control is switched off
 # figure out colors
 	my %lt=&initlittle();
-	my $function='student';
-        if ($env{'request.role'}=~/^(cc|in|ta|ep)/) {
-	    $function='coordinator';
-        }
-	if ($env{'request.role'}=~/^(su|dc|ad|li)/) {
-            $function='admin';
-        }
-        if (($env{'request.role'}=~/^(au|ca)/) ||
-            ($env{'request.noversionuri'}=~/^(\/priv|\~)/)) {
-            $function='author';
-        }
+
         my $domain=&Apache::loncommon::determinedomain();
-        $pgbg=&Apache::loncommon::designparm($function.'.pgbg',$domain);
-        $tabbg=&Apache::loncommon::designparm($function.'.tabbg',$domain);
-        $font=&Apache::loncommon::designparm($function.'.font',$domain);
+	my $function =&Apache::loncommon::get_users_function();
         my $link=&Apache::loncommon::designparm($function.'.link',$domain);
         my $alink=&Apache::loncommon::designparm($function.'.alink',$domain);
         my $vlink=&Apache::loncommon::designparm($function.'.vlink',$domain);
@@ -245,7 +243,7 @@ ENDCRELOAD
         }
         my $reg='';
         if ($registration) {
-           $reg=&innerregister($forcereg,$target,$titletable);
+           $reg=&innerregister($forcereg,$titletable);
         }
         my $form=&serverform();
 	my $utility=&utilityfunctions();
@@ -279,9 +277,9 @@ $groups
 <td bgcolor="$tabbg">
 <img align="right" src="$logo" alt="Logo" />
 <b>LON-CAPA</b></td>
-$form
 </tr>
 </table>
+$form
 <script type="text/javascript">
 // END LON-CAPA Internal
 </script>
@@ -295,20 +293,13 @@ ENDINLINEMENU
 # ====================================== This gets called in the header section
 
 sub registerurl {
-    my $forcereg=shift;
-    my $target = shift;
+    my ($forcereg) = @_;
     my $result = '';
     if ($env{'request.noversionuri'} eq '/res/adm/pages/menu.html') { return ''; }
     my $force_title='';
     if ($env{'request.state'} eq 'construct') {
 	$force_title=&Apache::lonxml::display_title();
     }
-    if ($target eq 'edit') {
-        $result .="<script type=\"text/javascript\">\n".
-            "if (typeof swmenu != 'undefined') {swmenu.currentURL=null;}\n".
-            &Apache::loncommon::browser_and_searcher_javascript().
-                "\n</script>\n";
-    }
     if (($env{'browser.interface'} eq 'textual') ||
         ($env{'environment.remote'} eq 'off') ||
         ((($env{'request.publicaccess'}) || 
@@ -319,10 +310,8 @@ sub registerurl {
           '<script type="text/javascript">function LONCAPAreg(){;} function LONCAPAstale(){}</script>'.$force_title;
     }
 # Graphical display after login only
-    if ($Apache::lonxml::registered && !$forcereg) { return ''; }
-    if ($target ne 'edit') {
-	$result.=&innerregister($forcereg,$target);
-    }
+    if ($env{'request.registered'} && !$forcereg) { return ''; }
+    $result.=&innerregister($forcereg);
     return $result.$force_title;
 }
 
@@ -330,9 +319,7 @@ sub registerurl {
 # =========== and in the body of the document
 
 sub innerregister {
-    my $forcereg=shift;
-    my $target = shift;
-    my $titletable = shift;
+    my ($forcereg, $titletable) = @_;
     my $result = '';
     my ($uname,$thisdisfn);
     my $const_space = ($env{'request.state'} eq 'construct');
@@ -340,7 +327,7 @@ sub innerregister {
 
     if ($env{'request.noversionuri'} eq '/res/adm/pages/menu.html') { return ''; }
 
-    $Apache::lonxml::registered=1;
+    $env{'request.registered'} = 1;
 
     my $textinter=($env{'browser.interface'} eq 'textual');
     my $noremote=($env{'environment.remote'} eq 'off');
@@ -352,6 +339,8 @@ sub innerregister {
 
     my $reopen=&Apache::lonmenu::reopenmenu();
 
+    my ($font,$pgbg,$tabbg) = &get_colors();
+
     my $newmail='';
     if ($noremote) {
 	$newmail='<table bgcolor="'.$pgbg.'" border="0" cellspacing="1" cellpadding="1" width="100%"><tr><td bgcolor="'.$tabbg.'"><font face="Arial,Helvetica,sans-serif">';
@@ -838,6 +827,9 @@ sub switch {
     $bot=&mt($bot);
     $desc=&mt($desc);
     $img=&mt($img);
+
+    my ($font,$pgbg,$tabbg) = &get_colors();
+
     unless (($env{'browser.interface'} eq 'textual')  ||
             ($env{'environment.remote'} eq 'off')) {
 # Remote
@@ -1177,12 +1169,18 @@ function catalog_info() {
 function chat_win() {
    lonchat=window.open('/res/adm/pages/chatroom.html',"LONchat",'height=320,width=280,resizable=yes,location=no,menubar=no,toolbar=no');
 }
+
+function group_chat(group) {
+   var url = '/adm/groupchat?group='+group;
+   var winName = 'LONchat_'+group;
+   grpchat=window.open(url,winName,'height=320,width=280,resizable=yes,location=no,menubar=no,toolbar=no');
+}
 ENDUTILITY
 }
 
 sub serverform {
     return(<<ENDSERVERFORM);
-<form name="server" action="/adm/logout" method="post" target="_top">
+<form name="server" action="/adm/logout" method="POST" target="_top">
 <input type="hidden" name="postdata" value="none" />
 <input type="hidden" name="command" value="none" />
 <input type="hidden" name="url" value="none" />
@@ -1193,14 +1191,14 @@ ENDSERVERFORM
 
 sub constspaceform {
     return(<<ENDCONSTSPACEFORM);
-<form name="constspace" action="/adm/logout" method="post" target="_top">
+<form name="constspace" action="/adm/logout" method="POST" target="_top">
 <input type="hidden" name="filename" value="" />
 </form>
-<form name="cstrdelete" action="/adm/cfile" method="post" target="_top">
+<form name="cstrdelete" action="/adm/cfile" method="POST" target="_top">
 <input type="hidden" name="action" value="delete" /> 
 <input type="hidden" name="filename" value="" />
 </form>
-<form name="cstrprint" action="/adm/printout" target="_parent" method="post">
+<form name="cstrprint" action="/adm/printout" target="_parent" method="POST">
 <input type="hidden" name="postdata" value="" />
 <input type="hidden" name="curseed" value="" />
 <input type="hidden" name="problemtype" value="" />
@@ -1220,56 +1218,6 @@ sub get_nav_status {
     return $navstatus;
 }
 
-# ================================================ Handler when called directly
-
-
-sub handler {
-    my $r = shift;
-    &Apache::loncommon::no_cache($r);
-    &Apache::loncommon::content_type($r,'text/html');
-    $r->send_http_header;
-    return OK if $r->header_only;
-
-    my $form;
-    if ($env{'environment.remote'} ne 'off' &&
-	$env{'browser.interface'} ne 'textual') {
-	$form=&serverform();
-    }
-    my $function='student';
-    if ($env{'request.role'}=~/^(cc|in|ta|ep)/) {
-	$function='coordinator';
-    }
-    if ($env{'request.role'}=~/^(su|dc|ad|li)/) {
-	$function='admin';
-    }
-    if (($env{'request.role'}=~/^(au|ca)/) ||
-	($env{'request.noversionuri'}=~/^(\/priv|\~)/)) {
-	$function='author';
-    }
-    my $domain=&Apache::loncommon::determinedomain();
-    $pgbg=&Apache::loncommon::designparm($function.'.pgbg',$domain);
-    $tabbg=&Apache::loncommon::designparm($function.'.tabbg',$domain);
-    $font=&Apache::loncommon::designparm($function.'.font',$domain);
-    my $script_tag;
-    if ($env{'environment.remote'} ne 'off') {
-        my $utility=&utilityfunctions('/adm/menu');
-        $script_tag=(<<ENDSCRIPT);
-<script type="text/javascript">
-$utility
-</script>
-ENDSCRIPT
-    }
-# ---- Print the screen, pretend to be in text mode to generate text-based menu
-    unless ($env{'browser.interface'} eq 'textual') {
-	$env{'browser.interface'}='faketextual';
-	$env{'environment.remote'}='off';
-    }
-    $r->print(&Apache::loncommon::start_page('Main Menu',$script_tag));
-    $r->print('<table>'.&inlinemenu().'</table>'.$form);
-    $r->print(&Apache::loncommon::end_page());
-    return OK;
-}
-
 # ================================================================ Main Program
 
 BEGIN {