From 8b20399932ea3466a6019295be761249da70c52c Mon Sep 17 00:00:00 2001
From: Evan Prodromou <evan@status.net>
Date: Mon, 7 Feb 2011 10:23:56 -0500
Subject: [PATCH] Add a hook for group action list

---
 EVENTS.txt            |  8 ++++++++
 actions/showgroup.php | 35 +++++++++++++++++++----------------
 2 files changed, 27 insertions(+), 16 deletions(-)

diff --git a/EVENTS.txt b/EVENTS.txt
index 98927127b7..d6d8004674 100644
--- a/EVENTS.txt
+++ b/EVENTS.txt
@@ -1082,3 +1082,11 @@ EndInterpretCommand: Before running a command
 - $user: User who issued the command
 - $result: Resulting command
 
+StartGroupActionsList: Start the list of actions on a group profile page (after <ul>, before first <li>)
+- $action: action being executed (for output and params)
+- $group: group for the page
+
+EndGroupActionsList: End the list of actions on a group profile page (before </ul>, after last </li>)
+- $action: action being executed (for output and params)
+- $group: group for the page
+
diff --git a/actions/showgroup.php b/actions/showgroup.php
index f38cd420ac..58d7ec7c6f 100644
--- a/actions/showgroup.php
+++ b/actions/showgroup.php
@@ -303,25 +303,28 @@ class ShowgroupAction extends GroupDesignAction
         // TRANS: Group actions header (h2). Text hidden by default.
         $this->element('h2', null, _('Group actions'));
         $this->elementStart('ul');
-        $this->elementStart('li', 'entity_subscribe');
-        if (Event::handle('StartGroupSubscribe', array($this, $this->group))) {
-            if ($cur) {
-                if ($cur->isMember($this->group)) {
-                    $lf = new LeaveForm($this, $this->group);
-                    $lf->show();
-                } else if (!Group_block::isBlocked($this->group, $cur->getProfile())) {
-                    $jf = new JoinForm($this, $this->group);
-                    $jf->show();
+        if (Event::handle('StartGroupActionsList', array($this, $this->group))) {
+            $this->elementStart('li', 'entity_subscribe');
+            if (Event::handle('StartGroupSubscribe', array($this, $this->group))) {
+                if ($cur) {
+                    if ($cur->isMember($this->group)) {
+                        $lf = new LeaveForm($this, $this->group);
+                        $lf->show();
+                    } else if (!Group_block::isBlocked($this->group, $cur->getProfile())) {
+                        $jf = new JoinForm($this, $this->group);
+                        $jf->show();
+                    }
                 }
+                Event::handle('EndGroupSubscribe', array($this, $this->group));
             }
-            Event::handle('EndGroupSubscribe', array($this, $this->group));
-        }
-        $this->elementEnd('li');
-        if ($cur && $cur->hasRight(Right::DELETEGROUP)) {
-            $this->elementStart('li', 'entity_delete');
-            $df = new DeleteGroupForm($this, $this->group);
-            $df->show();
             $this->elementEnd('li');
+            if ($cur && $cur->hasRight(Right::DELETEGROUP)) {
+                $this->elementStart('li', 'entity_delete');
+                $df = new DeleteGroupForm($this, $this->group);
+                $df->show();
+                $this->elementEnd('li');
+            }
+            Event::handle('EndGroupActionsList', array($this, $this->group));
         }
         $this->elementEnd('ul');
         $this->elementEnd('div');
-- 
2.39.5