X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=lib%2Fgroupsnav.php;h=bedb9f9b6ebd7b9a557cd954677025c1f3af3118;hb=14fe22e4307044f2eb08264a7b83f9c2de245dba;hp=c023481a491ef6f14c021d86660693292142bc36;hpb=038ee13e79e969450d8e56e1705662ce7f0edf73;p=quix0rs-gnu-social.git diff --git a/lib/groupsnav.php b/lib/groupsnav.php index c023481a49..bedb9f9b6e 100644 --- a/lib/groupsnav.php +++ b/lib/groupsnav.php @@ -44,10 +44,8 @@ if (!defined('STATUSNET')) { * @license http://www.fsf.org/licensing/licenses/agpl-3.0.html AGPL 3.0 * @link http://status.net/ */ -class GroupsNav extends Menu +class GroupsNav extends MoreMenu { - const TOP_GROUPS = 5; - protected $user; protected $groups; @@ -55,7 +53,7 @@ class GroupsNav extends Menu { parent::__construct($action); $this->user = $user; - $this->groups = $this->getTopGroups($user); + $this->groups = $user->getGroups(); } function haveGroups() @@ -63,68 +61,31 @@ class GroupsNav extends Menu return (!empty($this->groups) && ($this->groups->N > 0)); } - function getTopGroups($user) - { - $memberships = Group_member::byMember($user->id, - 0, - self::TOP_GROUPS + 1); - - $g = array(); - - while ($memberships->fetch()) { - $g[] = User_group::staticGet('id', $memberships->group_id); - } - - return new ArrayWrapper($g); - } - - /** - * Show the menu - * - * @return void - */ - function show() + function tag() { - $action = $this->actionName; - - $this->out->elementStart('ul', array('class' => 'nav', - 'id' => 'nav_group')); + return 'groups'; + } - if (Event::handle('StartGroupsNav', array($this))) { + function getItems() + { + $items = array(); - $cnt = 0; - - while ($this->groups->fetch()) { - - $cnt++; - - if ($cnt > self::TOP_GROUPS) { - break; - } - - $this->out->menuItem(($this->groups->mainpage) ? - $this->groups->mainpage : - common_local_url('showgroup', - array('nickname' => $this->groups->nickname)), - $this->groups->getBestName(), - '', - $action == 'showgroup' && - $this->action->arg('nickname') == $this->groups->nickname, - 'nav_timeline_group_'.$this->groups->nickname); - } - - if ($cnt > self::TOP_GROUPS) { - $this->out->menuItem(sprintf('javascript:SN.U.showMoreGroupMenuItems("%s")', - common_local_url('AtomPubMembershipFeed', array('profile' => $this->user->id))), - _('More ▼'), - _('More groups'), - false, - 'nav_timeline_more_group_menu_items'); - } - - Event::handle('EndGroupsNav', array($this)); + while ($this->groups->fetch()) { + $items[] = array('showgroup', + array('nickname' => $this->groups->nickname), + $this->groups->getBestName(), + $this->groups->getBestName() + ); } - $this->out->elementEnd('ul'); + return $items; + } + + function seeAllItem() { + return array('usergroups', + array('nickname' => $this->user->nickname), + _('See all'), + _('See all groups you belong to')); } + }