From c57a0ce7cd6670529d59103776277cef56109987 Mon Sep 17 00:00:00 2001 From: colemanw <coleman@civicrm.org> Date: Sun, 30 Jul 2023 18:00:28 -0400 Subject: [PATCH] ActionMapping - Add icons --- CRM/Core/BAO/ActionSchedule.php | 1 + ...vider.php => ActionScheduleSpecProvider.php} | 17 ++++++++++------- .../api/v4/Entity/ActionScheduleTest.php | 6 +++--- 3 files changed, 14 insertions(+), 10 deletions(-) rename Civi/Api4/Service/Spec/Provider/{ActionScheduleCreationSpecProvider.php => ActionScheduleSpecProvider.php} (54%) diff --git a/CRM/Core/BAO/ActionSchedule.php b/CRM/Core/BAO/ActionSchedule.php index 761f0f7311..c38607f793 100644 --- a/CRM/Core/BAO/ActionSchedule.php +++ b/CRM/Core/BAO/ActionSchedule.php @@ -64,6 +64,7 @@ class CRM_Core_BAO_ActionSchedule extends CRM_Core_DAO_ActionSchedule implements 'id' => $mapping->getId(), 'name' => $mapping->getName(), 'label' => $mapping->getLabel(), + 'icon' => \Civi\Api4\Utils\CoreUtil::getInfoItem($mapping->getEntityName(), 'icon'), ]; } usort($mappings, function($m1, $m2) { diff --git a/Civi/Api4/Service/Spec/Provider/ActionScheduleCreationSpecProvider.php b/Civi/Api4/Service/Spec/Provider/ActionScheduleSpecProvider.php similarity index 54% rename from Civi/Api4/Service/Spec/Provider/ActionScheduleCreationSpecProvider.php rename to Civi/Api4/Service/Spec/Provider/ActionScheduleSpecProvider.php index 32173c1ca7..d0f13c162e 100644 --- a/Civi/Api4/Service/Spec/Provider/ActionScheduleCreationSpecProvider.php +++ b/Civi/Api4/Service/Spec/Provider/ActionScheduleSpecProvider.php @@ -18,24 +18,27 @@ use Civi\Api4\Service\Spec\RequestSpec; * @service * @internal */ -class ActionScheduleCreationSpecProvider extends \Civi\Core\Service\AutoService implements Generic\SpecProviderInterface { +class ActionScheduleSpecProvider extends \Civi\Core\Service\AutoService implements Generic\SpecProviderInterface { /** * @inheritDoc */ public function modifySpec(RequestSpec $spec) { - $spec->getFieldByName('title')->setRequired(TRUE); - $spec->getFieldByName('mapping_id')->setRequired(TRUE); - $spec->getFieldByName('entity_value')->setRequired(TRUE); - $spec->getFieldByName('start_action_date')->setRequiredIf('empty($values.absolute_date)'); - $spec->getFieldByName('absolute_date')->setRequiredIf('empty($values.start_action_date)'); + if ($spec->getAction() === 'create') { + $spec->getFieldByName('title')->setRequired(TRUE); + $spec->getFieldByName('mapping_id')->setRequired(TRUE); + $spec->getFieldByName('entity_value')->setRequired(TRUE); + $spec->getFieldByName('start_action_date')->setRequiredIf('empty($values.absolute_date)'); + $spec->getFieldByName('absolute_date')->setRequiredIf('empty($values.start_action_date)'); + } + $spec->getFieldByName('mapping_id')->setSuffixes(['name', 'label', 'icon']); } /** * @inheritDoc */ public function applies($entity, $action) { - return $entity === 'ActionSchedule' && $action === 'create'; + return $entity === 'ActionSchedule'; } } diff --git a/tests/phpunit/api/v4/Entity/ActionScheduleTest.php b/tests/phpunit/api/v4/Entity/ActionScheduleTest.php index aa76767ba9..54709fdab7 100644 --- a/tests/phpunit/api/v4/Entity/ActionScheduleTest.php +++ b/tests/phpunit/api/v4/Entity/ActionScheduleTest.php @@ -24,12 +24,12 @@ class ActionScheduleTest extends Api4TestBase { public function testGetOptionsBasic(): void { $fields = ActionSchedule::getFields(FALSE) - ->setLoadOptions(['id', 'name', 'label']) + ->setLoadOptions(['id', 'name', 'label', 'icon']) ->execute() ->indexBy('name'); - $this->assertContains(['id' => '1', 'name' => 'activity_type', 'label' => 'Activity'], $fields['mapping_id']['options']); - $this->assertContains(['id' => 'contribpage', 'name' => 'contribpage', 'label' => 'Contribution Page'], $fields['mapping_id']['options']); + $this->assertContains(['id' => '1', 'name' => 'activity_type', 'label' => 'Activity', 'icon' => 'fa-tasks'], $fields['mapping_id']['options']); + $this->assertContains(['id' => 'contribpage', 'name' => 'contribpage', 'label' => 'Contribution Page', 'icon' => 'fa-credit-card'], $fields['mapping_id']['options']); $this->assertContains(['id' => 'day', 'name' => 'day', 'label' => 'days'], $fields['start_action_unit']['options']); $this->assertContains(['id' => 'week', 'name' => 'week', 'label' => 'weeks'], $fields['repetition_frequency_unit']['options']); -- 2.25.1