From d6e54e853dc3ca705cd9764168bc353c7953c5ad Mon Sep 17 00:00:00 2001 From: jitendrapurohit Date: Sat, 24 Jun 2023 10:52:36 +0530 Subject: [PATCH] Fix actions on Relationship search using Searchkit --- .../Api4/Action/SearchDisplay/AbstractRunAction.php | 3 +++ .../Api4/Action/SearchDisplay/GetSearchTasks.php | 3 ++- .../ang/crmSearchTasks/crmSearchTasks.component.js | 12 ++++++++++++ 3 files changed, 17 insertions(+), 1 deletion(-) diff --git a/ext/search_kit/Civi/Api4/Action/SearchDisplay/AbstractRunAction.php b/ext/search_kit/Civi/Api4/Action/SearchDisplay/AbstractRunAction.php index 73dfc4c92e..d1e9b7490c 100644 --- a/ext/search_kit/Civi/Api4/Action/SearchDisplay/AbstractRunAction.php +++ b/ext/search_kit/Civi/Api4/Action/SearchDisplay/AbstractRunAction.php @@ -118,6 +118,9 @@ abstract class AbstractRunAction extends \Civi\Api4\Generic\AbstractAction { protected function formatResult(iterable $result): array { $rows = []; $keyName = CoreUtil::getIdFieldName($this->savedSearch['api_entity']); + if ($this->savedSearch['api_entity'] === 'RelationshipCache') { + $keyName = 'relationship_id'; + } foreach ($result as $index => $record) { $data = $columns = []; foreach ($this->getSelectClause() as $key => $item) { diff --git a/ext/search_kit/Civi/Api4/Action/SearchDisplay/GetSearchTasks.php b/ext/search_kit/Civi/Api4/Action/SearchDisplay/GetSearchTasks.php index 9676e096d3..17b3b91c53 100644 --- a/ext/search_kit/Civi/Api4/Action/SearchDisplay/GetSearchTasks.php +++ b/ext/search_kit/Civi/Api4/Action/SearchDisplay/GetSearchTasks.php @@ -34,7 +34,8 @@ class GetSearchTasks extends \Civi\Api4\Generic\AbstractAction { */ public function _run(\Civi\Api4\Generic\Result $result) { // Adding checkPermissions filters out actions the user is not allowed to perform - $entity = Entity::get($this->checkPermissions)->addWhere('name', '=', $this->entity) + $entityName = ($this->entity === 'RelationshipCache') ? 'Relationship' : $this->entity; + $entity = Entity::get($this->checkPermissions)->addWhere('name', '=', $entityName) ->addSelect('name', 'title_plural') ->setChain([ 'actions' => ['$name', 'getActions', ['where' => [['name', 'IN', ['update', 'delete']]]], 'name'], diff --git a/ext/search_kit/ang/crmSearchTasks/crmSearchTasks.component.js b/ext/search_kit/ang/crmSearchTasks/crmSearchTasks.component.js index b0f96effe0..6b1d7d59bf 100644 --- a/ext/search_kit/ang/crmSearchTasks/crmSearchTasks.component.js +++ b/ext/search_kit/ang/crmSearchTasks/crmSearchTasks.component.js @@ -42,8 +42,17 @@ return $scope.$eval('' + ctrl.ids.length + action.number); }; + this.updateActionData = function() { + if (this.entity === 'RelationshipCache') { + this.entity = 'Relationship'; + this.entityInfo.title = ts('Relationship'); + this.entityInfo.title_plural = ts('Relationships'); + } + }; + this.getActionTitle = function(action) { if (ctrl.isActionAllowed(action)) { + ctrl.updateActionData(); return ctrl.ids.length ? ts('Perform action on %1 %2', {1: ctrl.ids.length, 2: ctrl.entityInfo[ctrl.ids.length === 1 ? 'title' : 'title_plural']}) : ts('Perform action on all %1', {1: ctrl.entityInfo.title_plural}); @@ -55,6 +64,9 @@ if (!ctrl.isActionAllowed(action)) { return; } + // Update data specific to entity actions. + ctrl.updateActionData(); + var data = { ids: ctrl.ids, entity: ctrl.entity, -- 2.25.1