CRM-15789 - Add helper function for button markup
authorColeman Watts <coleman@civicrm.org>
Tue, 20 Jan 2015 19:05:04 +0000 (14:05 -0500)
committerColeman Watts <coleman@civicrm.org>
Tue, 20 Jan 2015 19:59:25 +0000 (14:59 -0500)
----------------------------------------
* CRM-15789: Add icons to submit buttons
  https://issues.civicrm.org/jira/browse/CRM-15789

CRM/Core/Smarty/plugins/block.crmButton.php [new file with mode: 0644]

diff --git a/CRM/Core/Smarty/plugins/block.crmButton.php b/CRM/Core/Smarty/plugins/block.crmButton.php
new file mode 100644 (file)
index 0000000..55cb32e
--- /dev/null
@@ -0,0 +1,62 @@
+<?php
+/*
+ +--------------------------------------------------------------------+
+ | CiviCRM version 4.6                                                |
+ +--------------------------------------------------------------------+
+ | Copyright CiviCRM LLC (c) 2004-2014                                |
+ +--------------------------------------------------------------------+
+ | This file is a part of CiviCRM.                                    |
+ |                                                                    |
+ | CiviCRM is free software; you can copy, modify, and distribute it  |
+ | under the terms of the GNU Affero General Public License           |
+ | Version 3, 19 November 2007 and the CiviCRM Licensing Exception.   |
+ |                                                                    |
+ | CiviCRM is distributed in the hope that it will be useful, but     |
+ | WITHOUT ANY WARRANTY; without even the implied warranty of         |
+ | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.               |
+ | See the GNU Affero General Public License for more details.        |
+ |                                                                    |
+ | You should have received a copy of the GNU Affero General Public   |
+ | License and the CiviCRM Licensing Exception along                  |
+ | with this program; if not, contact CiviCRM LLC                     |
+ | at info[AT]civicrm[DOT]org. If you have questions about the        |
+ | GNU Affero General Public License or the licensing of CiviCRM,     |
+ | see the CiviCRM license FAQ at http://civicrm.org/licensing        |
+ +--------------------------------------------------------------------+
+ */
+
+/**
+ *
+ * @package CRM
+ * @copyright CiviCRM LLC (c) 2004-2014
+ * $Id$
+ *
+ */
+
+require_once 'CRM/Core/Smarty/plugins/function.crmAttributes.php';
+
+/**
+ * Generate the html for a button-style link
+ *
+ * @param array $params
+ *   Params of the {crmButton} call.
+ * @param string $text
+ *   Contents of block.
+ * @param CRM_Core_Smarty $smarty
+ *   The Smarty object.
+ *
+ * @return string
+ *   The generated html.
+ */
+function smarty_block_crmButton($params, $text, &$smarty) {
+  // Generate url (pass 'html' param as false to avoid double-encode by crmAttributes)
+  $params['href'] = CRM_Utils_System::crmURL($params + array('h' => FALSE));
+  // Always add class 'button' - fixme probably should be crm-button
+  $params['class'] = 'button ' . CRM_Utils_Array::value('class', $params, '');
+  // Any jQuery-UI icon works
+  $icon = CRM_Utils_Array::value('icon', $params, 'pencil');
+  // All other params are treated as html attributes
+  CRM_Utils_Array::remove($params, 'icon', 'p', 'q', 'a', 'f', 'h', 'fb', 'fe');
+  $attributes = smarty_function_crmAttributes(array('a' => $params), CRM_Core_DAO::$_nullObject);
+  return "<a$attributes><span><span class='icon ui-icon-$icon'></span> $text</span></a>";
+}