--- loncom/interface/lonmenu.pm	2009/05/19 14:05:19	1.267
+++ loncom/interface/lonmenu.pm	2009/08/12 18:38:04	1.279
@@ -1,7 +1,7 @@
 # The LearningOnline Network with CAPA
 # Routines to control the menu
 #
-# $Id: lonmenu.pm,v 1.267 2009/05/19 14:05:19 droeschl Exp $
+# $Id: lonmenu.pm,v 1.279 2009/08/12 18:38:04 raeburn Exp $
 #
 # Copyright Michigan State University Board of Trustees
 #
@@ -26,15 +26,10 @@
 # http://www.lon-capa.org/
 #
 #
-# There are two parameters controlling the action of this module:
-#
-# browser.interface - if this is 'textual', it overrides the second parameter
-# and goes to screen reader PDA mode
+# There is one parameter controlling the action of this module:
 #
 # environment.remote - if this is 'on', the routines controll the remote
-# control, otherwise they render the main window controls; ignored it
-# browser.interface is 'textual'
-#
+# control, otherwise they render the main window controls; 
 
 =head1 NAME
 
@@ -148,6 +143,10 @@ use vars qw(@desklines %category_names %
 
 my @inlineremote;
 
+#
+# This routine returns a translated hash for the menu items in the top inline menu row
+# Probably should be in mydesk.tab
+
 sub initlittle {
     return &Apache::lonlocal::texthash('ret' => 'Return to Last Location',
 				       'nav' => 'Navigate Contents',
@@ -166,8 +165,10 @@ sub initlittle {
 
 sub menubuttons {
     my $forcereg=shift;
-    my $registration=shift;
     my $titletable=shift;
+#
+# Early-out for pages that should not have a menu, triggered by query string "inhibitmenu=yes"
+#
     &Apache::loncommon::get_unprocessed_cgi($ENV{'QUERY_STRING'},
 					    ['inhibitmenu']);
     if (($env{'form.inhibitmenu'} eq 'yes') ||
@@ -184,6 +185,9 @@ sub menubuttons {
     my $role_selector;
     my $showgroups=0;
     my ($cnum,$cdom);
+#
+# if the URL is hidden, symbs and the non-versioned version of the URL would be encrypted
+#
     my $escurl=&escape(&Apache::lonenc::check_encrypt($env{'request.noversionuri'}));
     my $escsymb=&escape(&Apache::lonenc::check_encrypt($env{'request.symb'}));
 
@@ -192,6 +196,9 @@ sub menubuttons {
 	$logo.'" alt="LON-CAPA Logo" class="LC_noBorder" /></a>';
 
     if ($env{'request.state'} eq 'construct') {
+#
+# We are in construction space
+#
         if (($env{'request.noversionuri'} eq '') || (!defined($env{'request.noversionuri'}))) {
             my $returnurl = $env{'request.filename'};
             $returnurl =~ s:^/home/([^/]+)/public_html/(.*)$:/priv/$1/$2:;
@@ -199,6 +206,9 @@ sub menubuttons {
         }
     }
     if ($env{'request.course.id'}) {
+#
+# We are in a course
+#
         $cnum = $env{'course.'.$env{'request.course.id'}.'.num'};
         $cdom = $env{'course.'.$env{'request.course.id'}.'.domain'};
         my %coursegroups;
@@ -230,15 +240,11 @@ sub menubuttons {
 
         if ($env{'user.name'} eq 'public' && $env{'user.domain'} eq 'public') {
             return (<<ENDINLINEMENU);
-   <table id="LC_top_nav">
-    <tr>
-      <td>$logo</td>
-      <td></td>
-      <td class="LC_top_nav_login">
-        <a href="/adm/roles" target="_top">$lt{'login'}</a>
-     </td>
-    </tr>
-  </table>
+            <ol class="LC_smallMenu LC_right">
+                <li>$logo</li>
+                <li><a href="/adm/roles" target="_top">$lt{'login'}</a></li>
+            </ol>
+            <hr />
 ENDINLINEMENU
         }
         $roles = '<a href="/adm/roles" target="_top">'.$lt{'roles'}.'</a>';
@@ -281,24 +287,20 @@ ENDRELOAD
 <li><a href="/adm/flip?postdata=$escreload" target="_top">$lt{'ret'}</a></li>
 ENDCRELOAD
         }
-        my $reg='';
-        if ($registration) {
-           $reg=&innerregister($forcereg,$titletable);
-        }
-        my $form=&serverform();
-	my $utility=&utilityfunctions();
-
-	my $messagelink = "";
-	if(&Apache::lonmsg::mynewmail()){
-		$messagelink = '<a href="javascript:go(\'/adm/communicate\');">Message(new)</a>'
-	}else{
-		$messagelink = '<a href="javascript:go(\'/adm/communicate\');">Message</a>'
-	}
-        my $helplink=&Apache::loncommon::top_nav_help('Help');
+    my $reg     = $forcereg ? &innerregister($forcereg,$titletable) : '';
+    my $form    = &serverform();
+    my $utility = &utilityfunctions();
+
+    #Prepare the message link that indicates the arrival of new mail
+    my $messagelink = Apache::lonmsg::mynewmail() ? "Message (new)" : "Message";
+       $messagelink = '<a href="javascript:go(\'/adm/communicate\');">'
+                      . mt($messagelink) .'</a>';
+
+    my $helplink = &Apache::loncommon::top_nav_help('Help');
 	return (<<ENDINLINEMENU);
 <script type="text/javascript">
-// BEGIN LON-CAPA Internal
 // <![CDATA[
+// BEGIN LON-CAPA Internal
 $utility
 // ]]>
 </script>
@@ -350,14 +352,19 @@ sub registerurl {
     if ($env{'request.state'} eq 'construct') {
 	$force_title=&Apache::lonxml::display_title();
     }
-    if (($env{'browser.interface'} eq 'textual') ||
-        ($env{'environment.remote'} eq 'off') ||
+    if (($env{'environment.remote'} eq 'off') ||
         ((($env{'request.publicaccess'}) || 
          (!&Apache::lonnet::is_on_map(
 	   &unescape($env{'request.noversionuri'})))) &&
         (!$forcereg))) {
- 	return $result.
-          '<script type="text/javascript">function LONCAPAreg(){;} function LONCAPAstale(){}</script>'.$force_title;
+ 	return
+        $result
+       .'<script type="text/javascript">'."\n"
+       .'// <![CDATA['."\n"
+       .'function LONCAPAreg(){;} function LONCAPAstale(){}'."\n"
+       .'// ]]>'."\n"
+       .'</script>'
+       .$force_title;
     }
 # Graphical display after login only
     if ($env{'request.registered'} && !$forcereg) { return ''; }
@@ -383,12 +390,13 @@ sub innerregister {
     my $reopen=&Apache::lonmenu::reopenmenu();
 
     my $newmail='';
-    my $breadcrumb;
 
     if (&Apache::lonmsg::newmail() && !$noremote) { 
         # We have new mail and remote is up
         $newmail= 'swmenu.setstatus("you have","messages");';
     } 
+
+    my $breadcrumb;
     if ($noremote
 	     && ($env{'request.symb'}) 
 	     && ($env{'request.course.id'})) {
@@ -398,12 +406,17 @@ sub innerregister {
 
         my $maptitle = &Apache::lonnet::gettitle($mapurl);
         my $restitle = &Apache::lonnet::gettitle(&Apache::lonnet::symbread());
-        my @crumbs = ({text => mt("Course Content"), href => "Javascript:gonav('/adm/navmaps')"}, 
-                      {text => '...'});
-        push @crumbs, {text => $maptitle} if ($maptitle 
-                                              && $maptitle ne 'default.sequence' 
-                                              && $maptitle ne $coursetitle);
-        push @crumbs, {text => $restitle} if $restitle; 
+        my @crumbs = ({text  => "Course Content", 
+                       href  => "Javascript:gonav('/adm/navmaps')"}, 
+                      {text  => '...',
+                       no_mt => 1});
+
+        push @crumbs, {text => $maptitle, no_mt => 1} if ($maptitle 
+                                                   && $maptitle ne 'default.sequence' 
+                                                   && $maptitle ne $coursetitle);
+
+        push @crumbs, {text => $restitle, no_mt => 1} if $restitle; 
+
         Apache::lonhtmlcommon::clear_breadcrumbs();
         Apache::lonhtmlcommon::add_breadcrumb(@crumbs);
         $breadcrumb .= Apache::lonhtmlcommon::breadcrumbs(undef,undef,0);
@@ -458,6 +471,9 @@ sub innerregister {
         }
         if ($env{'user.author'}) {
             if ($env{'request.role'}=~/^(aa|ca|au)/) {
+#
+# We have the role of an author
+#
                 # Set defaults for authors
                 my ($top,$bottom) = ('con-','struct');
                 my $action = "go('/priv/".$env{'user.name'}."');";
@@ -486,6 +502,11 @@ sub innerregister {
                     $noeditbutton = 0;
                 }
             }
+#
+# We are an author for some stuff, but currently do not have the role of author.
+# Figure out if we have authoring privileges for the resource we are looking at.
+# This should maybe become a privilege check in lonnet
+#
             ##
             ## Determine if user can edit url.
             ##
@@ -544,6 +565,9 @@ sub innerregister {
 # Prepare the rest of the buttons
         my $menuitems;
         if ($const_space) {
+#
+# We are in construction space
+#
 	    my ($uname,$thisdisfn) =
 		($env{'request.filename'}=~m|^/home/([^/]+)/public_html/(.*)|);
             my $currdir = '/priv/'.$uname.'/'.$thisdisfn;
@@ -553,6 +577,9 @@ sub innerregister {
                 $currdir =~ s|[^/]+$||;
 		my $cleandisfn = &Apache::loncommon::escape_single($thisdisfn);
 		my $esc_currdir = &Apache::loncommon::escape_single($currdir);
+#
+# Probably should be in mydesk.tab
+#
                 $menuitems=(<<ENDMENUITEMS);
 s&6&1&list.gif&list[_1]&dir[_1]&golist('$esc_currdir')&List current directory
 s&6&2&rtrv.gif&retrieve[_1]&version[_1]&gocstr('/adm/retrieve','/~$uname/$cleandisfn')&Retrieve old version
@@ -563,6 +590,10 @@ ENDMENUITEMS
             }
         } elsif ( defined($env{'request.course.id'}) && 
 		 $env{'request.symb'} ne '' ) {
+#
+# We are in a course and looking at a registred URL
+# Should probably be in mydesk.tab
+#
 	    $menuitems=(<<ENDMENUITEMS);
 c&3&1
 s&2&1&back.gif&backward[_1]&&gopost('/adm/flip','back:'+currentURL)&Go to the previous resource in the course sequence&&1
@@ -586,6 +617,13 @@ if(length($annotation) > 0){
 $menuitems.="&anno-[_1]&tations[_1]&annotate()&";
 $menuitems.="Make notes and annotations about this resource&&1\n";
 
+            unless ($noremote) { 
+                my $showreqcrs = &check_for_rcrs();
+                if ($showreqcrs) {
+                    $menuitems.="s&8&1&rcrs.gif&request[_1]&course[_16]".
+                                "&go('/adm/requestcourse')&Course requests\n";
+                }
+            }
             unless ($env{'request.noversionuri'}=~/\/(bulletinboard|smppg|navmaps|syllabus|aboutme)(\?|$)/) {
 		if (!$env{'request.enc'}) {
 		    $menuitems.=(<<ENDREALRES);
@@ -687,6 +725,7 @@ ENDREGTEXT
 	    $result = (<<ENDREGTHIS);
      
 <script type="text/javascript">
+// <![CDATA[
 // BEGIN LON-CAPA Internal
 var swmenu=null;
 
@@ -722,6 +761,7 @@ var swmenu=null;
       }
 
 // END LON-CAPA Internal 
+// ]]>
 </script>
 ENDREGTHIS
         }
@@ -729,7 +769,7 @@ ENDREGTHIS
     } else {
 # ========================================== This can or will not be registered
         if ($noremote) {
-# Not registered, textual
+# Not registered
             $result= (<<ENDDONOTREGTEXT);
 ENDDONOTREGTEXT
         } else {
@@ -737,6 +777,7 @@ ENDDONOTREGTEXT
            $result = (<<ENDDONOTREGTHIS);
 
 <script type="text/javascript">
+// <![CDATA[
 // BEGIN LON-CAPA Internal
 var swmenu=null;
 
@@ -761,6 +802,7 @@ var swmenu=null;
     }
 
 // END LON-CAPA Internal
+// ]]>
 </script>
 ENDDONOTREGTHIS
        }
@@ -820,8 +862,7 @@ sub unloadevents() {
 
 sub startupremote {
     my ($lowerurl)=@_;
-    if (($env{'browser.interface'} eq 'textual') ||
-        ($env{'environment.remote'} eq 'off')) {
+    if ($env{'environment.remote'} eq 'off') {
      return ('<meta HTTP-EQUIV="Refresh" CONTENT="0.5; url='.$lowerurl.'" />');
     }
 #
@@ -832,6 +873,7 @@ sub startupremote {
     my $message=&mt('"Waiting for Remote Control window to load: "+[_1]','waited');
     return(<<ENDREMOTESTARTUP);
 <script type="text/javascript">
+// <![CDATA[
 var timestart;
 function wheelswitch() {
     if (typeof(document.wheel) != 'undefined') {
@@ -882,6 +924,7 @@ function main() {
    wait();
 }
 
+// ]]>
 </script>
 ENDREMOTESTARTUP
 }
@@ -889,18 +932,21 @@ ENDREMOTESTARTUP
 sub setflags() {
     return(<<ENDSETFLAGS);
 <script type="text/javascript">
+// <![CDATA[
     menuloaded=0;
     tim=0;
+// ]]>
 </script>
 ENDSETFLAGS
 }
 
 sub maincall() {
-    if (($env{'browser.interface'} eq 'textual') ||
-        ($env{'environment.remote'} eq 'off')) { return ''; }
+    if ($env{'environment.remote'} eq 'off') { return ''; }
     return(<<ENDMAINCALL);
 <script type="text/javascript">
+// <![CDATA[
     main();
+// ]]>
 </script>
 ENDMAINCALL
 }
@@ -908,8 +954,7 @@ ENDMAINCALL
 sub load_remote_msg {
     my ($lowerurl)=@_;
 
-    if (($env{'browser.interface'} eq 'textual') ||
-        ($env{'environment.remote'} eq 'off')) { return ''; }
+    if ($env{'environment.remote'} eq 'off') { return ''; }
 
     my $esclowerurl=&escape($lowerurl);
     my $link=&mt('[_1]Continue[_2] on in Inline Menu mode'
@@ -933,8 +978,7 @@ sub get_menu_name {
 
 
 sub reopenmenu {
-   if (($env{'browser.interface'} eq 'textual') ||
-       ($env{'environment.remote'} eq 'off')) { return ''; }
+   if ($env{'environment.remote'} eq 'off') { return ''; }
    my $menuname = &get_menu_name();
    my $nothing = &Apache::lonhtmlcommon::javascript_nothing();
    return('window.open('.$nothing.',"'.$menuname.'","",false);');
@@ -943,9 +987,13 @@ sub reopenmenu {
 
 sub open {
     my $returnval='';
-    if (($env{'browser.interface'} eq 'textual') ||
-        ($env{'environment.remote'} eq 'off')) { 
-	return '<script type="text/javascript">self.name="loncapaclient";</script>';
+    if ($env{'environment.remote'} eq 'off') { 
+	return
+        '<script type="text/javascript">'."\n"
+       .'// <![CDATA['."\n"
+       .'self.name="loncapaclient";'."\n"
+       .'// ]]>'."\n"
+       .'</script>';
     }
     my $menuname = &get_menu_name();
     
@@ -958,11 +1006,13 @@ sub open {
 #}
 #ENDRESIZE
 #    }
-    $returnval.=(<<ENDOPEN);
+    $returnval=(<<ENDOPEN);
+// <![CDATA[
 window.status='Opening LON-CAPA Remote Control';
-var menu=window.open("/res/adm/pages/menu.html","$menuname",
+var menu=window.open("/res/adm/pages/menu.html?inhibitmenu=yes","$menuname",
 "height=375,width=150,scrollbars=no,menubar=no,top=5,left=5,screenX=5,screenY=5");
 self.name='loncapaclient';
+// ]]>
 ENDOPEN
     return '<script type="text/javascript">'.$returnval.'</script>';
 }
@@ -972,8 +1022,8 @@ ENDOPEN
 
 sub clear {
     my ($row,$col)=@_;
-    unless (($env{'browser.interface'} eq 'textual') ||
-            ($env{'environment.remote'} eq 'off')) {
+    unless ($env{'environment.remote'} eq 'off') {
+       if (($row<1) || ($row>13)) { return ''; }
        return "\n".qq(window.status+='.';swmenu.clearbut($row,$col););
    } else { 
        $inlineremote[10*$row+$col]='';
@@ -998,23 +1048,11 @@ sub switch {
     my $idx=10*$row+$col;
     $category_members{$cat}.=':'.$idx;
 
-    unless (($env{'browser.interface'} eq 'textual')  ||
-            ($env{'environment.remote'} eq 'off')) {
+    unless ($env{'environment.remote'} eq 'off') {
+       if (($row<1) || ($row>13)) { return ''; }
 # Remote
        return "\n".
  qq(window.status+='.';swmenu.switchbutton($row,$col,"$img","$top","$bot","$act","$desc"););
-   } elsif ($env{'browser.interface'} eq 'textual') {
-# Accessibility
-       if ($nobreak==2) { return ''; }
-       my $text=$top.' '.$bot;
-       $text=~s/\s*\-\s*//gs;
-       if ($nobreak) {
-	   $inlineremote[$idx]=
-	       '<a href="javascript:'.$act.';">'.$text.'</a>';
-       } else {
-	   $inlineremote[$idx]="\n<br />".
-	       $desc.' <a href="javascript:'.$act.';">'.$text.'</a>';
-       }
    } else {
 # Inline Remote
        if ($env{'environment.icons'} ne 'classic') {
@@ -1029,7 +1067,7 @@ sub switch {
 	   &Apache::loncommon::lonhttpdurl('/res/adm/pages/'.$img).
 	   '" align="'.($nobreak==3?'right':'left').'" class="LC_noBorder" />';
        if ($env{'browser.interface'} eq 'faketextual') {
-# Accessibility
+# Main Menu
 	   if ($nobreak==3) {
 	       $inlineremote[$idx]="\n".
 		   '<td class="LC_menubuttons_text" align="right">'.$text.
@@ -1077,8 +1115,7 @@ sub secondlevel {
 
 sub openmenu {
     my $menuname = &get_menu_name();
-    if (($env{'browser.interface'} eq 'textual') ||
-        ($env{'environment.remote'} eq 'off')) { return ''; }
+    if ($env{'environment.remote'} eq 'off') { return ''; }
     my $nothing = &Apache::lonhtmlcommon::javascript_nothing();
     return "window.open(".$nothing.",'".$menuname."');";
 }
@@ -1086,6 +1123,7 @@ sub openmenu {
 sub inlinemenu {
     undef(@inlineremote);
     undef(%category_members);
+# calling rawconfig with "1" will evaluate mydesk.tab, even if there is no active remote control
     &rawconfig(1);
     my $output='<table id="LC_mainmenu"><tr>';
     for (my $col=1; $col<=2; $col++) {
@@ -1094,7 +1132,7 @@ sub inlinemenu {
             foreach my $cat (keys(%category_members)) {
                if ($category_positions{$cat} ne "$col,$row") { next; }
                #$output.='<table><tr><td colspan="4" class="LC_menubuttons_category">'.&mt($category_names{$cat}).'</td></tr>';
-               $output.='<div class="LC_ContentBoxSpecial">';
+               $output.='<div class="LC_Box">';
 	       $output.='<h4 class="LC_hcell">'.&mt($category_names{$cat}).'</h4>';
                $output.='<table>';
                my %active=();
@@ -1117,10 +1155,14 @@ sub inlinemenu {
 }
 
 sub rawconfig {
+#
+# This evaluates mydesk.tab
+# Need to add more positions and more privileges to deal with all
+# menu items.
+#
     my $textualoverride=shift;
     my $output='';
-    unless (($env{'browser.interface'} eq 'textual') ||
-            ($env{'environment.remote'} eq 'off')) {
+    unless ($env{'environment.remote'} eq 'off') {
        $output.=
  "window.status='Opening Remote Control';var swmenu=".&openmenu().
 "\nwindow.status='Configuring Remote Control ';";
@@ -1152,9 +1194,12 @@ sub rawconfig {
         $prt=~s/\$requested_domain/$requested_domain/g;
         if ($category_names{$cat}!~/\w/) { $cat='oth'; }
         my $type = &Apache::loncommon::course_type();
-        if ($type eq 'Group') {
-            $desc = &convert_menu_function($desc,$type);
-        }
+#
+# I don't think we support this
+#
+#        if ($type eq 'Group') {
+#            $desc = &convert_menu_function($desc,$type);
+#        }
         if ($pro eq 'clear') {
 	    $output.=&clear($row,$col);
         } elsif ($pro eq 'any') {
@@ -1233,16 +1278,14 @@ sub rawconfig {
                     $output.=&clear($row,$col);
                     next;
                 }
-            } elsif ($prt eq 'reqcrs') {
-                my $showreqcrs = 0;
-                foreach my $type ('official','unofficial') {
-                    if (&Apache::lonnet::usertools_access($env{'user.name'},
-                                                    $env{'user.domain'},
-                                                    $type,undef,'requestcourses')) {
-                        $showreqcrs = 1;
-                        last;
-                    }
+            } elsif (($prt eq 'reqcrsnsc') || ($prt eq 'reqcrsshc')) {
+                if (($prt eq 'reqcrsnsc') && ($show_course))   {
+                    next;
+                }
+                if (($prt eq 'reqcrsshc') && (!$show_course)) {
+                    next;
                 }
+                my $showreqcrs = &check_for_rcrs();
                 if (!$showreqcrs) {
                     $output.=&clear($row,$col);
                     next;
@@ -1253,8 +1296,7 @@ sub rawconfig {
           $uname,$udom,$rol,$crs,$pub,$con,$row,$col,$prt,$img,$top,$bot,$act,$desc,$cat);
         }
     }
-    unless (($env{'browser.interface'} eq 'textual') ||
-            ($env{'environment.remote'} eq 'off')) {
+    unless ($env{'environment.remote'} eq 'off') {
        $output.="\nwindow.status='Synchronizing Time';swmenu.syncclock(1000*".time.");\nwindow.status='Remote Control Configured.';";
        if (&Apache::lonmsg::newmail()) { 
 	   $output.='swmenu.setstatus("you have","messages");';
@@ -1264,14 +1306,27 @@ sub rawconfig {
     return $output;
 }
 
+sub check_for_rcrs {
+    my $showreqcrs = 0;
+    foreach my $type ('official','unofficial','community') {
+        if (&Apache::lonnet::usertools_access($env{'user.name'},
+                                              $env{'user.domain'},
+                                              $type,undef,'requestcourses')) {
+            $showreqcrs = 1;
+            last;
+        }
+    }
+    return $showreqcrs;
+}
+
 # ======================================================================= Close
 
 sub close {
-    if (($env{'browser.interface'} eq 'textual') ||
-        ($env{'environment.remote'} eq 'off')) { return ''; }
+    if ($env{'environment.remote'} eq 'off') { return ''; }
     my $menuname = &get_menu_name();
     return(<<ENDCLOSE);
 <script type="text/javascript">
+// <![CDATA[
 window.status='Accessing Remote Control';
 menu=window.open("/adm/rat/empty.html","$menuname",
                  "height=350,width=150,scrollbars=no,menubar=no");
@@ -1281,6 +1336,7 @@ menu.autologout=0;
 window.status='Closing Remote Control';
 menu.close();
 window.status='Done.';
+// ]]>
 </script>
 ENDCLOSE
 }
@@ -1310,8 +1366,10 @@ NAVCONTROL
 
 sub utilityfunctions {
     my $caller = shift;
-    unless (($env{'browser.interface'} eq 'textual')  ||
-        ($env{'environment.remote'} eq 'off') || ($caller eq '/adm/menu')) { return ''; }
+    unless ($env{'environment.remote'} eq 'off' || 
+            $caller eq '/adm/menu') { 
+            return ''; }
+            
     my $currenturl=&Apache::lonnet::clutter(&Apache::lonnet::fixversion((split(/\?/,$env{'request.noversionuri'}))[0]));
     $currenturl=&Apache::lonenc::check_encrypt(&unescape($currenturl));
     
@@ -1524,18 +1582,21 @@ sub get_nav_status {
     return $navstatus;
 }
 
-#FIXME this needs to move into mydesktab and the other locations 
+#FIXME this needs to move into mydesk.tab and the other locations 
 # the text is generated
-sub convert_menu_function {
-    my ($rolename,$type) = @_;
-    if ($type eq 'Group') {
-        $rolename =~ s/student/member/g;
-        $rolename =~ s/group/team/g;
-        $rolename =~ s/course/group/g;
-        $rolename =~ s/Course/Group/g;
-    }
-    return $rolename;
-}
+#
+# We currently do not support this anyway.
+#
+#sub convert_menu_function {
+#    my ($rolename,$type) = @_;
+#    if ($type eq 'Group') {
+#        $rolename =~ s/student/member/g;
+#        $rolename =~ s/group/team/g;
+#        $rolename =~ s/course/group/g;
+#        $rolename =~ s/Course/Group/g;
+#    }
+#    return $rolename;
+#}
 
 sub hidden_button_check {
     my $hidden;
@@ -1713,8 +1774,9 @@ sub jump_to_role {
                    '    numsec['.$i.'] = "'.$seccount->{$items[$i]}.'";'."\n";
         }
     }
-    my $output = <<"END";
+    return <<"END";
 <script type="text/javascript">
+//<![CDATA[
 function adhocRole(roleitem) {
     $js
     var newrole =  document.rolechooser.elements[roleitem].options[document.rolechooser.elements[roleitem].selectedIndex].value;
@@ -1785,11 +1847,9 @@ function retrieveIndex(item) {
     }
     return -1;
 }
-
-
+// ]]>
 </script>
 END
-    return $output;
 }