X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=lib%2Fsubgroupnav.php;h=40447dd41a26a7a599abf3df8776771795f8dd95;hb=15ab9ff9e3303255ff14166ee86ffdf3bc4f52ce;hp=31c3ea0b568e8ed62b1e0524cec920ba621ef958;hpb=00c14d22ded3868939f4999daa0a3c3e4203c20e;p=quix0rs-gnu-social.git diff --git a/lib/subgroupnav.php b/lib/subgroupnav.php index 31c3ea0b56..40447dd41a 100644 --- a/lib/subgroupnav.php +++ b/lib/subgroupnav.php @@ -1,6 +1,6 @@ . * * @category Subs - * @package Laconica - * @author Evan Prodromou - * @copyright 2008-2009 Control Yourself, Inc. + * @package StatusNet + * @author Evan Prodromou + * @copyright 2008-2011 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); } @@ -37,27 +37,24 @@ require_once INSTALLDIR.'/lib/widget.php'; * Local nav menu for subscriptions, subscribers * * @category Subs - * @package Laconica - * @author Evan Prodromou + * @package StatusNet + * @author Evan Prodromou * @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/ */ - -class SubGroupNav extends Widget +class SubGroupNav extends Menu { - var $action = null; var $user = null; /** * Construction * * @param Action $action current action, used for output + * @param User $user Current user or NULL if "guest" */ - - function __construct($action=null, $user=null) + function __construct(Action $action=null, User $user=null) { parent::__construct($action); - $this->action = $action; $this->user = $user; } @@ -66,7 +63,6 @@ class SubGroupNav extends Widget * * @return void */ - function show() { $cur = common_current_user(); @@ -74,38 +70,99 @@ class SubGroupNav extends Widget $this->out->elementStart('ul', array('class' => 'nav')); - $this->out->menuItem(common_local_url('subscriptions', - array('nickname' => - $this->user->nickname)), - _('Subscriptions'), - sprintf(_('People %s subscribes to'), - $this->user->nickname), - $action == 'subscriptions', - 'nav_subscriptions'); - $this->out->menuItem(common_local_url('subscribers', - array('nickname' => - $this->user->nickname)), - _('Subscribers'), - sprintf(_('People subscribed to %s'), - $this->user->nickname), - $action == 'subscribers', - 'nav_subscribers'); - $this->out->menuItem(common_local_url('usergroups', - array('nickname' => - $this->user->nickname)), - _('Groups'), - sprintf(_('Groups %s is a member of'), - $this->user->nickname), - $action == 'usergroups', - 'nav_usergroups'); - if (!is_null($cur) && $this->user->id === $cur->id) { - $this->out->menuItem(common_local_url('invite'), - _('Invite'), - sprintf(_('Invite friends and colleagues to join you on %s'), - common_config('site', 'name')), - $action == 'invite', - 'nav_invite'); + if (Event::handle('StartSubGroupNav', array($this))) { + + $this->out->menuItem(common_local_url('showstream', array('nickname' => + $this->user->nickname)), + // TRANS: Menu item in local navigation menu. + _m('MENU','Profile'), + (empty($profile)) ? $this->user->nickname : $profile->getBestName(), + $action == 'showstream', + 'nav_profile'); + $this->out->menuItem(common_local_url('subscriptions', + array('nickname' => + $this->user->nickname)), + // TRANS: Menu item in local navigation menu. + _m('MENU','Subscriptions'), + // TRANS: Menu item title in local navigation menu. + // TRANS: %s is a user nickname. + sprintf(_('People %s subscribes to.'), + $this->user->nickname), + $action == 'subscriptions', + 'nav_subscriptions'); + $this->out->menuItem(common_local_url('subscribers', + array('nickname' => + $this->user->nickname)), + // TRANS: Menu item in local navigation menu. + _m('MENU','Subscribers'), + // TRANS: Menu item title in local navigation menu. + // TRANS: %s is a user nickname. + sprintf(_('People subscribed to %s.'), + $this->user->nickname), + $action == 'subscribers', + 'nav_subscribers'); + if ($cur && $cur->id == $this->user->id) { + // Possibly site admins should be able to get in here too + $pending = $this->countPendingSubs(); + if ($pending || $cur->subscribe_policy == User::SUBSCRIBE_POLICY_MODERATE) { + $this->out->menuItem(common_local_url('subqueue', + array('nickname' => + $this->user->nickname)), + // TRANS: Menu item in local navigation menu. + // TRANS: %d is the number of pending subscription requests. + sprintf(_m('MENU','Pending (%d)'), $pending), + // TRANS: Menu item title in local navigation menu. + sprintf(_('Approve pending subscription requests.'), + $this->user->nickname), + $action == 'subqueueaction', + 'nav_subscribers'); + } + } + $this->out->menuItem(common_local_url('usergroups', + array('nickname' => + $this->user->nickname)), + // TRANS: Menu item in local navigation menu. + _m('MENU','Groups'), + // TRANS: Menu item title in local navigation menu. + // TRANS: %s is a user nickname. + sprintf(_('Groups %s is a member of.'), + $this->user->nickname), + $action == 'usergroups', + 'nav_usergroups'); + $this->out->menuItem(common_local_url('peopletagsubscriptions', + array('nickname' => + $this->user->nickname)), + // TRANS: Menu item title in local navigation menu. + _m('MENU','Lists'), + // TRANS: Menu item title in local navigation menu. + // TRANS: %s is a user nickname. + sprintf(_('List subscriptions by %s.'), + $this->user->nickname), + in_array($action, array('peopletagsbyuser', 'peopletagsubscriptions', 'peopletagsforuser')), + 'nav_timeline_peopletags'); + + if (common_config('invite', 'enabled') && !is_null($cur) && $this->user->id === $cur->id) { + $this->out->menuItem(common_local_url('invite'), + // TRANS: Menu item in local navigation menu. + _m('MENU','Invite'), + // TRANS: Menu item title in local navigation menu. + // TRANS: %s is the StatusNet sitename. + sprintf(_('Invite friends and colleagues to join you on %s.'), + common_config('site', 'name')), + $action == 'invite', + 'nav_invite'); + } + + Event::handle('EndSubGroupNav', array($this)); } + $this->out->elementEnd('ul'); } + + function countPendingSubs() + { + $req = new Subscription_queue(); + $req->subscribed = $this->user->id; + return $req->count(); + } }