RecentItems - Use font-awesome icons in recent items sidebar
authorColeman Watts <coleman@civicrm.org>
Sun, 3 Apr 2022 01:29:49 +0000 (21:29 -0400)
committerColeman Watts <coleman@civicrm.org>
Tue, 5 Apr 2022 00:49:13 +0000 (20:49 -0400)
CRM/Utils/Recent.php
templates/CRM/Block/RecentlyViewed.tpl
tests/phpunit/CRM/Activity/Form/SearchTest.php
tests/phpunit/CRM/Financial/Page/AjaxTest.php
tests/phpunit/CRM/Member/Selector/SearchTest.php
tests/phpunit/CRM/Pledge/Form/SearchTest.php

index aed16f4132f9efa9b9b2ed69dddcf3f70343ea6c..fc98cc37fe9488e238f2260aecd84783aa7e2cbf 100644 (file)
@@ -122,6 +122,7 @@ class CRM_Utils_Recent {
         'image_url' => $others['imageUrl'] ?? NULL,
         'edit_url' => $others['editUrl'] ?? NULL,
         'delete_url' => $others['deleteUrl'] ?? NULL,
+        'icon' => $others['icon'] ?? self::getIcon($type, $others['subtype'] ?? NULL),
       ]
     );
 
@@ -136,6 +137,32 @@ class CRM_Utils_Recent {
     $session->set(self::STORE_NAME, self::$_recent);
   }
 
