Send `is_default` data as boolean, not rendered icon; add js icon helper
authorAndrew Hunt <andrew@aghstrategies.com>
Fri, 8 May 2020 19:40:46 +0000 (15:40 -0400)
committerAndrew Hunt <andrew@aghstrategies.com>
Mon, 11 May 2020 13:53:50 +0000 (09:53 -0400)
CRM/Campaign/Page/DashBoard.php
CRM/Core/BAO/CustomOption.php
CRM/Price/Page/Option.php
js/Common.js
templates/CRM/Campaign/Form/Search/Petition.tpl
templates/CRM/Campaign/Form/Search/Survey.tpl
templates/CRM/Custom/Page/Option.tpl

index 563f85654b9a02b09bef4ce4e0a6b681ed4c06bb..dfd6f3126cd7bcbd8b30cef56ad646260d5ddb11 100644 (file)
@@ -312,7 +312,8 @@ class CRM_Campaign_Page_DashBoard extends CRM_Core_Page {
         }
         $surveysData[$sid]['isActive'] = $isActive;
 
-        $surveysData[$sid]['is_default'] = self::crmIcon('fa-check', ts('Default'), $surveysData[$sid]['is_default']);
+        // For some reason, 'is_default' is coming as a string.
+        $surveysData[$sid]['is_default'] = boolval($surveysData[$sid]['is_default']);
 
         if ($surveysData[$sid]['result_id']) {
           $resultSet = '<a href= "javascript:displayResultSet( ' . $sid . ',' . "'" . $surveysData[$sid]['title'] . "'" . ', ' . $surveysData[$sid]['result_id'] . ' )" title="' . ts('view result set') . '">' . ts('Result Set') . '</a>';
@@ -411,7 +412,9 @@ class CRM_Campaign_Page_DashBoard extends CRM_Core_Page {
           $isActive = ts('Yes');
         }
         $petitionsData[$pid]['isActive'] = $isActive;
-        $petitionsData[$pid]['is_default'] = self::crmIcon('fa-check', ts('Default'), $petitionsData[$pid]['is_default']);
+
+        // For some reason, 'is_default' is coming as a string.
+        $petitionsData[$pid]['is_default'] = boolval($petitionsData[$pid]['is_default']);
 
         $petitionsData[$pid]['action'] = CRM_Core_Action::formLink(self::petitionActionLinks(),
           $action,
index 7ada06678891739ceb6b36e1b6ca6fd39b7de8ab..9009cce0ac78f5bdc2e39ef9bc38a15ececb23a3 100644 (file)
@@ -138,12 +138,11 @@ class CRM_Core_BAO_CustomOption {
       }
 
       if (in_array($field->html_type, ['CheckBox', 'Multi-Select'])) {
-        $isDefault = (isset($defVal) && in_array($dao->value, $defVal));
+        $options[$dao->id]['is_default'] = (isset($defVal) && in_array($dao->value, $defVal));
       }
       else {
-        $isDefault = ($field->default_value == $dao->value);
+        $options[$dao->id]['is_default'] = ($field->default_value == $dao->value);
       }
-      $options[$dao->id]['is_default'] = CRM_Core_Page::crmIcon('fa-check', ts('Default'), $isDefault);
       $options[$dao->id]['description'] = $dao->description;
       $options[$dao->id]['class'] = $dao->id . ',' . $class;
       $options[$dao->id]['is_active'] = empty($dao->is_active) ? ts('No') : ts('Yes');
index 14dfa3f65f66ccc8d8f60e2dac3e4c7362c24d13..a8ea081f5004055436705270132fab44e85273b8 100644 (file)
@@ -160,7 +160,6 @@ class CRM_Price_Page_Option extends CRM_Core_Page {
           $action -= CRM_Core_Action::DISABLE;
         }
       }
-      $customOption[$id]['is_default'] = CRM_Core_Page::crmIcon('fa-check', ts('Default'), !empty($customOption[$id]['is_default']));
       $customOption[$id]['order'] = $customOption[$id]['weight'];
       $customOption[$id]['action'] = CRM_Core_Action::formLink(self::actionLinks(), $action,
         [
index f4c2a60a6f09eeb0ed0b4eae89e90867f5001d19..af35e7df80d5d48af3b7d240c7d5002df8bfc760 100644 (file)
@@ -395,6 +395,34 @@ if (!CRM.vars) CRM.vars = {};
     return ret + _.escape(row.text) + (description ? '<div class="crm-select2-row-description"><p>' + _.escape(description) + '</p></div>' : '');
   }
 
+  /**
+   * Helper to generate an icon with alt text.
+   *
+   * See also smarty `{icon}` and CRM_Core_Page::crmIcon() functions
+   *
+   * @param string icon
+   *   The Font Awesome icon class to use.
+   * @param string text
+   *   Alt text to display.
+   * @param mixed condition
+   *   This will only display if this is truthy.
+   *
+   * @return string
+   *   The formatted icon markup.
+   */
+  CRM.utils.formatConditionalIcon = function (icon, text, condition) {
+    if (!condition) {
+      return '';
+    }
+    var title = '';
+    var sr = '';
+    if (text) {
+      title = ' title="' + text + '"';
+      sr = '<span class="sr-only">' + text + '</span>';
+    }
+    return '<i class="crm-i ' + icon + '"' + title + '></i>' + sr;
+  };
+
   /**
    * Wrapper for select2 initialization function; supplies defaults
    * @param options object
index e14be7e538ff6a2caf5c3b88bb1bf44e0c2a3d92..9db79c205d70813d26145810e1a4bb6d57bb27c9 100644 (file)
@@ -198,6 +198,7 @@ function loadPetitionList( )
 
          //add id for yes/no column.
          CRM.$(nRow).children().eq(8).attr( 'id', rowId + '_status' );
+         CRM.$(nRow).children().eq(6).html(CRM.utils.formatConditionalIcon('fa-check', ts('Default'), nRow.cells[6].innerText));
 
          return nRow;
     },
index 1177d3a5ceccec75402be6bc9da2fb466e4dba5f..ec82b95ed58d43142679f48b2fbd1eef6210d7af 100644 (file)
@@ -210,6 +210,7 @@ function loadSurveyList( )
 
          //add id for yes/no column.
          CRM.$(nRow).children().eq(11).attr( 'id', rowId + '_status' );
+         CRM.$(nRow).children().eq(9).html(CRM.utils.formatConditionalIcon('fa-check', ts('Default'), nRow.cells[9].innerText));
 
          return nRow;
     },
index f47cafc27e4ea8fe7e0244f57424b14936864883..b61de6b99e75d1aebaa74d19817c15f840c8fb7e 100644 (file)
@@ -54,8 +54,8 @@
               "aoColumns"  : [
                               {sClass:'crm-custom_option-label'},
                               {sClass:'crm-custom_option-value'},
+                              {sClass:'crm-custom_option-description'},
                               {sClass:'crm-custom_option-default_value'},
-                              {sClass:'crm-custom_option-default_description'},
                               {sClass:'crm-custom_option-is_active'},
                               {sClass:'crm-custom_option-links'},
                               {sClass:'hiddenElement'}
@@ -87,7 +87,7 @@
                 $(nRow).addClass(cl).attr({id: 'OptionValue-' + id});
                 $('td:eq(0)', nRow).wrapInner('<span class="crm-editable crmf-label" />');
                 $('td:eq(0)', nRow).prepend('<span class="crm-i fa-arrows crm-grip" />');
-                $('td:eq(2)', nRow).addClass('crmf-default_value');
+                $('td:eq(3)', nRow).addClass('crmf-default_value').html(CRM.utils.formatConditionalIcon('fa-check', ts('Default'), nRow.cells[3].innerText));
                 return nRow;
               },
               "fnDrawCallback": function() {