X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=lib%2Fgroupnav.php;h=33f77bef9b066235e498617cf2347bc61e68a902;hb=14fe22e4307044f2eb08264a7b83f9c2de245dba;hp=194247982cc6ae7e6b25c71fd816125902d9d66e;hpb=92f095f589b3fc4ab40f72f873d6a7a189b63a96;p=quix0rs-gnu-social.git diff --git a/lib/groupnav.php b/lib/groupnav.php index 194247982c..33f77bef9b 100644 --- a/lib/groupnav.php +++ b/lib/groupnav.php @@ -1,6 +1,6 @@ . * * @category Action - * @package Laconica - * @author Evan Prodromou - * @author Sarven Capadisli - * @copyright 2008 Control Yourself, Inc. + * @package StatusNet + * @author Evan Prodromou + * @author Sarven Capadisli + * @copyright 2008 StatusNet, Inc. * @license http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0 - * @link http://laconi.ca/ + * @link http://status.net/ */ -if (!defined('LACONICA')) { +if (!defined('STATUSNET') && !defined('LACONICA')) { exit(1); } @@ -40,18 +40,16 @@ require_once INSTALLDIR.'/lib/widget.php'; * Shows a group of tabs for a particular user group * * @category Output - * @package Laconica - * @author Evan Prodromou - * @author Sarven Capadisli + * @package StatusNet + * @author Evan Prodromou + * @author Sarven Capadisli * @license http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0 - * @link http://laconi.ca/ + * @link http://status.net/ * * @see HTMLOutputter */ - -class GroupNav extends Widget +class GroupNav extends Menu { - var $action = null; var $group = null; /** @@ -59,11 +57,9 @@ class GroupNav extends Widget * * @param Action $action current action, used for output */ - function __construct($action=null, $group=null) { parent::__construct($action); - $this->action = $action; $this->group = $group; } @@ -72,48 +68,85 @@ class GroupNav extends Widget * * @return void */ - function show() { $action_name = $this->action->trimmed('action'); $nickname = $this->group->nickname; $this->out->elementStart('ul', array('class' => 'nav')); - $this->out->menuItem(common_local_url('showgroup', array('nickname' => - $nickname)), - _('Group'), - sprintf(_('%s group'), $nickname), - $action_name == 'showgroup', - 'nav_group_group'); - $this->out->menuItem(common_local_url('groupmembers', array('nickname' => - $nickname)), - _('Members'), - sprintf(_('%s group members'), $nickname), - $action_name == 'groupmembers', - 'nav_group_members'); + if (Event::handle('StartGroupGroupNav', array($this))) { + $this->out->menuItem(common_local_url('showgroup', array('nickname' => + $nickname)), + // TRANS: Menu item in the group navigation page. + _m('MENU','Group'), + // TRANS: Tooltip for menu item in the group navigation page. + // TRANS: %s is the nickname of the group. + sprintf(_m('TOOLTIP','%s group'), $nickname), + $action_name == 'showgroup', + 'nav_group_group'); + $this->out->menuItem(common_local_url('groupmembers', array('nickname' => + $nickname)), + // TRANS: Menu item in the group navigation page. + _m('MENU','Members'), + // TRANS: Tooltip for menu item in the group navigation page. + // TRANS: %s is the nickname of the group. + sprintf(_m('TOOLTIP','%s group members'), $nickname), + $action_name == 'groupmembers', + 'nav_group_members'); - $cur = common_current_user(); + $cur = common_current_user(); - if ($cur && $cur->isAdmin($this->group)) { - $this->out->menuItem(common_local_url('blockedfromgroup', array('nickname' => - $nickname)), - _('Blocked'), - sprintf(_('%s blocked users'), $nickname), - $action_name == 'blockedfromgroup', - 'nav_group_blocked'); - $this->out->menuItem(common_local_url('editgroup', array('nickname' => - $nickname)), - _('Admin'), - sprintf(_('Edit %s group properties'), $nickname), - $action_name == 'editgroup', - 'nav_group_admin'); - $this->out->menuItem(common_local_url('grouplogo', array('nickname' => - $nickname)), - _('Logo'), - sprintf(_('Add or edit %s logo'), $nickname), - $action_name == 'grouplogo', - 'nav_group_logo'); + if ($cur && $cur->isAdmin($this->group)) { + $pending = $this->countPendingMembers(); + if ($pending || $this->group->join_policy == User_group::JOIN_POLICY_MODERATE) { + $this->out->menuItem(common_local_url('groupqueue', array('nickname' => + $nickname)), + // TRANS: Menu item in the group navigation page. Only shown for group administrators. + // TRANS: %d is the number of pending members. + sprintf(_m('MENU','Pending members (%d)','Pending members (%d)',$pending), $pending), + // TRANS: Tooltip for menu item in the group navigation page. Only shown for group administrators. + // TRANS: %s is the nickname of the group. + sprintf(_m('TOOLTIP','%s pending members'), $nickname), + $action_name == 'groupqueue', + 'nav_group_pending'); + } + $this->out->menuItem(common_local_url('blockedfromgroup', array('nickname' => + $nickname)), + // TRANS: Menu item in the group navigation page. Only shown for group administrators. + _m('MENU','Blocked'), + // TRANS: Tooltip for menu item in the group navigation page. Only shown for group administrators. + // TRANS: %s is the nickname of the group. + sprintf(_m('TOOLTIP','%s blocked users'), $nickname), + $action_name == 'blockedfromgroup', + 'nav_group_blocked'); + $this->out->menuItem(common_local_url('editgroup', array('nickname' => + $nickname)), + // TRANS: Menu item in the group navigation page. Only shown for group administrators. + _m('MENU','Admin'), + // TRANS: Tooltip for menu item in the group navigation page. Only shown for group administrators. + // TRANS: %s is the nickname of the group. + sprintf(_m('TOOLTIP','Edit %s group properties'), $nickname), + $action_name == 'editgroup', + 'nav_group_admin'); + $this->out->menuItem(common_local_url('grouplogo', array('nickname' => + $nickname)), + // TRANS: Menu item in the group navigation page. Only shown for group administrators. + _m('MENU','Logo'), + // TRANS: Tooltip for menu item in the group navigation page. Only shown for group administrators. + // TRANS: %s is the nickname of the group. + sprintf(_m('TOOLTIP','Add or edit %s logo'), $nickname), + $action_name == 'grouplogo', + 'nav_group_logo'); + } + Event::handle('EndGroupGroupNav', array($this)); } $this->out->elementEnd('ul'); } + + function countPendingMembers() + { + $req = new Group_join_queue(); + $req->group_id = $this->group->id; + return $req->count(); + } }