]> git.mxchange.org Git - quix0rs-gnu-social.git/blobdiff - lib/groupprofileblock.php
Functions should return quickly (cosmetic)
[quix0rs-gnu-social.git] / lib / groupprofileblock.php
index 9df541e343bacadb12973248d501829d3306f3b3..87ec174dc6f336c0a9ef1d6efc7575e573331fd5 100644 (file)
@@ -4,7 +4,7 @@
  * Copyright (C) 2011, StatusNet, Inc.
  *
  * Profile block to show for a group
- * 
+ *
  * PHP version 5
  *
  * This program is free software: you can redistribute it and/or modify
@@ -44,7 +44,6 @@ if (!defined('STATUSNET')) {
  * @license   http://www.fsf.org/licensing/licenses/agpl-3.0.html AGPL 3.0
  * @link      http://status.net/
  */
-
 class GroupProfileBlock extends ProfileBlock
 {
     protected $group = null;
@@ -68,7 +67,7 @@ class GroupProfileBlock extends ProfileBlock
 
     function url()
     {
-        return $this->group->mainpage;
+        return $this->group->homeUrl();
     }
 
     function location()
@@ -86,6 +85,11 @@ class GroupProfileBlock extends ProfileBlock
         return $this->group->description;
     }
 
+    function otherProfiles()
+    {
+        return array();
+    }
+
     function showActions()
     {
         $cur = common_current_user();
@@ -97,10 +101,14 @@ class GroupProfileBlock extends ProfileBlock
             $this->out->elementStart('li', 'entity_subscribe');
             if (Event::handle('StartGroupSubscribe', array($this, $this->group))) {
                 if ($cur) {
-                    if ($cur->isMember($this->group)) {
+                    $profile = $cur->getProfile();
+                    if ($profile->isMember($this->group)) {
                         $lf = new LeaveForm($this->out, $this->group);
                         $lf->show();
-                    } else if (!Group_block::isBlocked($this->group, $cur->getProfile())) {
+                    } else if ($profile->isPendingMember($this->group)) {
+                        $cf = new CancelGroupForm($this->out, $this->group);
+                        $cf->show();
+                    } else if (!Group_block::isBlocked($this->group, $profile)) {
                         $jf = new JoinForm($this->out, $this->group);
                         $jf->show();
                     }
@@ -108,15 +116,65 @@ class GroupProfileBlock extends ProfileBlock
                 Event::handle('EndGroupSubscribe', array($this, $this->group));
             }
             $this->out->elementEnd('li');
+            if ($cur && $cur->isAdmin($this->group)) {
+                $this->out->elementStart('li', 'entity_edit');
+                $this->out->element('a', array('href' => common_local_url('editgroup',
+                                                                          array('nickname' => $this->group->nickname)),
+                                               // TRANS: Tooltip for menu item in the group navigation page. Only shown for group administrators.
+                                               // TRANS: %s is the nickname of the group.
+                                               'title' => sprintf(_m('TOOLTIP','Edit %s group properties'), $this->group->nickname)),
+                                    // TRANS: Link text for link on user profile.
+                                    _m('BUTTON','Edit'));
+                $this->out->elementEnd('li');
+                $this->out->elementStart('li', 'entity_edit');
+                $this->out->element('a', array('href' => common_local_url('grouplogo',
+                                                                          array('nickname' => $this->group->nickname)),
+                                               // TRANS: Tooltip for menu item in the group navigation page. Only shown for group administrators.
+                                               // TRANS: %s is the nickname of the group.
+                                               'title' => sprintf(_m('TOOLTIP','Add or edit %s logo'), $this->group->nickname)),
+                                    // TRANS: Link text for link on user profile.
+                                    _m('MENU','Logo'));
+                $this->out->elementEnd('li');
+            }
             if ($cur && $cur->hasRight(Right::DELETEGROUP)) {
                 $this->out->elementStart('li', 'entity_delete');
                 $df = new DeleteGroupForm($this->out, $this->group);
                 $df->show();
                 $this->out->elementEnd('li');
             }
+
             Event::handle('EndGroupActionsList', array($this, $this->group));
         }
         $this->out->elementEnd('ul');
         $this->out->elementEnd('div');
     }
+
+    function show()
+    {
+        $this->out->elementStart('div', 'profile_block group_profile_block section');
+        if (Event::handle('StartShowGroupProfileBlock', array($this->out, $this->group))) {
+            parent::show();
+            Event::handle('EndShowGroupProfileBlock', array($this->out, $this->group));
+        }
+        $this->out->elementEnd('div');
+    }
+
+    function showName()
+    {
+        parent::showName();
+        $this->showAliases();
+    }
+
+    function showAliases()
+    {
+        $aliases = $this->group->getAliases();
+
+        if (!empty($aliases)) {
+            $this->out->elementStart('ul', 'group_aliases');
+            foreach ($aliases as $alias) {
+                $this->out->element('li', 'group_alias', $alias);
+            }
+            $this->out->elementEnd('ul');
+        }
+    }
 }