--- loncom/interface/lonmenu.pm	2012/08/27 15:53:40	1.369.2.22
+++ loncom/interface/lonmenu.pm	2012/07/05 19:22:47	1.382
@@ -1,7 +1,7 @@
 # The LearningOnline Network with CAPA
 # Routines to control the menu
 #
-# $Id: lonmenu.pm,v 1.369.2.22 2012/08/27 15:53:40 raeburn Exp $
+# $Id: lonmenu.pm,v 1.382 2012/07/05 19:22:47 raeburn Exp $
 #
 # Copyright Michigan State University Board of Trustees
 #
@@ -117,9 +117,9 @@ Same as primary_menu() but operates on @
 
 =item create_submenu()
 
-Creates XHTML for unordered list of sub-menu items which belong to a
+Creates XHTML for unordered list of sub-menu items which belong to a 
 particular top-level menu item. Uses hover pseudo class in css to display
-dropdown list when mouse hovers over top-level item. Support for IE6
+dropdown list when mouse hovers over top-level item. Support for IE6 
 (no hover psuedo class) via LC_hoverable class for <li> tag for top-
 level item, which employs jQuery to handle behavior on mouseover.
 
@@ -131,26 +131,6 @@ Inputs: 4 - (a) link and (b) target for
 
 This gets called in order to register a URL in the body of the document
 
-=item loadevents()
-
-=item unloadevents()
-
-=item startupremote()
-
-=item setflags()
-
-=item maincall()
-
-=item load_remote_msg()
-
-=item get_menu_name()
-
-=item reopenmenu()
-
-=item open()
-
-Open the menu
-
 =item clear()
 
 =item switch()
@@ -202,7 +182,7 @@ use HTML::Entities();
 use Apache::lonwishlist();
 
 use vars qw(@desklines %category_names %category_members %category_positions 
-            $readdesk @primary_menu %primary_submenu @secondary_menu %secondary_submenu);
+            $readdesk @primary_menu %primary_submenu @secondary_menu);
 
 my @inlineremote;
 
