From 194b816856818da568ce0d03bbb531f0cbf36226 Mon Sep 17 00:00:00 2001 From: Coleman Watts Date: Fri, 16 Dec 2016 15:32:21 -0500 Subject: [PATCH 1/2] CRM-19723 - Fix activity links --- CRM/Activity/Form/ActivityLinks.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/CRM/Activity/Form/ActivityLinks.php b/CRM/Activity/Form/ActivityLinks.php index cddd1bbf3a5..ef08fde392e 100644 --- a/CRM/Activity/Form/ActivityLinks.php +++ b/CRM/Activity/Form/ActivityLinks.php @@ -57,7 +57,7 @@ public static function commonBuildQuickForm($self) { $activityTypes = array(); - foreach ($allTypes as $id => $act) { + foreach ($allTypes as $act) { $url = 'civicrm/activity/add'; if ($act['name'] == 'Email') { if (!CRM_Utils_Mail::validOutBoundMail() || !$contactId) { @@ -93,7 +93,7 @@ public static function commonBuildQuickForm($self) { continue; } $act['url'] = CRM_Utils_System::url($url, - "{$urlParams}{$id}", FALSE, NULL, FALSE + "{$urlParams}{$act['value']}", FALSE, NULL, FALSE ); $act += array('icon' => 'fa-plus-square-o'); $activityTypes[$act['value']] = $act; From 8c99c0bb77b160c05ec7949f6781fe92e2261443 Mon Sep 17 00:00:00 2001 From: Coleman Watts Date: Fri, 16 Dec 2016 15:32:55 -0500 Subject: [PATCH 2/2] CRM-19723 - Display activity type icons in datatables --- CRM/Activity/BAO/Activity.php | 12 +++++++++++- CRM/Case/BAO/Case.php | 3 ++- CRM/Case/PseudoConstant.php | 3 ++- tests/phpunit/CRM/Activity/BAO/ActivityTest.php | 2 +- 4 files changed, 16 insertions(+), 4 deletions(-) diff --git a/CRM/Activity/BAO/Activity.php b/CRM/Activity/BAO/Activity.php index 6d892bf809c..247fff53017 100644 --- a/CRM/Activity/BAO/Activity.php +++ b/CRM/Activity/BAO/Activity.php @@ -2461,6 +2461,16 @@ public static function getContactActivitySelector(&$params) { $params['caseId'] = NULL; $context = CRM_Utils_Array::value('context', $params); $showContactOverlay = !CRM_Utils_String::startsWith($context, "dashlet"); + $activityTypeInfo = civicrm_api3('OptionValue', 'get', array( + 'option_group_id' => "activity_type", + 'options' => array('limit' => 0), + )); + $activityIcons = array(); + foreach ($activityTypeInfo['values'] as $type) { + if (!empty($type['icon'])) { + $activityIcons[$type['value']] = $type['icon']; + } + } // Get contact activities. $activities = CRM_Activity_BAO_Activity::getActivities($params); @@ -2502,7 +2512,7 @@ public static function getContactActivitySelector(&$params) { $activity['DT_RowAttr']['data-entity'] = 'activity'; $activity['DT_RowAttr']['data-id'] = $activityId; - $activity['activity_type'] = $values['activity_type']; + $activity['activity_type'] = (!empty($activityIcons[$values['activity_type_id']]) ? ' ' : '') . $values['activity_type']; $activity['subject'] = $values['subject']; $activity['source_contact_name'] = ''; diff --git a/CRM/Case/BAO/Case.php b/CRM/Case/BAO/Case.php index 5fb8c314879..02db237d8bc 100644 --- a/CRM/Case/BAO/Case.php +++ b/CRM/Case/BAO/Case.php @@ -1126,7 +1126,8 @@ public static function getCaseActivity($caseID, &$params, $contactID, $context = $caseActivity['subject'] = $dao->subject; //Activity Type - $caseActivity['type'] = $activityTypes[$dao->type]['label']; + $caseActivity['type'] = (!empty($activityTypes[$dao->type]['icon']) ? ' ' : '') + . $activityTypes[$dao->type]['label']; //Activity Target (With) $targetContact = ''; diff --git a/CRM/Case/PseudoConstant.php b/CRM/Case/PseudoConstant.php index c80425acfaf..41f813b33d2 100644 --- a/CRM/Case/PseudoConstant.php +++ b/CRM/Case/PseudoConstant.php @@ -199,7 +199,7 @@ public static function &caseActivityType($indexName = TRUE, $all = FALSE) { self::$activityTypeList[$cache] = array(); $query = " - SELECT v.label as label ,v.value as value, v.name as name, v.description as description + SELECT v.label as label ,v.value as value, v.name as name, v.description as description, v.icon FROM civicrm_option_value v, civicrm_option_group g WHERE v.option_group_id = g.id @@ -231,6 +231,7 @@ public static function &caseActivityType($indexName = TRUE, $all = FALSE) { $activityTypes[$index]['id'] = $dao->value; $activityTypes[$index]['label'] = $dao->label; $activityTypes[$index]['name'] = $dao->name; + $activityTypes[$index]['icon'] = $dao->icon; $activityTypes[$index]['description'] = $dao->description; } self::$activityTypeList[$cache] = $activityTypes; diff --git a/tests/phpunit/CRM/Activity/BAO/ActivityTest.php b/tests/phpunit/CRM/Activity/BAO/ActivityTest.php index 09abc8b66bd..006307aa809 100644 --- a/tests/phpunit/CRM/Activity/BAO/ActivityTest.php +++ b/tests/phpunit/CRM/Activity/BAO/ActivityTest.php @@ -381,7 +381,7 @@ public function testActivityFilters() { $activities = $obj->getContactActivity(); // This should include activities of type Meeting only. foreach ($activities['data'] as $key => $value) { - $this->assertEquals('Meeting', $value['activity_type']); + $this->assertContains('Meeting', $value['activity_type']); } unset($_GET['activity_type_id']);