CRM-15789 - Move htmlAttributes helper to utils class
authorColeman Watts <coleman@civicrm.org>
Wed, 21 Jan 2015 02:32:05 +0000 (21:32 -0500)
committerColeman Watts <coleman@civicrm.org>
Wed, 21 Jan 2015 15:01:45 +0000 (10:01 -0500)
----------------------------------------
* CRM-15789: Add icons to submit buttons
  https://issues.civicrm.org/jira/browse/CRM-15789

CRM/Core/Smarty/plugins/block.crmButton.php
CRM/Core/Smarty/plugins/function.crmAttributes.php
CRM/Utils/String.php

index 55cb32ed6e0b52238f6119f0bef4c7e7c996004e..6bc7f906cabcb8ed1890fda59dc4eebab3083f57 100644 (file)
@@ -33,8 +33,6 @@
  *
  */
 
-require_once 'CRM/Core/Smarty/plugins/function.crmAttributes.php';
-
 /**
  * Generate the html for a button-style link
  *
@@ -49,7 +47,7 @@ require_once 'CRM/Core/Smarty/plugins/function.crmAttributes.php';
  *   The generated html.
  */
 function smarty_block_crmButton($params, $text, &$smarty) {
-  // Generate url (pass 'html' param as false to avoid double-encode by crmAttributes)
+  // Generate url (pass 'html' param as false to avoid double-encode by htmlAttributes)
   $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, '');
@@ -57,6 +55,6 @@ function smarty_block_crmButton($params, $text, &$smarty) {
   $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>";
+  $attributes = CRM_Utils_String::htmlAttributes($params);
+  return "<a $attributes><span><span class='icon ui-icon-$icon'></span> $text</span></a>";
 }
index 32ff894c3e62e19b5dfeb6c00d376546ee101e03..64bcf71333c146ddaf787116737c765db2e4615a 100644 (file)
@@ -23,7 +23,7 @@
  | GNU Affero General Public License or the licensing of CiviCRM,     |
  | see the CiviCRM license FAQ at http://civicrm.org/licensing        |
  +--------------------------------------------------------------------+
- */
+*/
 
 /**
  *
  * @param CRM_Core_Smarty $smarty
  *
  * @return string
- * @throws Exception
  */
 function smarty_function_crmAttributes($params, &$smarty) {
-  $output = '';
   $attributes = isset($params['a']) ? $params['a'] : array();
-  foreach ($attributes as $name => $vals) {
-    $output .= " $name=\"" . htmlspecialchars(implode(' ', (array) $vals)) . '"';
-  }
-  return $output;
+  return CRM_Utils_String::htmlAttributes($attributes);
 }
index a3606c2558ff92f1eb0def141467594a39ccbe75..ecf80f89352185567867b6f76e5387830eeb41c8 100644 (file)
@@ -777,4 +777,19 @@ class CRM_Utils_String {
     return str_replace('&amp;', '&', $htmlUrl);
   }
 
+  /**
+   * Formats a string of attributes for insertion in an html tag
+   *
+   * @param array $attributes
+   *
+   * @return string
+   */
+  public static function htmlAttributes($attributes) {
+    $output = '';
+    foreach ($attributes as $name => $vals) {
+      $output .= " $name=\"" . htmlspecialchars(implode(' ', (array) $vals)) . '"';
+    }
+    return ltrim($output);
+  }
+
 }