From fc03c953b4722bad54acbb2472c3c53ce33cea2d Mon Sep 17 00:00:00 2001 From: Alice Frumin Date: Tue, 13 Dec 2022 13:36:07 -0500 Subject: [PATCH] [dev/core#3470] Search Kit: Mailing labels don't work --- .../Action/SearchDisplay/GetSearchTasks.php | 35 ++++++++++++++----- .../crmSearchTasks.component.js | 7 +++- 2 files changed, 32 insertions(+), 10 deletions(-) diff --git a/ext/search_kit/Civi/Api4/Action/SearchDisplay/GetSearchTasks.php b/ext/search_kit/Civi/Api4/Action/SearchDisplay/GetSearchTasks.php index c0f03105bc..f801948a19 100644 --- a/ext/search_kit/Civi/Api4/Action/SearchDisplay/GetSearchTasks.php +++ b/ext/search_kit/Civi/Api4/Action/SearchDisplay/GetSearchTasks.php @@ -138,15 +138,32 @@ class GetSearchTasks extends \Civi\Api4\Generic\AbstractAction { $task['title'] = E::ts('Profile Update'); } $key = \CRM_Core_Key::get(\CRM_Utils_Array::first((array) $task['class']), TRUE); - $tasks[$entity['name']]['contact.' . $id] = [ - 'title' => $task['title'], - 'icon' => $task['icon'] ?? 'fa-gear', - 'crmPopup' => [ - 'path' => "'{$task['url']}'", - 'query' => "{reset: 1}", - 'data' => "{cids: ids.join(','), qfKey: '$key'}", - ], - ]; + + //break out mailing labels (and/or others) for redirect instead of crmPopup + if ($task['title'] == 'Mailing labels - print') { + //this is questionable see below + // $url = $task['url'] . '?qfKey=' . $key; + $tasks[$entity['name']]['contact.' . $id] = [ + 'title' => $task['title'], + 'icon' => $task['icon'] ?? 'fa-gear', + 'redirect' => [ + 'path' => "'{$task['url']}'", + 'query' => "{reset: 1}", + 'data' => "{cids: ids.join(','), qfKey: '$key'}", + ] + ]; + } + else { + $tasks[$entity['name']]['contact.' . $id] = [ + 'title' => $task['title'], + 'icon' => $task['icon'] ?? 'fa-gear', + 'crmPopup' => [ + 'path' => "'{$task['url']}'", + 'query' => "{reset: 1}", + 'data' => "{cids: ids.join(','), qfKey: '$key'}", + ], + ]; + } } } if (!$this->checkPermissions || \CRM_Core_Permission::check(['merge duplicate contacts', 'delete contacts'])) { diff --git a/ext/search_kit/ang/crmSearchTasks/crmSearchTasks.component.js b/ext/search_kit/ang/crmSearchTasks/crmSearchTasks.component.js index 83d189c5d6..2421d02612 100644 --- a/ext/search_kit/ang/crmSearchTasks/crmSearchTasks.component.js +++ b/ext/search_kit/ang/crmSearchTasks/crmSearchTasks.component.js @@ -11,7 +11,7 @@ ids: '<' }, templateUrl: '~/crmSearchTasks/crmSearchTasks.html', - controller: function($scope, crmApi4, dialogService) { + controller: function($scope, crmApi4, dialogService, $window) { var ts = $scope.ts = CRM.ts('org.civicrm.search_kit'), ctrl = this, initialized = false, @@ -72,6 +72,11 @@ CRM.loadForm(CRM.url(path, query), {post: action.crmPopup.data && $scope.$eval(action.crmPopup.data, data)}) .on('crmFormSuccess', ctrl.refresh); } + else if (action.redirect) { + var path = $scope.$eval(action.redirect.path, data), + query = action.redirect.query && $scope.$eval(action.redirect.query, data) && $scope.$eval(action.redirect.data, data); + $window.open(CRM.url(path, query), '_blank'); + } // If action uses dialogService else { var options = CRM.utils.adjustDialogDefaults({ -- 2.25.1