* @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
{
protected $user;
protected $groups;
function haveGroups()
{
- return (!empty($this->groups) && ($this->groups->N > 0));
+ return ($this->groups instanceof User_group && $this->groups->N > 0);
}
- /**
- * Show the menu
- *
- * @return void
- */
- function show()
+ function tag()
{
- $action = $this->actionName;
+ return 'groups';
+ }
+
+ function getItems()
+ {
+ $items = array();
- $this->out->elementStart('ul', array('class' => 'nav'));
+ while ($this->groups instanceof User_group && $this->groups->fetch()) {
+ $items[] = array('placeholder',
+ array('nickname' => $this->groups->nickname,
+ 'mainpage' => $this->groups->homeUrl()),
+ $this->groups->getBestName(),
+ $this->groups->getBestName()
+ );
+ }
- if (Event::handle('StartGroupsNav', array($this))) {
+ return $items;
+ }
- while ($this->groups->fetch()) {
- $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);
- }
- Event::handle('EndGroupsNav', array($this));
+ function seeAllItem() {
+ return array('usergroups',
+ array('nickname' => $this->user->nickname),
+ // TRANS: Link description for seeing all groups.
+ _('See all'),
+ // TRANS: Link title for seeing all groups.
+ _('See all groups you belong to.'));
+ }
+
+ function item($actionName, array $args, $label, $description, $id=null, $cls=null)
+ {
+ if ($actionName != 'placeholder') {
+ return parent::item($actionName, $args, $label, $description, $id, $cls);
}
- $this->out->elementEnd('ul');
+ if (empty($id)) {
+ $id = $this->menuItemID('showgroup', array('nickname' => $args['nickname']));
+ }
+
+ $url = $args['mainpage'];
+
+ $this->out->menuItem($url,
+ $label,
+ $description,
+ $this->isCurrent($actionName, $args),
+ $id,
+ $cls);
}
}