@@ -267,10 +247,12 @@ sub primary_menu {
             my @primsub;
             if (ref($primary_submenu{$title}) eq 'ARRAY') {
                 foreach my $item (@{$primary_submenu{$title}}) {
-                    next if (($item->[2] eq 'wishlist') && (!$env{'user.adv'})); 
+                    next if (($item->[2] eq 'wishlist') &&
+                             ((!&Apache::lonnet::allowed('bre',"/res/$env{'user.domain'}/")) &&
+                              (!&Apache::lonnet::allowed('bro',"/res/$env{'user.domain'}/"))));
                     next if (($item->[2] eq 'reqcrs') && (!&check_for_rcrs()));
-                    next if ((($item->[2] eq 'portfolio') || 
-                             ($item->[2] eq 'blog')) && 
+                    next if ((($item->[2] eq 'portfolio') ||
+                             ($item->[2] eq 'blog')) &&
                              (!&Apache::lonnet::usertools_access('','',$item->[2],
                                                            undef,'tools')));
                     push(@primsub,$item);
@@ -338,12 +320,12 @@ sub secondary_menu {
                                                : '');
     my $canedit       = &Apache::lonnet::allowed('mdc', $env{'request.course.id'});
     my $canviewroster = $env{'course.'.$env{'request.course.id'}.'.student_classlist_view'};
-    my $canviewgrps   = &Apache::lonnet::allowed('vcg', $crs_sec);
-    my $canmodifyuser = &Apache::lonnet::allowed('cst', $crs_sec);
-    my $canviewwnew   = &Apache::lonnet::allowed('whn', $crs_sec);
+    my $canviewgrps   = &Apache::lonnet::allowed('vcg', $crs_sec); 
+    my $canmodifyuser = &Apache::lonnet::allowed('cst', $crs_sec); 
+    my $canviewwnew   = &Apache::lonnet::allowed('whn', $crs_sec); 
     my $canmodpara    = &Apache::lonnet::allowed('opa', $crs_sec);
     my $canvgr        = &Apache::lonnet::allowed('vgr', $crs_sec);
-    my $canmgr        = &Apache::lonnet::allowed('mgr', $crs_sec);
+    my $canmgr        = &Apache::lonnet::allowed('mgr', $crs_sec); 
     my $author        = &getauthor();
 
     my %groups = &Apache::lonnet::get_active_groups(
@@ -359,10 +341,6 @@ sub secondary_menu {
                 && !$env{'request.course.id'};
         next if    $$menuitem[4]   =~ /^mdc/
                 && !$canedit;
-        next if    $$menuitem[4]  eq 'mdcCourse'
-                && ($crstype eq 'Community');
-        next if    $$menuitem[4]  eq 'mdcCommunity'
-                && ($crstype eq 'Course');
         next if    $$menuitem[4]  eq 'nvgr'
                 && $canvgr;
         next if    $$menuitem[4]  eq 'vgr'
@@ -379,45 +357,19 @@ sub secondary_menu {
                 && !$canviewwnew;
         next if    $$menuitem[4]   eq 'opa'
                 && !$canmodpara;
-        next if    $$menuitem[4]   eq 'nvcg'
-                && ($canviewgrps || !%groups);
+        next if    $$menuitem[4]   =~ /showgroups$/
+                && !$canviewgrps
+                && !%groups;
         next if    $$menuitem[4]    eq 'author'
                 && !$author;
 
-        my $title = $menuitem->[3];
-        if (defined($secondary_submenu{$title})) {
-            my ($link,$target);
-            if ($menuitem->[0] ne '') {
-                $link = $menuitem->[0];
-                $target = '_top';
-            } else {
-                $link = '#';
-            }
-            my @scndsub;   
-            if (ref($secondary_submenu{$title}) eq 'ARRAY') {
-                foreach my $item (@{$secondary_submenu{$title}}) {
-                    if (ref($item) eq 'ARRAY') {
-                        next if ($item->[2] eq 'vgr' && !$canvgr);
-                        next if ($item->[2] eq 'opa' && !$canmodpara);
-                        next if ($item->[2] eq 'cst' && !$canmodifyuser);
-                        next if ($item->[2] eq 'mgr' && !$canmgr);
-                        next if ($item->[2] eq 'vcg' && !$canviewgrps);
-                        push(@scndsub,$item); 
-                    }
-                }
-                if (@scndsub > 0) {
-                    $menu .= &create_submenu($link,$target,$title,\@scndsub);
-                } elsif ($link) {
-                    $menu .= '<li><a href="'.$link.'" target="'.$target.'">'.&mt($title).'</a></li>';
-                }
-            }
-        } elsif ($$menuitem[3] eq 'Roles' && $env{'request.course.id'}) {
+        if ($$menuitem[3] eq 'Roles' && $env{'request.course.id'}) {
             # special treatment for role selector
             my $roles_selector = &roles_selector(
                         $env{'course.' . $env{'request.course.id'} . '.domain'},
                         $env{'course.' . $env{'request.course.id'} . '.num'}  );
 
-            $menu .= $roles_selector ? "<li style=\"padding: 0 0.8em;\">$roles_selector</li>"
+            $menu .= $roles_selector ? "<li>$roles_selector</li>"
                                      : '';
         } else {
             $menu .= &prep_menuitem(\@$menuitem);
@@ -443,10 +395,8 @@ sub secondary_menu {
     }
     $menu =~ s/\[uname\]/$$author{user}/g;
     $menu =~ s/\[udom\]/$$author{dom}/g;
-    if ($menu) {
-        $menu = "<ul id=\"LC_secondary_menu\">$menu</ul>";
-    }
-    return $menu;
+
+    return "<ul id=\"LC_secondary_menu\">$menu</ul>";
 }
 
 sub create_submenu {
@@ -457,7 +407,7 @@ sub create_submenu {
         $disptarget = ' target="'.$target.'"';
     }
     my $menu = '<li class="LC_hoverable">'.
-               '<a href="'.$link.'"'.$disptarget.'>'. 
+               '<a href="'.$link.'"'.$disptarget.'>'.
                '<span class="LC_nobreak">'.&mt($title).
                '<span class="LC_fontsize_small" style="font-weight:normal;">'.
                ' &#9660;</span></span></a>'.
@@ -480,34 +430,6 @@ sub create_submenu {
     return $menu;
 }
 
-sub registerurl {
-    my ($forcereg) = @_;
-    my $result = '';
-    if ($env{'request.noversionuri'} =~ m{^/res/adm/pages/}) { return ''; }
-    my $force_title='';
-    if ($env{'request.state'} eq 'construct') {
-        $force_title=&Apache::lonxml::display_title();
-    }
-    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">'."\n"
-       .'// <![CDATA['."\n"
-       .'function LONCAPAreg(){;} function LONCAPAstale(){}'."\n"
-       .'// ]]>'."\n"
-       .'</script>'
-       .$force_title;
-    }
-# Graphical display after login only
-    if ($env{'request.registered'} && !$forcereg) { return ''; }
-    $result.=&innerregister($forcereg);
-    return $result.$force_title;
-}
-
 sub innerregister {
     my ($forcereg,$bread_crumbs) = @_;
     my $const_space = ($env{'request.state'} eq 'construct');
@@ -517,19 +439,8 @@ sub innerregister {
 
     $env{'request.registered'} = 1;
 
-    my $noremote = ($env{'environment.remote'} eq 'off');
-
     undef(@inlineremote);
 
-    my $reopen=&Apache::lonmenu::reopenmenu();
-
-    my $newmail='';
-
-    if (&Apache::lonmsg::newmail() && !$noremote) {
-        # We have new mail and remote is up
-        $newmail= 'swmenu.setstatus("you have","messages");';
-    }
-
     my $resurl; 
     if ( $env{'request.symb'} && $env{'request.course.id'} ) {
 
@@ -568,11 +479,11 @@ sub innerregister {
         &Apache::lonhtmlcommon::clear_breadcrumbs();
         &Apache::lonhtmlcommon::add_breadcrumb({text => 'View Resource'});
     }
-    my $timesync   = ( $noremote ? '' : 'swmenu.syncclock(1000*'.time.');' );
 # =============================================================================
 # ============================ This is for URLs that actually can be registered
-    if ( ($env{'request.noversionuri'}!~m{^/(res/)*adm/})
-                       || ($forcereg)) {
+    return '' unless ( ($env{'request.noversionuri'}!~m{^/(res/)*adm/}) 
+                       || $forcereg );
+
 # -- This applies to homework problems for users with grading privileges
 	my $crs='/'.$env{'request.course.id'};
 	if ($env{'request.course.sec'}) {
@@ -580,38 +491,30 @@ sub innerregister {
 	}
 	$crs=~s/\_/\//g;
 
-        my %swtext;
-        if ($noremote) {
-            %swtext = &get_inline_text();
-        } else {
-            %swtext = &get_rc_text();
-        } 
         my $hwkadd='';
         if ($env{'request.symb'} ne '' &&
 	    $env{'request.filename'}=~/$LONCAPA::assess_re/) {
 	    if (&Apache::lonnet::allowed('mgr',$crs)) {
-		$hwkadd.=&switch('','',7,2,'pgrd.png',$swtext{'pgrd'},'grades[_4]',
+		$hwkadd.=&switch('','',7,2,'pgrd.png','Content Grades','grades[_4]',
                        "gocmd('/adm/grades','gradingmenu')",
                        'Content Grades');
             } elsif (&Apache::lonnet::allowed('vgr',$crs)) {
-		$hwkadd.=&switch('','',7,2,'subm.png',$swtext{'subm'},'missions[_1]',
+		$hwkadd.=&switch('','',7,2,'subm.png','Content Submissions','missions[_1]',
                        "gocmd('/adm/grades','submission')",
 		       'Content Submissions');
             }
 	}
 	if ($env{'request.symb'} ne '' &&
 	    &Apache::lonnet::allowed('opa',$crs)) {
-	    $hwkadd.=&switch('','',7,3,'pparm.png',$swtext{'pparm'},'parms[_2]',
+	    $hwkadd.=&switch('','',7,3,'pparm.png','Content Settings','parms[_2]',
 			     "gocmd('/adm/parmset','set')",
 			     'Content Settings');
 	}
-        if ($noremote) {  
-            if ($env{'request.symb'}=~/^uploaded/ &&
-                &Apache::lonnet::allowed('mdc',$crs)) {
-                $hwkadd.=&switch('','',7,4,'docs.png',$swtext{'docs'},'parms[_2]',
-                                 "gocmd('/adm/coursedocs','direct')",
-                                 'Folder/Page Content');
-            }
+        if ($env{'request.symb'}=~/^uploaded/ &&
+            &Apache::lonnet::allowed('mdc',$crs)) {
+            $hwkadd.=&switch('','',7,4,'docs.png','Folder/Page Content','parms[_2]',
+                             "gocmd('/adm/coursedocs','direct')",
+                             'Folder/Page Content');
         }
 # -- End Homework
         ###
@@ -654,7 +557,7 @@ sub innerregister {
 		my @ids=&Apache::lonnet::current_machine_ids();
 		foreach my $id (@ids) { if ($id eq $home) { $allowed=1; } }
 		if (!$allowed) {
-		    $editbutton=&switch('','',6,1,,$top,$bottom,$action,$desc);
+		    $editbutton=&switch('','',6,1,$top,,$bottom,$action,$desc);
                     $noeditbutton = 0;
                 }
             }
@@ -721,7 +624,7 @@ sub innerregister {
                         }
                     }
                     $editbutton=&switch
-                       ('','',6,1,'pcstr.png',$swtext{'pcstr'},'resource[_2]',
+                       ('','',6,1,'pcstr.png','Edit','resource[_2]',
                         $bot,"Edit this resource");
                     $noeditbutton = 0;
                 }
@@ -737,7 +640,7 @@ sub innerregister {
                         my $cfile = &edit_course_upload($file,$cnum,$cdom);
                         if ($cfile) {
                             $editbutton=&switch
-                                        ('','',6,1,'pcstr.png',$swtext{'pcstr'},
+                                        ('','',6,1,'pcstr.png','Edit',
                                          'resource[_2]',"go('".$cfile."');",
                                          'Edit this resource');
                         }
@@ -749,7 +652,7 @@ sub innerregister {
             if ($resurl eq "public/$cdom/$cnum/syllabus") {
                 if ($env{'course.'.$env{'request.course.id'}.'.externalsyllabus'} =~ /\w/) {
                     if (&Apache::lonnet::allowed('mdc',$env{'request.course.id'})) {
-                        $editbutton=&switch('','',6,1,'pcstr.png',$swtext{'pcstr'},
+                        $editbutton=&switch('','',6,1,'pcstr.png','Edit',
                                             'resource[_2]',
                                             "go('/adm/courseprefs?phase=display&actions=courseinfo')",
                                             'Edit this resource');
@@ -760,7 +663,7 @@ sub innerregister {
         ###
         ###
 # Prepare the rest of the buttons
-        my ($menuitems,$got_prt,$got_wishlist,$cstritems);
+        my $menuitems;
         if ($const_space) {
 #
 # We are in construction space
@@ -786,10 +689,6 @@ s&6&3&pub.png&Publish&resource[_3]&gocst
 s&7&1&del.png&Delete&resource[_2]&gocstr('/adm/cfile?action=delete','/priv/$udom/$uname/$cleandisfn')&Delete this resource
 s&7&2&prt.png&Print&printout[_1]&gocstr('/adm/printout','/priv/$udom/$uname/$cleandisfn')&Prepare a printable document
 ENDMENUITEMS
-                unless ($noremote) {
-                    $cstritems = $menuitems;
-                    undef($menuitems);
-                }
             }
                 if (ref($bread_crumbs) eq 'ARRAY') {
                     &Apache::lonhtmlcommon::clear_breadcrumbs();
@@ -800,28 +699,24 @@ ENDMENUITEMS
         } elsif ( defined($env{'request.course.id'}) && 
 		 $env{'request.symb'} ne '' ) {
 #
-# We are in a course and looking at a registered URL
+# 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.png&$swtext{'back'}&&gopost('/adm/flip','back:'+currentURL)&Previous content resource&&1
-s&2&3&forw.png&$swtext{'forw'}&&gopost('/adm/flip','forward:'+currentURL)&Next content resource&&3
+s&2&1&back.png&&&gopost('/adm/flip','back:'+currentURL)&Previous content resource&&1
+s&2&3&forw.png&&&gopost('/adm/flip','forward:'+currentURL)&Next content resource&&3
 c&6&3
 c&8&1
 c&8&2
-s&8&3&prt.png&$swtext{'prt'}&printout[_1]&gopost('/adm/printout',currentURL)&Prepare a printable document
+s&8&3&prt.png&Print&printout[_1]&gopost('/adm/printout',currentURL)&Prepare a printable document
 ENDMENUITEMS
-            $got_prt = 1;
-            if (($env{'user.adv'}) && ($env{'request.uri'} =~ /^\/res/)
-                && (!$env{'request.enc'})) {
+            if (&Apache::lonnet::allowed('bre', $env{'request.course.id'}) eq 'F' && $env{'request.uri'} =~ /^\/res/) {
                 # wishlist is only available for users with access to resource-pool
                 # and links can only be set for resources within the resource-pool
                 $menuitems .= (<<ENDMENUITEMS);
-s&9&1&alnk.png&$swtext{'alnk'}&linkstor[_1]&set_wishlistlink()&Save a link for this resource in your personal Stored Links repository&&1
+s&9&1&wishlist-link.png&Stored Links&wishlistlink[_2]&set_wishlistlink()&Save a link for this resource in your personal Stored Links repository&&1
 ENDMENUITEMS
-                $got_wishlist = 1;
             }
 
 my $currentURL = &Apache::loncommon::get_symb();
@@ -833,52 +728,36 @@ if(length($annotation) > 0){
 }else{
 	$menuitems.="anot.png";
 }
-$menuitems.="&$swtext{'anot'}&tations[_1]&annotate()&";
+$menuitems.="&Notes&&annotate()&";
 $menuitems.="Make notes and annotations about this resource&&1\n";
 
             unless ($env{'request.noversionuri'}=~/\/(bulletinboard|smppg|navmaps|syllabus|aboutme|viewclasslist|portfolio)(\?|$)/) {
 		if ((!$env{'request.enc'}) && ($env{'request.noversionuri'} !~ m{^/adm/wrapper/ext/}) && ($env{'request.noversionuri'} !~ m{^/uploaded/$match_domain/$match_courseid/docs/})) {
 		    $menuitems.=(<<ENDREALRES);
-s&6&3&catalog.png&$swtext{'catalog'}&info[_1]&catalog_info()&Show Metadata
+s&6&3&catalog.png&Info&info[_1]&catalog_info()&Show Metadata
 ENDREALRES
                 }
                 unless ($env{'request.noversionuri'} =~ m{^/uploaded/$match_domain/$match_courseid/docs/}) {
-	            $menuitems.=(<<ENDREALRES);
-s&8&1&eval.png&$swtext{'eval'}&this[_1]&gopost('/adm/evaluate',currentURL,1)&Provide my evaluation of this resource
+                    $menuitems.=(<<ENDREALRES);
+s&8&1&eval.png&Evaluate&this[_1]&gopost('/adm/evaluate',currentURL,1)&Provide my evaluation of this resource
 ENDREALRES
                 }
                 $menuitems.=(<<ENDREALRES);
-s&8&2&fdbk.png&$swtext{'fdbk'}&discuss[_1]&gopost('/adm/feedback',currentURL,1)&Provide feedback messages or contribute to the course discussion about this resource
+s&8&2&fdbk.png&Communicate&discuss[_1]&gopost('/adm/feedback',currentURL,1)&Provide feedback messages or contribute to the course discussion about this resource
 ENDREALRES
 	    }
         }
 	if ($env{'request.uri'} =~ /^\/res/) {
-            unless ($got_prt) {
-	        $menuitems .= (<<ENDMENUITEMS);
-s&8&3&prt.png&$swtext{'prt'}&printout[_1]&gopost('/adm/printout',currentURL)&Prepare a printable document
+	    $menuitems .= (<<ENDMENUITEMS);
+s&8&3&prt.png&Print&printout[_1]&gopost('/adm/printout',currentURL)&Prepare a printable document
 ENDMENUITEMS
-                $got_prt = 1;
-            }
-            unless ($got_wishlist) {
-                if (($env{'user.adv'}) && (!$env{'request.enc'})) {
-                    # wishlist is only available for users with access to resource-pool
-                    $menuitems .= (<<ENDMENUITEMS);
-s&9&1&alnk.png&$swtext{'alnk'}&linkstor[_1]&set_wishlistlink()&Save a link for this resource in your personal Stored Links repository&&1
+            if (&Apache::lonnet::allowed('bre', $env{'request.course.id'}) eq 'F') {
+                # wishlist is only available for users with access to resource-pool
+                $menuitems .= (<<ENDMENUITEMS);
+s&9&1&wishlist-link.png&Stored Links&wishlistlink[_2]&set_wishlistlink()&Save a link for this resource in your personal Stored Links repository&&1
 ENDMENUITEMS
-                    $got_wishlist = 1;
-                }
             }
 	}
-        unless ($got_prt) {
-            $menuitems .= (<<ENDMENUITEMS);
-c&8&3
-ENDMENUITEMS
-        }
-        unless ($got_wishlist) {
-            $menuitems .= (<<ENDMENUITEMS);
-c&9&1
-ENDMENUITEMS
-        }
         my $buttons='';
         foreach (split(/\n/,$menuitems)) {
 	    my ($command,@rest)=split(/\&/,$_);
@@ -897,188 +776,48 @@ ENDMENUITEMS
                 }
             }
         }
-        if ($noremote) {
+
 	    my $addremote=0;
 	    foreach (@inlineremote) { if ($_ ne '') { $addremote=1; last;} }
-            if ($addremote) {
+    if ($addremote) {
 
-                &Apache::lonhtmlcommon::clear_breadcrumb_tools();
+        &Apache::lonhtmlcommon::clear_breadcrumb_tools();
 
-                &Apache::lonhtmlcommon::add_breadcrumb_tool(
-                    'navigation', @inlineremote[21,23]);
-
-                my $countdown = &countdown_timer();
-                if (&hidden_button_check() eq 'yes') {
-                    if ($countdown) {
-                        &Apache::lonhtmlcommon::add_breadcrumb_tool('tools',$countdown);
-                    }
-                } else {
-                    my @tools = @inlineremote[93,91,81,82,83];
-                    if ($countdown) {
-                        unshift(@tools,$countdown);
-                    }
-                    &Apache::lonhtmlcommon::add_breadcrumb_tool(
-                        'tools',@tools);
+            &Apache::lonhtmlcommon::add_breadcrumb_tool(
+                'navigation', @inlineremote[21,23]);
 
-                    #publish button in construction space
-                    if ($env{'request.state'} eq 'construct'){
-                        &Apache::lonhtmlcommon::add_breadcrumb_tool(
-                            'advtools', $inlineremote[63]);
-                    } else {
-                        &Apache::lonhtmlcommon::add_breadcrumb_tool(
-                            'tools', $inlineremote[63]);
-                    }
-                    unless ($env{'request.noversionuri'}=~ m{^/adm/(navmaps|viewclasslist)(\?|$)}) {
-                        &Apache::lonhtmlcommon::add_breadcrumb_tool(
-                            'advtools', @inlineremote[61,71,72,73,74,92]);
-                    }
-                }
+        my $countdown = &countdown_timer();
+        if (&hidden_button_check() eq 'yes') {
+            if ($countdown) {
+                &Apache::lonhtmlcommon::add_breadcrumb_tool('tools',$countdown);
             }
-            return   &Apache::lonhtmlcommon::scripttag('', 'start')
-                   . &Apache::lonhtmlcommon::breadcrumbs(undef,undef,0)
-                   . &Apache::lonhtmlcommon::scripttag('', 'end');
-
         } else {
-            my $cstrcrumbs;
-            if ($const_space) {
-                foreach (split(/\n/,$cstritems)) {
-                    my ($command,@rest)=split(/\&/,$_);
-                    my $idx=10*$rest[0]+$rest[1];
-                    &switch('','',@rest);
-                }
-                &Apache::lonhtmlcommon::add_breadcrumb_tool('advtools',
-                                                            @inlineremote[63,61,71,72]);
-
-                $cstrcrumbs = &Apache::lonhtmlcommon::scripttag('', 'start')
-                             .&Apache::lonhtmlcommon::breadcrumbs(undef,undef,0)
-                             .&Apache::lonhtmlcommon::scripttag('', 'end');
-            }
-            my $requri=&Apache::lonnet::clutter(&Apache::lonnet::fixversion((split(/\?/,$env{'request.noversionuri'}))[0]));
-            $requri=&Apache::lonenc::check_encrypt(&unescape($requri));
-            my $cursymb=&Apache::lonenc::check_encrypt($env{'request.symb'});
-            my $navstatus=&get_nav_status();
-            my $clearcstr;
-
-            if ($env{'user.adv'}) { $clearcstr='clearbut(6,1)'; }
-            return <<ENDREGTHIS;
-
-<script type="text/javascript">
-// <![CDATA[
-// BEGIN LON-CAPA Internal
-var swmenu=null;
-
-    function LONCAPAreg() {
-          swmenu=$reopen;
-          swmenu.clearTimeout(swmenu.menucltim);
-          $timesync
-          $newmail
-          $buttons
-          swmenu.currentURL="$requri";
-          swmenu.reloadURL=swmenu.currentURL+window.location.search;
-          swmenu.currentSymb="$cursymb";
-          swmenu.reloadSymb="$cursymb";
-          swmenu.currentStale=0;
-          $navstatus
-          $hwkadd
-          $editbutton
-    }
-
-    function LONCAPAstale() {
-          swmenu=$reopen
-          swmenu.currentStale=1;
-          if (swmenu.reloadURL!='' && swmenu.reloadURL!= null) {
-             swmenu.switchbutton
-             (3,1,'reload.gif','return','location','go(reloadURL)','Return to the last known location in the course sequence');
-          }
-          swmenu.clearbut(7,2);
-          swmenu.clearbut(7,3);
-          swmenu.menucltim=swmenu.setTimeout(
- 'clearbut(2,1);clearbut(2,3);clearbut(8,1);clearbut(8,2);clearbut(8,3);'+
- 'clearbut(9,1);clearbut(9,3);clearbut(6,3);$clearcstr',
-                          2000);
-      }
-
-// END LON-CAPA Internal
-// ]]>
-</script>
-
-$cstrcrumbs
-ENDREGTHIS
-        }
-    } else {
-       unless ($noremote) {
-# Not registered, graphical
-           return (<<ENDDONOTREGTHIS);
-
-<script type="text/javascript">
-// <![CDATA[
-// BEGIN LON-CAPA Internal
-var swmenu=null;
-
-    function LONCAPAreg() {
-          swmenu=$reopen
-          $timesync
-          swmenu.currentStale=1;
-          swmenu.clearbut(2,1);
-          swmenu.clearbut(2,3);
-          swmenu.clearbut(8,1);
-          swmenu.clearbut(8,2);
-          swmenu.clearbut(8,3);
-          swmenu.clearbut(9,1);
-          if (swmenu.currentURL) {
-             swmenu.switchbutton
-              (3,1,'reload.gif','return','location','go(currentURL)');
-          } else {
-              swmenu.clearbut(3,1);
-          }
-    }
-
-    function LONCAPAstale() {
-    }
-
-// END LON-CAPA Internal
-// ]]>
-</script>
-ENDDONOTREGTHIS
+            my @tools = @inlineremote[93,91,81,82,83];
+            if ($countdown) {
+                unshift(@tools,$countdown);
+            }
+            &Apache::lonhtmlcommon::add_breadcrumb_tool(
+                'tools',@tools);
 
+            #publish button in construction space
+            if ($env{'request.state'} eq 'construct'){
+                &Apache::lonhtmlcommon::add_breadcrumb_tool(
+                     'advtools', $inlineremote[63]);
+            } else {
+                &Apache::lonhtmlcommon::add_breadcrumb_tool(
+                     'tools', $inlineremote[63]);
+            }
+            
+            unless ($env{'request.noversionuri'}=~ m{^/adm/(navmaps|viewclasslist)(\?|$)}) {
+                &Apache::lonhtmlcommon::add_breadcrumb_tool(
+                    'advtools', @inlineremote[61,71,72,73,74,92]);
+            }
         }
-        return '';
     }
-}
 
-sub get_inline_text {
-    my %text = (
-                 pgrd     => 'Content Grades',
-                 subm     => 'Content Submissions',
-                 pparm    => 'Content Settings',
-                 docs     => 'Folder/Page Content',
-                 pcstr    => 'Edit',
-                 prt      => 'Print',
-                 alnk     => 'Stored Links',
-                 anot     => 'Notes',
-                 catalog  => 'Info',
-                 eval     => 'Evaluate',
-                 fdbk     => 'Feedback',
-    );
-    return %text;
-}
-
-sub get_rc_text {
-    my %text = (
-                   pgrd    => 'problem[_1]',
-                   subm    => 'view sub-[_1]',
-                   pparm   => 'problem[_2]',
-                   pcstr   => 'edit[_1]',
-                   prt     => 'prepare[_1]',
-                   back    => 'backward[_1]',
-                   forw    => 'forward[_1]',
-                   alnk    => 'add to[_1]',
-                   anot    => 'anno-[_1]',
-                   catalog => 'catalog[_2]',
-                   eval    => 'evaluate[_1]',
-                   fdbk    => 'feedback[_1]',
-    );
-    return %text;
+    return   &Apache::lonhtmlcommon::scripttag('', 'start')
+           . &Apache::lonhtmlcommon::breadcrumbs(undef,undef,0)
+           . &Apache::lonhtmlcommon::scripttag('', 'end');
 }
 
 sub is_course_upload {
@@ -1117,187 +856,12 @@ sub edit_course_upload {
     return $cfile;
 }
 
-sub loadevents() {
-    if ($env{'request.state'} eq 'construct' ||
-        $env{'request.noversionuri'} =~ m{^/res/adm/pages/}) { return ''; }
-    return 'LONCAPAreg();';
-}
-
-sub unloadevents() {
-    if ($env{'request.state'} eq 'construct' ||
-        $env{'request.noversionuri'} =~ m{^/res/adm/pages/}) { return ''; }
-    return 'LONCAPAstale();';
-}
-
-sub startupremote {
-    my ($lowerurl)=@_;
-    unless ($env{'environment.remote'} eq 'on') {
-        return ('<meta HTTP-EQUIV="Refresh" CONTENT="0.5; url='.$lowerurl.'" />');
-    }
-#
-# The Remote actually gets launched!
-#
-    my $configmenu=&rawconfig();
-    my $esclowerurl=&escape($lowerurl);
-    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') {
-        if (typeof(document.wheel.spin) != 'undefined') {
-            var date=new Date();
-            var waited=Math.round(30-((date.getTime()-timestart)/1000));
-            document.wheel.spin.value=$message;
-        }
-    }
-   if (window.status=='|') {
-      window.status='/';
-   } else {
-      if (window.status=='/') {
-         window.status='-';
-      } else {
-         if (window.status=='-') {
-            window.status='\\\\';
-         } else {
-            if (window.status=='\\\\') { window.status='|'; }
-         }
-      }
-   }
-}
-
-// ---------------------------------------------------------- The wait function
-var canceltim;
-function wait() {
-   if ((menuloaded==1) || (tim==1)) {
-      window.status='Done.';
-      if (tim==0) {
-         clearTimeout(canceltim);
-         $configmenu
-         window.location='$lowerurl';
-      } else {
-          window.location='/adm/remote?action=collapse&url=$esclowerurl';
-      }
-   } else {
-      wheelswitch();
-      setTimeout('wait();',200);
-   }
-}
-
-function main() {
-   canceltim=setTimeout('tim=1;',30000);
-   window.status='-';
-   var date=new Date();
-   timestart=date.getTime();
-   wait();
-}
-
-// ]]>
-</script>
-ENDREMOTESTARTUP
-}
-
-sub setflags() {
-    return(<<ENDSETFLAGS);
-<script type="text/javascript">
-// <![CDATA[
-    menuloaded=0;
-    tim=0;
-// ]]>
-</script>
-ENDSETFLAGS
-}
-
-sub maincall() {
-    unless ($env{'environment.remote'} eq 'on') { return ''; }
-    return(<<ENDMAINCALL);
-<script type="text/javascript">
-// <![CDATA[
-    main();
-// ]]>
-</script>
-ENDMAINCALL
-}
-
-sub load_remote_msg {
-    my ($lowerurl)=@_;
-
-    unless ($env{'environment.remote'} eq 'on') { return ''; }
-
-    my $esclowerurl=&escape($lowerurl);
-    my $link=&mt('[_1]Continue[_2] on in Inline Menu mode'
-                ,'<a href="/adm/remote?action=collapse&amp;url='.$esclowerurl.'">'
-                ,'</a>');
-    return(<<ENDREMOTEFORM);
-<p>
-<form name="wheel">
-<input name="spin" type="text" size="60" />
-</form>
-</p>
-<p>$link</p>
-ENDREMOTEFORM
-}
-
-sub get_menu_name {
-    my $hostid = $Apache::lonnet::perlvar{'lonHostID'};
-    $hostid =~ s/\W//g;
-    return 'LCmenu'.$hostid;
-}
-
-
-sub reopenmenu {
-   unless ($env{'environment.remote'} eq 'on') { return ''; }
-   my $menuname = &get_menu_name();
-   my $nothing = &Apache::lonhtmlcommon::javascript_nothing();
-   return('window.open('.$nothing.',"'.$menuname.'","",false);');
-}
-
-
-sub open {
-    my $returnval='';
-    unless ($env{'environment.remote'} eq 'on') {
-        return
-        '<script type="text/javascript">'."\n"
-       .'// <![CDATA['."\n"
-       .'self.name="loncapaclient";'."\n"
-       .'// ]]>'."\n"
-       .'</script>';
-    }
-    my $menuname = &get_menu_name();
-
-#    unless (shift eq 'unix') {
-# resizing does not work on linux because of virtual desktop sizes
-#       $returnval.=(<<ENDRESIZE);
-#if (window.screen) {
-#    self.resizeTo(screen.availWidth-215,screen.availHeight-55);
-#    self.moveTo(190,15);
-#}
-#ENDRESIZE
-#    }
-    $returnval=(<<ENDOPEN);
-// <![CDATA[
-window.status='Opening LON-CAPA Remote Control';
-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>';
-}
-
-
 # ================================================================== Raw Config
 
 sub clear {
     my ($row,$col)=@_;
-    if ($env{'environment.remote'} eq 'on') {
-       if (($row<1) || ($row>13)) { return ''; }
-       return "\n".qq(window.status+='.';swmenu.clearbut($row,$col););
-    } else {
-        $inlineremote[10*$row+$col]='';
-        return '';
-    }
+    $inlineremote[10*$row+$col]='';
+    return ''; 
 }
 
 # ============================================ Switch a button or create a link
@@ -1314,24 +878,6 @@ sub switch {
     my $idx=10*$row+$col;
     $category_members{$cat}.=':'.$idx;
 
-    if ($env{'environment.remote'} eq 'on') {
-        if (($row<1) || ($row>13)) { return ''; }
-        if ($env{'request.state'} eq 'construct') {
-            my $text = $top.' '.$bot;
-            $text=~s/\s*\-\s*//gs;
-            my $pic = '<img alt="'.$text.'" src="'.
-                      &Apache::loncommon::lonhttpdurl('/res/adm/pages/'.$img).
-                      '" align="'.($nobreak==3?'right':'left').'" class="LC_icon" />';
-           $inlineremote[$idx] =
-               '<a title="'.$desc.'" class="LC_menubuttons_link" href="javascript:'.$act.';">'.
-               $pic.'<span class="LC_menubuttons_inline_text">'.$top.'&nbsp;</span></a>';
-        }
-# Remote
-        $img=~s/\.png$/\.gif/;
-        return "\n".
- qq(window.status+='.';swmenu.switchbutton($row,$col,"$img","$top","$bot","$act","$desc"););
-    }
-
 # Inline Menu
     if ($nobreak==2) { return ''; }
     my $text=$top.' '.$bot;
@@ -1366,7 +912,7 @@ sub switch {
         unless ($env{'request.state'} eq 'construct') {
             push(@tools,63);
         }
-        if (($env{'environment.icons'} eq 'iconsonly') &&
+        if (($env{'environment.icons'} eq 'iconsonly') && 
             (grep(/^$idx$/,@tools))) {
             $inlineremote[$idx] =
         '<a title="'.$desc.'" class="LC_menubuttons_link" href="javascript:'.$act.';">'.$pic.'</a>';
@@ -1393,13 +939,6 @@ sub secondlevel {
     return $output;
 }
 
-sub openmenu {
-    my $menuname = &get_menu_name();
-    unless ($env{'environment.remote'} eq 'on') { return ''; }
-    my $nothing = &Apache::lonhtmlcommon::javascript_nothing();
-    return "window.open(".$nothing.",'".$menuname."');";
-}
-
 sub inlinemenu {
     undef(@inlineremote);
     undef(%category_members);
@@ -1442,13 +981,7 @@ sub rawconfig {
 #
     my $textualoverride=shift;
     my $output='';
-    if ($env{'environment.remote'} eq 'on') {
-       $output.=
- "window.status='Opening Remote Control';var swmenu=".&openmenu().
-"\nwindow.status='Configuring Remote Control ';";
-    } else {
-        unless ($textualoverride) { return ''; }
-    }
+    return '' unless $textualoverride;
     my $uname=$env{'user.name'};
     my $udom=$env{'user.domain'};
     my $adv=$env{'user.adv'};
@@ -1623,12 +1156,6 @@ sub rawconfig {
           $uname,$udom,$rol,$crs,$pub,$con,$row,$col,$prt,$img,$top,$bot,$act,$desc,$cat);
         }
     }
-    if ($env{'environment.remote'} eq 'on') {
-        $output.="\nwindow.status='Synchronizing Time';swmenu.syncclock(1000*".time.");\nwindow.status='Remote Control Configured.';";
-        if (&Apache::lonmsg::newmail()) {
-            $output.='swmenu.setstatus("you have","messages");';
-        }
-    }
     return $output;
 }
 
@@ -1654,28 +1181,6 @@ sub check_for_rcrs {
     return $showreqcrs;
 }
 
-# ======================================================================= Close
-
-sub close {
-    unless ($env{'environment.remote'} eq 'on') { 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");
-window.status='Disabling Remote Control';
-menu.active=0;
-menu.autologout=0;
-window.status='Closing Remote Control';
-menu.close();
-window.status='Done.';
-// ]]>
-</script>
-ENDCLOSE
-}
-
 sub dc_popup_js {
     my %lt = &Apache::lonlocal::texthash(
                                           more => '(More ...)',
@@ -1942,16 +1447,6 @@ sub constspaceform {
 ENDCONSTSPACEFORM
 }
 
-sub get_nav_status {
-    my $navstatus="swmenu.w_loncapanav_flag=";
-    if ($env{'environment.remotenavmap'} eq 'on') {
-        $navstatus.="1";
-    } else {
-        $navstatus.="-1";
-    }
-    return $navstatus;
-}
-
 sub hidden_button_check {
     if ( $env{'request.course.id'} eq ''
          || $env{'request.role.adv'} ) {
@@ -2388,9 +1883,6 @@ BEGIN {
                     } elsif ($configline=~/^scnd\:/) {
                         my @entries = (split(/\:/, $configline))[1..5];
                         push @secondary_menu, \@entries; 
-                    } elsif ($configline=~/^scndsub\:/) {
-                        my ($parent,@entries) = (split(/\:/, $configline))[1..4];
-                        push (@{$secondary_submenu{$parent}},\@entries);
                     } elsif ($configline) {
                         push(@desklines,$configline);
                     }