From a9b15f317dd7213c32866f4b1fcc2e88ed5a6a31 Mon Sep 17 00:00:00 2001 From: Andrew Hunt Date: Thu, 24 Oct 2013 16:31:53 -0400 Subject: [PATCH] further changes for easily adding action links via hook --- CRM/Contact/Page/View.php | 4 +++- CRM/Contact/Page/View/UserDashBoard.php | 3 ++- CRM/Core/Action.php | 13 ++++++++++--- CRM/Core/Block.php | 1 + templates/CRM/Activity/Form/ActivityLinks.tpl | 4 ++-- 5 files changed, 18 insertions(+), 7 deletions(-) diff --git a/CRM/Contact/Page/View.php b/CRM/Contact/Page/View.php index 41bcb0dfc5..8c066bbc6a 100644 --- a/CRM/Contact/Page/View.php +++ b/CRM/Contact/Page/View.php @@ -390,9 +390,11 @@ class CRM_Contact_Page_View extends CRM_Core_Page { } // See if other modules want to add links to the activtity bar - $hookLinks = CRM_Utils_Hook::links('view.contact.activity', + $hookLinks = array(); + CRM_Utils_Hook::links('view.contact.activity', 'Contact', $cid, + $hookLinks, CRM_Core_DAO::$_nullObject, CRM_Core_DAO::$_nullObject ); diff --git a/CRM/Contact/Page/View/UserDashBoard.php b/CRM/Contact/Page/View/UserDashBoard.php index 311f6eee6e..ab6a3aba94 100644 --- a/CRM/Contact/Page/View/UserDashBoard.php +++ b/CRM/Contact/Page/View/UserDashBoard.php @@ -243,7 +243,7 @@ class CRM_Contact_Page_View_UserDashBoard extends CRM_Core_Page { CRM_Core_Action::DISABLE => array( 'name' => ts('Disable'), 'url' => 'civicrm/contact/view/rel', - 'qs' => 'action=disable&reset=1&cid=%%cid%%&id=%%id%%&rtype=%%rtype%%&selectedChild=rel%%&context=dashboard', + 'qs' => 'action=disable&reset=1&cid=%%cid%%&id=%%id%%&rtype=%%rtype%%&selectedChild=rel&context=dashboard', 'extra' => 'onclick = "return confirm(\'' . $disableExtra . '\');"', 'title' => ts('Disable Relationship'), ), @@ -256,6 +256,7 @@ class CRM_Contact_Page_View_UserDashBoard extends CRM_Core_Page { 'Contact', CRM_Core_DAO::$_nullObject, self::$_links, + CRM_Core_DAO::$_nullObject, CRM_Core_DAO::$_nullObject ); return self::$_links; diff --git a/CRM/Core/Action.php b/CRM/Core/Action.php index 125496d0a7..2cb78ffd6b 100644 --- a/CRM/Core/Action.php +++ b/CRM/Core/Action.php @@ -217,16 +217,23 @@ class CRM_Core_Action { return NULL; } + // make links indexed sequentially instead of by bitmask + // otherwise it's next to impossible to reliably add new ones + $seqLinks = array(); + foreach ($links as $bit => $link) { + $link['bit'] = $bit; + $seqLinks[] = $link; + } if ($op && $objectName && $objectId) { - CRM_Utils_Hook::links($op, $objectName, $objectId, $links, $mask); + CRM_Utils_Hook::links($op, $objectName, $objectId, $seqLinks, $mask, $values); } $url = array(); $firstLink = TRUE; - foreach ($links as $m => $link) { - if (!$mask || ($mask & $m)) { + foreach ($seqLinks as $link) { + if (!$mask || !array_key_exists('bit', $link) || ($mask & $link['bit'])) { $extra = isset($link['extra']) ? self::replace($link['extra'], $values) : NULL; $frontend = (isset($link['fe'])) ? TRUE : FALSE; diff --git a/CRM/Core/Block.php b/CRM/Core/Block.php index f4bdcb3ce0..cb28fbfb40 100644 --- a/CRM/Core/Block.php +++ b/CRM/Core/Block.php @@ -419,6 +419,7 @@ class CRM_Core_Block { NULL, CRM_Core_DAO::$_nullObject, $values, + CRM_Core_DAO::$_nullObject, CRM_Core_DAO::$_nullObject ); diff --git a/templates/CRM/Activity/Form/ActivityLinks.tpl b/templates/CRM/Activity/Form/ActivityLinks.tpl index f1ac44866e..879587ce13 100644 --- a/templates/CRM/Activity/Form/ActivityLinks.tpl +++ b/templates/CRM/Activity/Form/ActivityLinks.tpl @@ -47,11 +47,11 @@ {if $hookLinks} {foreach from=$hookLinks item=link}
  • - + {if $link.img} {$link.title}  {/if} - {$link.title} + {$link.name}
  • {/foreach} -- 2.25.1