]> git.mxchange.org Git - quix0rs-gnu-social.git/blobdiff - lib/groupnav.php
Merge remote-tracking branch 'mainline/1.0.x' into people_tags_rebase
[quix0rs-gnu-social.git] / lib / groupnav.php
index e3daff6a4219b0e1a30b742f4f23f14b017e761b..13795721aed3e376aed601acd14e31b7441b11ec 100644 (file)
  *
  * @category  Action
  * @package   StatusNet
- * @author    Evan Prodromou <evan@controlyourself.ca>
- * @author    Sarven Capadisli <csarven@controlyourself.ca>
+ * @author    Evan Prodromou <evan@status.net>
+ * @author    Sarven Capadisli <csarven@status.net>
  * @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://status.net/
  */
 
-if (!defined('LACONICA')) {
+if (!defined('STATUSNET') && !defined('LACONICA')) {
     exit(1);
 }
 
@@ -41,17 +41,15 @@ require_once INSTALLDIR.'/lib/widget.php';
  *
  * @category Output
  * @package  StatusNet
- * @author   Evan Prodromou <evan@controlyourself.ca>
- * @author   Sarven Capadisli <csarven@controlyourself.ca>
+ * @author   Evan Prodromou <evan@status.net>
+ * @author   Sarven Capadisli <csarven@status.net>
  * @license  http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0
  * @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,54 +68,94 @@ 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');
-            $this->out->menuItem(common_local_url('groupdesignsettings', array('nickname' =>
-                                                                  $nickname)),
-                                 _('Design'),
-                                 sprintf(_('Add or edit %s design'), $nickname),
-                                 $action_name == 'groupdesignsettings',
-                                 'nav_group_design');
+            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');
+                $this->out->menuItem(common_local_url('groupdesignsettings', array('nickname' =>
+                                                                      $nickname)),
+                                     // TRANS: Menu item in the group navigation page. Only shown for group administrators.
+                                     _m('MENU','Design'),
+                                     // 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 design'), $nickname),
+                                     $action_name == 'groupdesignsettings',
+                                     'nav_group_design');
+            }
+            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();
+    }
 }