+  /**
+   * @param $type
+   * @param $subType
+   * @return string|null
+   */
+  private static function getIcon($type, $subType) {
+    $icon = NULL;
+    $contactTypes = CRM_Contact_BAO_ContactType::getAllContactTypes();
+    if (!empty($contactTypes[$type])) {
+      // Pick icon from contact sub-type first if available, then contact type
+      $subTypesAndType = array_merge((array) CRM_Utils_Array::explodePadded($subType), [$type]);
+      foreach ($subTypesAndType as $contactType) {
+        $icon = $icon ?? $contactTypes[$contactType]['icon'] ?? NULL;
+      }
+      // If no contact type icon, proceed to lookup icon from dao
+      $type = 'Contact';
+    }
+    if (!$icon) {
+      $daoClass = CRM_Core_DAO_AllCoreTables::getFullName($type);
+      if ($daoClass) {
+        $icon = $daoClass::$_icon;
+      }
+    }
+    return $icon ?: 'fa-gear';
+  }
+
   /**
    * Callback for hook_civicrm_post().
    * @param \Civi\Core\Event\PostEvent $event
index e30a6a53b9b14f6a97f77fde21d37ba667890d17..4716f9b2cc1b8eefbd1661acaf2474054a028daa 100644 (file)
@@ -17,7 +17,7 @@
             {if $item.image_url}
               <span class="icon crm-icon {if $item.subtype}{$item.subtype}{else}{$item.type}{/if}-icon" style="background: url('{$item.image_url}')"></span>
             {else}
-              <span class="icon crm-icon {$item.type}{if $item.subtype}-subtype{/if}-icon"></span>
+              <i class="crm-i fa-fw {$item.icon}"></i>
             {/if}
             {if $item.isDeleted}<del>{/if}{$item.title}{if $item.isDeleted}</del>{/if}
           </a>
index 138195031fa9875078b64197006271bb6f4ed9e0..23792a6debbb3991c5c5b428a3d424cdb2e14fb8 100644 (file)
@@ -42,7 +42,7 @@ class CRM_Activity_Form_SearchTest extends CiviUnitTestCase {
     $this->assertEquals([
       [
         'contact_id' => '3',
-        'contact_type' => '<a href="/index.php?q=civicrm/contact/view&amp;reset=1&amp;cid=3" data-tooltip-url="/index.php?q=civicrm/profile/view&amp;reset=1&amp;gid=7&amp;id=3&amp;snippet=4&amp;is_show_email_task=1" class="crm-summary-link"><div class="icon crm-icon Individual-icon"></div></a>',
+        'contact_type' => '<a href="/index.php?q=civicrm/contact/view&amp;reset=1&amp;cid=3" data-tooltip-url="/index.php?q=civicrm/profile/view&amp;reset=1&amp;gid=7&amp;id=3&amp;snippet=4&amp;is_show_email_task=1" class="crm-summary-link"><i class="crm-i fa-fw fa-user" title=""></i></a>',
         'sort_name' => 'Anderson, Anthony',
         'display_name' => 'Mr. Anthony Anderson II',
         'activity_id' => '1',
index 35bff606e9decab3462ae04f6c3feb7fc3ec195a..b3d1801496ba1dd88d656535907fd1482821830a 100644 (file)
@@ -42,8 +42,8 @@ class CRM_Financial_Page_AjaxTest extends CiviUnitTestCase {
     $_REQUEST['return'] = TRUE;
     $json = CRM_Financial_Page_AJAX::getFinancialTransactionsList();
     $json = str_replace(rtrim(CIVICRM_UF_BASEURL, '/'), 'http://FIX ME', $json);
-    $this->assertEquals('{"sEcho": 1, "iTotalRecords": 1, "iTotalDisplayRecords": 1, "aaData": [ ["","<a href=\"/index.php?q=civicrm/contact/view&amp;reset=1&amp;cid=3\" data-tooltip-url=\"/index.php?q=civicrm/profile/view&amp;reset=1&amp;gid=7&amp;id=3&amp;snippet=4&amp;is_show_email_task=1\" class=\"crm-summary-link\"><div'
-    . ' class=\"icon crm-icon Individual-icon\"></div></a>","<a href=/index.php?q=civicrm/contact/view&amp;reset=1&amp;cid=3>Anderson, Anthony</a>","$100.00","12345","' . CRM_Utils_Date::customFormat(date('Ymd')) . ' 12:00 AM","' . CRM_Utils_Date::customFormat(date('Ymd')) . ' 12:00 AM",'
+    $this->assertEquals('{"sEcho": 1, "iTotalRecords": 1, "iTotalDisplayRecords": 1, "aaData": [ ["","<a href=\"/index.php?q=civicrm/contact/view&amp;reset=1&amp;cid=3\" data-tooltip-url=\"/index.php?q=civicrm/profile/view&amp;reset=1&amp;gid=7&amp;id=3&amp;snippet=4&amp;is_show_email_task=1\" class=\"crm-summary-link\">'
+    . '<i class=\"crm-i fa-fw fa-user\" title=\"\"></i></a>","<a href=/index.php?q=civicrm/contact/view&amp;reset=1&amp;cid=3>Anderson, Anthony</a>","$100.00","12345","' . CRM_Utils_Date::customFormat(date('Ymd')) . ' 12:00 AM","' . CRM_Utils_Date::customFormat(date('Ymd')) . ' 12:00 AM",'
     . '"Credit Card","Completed","Donation","<span><a href=\"/index.php?q=civicrm/contact/view/contribution&amp;reset=1&amp;id=1&amp;cid=3&amp;action=view&amp;context=contribution&amp;'
     . 'selectedChild=contribute\" class=\"action-item crm-hover-button\" title=\'View Contribution\' >View</a></span>"]] }', $json);
   }
@@ -66,8 +66,8 @@ class CRM_Financial_Page_AjaxTest extends CiviUnitTestCase {
     $_REQUEST['return'] = TRUE;
     $json = CRM_Financial_Page_AJAX::getFinancialTransactionsList();
     $json = str_replace(rtrim(CIVICRM_UF_BASEURL, '/'), 'http://FIX ME', $json);
-    $this->assertEquals('{"sEcho": 1, "iTotalRecords": 1, "iTotalDisplayRecords": 1, "aaData": [ ["<input type=\'checkbox\' id=\'mark_x_2\' name=\'mark_x_2\' value=\'1\' onclick=enableActions(\'x\')></input>","<a href=\"/index.php?q=civicrm/contact/view&amp;reset=1&amp;cid=3\" data-tooltip-url=\"/index.php?q=civicrm/profile/view&amp;reset=1&amp;gid=7&amp;id=3&amp;snippet=4&amp;is_show_email_task=1\" class=\"crm-summary-link\"><div'
-    . ' class=\"icon crm-icon Individual-icon\"></div></a>","<a href=/index.php?q=civicrm/contact/view&amp;reset=1&amp;cid=3>Anderson, Anthony</a>","$5.00","12345","' . CRM_Utils_Date::customFormat(date('Ymd')) . ' 12:00 AM","' . CRM_Utils_Date::customFormat(date('Ymd')) . ' 12:00 AM",'
+    $this->assertEquals('{"sEcho": 1, "iTotalRecords": 1, "iTotalDisplayRecords": 1, "aaData": [ ["<input type=\'checkbox\' id=\'mark_x_2\' name=\'mark_x_2\' value=\'1\' onclick=enableActions(\'x\')></input>","<a href=\"/index.php?q=civicrm/contact/view&amp;reset=1&amp;cid=3\" data-tooltip-url=\"/index.php?q=civicrm/profile/view&amp;reset=1&amp;gid=7&amp;id=3&amp;snippet=4&amp;is_show_email_task=1\" class=\"crm-summary-link\">'
+    . '<i class=\"crm-i fa-fw fa-user\" title=\"\"></i></a>","<a href=/index.php?q=civicrm/contact/view&amp;reset=1&amp;cid=3>Anderson, Anthony</a>","$5.00","12345","' . CRM_Utils_Date::customFormat(date('Ymd')) . ' 12:00 AM","' . CRM_Utils_Date::customFormat(date('Ymd')) . ' 12:00 AM",'
     . '"Credit Card","Completed","Donation","<span><a href=\"/index.php?q=civicrm/contact/view/contribution&amp;reset=1&amp;id=1&amp;cid=3&amp;action=view&amp;context=contribution&amp;'
     . 'selectedChild=contribute\" class=\"action-item crm-hover-button\" title=\'View Contribution\' >View</a><a href=\"#\" class=\"action-item crm-hover-button disable-action\" title=\'Assign Transaction\' onclick = \"assignRemove( 2,\'assign\' );\">Assign</a></span>"]] }', $json);
   }
index 01e599b45c6dc8910135bf7d09394dbc2f852ab3..709749b9fba7f3a5a19f53afee35a355e114f2f8 100644 (file)
@@ -35,7 +35,7 @@ class CRM_Member_Selector_SearchTest extends CiviUnitTestCase {
     $this->assertEquals([
       'contact_id' => $this->_contactID,
       'membership_id' => $membershipID,
-      'contact_type' => '<a href="/index.php?q=civicrm/contact/view&amp;reset=1&amp;cid=' . $this->_contactID . '" data-tooltip-url="/index.php?q=civicrm/profile/view&amp;reset=1&amp;gid=7&amp;id=' . $this->_contactID . '&amp;snippet=4&amp;is_show_email_task=1" class="crm-summary-link"><div class="icon crm-icon Individual-icon"></div></a>',
+      'contact_type' => '<a href="/index.php?q=civicrm/contact/view&amp;reset=1&amp;cid=' . $this->_contactID . '" data-tooltip-url="/index.php?q=civicrm/profile/view&amp;reset=1&amp;gid=7&amp;id=' . $this->_contactID . '&amp;snippet=4&amp;is_show_email_task=1" class="crm-summary-link"><i class="crm-i fa-fw fa-user" title=""></i></a>',
       'sort_name' => 'Anderson, Anthony',
       'membership_type' => 'General',
       'membership_join_date' => date('Y-m-d'),
index fb6562b4aaa469ac78e7a50594f4381b61d47d85..a074d68798c535caa9dfd99374415ff5146a585a 100644 (file)
@@ -53,7 +53,7 @@ class CRM_Pledge_Form_SearchTest extends CiviUnitTestCase {
       'pledge_status_name' => 'Pending Label**',
       'checkbox' => 'mark_x_1',
       'action' => '<span><a href="/index.php?q=civicrm/contact/view/pledge&amp;reset=1&amp;id=1&amp;cid=3&amp;action=view&amp;context=search&amp;selectedChild=pledge&amp;key=' . $qfKey . '" class="action-item crm-hover-button" title=' . "'" . 'View Pledge' . "'" . ' >View</a><a href="/index.php?q=civicrm/contact/view/pledge&amp;reset=1&amp;action=update&amp;id=1&amp;cid=3&amp;context=search&amp;key=' . $qfKey . '" class="action-item crm-hover-button" title=' . "'" . 'Edit Pledge' . "'" . ' >Edit</a></span><span class=' . "'" . 'btn-slide crm-hover-button' . "'" . '>more<ul class=' . "'" . 'panel' . "'" . '><li><a href="/index.php?q=civicrm/contact/view/pledge&amp;reset=1&amp;action=detach&amp;id=1&amp;cid=3&amp;context=search&amp;key=' . $qfKey . '" class="action-item crm-hover-button" title=' . "'" . 'Cancel Pledge' . "'" . ' onclick = "return confirm(' . "'" . 'Cancelling this pledge will also cancel any scheduled (and not completed) pledge payments. This action cannot be undone. Do you want to continue?' . "'" . ');">Cancel</a></li><li><a href="/index.php?q=civicrm/contact/view/pledge&amp;reset=1&amp;action=delete&amp;id=1&amp;cid=3&amp;context=search&amp;key=' . $qfKey . '" class="action-item crm-hover-button small-popup" title=' . "'" . 'Delete Pledge' . "'" . ' >Delete</a></li></ul></span>',
-      'contact_type' => '<a href="/index.php?q=civicrm/contact/view&amp;reset=1&amp;cid=3" data-tooltip-url="/index.php?q=civicrm/profile/view&amp;reset=1&amp;gid=7&amp;id=3&amp;snippet=4&amp;is_show_email_task=1" class="crm-summary-link"><div class="icon crm-icon Individual-icon"></div></a>',
+      'contact_type' => '<a href="/index.php?q=civicrm/contact/view&amp;reset=1&amp;cid=3" data-tooltip-url="/index.php?q=civicrm/profile/view&amp;reset=1&amp;gid=7&amp;id=3&amp;snippet=4&amp;is_show_email_task=1" class="crm-summary-link"><i class="crm-i fa-fw fa-user" title=""></i></a>',
     ], $rows[0]);
   }