]> git.mxchange.org Git - quix0rs-gnu-social.git/commitdiff
Fix public group nav to highlight properly when our group directory is selected
authorZach Copley <zach@status.net>
Wed, 13 Apr 2011 23:11:34 +0000 (16:11 -0700)
committerZach Copley <zach@status.net>
Wed, 13 Apr 2011 23:11:34 +0000 (16:11 -0700)
lib/publicgroupnav.php
plugins/Directory/DirectoryPlugin.php

index 952ac809b1d5880d9d22c70ebcc75b2551e8d22d..75aa3dd60f8046148226f44d97c9a0c6ecca6fa0 100644 (file)
@@ -47,6 +47,9 @@ require_once INSTALLDIR.'/lib/widget.php';
  */
 class PublicGroupNav extends Menu
 {
+
+    var $actionName = null;
+
     /**
      * Show the menu
      *
@@ -54,7 +57,7 @@ class PublicGroupNav extends Menu
      */
     function show()
     {
-        $action_name = $this->action->trimmed('action');
+        $this->actionName = $this->action->trimmed('action');
 
         $this->action->elementStart('ul', array('class' => 'nav'));
 
@@ -62,35 +65,35 @@ class PublicGroupNav extends Menu
             // TRANS: Menu item in search group navigation panel.
             $this->out->menuItem(common_local_url('public'), _m('MENU','Public'),
                 // TRANS: Menu item title in search group navigation panel.
-                _('Public timeline'), $action_name == 'public', 'nav_timeline_public');
+                _('Public timeline'), $this->actionName == 'public', 'nav_timeline_public');
 
             // TRANS: Menu item in search group navigation panel.
             $this->out->menuItem(common_local_url('groups'), _m('MENU','Groups'),
                 // TRANS: Menu item title in search group navigation panel.
-                _('User groups'), $action_name == 'groups', 'nav_groups');
+                _('User groups'), $this->actionName == 'groups', 'nav_groups');
 
             // TRANS: Menu item in search group navigation panel.
             $this->out->menuItem(common_local_url('publictagcloud'), _m('MENU','Recent tags'),
                 // TRANS: Menu item title in search group navigation panel.
-                _('Recent tags'), $action_name == 'publictagcloud', 'nav_recent-tags');
+                _('Recent tags'), $this->actionName == 'publictagcloud', 'nav_recent-tags');
 
             // TRANS: Menu item in search group navigation panel.
             $this->out->menuItem(common_local_url('publicpeopletagcloud'), _m('MENU','People tags'),
                 // TRANS: Menu item title in search group navigation panel.
-                _('People tags'), in_array($action_name, array('publicpeopletagcloud',
+                _('People tags'), in_array($this->actionName, array('publicpeopletagcloud',
                                     'peopletag', 'selftag')), 'nav_people-tags');
 
             if (count(common_config('nickname', 'featured')) > 0) {
                 // TRANS: Menu item in search group navigation panel.
                 $this->out->menuItem(common_local_url('featured'), _m('MENU','Featured'),
                     // TRANS: Menu item title in search group navigation panel.
-                    _('Featured users'), $action_name == 'featured', 'nav_featured');
+                    _('Featured users'), $this->actionName == 'featured', 'nav_featured');
             }
 
             // TRANS: Menu item in search group navigation panel.
             $this->out->menuItem(common_local_url('favorited'), _m('MENU','Popular'),
                 // TRANS: Menu item title in search group navigation panel.
-                _('Popular notices'), $action_name == 'favorited', 'nav_timeline_favorited');
+                _('Popular notices'), $this->actionName == 'favorited', 'nav_timeline_favorited');
 
             Event::handle('EndPublicGroupNav', array($this));
         }
index 921de71a1a434d2323171d574536198e2f2c41d7..ad7fc82049e3438dba053335839db995c5095d66 100644 (file)
@@ -155,6 +155,9 @@ class DirectoryPlugin extends Plugin
         return true;
     }
 
+    // The following three function are to replace the existing groups
+    // list page with the directory plugin's group directory page
+
     /**
      * Hijack the mapping (Action -> URL) and return the URL to our
      * group directory page instead of the normal groups page
@@ -193,6 +196,24 @@ class DirectoryPlugin extends Plugin
         return true;
     }
 
+    /**
+     * Fool the public nav into thinking it's on the regular
+     * group page when it's actually on our injected group
+     * directory page. This way "Groups" gets hilighted when
+     * when we're on the groups directory page.
+     *
+     * @param type $action the current action
+     *
+     * @return boolean hook flag
+     */
+    function onStartPublicGroupNav($action)
+    {
+        if ($action->trimmed('action') == 'groupdirectory') {
+            $action->actionName = 'groups';
+        }
+        return true;
+    }
+
     /**
      * Modify the public local nav to add a link to the user directory
      *