CRM-19769 - Add colors to entityRef output
authorColeman Watts <coleman@civicrm.org>
Fri, 23 Dec 2016 21:58:56 +0000 (16:58 -0500)
committerColeman Watts <coleman@civicrm.org>
Fri, 23 Dec 2016 22:09:00 +0000 (17:09 -0500)
CRM/Admin/Page/AJAX.php
api/v3/Generic/Getlist.php
js/Common.js

index 139321abe4f53c552938678ee2c1448d47f09a50..4374d62403c4ff5501c8f75eafe52d9b8449dec6 100644 (file)
@@ -266,7 +266,7 @@ class CRM_Admin_Page_AJAX {
 
     // query to list mergable tags
     $query = "
-SELECT t1.name, t1.id, t1.used_for, t2.name as parent
+SELECT t1.name, t1.id, t1.used_for, t1.color, t2.name as parent
 FROM   civicrm_tag t1
 LEFT JOIN civicrm_tag t2 ON t1.parent_id = t2.id
 WHERE  t1.id <> {$fromId} AND
@@ -280,6 +280,7 @@ LIMIT $limit";
       $row = array(
         'id' => $dao->id,
         'text' => ($dao->parent ? "{$dao->parent} :: " : '') . $dao->name,
+        'color' => isset($dao->color) ? $dao->color : NULL,
       );
       // Add warning about used_for types
       if (!empty($dao->used_for)) {
index b9334989ce69d9c0bd186b83662bf6e42a5b926e..1d4cac1dc0cd2687e8ed73d57da5fa6e683e1b7b 100644 (file)
@@ -88,6 +88,7 @@ function _civicrm_api3_generic_getList_defaults($entity, &$request, $apiDefaults
     'page_num' => 1,
     'input' => '',
     'image_field' => NULL,
+    'color_field' => isset($fields['color']) ? 'color' : NULL,
     'id_field' => $entity == 'option_value' ? 'value' : 'id',
     'description_field' => array(),
     'params' => array(),
@@ -149,6 +150,9 @@ function _civicrm_api3_generic_getlist_params(&$request) {
   if (!empty($request['image_field'])) {
     $fieldsToReturn[] = $request['image_field'];
   }
+  if (!empty($request['color_field'])) {
+    $fieldsToReturn[] = $request['color_field'];
+  }
   if (!empty($request['description_field'])) {
     $fieldsToReturn = array_merge($fieldsToReturn, (array) $request['description_field']);
   }
@@ -193,6 +197,9 @@ function _civicrm_api3_generic_getlist_output($result, $request, $entity, $field
       if (!empty($request['image_field'])) {
         $data['image'] = isset($row[$request['image_field']]) ? $row[$request['image_field']] : '';
       }
+      if (isset($row[$request['color_field']])) {
+        $data['color'] = $row[$request['color_field']];
+      }
       $output[] = $data;
     }
   }
index c5685fdd16fce50390fbd288af3c35eeedd8f76e..346e926f262bae392ed800ee1828508170f9c6f8 100644 (file)
@@ -492,9 +492,7 @@ if (!CRM.vars) CRM.vars = {};
         },
         minimumInputLength: 1,
         formatResult: CRM.utils.formatSelect2Result,
-        formatSelection: function(row) {
-          return _.escape((row.prefix !== undefined ? row.prefix + ' ' : '') + row.label + (row.suffix !== undefined ? ' ' + row.suffix : ''));
-        },
+        formatSelection: formatEntityRefSelection,
         escapeMarkup: _.identity,
         initSelection: function($el, callback) {
           var
@@ -828,6 +826,7 @@ if (!CRM.vars) CRM.vars = {};
       markup += '<div class="crm-select2-icon"><div class="crm-icon ' + row.icon_class + '-icon"></div></div>';
     }
     markup += '<div><div class="crm-select2-row-label '+(row.label_class || '')+'">' +
+      (row.color ? '<span class="crm-select-item-color" style="background-color: ' + row.color + '"></span> ' : '') +
       _.escape((row.prefix !== undefined ? row.prefix + ' ' : '') + row.label + (row.suffix !== undefined ? ' ' + row.suffix : '')) +
       '</div>' +
       '<div class="crm-select2-row-description">';
@@ -838,6 +837,11 @@ if (!CRM.vars) CRM.vars = {};
     return markup;
   };
 
+  function formatEntityRefSelection(row) {
+    return (row.color ? '<span class="crm-select-item-color" style="background-color: ' + row.color + '"></span> ' : '') +
+      _.escape((row.prefix !== undefined ? row.prefix + ' ' : '') + row.label + (row.suffix !== undefined ? ' ' + row.suffix : ''));
+  }
+
   function renderEntityRefCreateLinks($el) {
     var
       createLinks = $el.data('create-links'),