From 1e313889baf08545f314a9c6fc3378a4f07f94d1 Mon Sep 17 00:00:00 2001 From: Coleman Watts Date: Fri, 14 May 2021 11:52:09 -0400 Subject: [PATCH] SearchKit - Rename crmSearchActions module to crmSearchTasks & add hook_civicrm_searchKitTasks(). --- .../Action/SearchDisplay/GetSearchTasks.php | 38 +++++++++++-------- ext/search_kit/ang/crmSearchAdmin.ang.php | 2 +- .../ang/crmSearchAdmin/compose/controls.html | 2 +- .../ang/crmSearchDisplayTable.ang.php | 2 +- .../crmSearchDisplayTable.html | 2 +- ...Actions.ang.php => crmSearchTasks.ang.php} | 10 ++--- ...ons.module.js => crmSearchTasks.module.js} | 2 +- .../crmSearchBatchRunner.component.js | 4 +- .../crmSearchBatchRunner.html | 0 .../crmSearchInput/boolean.html | 0 .../crmMultiSelectDate.directive.js | 2 +- .../crmSearchInput.component.js | 4 +- .../crmSearchInput/crmSearchInput.html | 0 .../crmSearchInputVal.component.js | 18 ++++----- .../crmSearchInput/date.html | 0 .../crmSearchInput/entityRef.html | 0 .../crmSearchInput/float.html | 0 .../crmSearchInput/integer.html | 0 .../crmSearchInput/select.html | 0 .../crmSearchInput/text.html | 0 .../crmSearchTaskDelete.ctrl.js} | 8 ++-- .../crmSearchTaskDelete.html} | 5 ++- .../crmSearchTaskUpdate.ctrl.js} | 8 ++-- .../crmSearchTaskUpdate.html} | 4 +- .../crmSearchTasks.component.js} | 6 +-- .../crmSearchTasks.html} | 0 ...rmSearchActions.css => crmSearchTasks.css} | 2 +- ext/search_kit/search_kit.php | 15 ++++++++ 28 files changed, 78 insertions(+), 56 deletions(-) rename ext/search_kit/ang/{crmSearchActions.ang.php => crmSearchTasks.ang.php} (71%) rename ext/search_kit/ang/{crmSearchActions.module.js => crmSearchTasks.module.js} (88%) rename ext/search_kit/ang/{crmSearchActions => crmSearchTasks}/crmSearchBatchRunner.component.js (93%) rename ext/search_kit/ang/{crmSearchActions => crmSearchTasks}/crmSearchBatchRunner.html (100%) rename ext/search_kit/ang/{crmSearchActions => crmSearchTasks}/crmSearchInput/boolean.html (100%) rename ext/search_kit/ang/{crmSearchActions => crmSearchTasks}/crmSearchInput/crmMultiSelectDate.directive.js (98%) rename ext/search_kit/ang/{crmSearchActions => crmSearchTasks}/crmSearchInput/crmSearchInput.component.js (91%) rename ext/search_kit/ang/{crmSearchActions => crmSearchTasks}/crmSearchInput/crmSearchInput.html (100%) rename ext/search_kit/ang/{crmSearchActions => crmSearchTasks}/crmSearchInput/crmSearchInputVal.component.js (83%) rename ext/search_kit/ang/{crmSearchActions => crmSearchTasks}/crmSearchInput/date.html (100%) rename ext/search_kit/ang/{crmSearchActions => crmSearchTasks}/crmSearchInput/entityRef.html (100%) rename ext/search_kit/ang/{crmSearchActions => crmSearchTasks}/crmSearchInput/float.html (100%) rename ext/search_kit/ang/{crmSearchActions => crmSearchTasks}/crmSearchInput/integer.html (100%) rename ext/search_kit/ang/{crmSearchActions => crmSearchTasks}/crmSearchInput/select.html (100%) rename ext/search_kit/ang/{crmSearchActions => crmSearchTasks}/crmSearchInput/text.html (100%) rename ext/search_kit/ang/{crmSearchActions/crmSearchActionDelete.ctrl.js => crmSearchTasks/crmSearchTaskDelete.ctrl.js} (76%) rename ext/search_kit/ang/{crmSearchActions/crmSearchActionDelete.html => crmSearchTasks/crmSearchTaskDelete.html} (88%) rename ext/search_kit/ang/{crmSearchActions/crmSearchActionUpdate.ctrl.js => crmSearchTasks/crmSearchTaskUpdate.ctrl.js} (90%) rename ext/search_kit/ang/{crmSearchActions/crmSearchActionUpdate.html => crmSearchTasks/crmSearchTaskUpdate.html} (93%) rename ext/search_kit/ang/{crmSearchActions/crmSearchActions.component.js => crmSearchTasks/crmSearchTasks.component.js} (89%) rename ext/search_kit/ang/{crmSearchActions/crmSearchActions.html => crmSearchTasks/crmSearchTasks.html} (100%) rename ext/search_kit/css/{crmSearchActions.css => crmSearchTasks.css} (94%) diff --git a/ext/search_kit/Civi/Api4/Action/SearchDisplay/GetSearchTasks.php b/ext/search_kit/Civi/Api4/Action/SearchDisplay/GetSearchTasks.php index ff34da0f2d6f..d09629433b92 100644 --- a/ext/search_kit/Civi/Api4/Action/SearchDisplay/GetSearchTasks.php +++ b/ext/search_kit/Civi/Api4/Action/SearchDisplay/GetSearchTasks.php @@ -26,17 +26,16 @@ class GetSearchTasks extends \Civi\Api4\Generic\AbstractAction { public function _run(\Civi\Api4\Generic\Result $result) { $entity = Entity::get($this->checkPermissions)->addWhere('name', '=', $this->entity) ->addSelect('name', 'title_plural') - ->setChain(['actions' => [$this->entity, 'getActions', ['where' => [['name', 'IN', ['update', 'delete']]]], 'name']]) + ->setChain(['actions' => ['$name', 'getActions', ['where' => [['name', 'IN', ['update', 'delete']]]], 'name']]) ->execute()->first(); if (!$entity) { return; } - $tasks = []; + $tasks = [$entity['name'] => []]; if (array_key_exists($entity['name'], \CRM_Export_BAO_Export::getComponents())) { - $tasks[] = [ - 'name' => 'export', + $tasks[$entity['name']]['export'] = [ 'title' => E::ts('Export %1', [1 => $entity['title_plural']]), 'icon' => 'fa-file-excel-o', 'crmPopup' => [ @@ -47,20 +46,20 @@ public function _run(\Civi\Api4\Generic\Result $result) { } if (array_key_exists('update', $entity['actions'])) { - $tasks[] = [ - 'name' => 'update', + $tasks[$entity['name']]['update'] = [ + 'module' => 'crmSearchTasks', 'title' => E::ts('Update %1', [1 => $entity['title_plural']]), 'icon' => 'fa-save', - 'uiDialog' => ['templateUrl' => '~/crmSearchActions/crmSearchActionUpdate.html'], + 'uiDialog' => ['templateUrl' => '~/crmSearchTasks/crmSearchTaskUpdate.html'], ]; } if (array_key_exists('delete', $entity['actions'])) { - $tasks[] = [ - 'name' => 'delete', + $tasks[$entity['name']]['delete'] = [ + 'module' => 'crmSearchTasks', 'title' => E::ts('Delete %1', [1 => $entity['title_plural']]), 'icon' => 'fa-trash', - 'uiDialog' => ['templateUrl' => '~/crmSearchActions/crmSearchActionDelete.html'], + 'uiDialog' => ['templateUrl' => '~/crmSearchTasks/crmSearchTaskDelete.html'], ]; } @@ -72,8 +71,7 @@ public function _run(\Civi\Api4\Generic\Result $result) { if ($task['url'] === 'civicrm/task/pick-profile') { $task['title'] = E::ts('Profile Update'); } - $tasks[] = [ - 'name' => 'contact.' . $id, + $tasks[$entity['name']]['contact.' . $id] = [ 'title' => $task['title'], 'icon' => $task['icon'] ?? 'fa-gear', 'crmPopup' => [ @@ -88,8 +86,7 @@ public function _run(\Civi\Api4\Generic\Result $result) { if ($entity['name'] === 'Contribution') { foreach (\CRM_Contribute_Task::tasks() as $id => $task) { if (!empty($task['url'])) { - $tasks[] = [ - 'name' => 'contribution.' . $id, + $tasks[$entity['name']]['contribution.' . $id] = [ 'title' => $task['title'], 'icon' => $task['icon'] ?? 'fa-gear', 'crmPopup' => [ @@ -101,11 +98,20 @@ public function _run(\Civi\Api4\Generic\Result $result) { } } - usort($tasks, function($a, $b) { + $null = NULL; + \CRM_Utils_Hook::singleton()->invoke(['tasks'], $tasks, + $null, $null, $null, $null, $null, 'civicrm_searchKitTasks' + ); + + usort($tasks[$entity['name']], function($a, $b) { return strnatcasecmp($a['title'], $b['title']); }); - $result->exchangeArray($tasks); + foreach ($tasks[$entity['name']] as $name => &$task) { + $task['name'] = $name; + } + + $result->exchangeArray(array_values($tasks[$entity['name']])); } } diff --git a/ext/search_kit/ang/crmSearchAdmin.ang.php b/ext/search_kit/ang/crmSearchAdmin.ang.php index 29413f3fef71..a65b49531379 100644 --- a/ext/search_kit/ang/crmSearchAdmin.ang.php +++ b/ext/search_kit/ang/crmSearchAdmin.ang.php @@ -14,6 +14,6 @@ ], 'bundles' => ['bootstrap3'], 'basePages' => ['civicrm/admin/search'], - 'requires' => ['crmUi', 'crmUtil', 'ngRoute', 'ui.sortable', 'ui.bootstrap', 'api4', 'crmSearchActions', 'crmRouteBinder'], + 'requires' => ['crmUi', 'crmUtil', 'ngRoute', 'ui.sortable', 'ui.bootstrap', 'api4', 'crmSearchTasks', 'crmRouteBinder'], 'settingsFactory' => ['\Civi\Search\Admin', 'getAdminSettings'], ]; diff --git a/ext/search_kit/ang/crmSearchAdmin/compose/controls.html b/ext/search_kit/ang/crmSearchAdmin/compose/controls.html index 93407f44451b..bd2c52c2d458 100644 --- a/ext/search_kit/ang/crmSearchAdmin/compose/controls.html +++ b/ext/search_kit/ang/crmSearchAdmin/compose/controls.html @@ -10,5 +10,5 @@ {{:: ts('Auto') }} - + diff --git a/ext/search_kit/ang/crmSearchDisplayTable.ang.php b/ext/search_kit/ang/crmSearchDisplayTable.ang.php index b1c65325e147..d010a2f97d6a 100644 --- a/ext/search_kit/ang/crmSearchDisplayTable.ang.php +++ b/ext/search_kit/ang/crmSearchDisplayTable.ang.php @@ -9,7 +9,7 @@ 'ang/crmSearchDisplayTable', ], 'basePages' => ['civicrm/search', 'civicrm/admin/search'], - 'requires' => ['crmSearchDisplay', 'crmUi', 'crmSearchActions', 'ui.bootstrap'], + 'requires' => ['crmSearchDisplay', 'crmUi', 'crmSearchTasks', 'ui.bootstrap'], 'bundles' => ['bootstrap3'], 'exports' => [ 'crm-search-display-table' => 'E', diff --git a/ext/search_kit/ang/crmSearchDisplayTable/crmSearchDisplayTable.html b/ext/search_kit/ang/crmSearchDisplayTable/crmSearchDisplayTable.html index e867270f728f..9cf6fcfdbd43 100644 --- a/ext/search_kit/ang/crmSearchDisplayTable/crmSearchDisplayTable.html +++ b/ext/search_kit/ang/crmSearchDisplayTable/crmSearchDisplayTable.html @@ -1,6 +1,6 @@
- +
diff --git a/ext/search_kit/ang/crmSearchActions.ang.php b/ext/search_kit/ang/crmSearchTasks.ang.php similarity index 71% rename from ext/search_kit/ang/crmSearchActions.ang.php rename to ext/search_kit/ang/crmSearchTasks.ang.php index 31e6290bf312..5604659a33e3 100644 --- a/ext/search_kit/ang/crmSearchActions.ang.php +++ b/ext/search_kit/ang/crmSearchTasks.ang.php @@ -2,15 +2,15 @@ // Search actions module - provides dropdown menu with bulk actions to take on selected rows. return [ 'js' => [ - 'ang/crmSearchActions.module.js', - 'ang/crmSearchActions/*.js', - 'ang/crmSearchActions/*/*.js', + 'ang/crmSearchTasks.module.js', + 'ang/crmSearchTasks/*.js', + 'ang/crmSearchTasks/*/*.js', ], 'partials' => [ - 'ang/crmSearchActions', + 'ang/crmSearchTasks', ], 'css' => [ - 'css/crmSearchActions.css', + 'css/crmSearchTasks.css', ], 'basePages' => [], 'requires' => ['crmUi', 'crmUtil', 'dialogService', 'api4', 'checklist-model'], diff --git a/ext/search_kit/ang/crmSearchActions.module.js b/ext/search_kit/ang/crmSearchTasks.module.js similarity index 88% rename from ext/search_kit/ang/crmSearchActions.module.js rename to ext/search_kit/ang/crmSearchTasks.module.js index 341e341287cf..e1d9ce4b38da 100644 --- a/ext/search_kit/ang/crmSearchActions.module.js +++ b/ext/search_kit/ang/crmSearchTasks.module.js @@ -2,7 +2,7 @@ "use strict"; // Declare module - angular.module('crmSearchActions', CRM.angRequires('crmSearchActions')) + angular.module('crmSearchTasks', CRM.angRequires('crmSearchTasks')) // Reformat an array of objects for compatibility with select2 // Todo this probably belongs in core diff --git a/ext/search_kit/ang/crmSearchActions/crmSearchBatchRunner.component.js b/ext/search_kit/ang/crmSearchTasks/crmSearchBatchRunner.component.js similarity index 93% rename from ext/search_kit/ang/crmSearchActions/crmSearchBatchRunner.component.js rename to ext/search_kit/ang/crmSearchTasks/crmSearchBatchRunner.component.js index ef66e518b819..415d44d68a30 100644 --- a/ext/search_kit/ang/crmSearchActions/crmSearchBatchRunner.component.js +++ b/ext/search_kit/ang/crmSearchTasks/crmSearchBatchRunner.component.js @@ -1,7 +1,7 @@ (function(angular, $, _) { "use strict"; - angular.module('crmSearchActions').component('crmSearchBatchRunner', { + angular.module('crmSearchTasks').component('crmSearchBatchRunner', { bindings: { entity: '<', action: '@', @@ -10,7 +10,7 @@ success: '&', error: '&' }, - templateUrl: '~/crmSearchActions/crmSearchBatchRunner.html', + templateUrl: '~/crmSearchTasks/crmSearchBatchRunner.html', controller: function($scope, $timeout, $interval, crmApi4) { var ts = $scope.ts = CRM.ts('org.civicrm.search_kit'), ctrl = this, diff --git a/ext/search_kit/ang/crmSearchActions/crmSearchBatchRunner.html b/ext/search_kit/ang/crmSearchTasks/crmSearchBatchRunner.html similarity index 100% rename from ext/search_kit/ang/crmSearchActions/crmSearchBatchRunner.html rename to ext/search_kit/ang/crmSearchTasks/crmSearchBatchRunner.html diff --git a/ext/search_kit/ang/crmSearchActions/crmSearchInput/boolean.html b/ext/search_kit/ang/crmSearchTasks/crmSearchInput/boolean.html similarity index 100% rename from ext/search_kit/ang/crmSearchActions/crmSearchInput/boolean.html rename to ext/search_kit/ang/crmSearchTasks/crmSearchInput/boolean.html diff --git a/ext/search_kit/ang/crmSearchActions/crmSearchInput/crmMultiSelectDate.directive.js b/ext/search_kit/ang/crmSearchTasks/crmSearchInput/crmMultiSelectDate.directive.js similarity index 98% rename from ext/search_kit/ang/crmSearchActions/crmSearchInput/crmMultiSelectDate.directive.js rename to ext/search_kit/ang/crmSearchTasks/crmSearchInput/crmMultiSelectDate.directive.js index e830358fbbd2..8b97a054ae04 100644 --- a/ext/search_kit/ang/crmSearchActions/crmSearchInput/crmMultiSelectDate.directive.js +++ b/ext/search_kit/ang/crmSearchTasks/crmSearchInput/crmMultiSelectDate.directive.js @@ -1,7 +1,7 @@ (function(angular, $, _) { "use strict"; - angular.module('crmSearchActions') + angular.module('crmSearchTasks') .directive('crmMultiSelectDate', function () { return { restrict: 'A', diff --git a/ext/search_kit/ang/crmSearchActions/crmSearchInput/crmSearchInput.component.js b/ext/search_kit/ang/crmSearchTasks/crmSearchInput/crmSearchInput.component.js similarity index 91% rename from ext/search_kit/ang/crmSearchActions/crmSearchInput/crmSearchInput.component.js rename to ext/search_kit/ang/crmSearchTasks/crmSearchInput/crmSearchInput.component.js index 9accd4807ece..c98d4705e5bf 100644 --- a/ext/search_kit/ang/crmSearchActions/crmSearchInput/crmSearchInput.component.js +++ b/ext/search_kit/ang/crmSearchTasks/crmSearchInput/crmSearchInput.component.js @@ -1,7 +1,7 @@ (function(angular, $, _) { "use strict"; - angular.module('crmSearchActions').component('crmSearchInput', { + angular.module('crmSearchTasks').component('crmSearchInput', { bindings: { field: '<', 'op': '<', @@ -9,7 +9,7 @@ 'optionKey': '<' }, require: {ngModel: 'ngModel'}, - templateUrl: '~/crmSearchActions/crmSearchInput/crmSearchInput.html', + templateUrl: '~/crmSearchTasks/crmSearchInput/crmSearchInput.html', controller: function($scope) { var ts = $scope.ts = CRM.ts('org.civicrm.search_kit'), ctrl = this; diff --git a/ext/search_kit/ang/crmSearchActions/crmSearchInput/crmSearchInput.html b/ext/search_kit/ang/crmSearchTasks/crmSearchInput/crmSearchInput.html similarity index 100% rename from ext/search_kit/ang/crmSearchActions/crmSearchInput/crmSearchInput.html rename to ext/search_kit/ang/crmSearchTasks/crmSearchInput/crmSearchInput.html diff --git a/ext/search_kit/ang/crmSearchActions/crmSearchInput/crmSearchInputVal.component.js b/ext/search_kit/ang/crmSearchTasks/crmSearchInput/crmSearchInputVal.component.js similarity index 83% rename from ext/search_kit/ang/crmSearchActions/crmSearchInput/crmSearchInputVal.component.js rename to ext/search_kit/ang/crmSearchTasks/crmSearchInput/crmSearchInputVal.component.js index f38f7a45e427..cd6dfe78cd7c 100644 --- a/ext/search_kit/ang/crmSearchActions/crmSearchInput/crmSearchInputVal.component.js +++ b/ext/search_kit/ang/crmSearchTasks/crmSearchInput/crmSearchInputVal.component.js @@ -1,7 +1,7 @@ (function(angular, $, _) { "use strict"; - angular.module('crmSearchActions').component('crmSearchInputVal', { + angular.module('crmSearchTasks').component('crmSearchInputVal', { bindings: { field: '<', 'multi': '<', @@ -15,7 +15,7 @@ this.$onInit = function() { var rendered = false; - ctrl.dateRanges = CRM.crmSearchActions.dateRanges; + ctrl.dateRanges = CRM.crmSearchTasks.dateRanges; ctrl.entity = ctrl.field.fk_entity || ctrl.field.entity; this.ngModel.$render = function() { @@ -87,30 +87,30 @@ this.getTemplate = function() { if (ctrl.field.input_type === 'Date') { - return '~/crmSearchActions/crmSearchInput/date.html'; + return '~/crmSearchTasks/crmSearchInput/date.html'; } if (ctrl.field.data_type === 'Boolean') { - return '~/crmSearchActions/crmSearchInput/boolean.html'; + return '~/crmSearchTasks/crmSearchInput/boolean.html'; } if (ctrl.field.options) { - return '~/crmSearchActions/crmSearchInput/select.html'; + return '~/crmSearchTasks/crmSearchInput/select.html'; } if (ctrl.field.fk_entity || ctrl.field.name === 'id') { - return '~/crmSearchActions/crmSearchInput/entityRef.html'; + return '~/crmSearchTasks/crmSearchInput/entityRef.html'; } if (ctrl.field.data_type === 'Integer') { - return '~/crmSearchActions/crmSearchInput/integer.html'; + return '~/crmSearchTasks/crmSearchInput/integer.html'; } if (ctrl.field.data_type === 'Float') { - return '~/crmSearchActions/crmSearchInput/float.html'; + return '~/crmSearchTasks/crmSearchInput/float.html'; } - return '~/crmSearchActions/crmSearchInput/text.html'; + return '~/crmSearchTasks/crmSearchInput/text.html'; }; this.getFieldOptions = function() { diff --git a/ext/search_kit/ang/crmSearchActions/crmSearchInput/date.html b/ext/search_kit/ang/crmSearchTasks/crmSearchInput/date.html similarity index 100% rename from ext/search_kit/ang/crmSearchActions/crmSearchInput/date.html rename to ext/search_kit/ang/crmSearchTasks/crmSearchInput/date.html diff --git a/ext/search_kit/ang/crmSearchActions/crmSearchInput/entityRef.html b/ext/search_kit/ang/crmSearchTasks/crmSearchInput/entityRef.html similarity index 100% rename from ext/search_kit/ang/crmSearchActions/crmSearchInput/entityRef.html rename to ext/search_kit/ang/crmSearchTasks/crmSearchInput/entityRef.html diff --git a/ext/search_kit/ang/crmSearchActions/crmSearchInput/float.html b/ext/search_kit/ang/crmSearchTasks/crmSearchInput/float.html similarity index 100% rename from ext/search_kit/ang/crmSearchActions/crmSearchInput/float.html rename to ext/search_kit/ang/crmSearchTasks/crmSearchInput/float.html diff --git a/ext/search_kit/ang/crmSearchActions/crmSearchInput/integer.html b/ext/search_kit/ang/crmSearchTasks/crmSearchInput/integer.html similarity index 100% rename from ext/search_kit/ang/crmSearchActions/crmSearchInput/integer.html rename to ext/search_kit/ang/crmSearchTasks/crmSearchInput/integer.html diff --git a/ext/search_kit/ang/crmSearchActions/crmSearchInput/select.html b/ext/search_kit/ang/crmSearchTasks/crmSearchInput/select.html similarity index 100% rename from ext/search_kit/ang/crmSearchActions/crmSearchInput/select.html rename to ext/search_kit/ang/crmSearchTasks/crmSearchInput/select.html diff --git a/ext/search_kit/ang/crmSearchActions/crmSearchInput/text.html b/ext/search_kit/ang/crmSearchTasks/crmSearchInput/text.html similarity index 100% rename from ext/search_kit/ang/crmSearchActions/crmSearchInput/text.html rename to ext/search_kit/ang/crmSearchTasks/crmSearchInput/text.html diff --git a/ext/search_kit/ang/crmSearchActions/crmSearchActionDelete.ctrl.js b/ext/search_kit/ang/crmSearchTasks/crmSearchTaskDelete.ctrl.js similarity index 76% rename from ext/search_kit/ang/crmSearchActions/crmSearchActionDelete.ctrl.js rename to ext/search_kit/ang/crmSearchTasks/crmSearchTaskDelete.ctrl.js index 6e54266ab222..273a20634406 100644 --- a/ext/search_kit/ang/crmSearchActions/crmSearchActionDelete.ctrl.js +++ b/ext/search_kit/ang/crmSearchTasks/crmSearchTaskDelete.ctrl.js @@ -1,7 +1,7 @@ (function(angular, $, _) { "use strict"; - angular.module('crmSearchActions').controller('crmSearchActionDelete', function($scope, dialogService) { + angular.module('crmSearchTasks').controller('crmSearchTaskDelete', function($scope, dialogService) { var ts = $scope.ts = CRM.ts('org.civicrm.search_kit'), model = $scope.model, ctrl = this; @@ -9,7 +9,7 @@ this.entityTitle = model.ids.length === 1 ? model.entityInfo.title : model.entityInfo.title_plural; this.cancel = function() { - dialogService.cancel('crmSearchAction'); + dialogService.cancel('crmSearchTask'); }; this.delete = function() { @@ -19,12 +19,12 @@ this.onSuccess = function() { CRM.alert(ts('Successfully deleted %1 %2.', {1: model.ids.length, 2: ctrl.entityTitle}), ts('Deleted'), 'success'); - dialogService.close('crmSearchAction'); + dialogService.close('crmSearchTask'); }; this.onError = function() { CRM.alert(ts('An error occurred while attempting to delete %1 %2.', {1: model.ids.length, 2: ctrl.entityTitle}), ts('Error'), 'error'); - dialogService.close('crmSearchAction'); + dialogService.close('crmSearchTask'); }; }); diff --git a/ext/search_kit/ang/crmSearchActions/crmSearchActionDelete.html b/ext/search_kit/ang/crmSearchTasks/crmSearchTaskDelete.html similarity index 88% rename from ext/search_kit/ang/crmSearchActions/crmSearchActionDelete.html rename to ext/search_kit/ang/crmSearchTasks/crmSearchTaskDelete.html index 7f924aa409e3..74e0aec7ae4b 100644 --- a/ext/search_kit/ang/crmSearchActions/crmSearchActionDelete.html +++ b/ext/search_kit/ang/crmSearchTasks/crmSearchTaskDelete.html @@ -1,8 +1,8 @@
-
+

{{:: ts('Are you sure you want to delete %1 %2?', {1: model.ids.length, 2: $ctrl.entityTitle}) }}


-
+
{{:: ts('Deleting %1 %2...', {1: model.ids.length, 2: $ctrl.entityTitle}) }}
@@ -17,4 +17,5 @@
{{:: ts('Deleting %1 %2...', {1: model.ids.length, 2: $ctrl.entityTitle}) }} {{:: ts('Delete %1', {1: $ctrl.entityTitle}) }}
+
diff --git a/ext/search_kit/ang/crmSearchActions/crmSearchActionUpdate.ctrl.js b/ext/search_kit/ang/crmSearchTasks/crmSearchTaskUpdate.ctrl.js similarity index 90% rename from ext/search_kit/ang/crmSearchActions/crmSearchActionUpdate.ctrl.js rename to ext/search_kit/ang/crmSearchTasks/crmSearchTaskUpdate.ctrl.js index d06dcf473bfa..bb684b03abf8 100644 --- a/ext/search_kit/ang/crmSearchActions/crmSearchActionUpdate.ctrl.js +++ b/ext/search_kit/ang/crmSearchTasks/crmSearchTaskUpdate.ctrl.js @@ -1,7 +1,7 @@ (function(angular, $, _) { "use strict"; - angular.module('crmSearchActions').controller('crmSearchActionUpdate', function ($scope, $timeout, crmApi4, dialogService) { + angular.module('crmSearchTasks').controller('crmSearchTaskUpdate', function ($scope, $timeout, crmApi4, dialogService) { var ts = $scope.ts = CRM.ts('org.civicrm.search_kit'), model = $scope.model, ctrl = this; @@ -68,7 +68,7 @@ }; this.cancel = function() { - dialogService.cancel('crmSearchAction'); + dialogService.cancel('crmSearchTask'); }; this.save = function() { @@ -80,12 +80,12 @@ this.onSuccess = function() { CRM.alert(ts('Successfully updated %1 %2.', {1: model.ids.length, 2: ctrl.entityTitle}), ts('Saved'), 'success'); - dialogService.close('crmSearchAction'); + dialogService.close('crmSearchTask'); }; this.onError = function() { CRM.alert(ts('An error occurred while attempting to update %1 %2.', {1: model.ids.length, 2: ctrl.entityTitle}), ts('Error'), 'error'); - dialogService.close('crmSearchAction'); + dialogService.close('crmSearchTask'); }; }); diff --git a/ext/search_kit/ang/crmSearchActions/crmSearchActionUpdate.html b/ext/search_kit/ang/crmSearchTasks/crmSearchTaskUpdate.html similarity index 93% rename from ext/search_kit/ang/crmSearchActions/crmSearchActionUpdate.html rename to ext/search_kit/ang/crmSearchTasks/crmSearchTaskUpdate.html index 58e569753705..9ae38110792e 100644 --- a/ext/search_kit/ang/crmSearchActions/crmSearchActionUpdate.html +++ b/ext/search_kit/ang/crmSearchTasks/crmSearchTaskUpdate.html @@ -1,5 +1,5 @@
-
+

{{:: ts('Update the %1 selected %2 with the following values:', {1: model.ids.length, 2: $ctrl.entityTitle}) }}

@@ -8,7 +8,7 @@
-
+
{{:: ts('Updating %1 %2...', {1: model.ids.length, 2: $ctrl.entityTitle}) }}
diff --git a/ext/search_kit/ang/crmSearchActions/crmSearchActions.component.js b/ext/search_kit/ang/crmSearchTasks/crmSearchTasks.component.js similarity index 89% rename from ext/search_kit/ang/crmSearchActions/crmSearchActions.component.js rename to ext/search_kit/ang/crmSearchTasks/crmSearchTasks.component.js index f278c00e3ad3..0e1ae4a1a5ce 100644 --- a/ext/search_kit/ang/crmSearchActions/crmSearchActions.component.js +++ b/ext/search_kit/ang/crmSearchTasks/crmSearchTasks.component.js @@ -1,13 +1,13 @@ (function(angular, $, _) { "use strict"; - angular.module('crmSearchActions').component('crmSearchActions', { + angular.module('crmSearchTasks').component('crmSearchTasks', { bindings: { entity: '<', refresh: '&', ids: '<' }, - templateUrl: '~/crmSearchActions/crmSearchActions.html', + templateUrl: '~/crmSearchTasks/crmSearchTasks.html', controller: function($scope, crmApi4, dialogService) { var ts = $scope.ts = CRM.ts('org.civicrm.search_kit'), ctrl = this, @@ -58,7 +58,7 @@ autoOpen: false, title: action.title }); - dialogService.open('crmSearchAction', action.uiDialog.templateUrl, data, options) + dialogService.open('crmSearchTask', action.uiDialog.templateUrl, data, options) .then(ctrl.refresh); } }; diff --git a/ext/search_kit/ang/crmSearchActions/crmSearchActions.html b/ext/search_kit/ang/crmSearchTasks/crmSearchTasks.html similarity index 100% rename from ext/search_kit/ang/crmSearchActions/crmSearchActions.html rename to ext/search_kit/ang/crmSearchTasks/crmSearchTasks.html diff --git a/ext/search_kit/css/crmSearchActions.css b/ext/search_kit/css/crmSearchTasks.css similarity index 94% rename from ext/search_kit/css/crmSearchActions.css rename to ext/search_kit/css/crmSearchTasks.css index aab0e8c9dca1..bdb38fbc2d26 100644 --- a/ext/search_kit/css/crmSearchActions.css +++ b/ext/search_kit/css/crmSearchTasks.css @@ -1,4 +1,4 @@ -.crm-search-action-progress { +.crm-search-task-progress { padding: 10px; margin-top: 10px; border: 1px solid lightgrey; diff --git a/ext/search_kit/search_kit.php b/ext/search_kit/search_kit.php index 170a4a55e0fd..6c94f751a736 100644 --- a/ext/search_kit/search_kit.php +++ b/ext/search_kit/search_kit.php @@ -45,6 +45,21 @@ function search_kit_civicrm_managed(&$entities) { */ function search_kit_civicrm_angularModules(&$angularModules) { _search_kit_civix_civicrm_angularModules($angularModules); + // Fetch all search tasks provided by other modules and add them as crmSearchTasks dependencies + $tasks = $dependencies = []; + $null = NULL; + CRM_Utils_Hook::singleton()->invoke(['tasks'], $tasks, + $null, $null, $null, $null, $null, 'civicrm_searchKitTasks' + ); + foreach ($tasks as $entityTasks) { + foreach ($entityTasks as $task) { + if (isset($task['module']) && $task['module'] !== 'crmSearchTasks' && + !in_array($task['module'], $angularModules['crmSearchTasks']['requires'], TRUE) + ) { + $angularModules['crmSearchTasks']['requires'][] = $task['module']; + } + } + } } /**