From 0c68b4b12fa75d7b183f05375acff662f3b3a3c2 Mon Sep 17 00:00:00 2001 From: Marc Jauvin Date: Tue, 9 Sep 2025 12:46:23 -0400 Subject: [PATCH 1/2] Add search widget options to relation controller --- .../backend/behaviors/RelationController.php | 24 +++++++++++++++++-- 1 file changed, 22 insertions(+), 2 deletions(-) diff --git a/modules/backend/behaviors/RelationController.php b/modules/backend/behaviors/RelationController.php index 3f8346df4e..6b5a8ef931 100644 --- a/modules/backend/behaviors/RelationController.php +++ b/modules/backend/behaviors/RelationController.php @@ -613,8 +613,12 @@ protected function makeToolbarWidget() $useSearch = $this->viewMode === 'multi' && $this->getConfig('view[showSearch]'); if ($useSearch) { + $searchConfig = $this->getConfig('view[search]'); $toolbarConfig->search = [ - 'prompt' => 'backend::lang.list.search_prompt' + 'prompt' => array_get($searchConfig, 'prompt', 'backend::lang.list.search_prompt'), + 'mode' => array_get($searchConfig, 'mode', 'all'), + 'scope' => array_get($searchConfig, 'scope'), + 'searchOnEnter' => array_get($searchConfig, 'searchOnEnter', false), ]; } @@ -638,9 +642,15 @@ protected function makeSearchWidget() } $config = $this->makeConfig(); + $searchConfig = $this->getConfig('view[search]'); + $config->alias = $this->alias . 'ManageSearch'; $config->growable = false; - $config->prompt = 'backend::lang.list.search_prompt'; + $config->prompt = array_get($searchConfig, 'prompt', 'backend::lang.list.search_prompt'); + $config->mode = array_get($searchConfig, 'mode', 'all'); + $config->scope = array_get($searchConfig, 'scope'); + $config->searchOnEnter = array_get($searchConfig, 'searchOnEnter', false); + $widget = $this->makeWidget('Backend\Widgets\Search', $config); $widget->cssClasses[] = 'recordfinder-search'; @@ -760,6 +770,11 @@ protected function makeViewWidget() return $widget->onRefresh(); }); + $widget->setSearchOptions([ + 'mode' => $searchWidget->mode, + 'scope' => $searchWidget->scope, + ]); + /* * Persist the search term across AJAX requests only */ @@ -878,6 +893,11 @@ protected function makeManageWidget() return $widget->onRefresh(); }); + $widget->setSearchOptions([ + 'mode' => $this->searchWidget->mode, + 'scope' => $this->searchWidget->scope, + ]); + /* * Persist the search term across AJAX requests only */ From 261567bf0599edda8a477aec5050c5ea419866ce Mon Sep 17 00:00:00 2001 From: Marc Jauvin Date: Wed, 10 Sep 2025 09:25:21 -0400 Subject: [PATCH 2/2] simplify search options setup --- .../backend/behaviors/RelationController.php | 29 ++++++++++--------- 1 file changed, 15 insertions(+), 14 deletions(-) diff --git a/modules/backend/behaviors/RelationController.php b/modules/backend/behaviors/RelationController.php index 6b5a8ef931..293051679c 100644 --- a/modules/backend/behaviors/RelationController.php +++ b/modules/backend/behaviors/RelationController.php @@ -613,13 +613,7 @@ protected function makeToolbarWidget() $useSearch = $this->viewMode === 'multi' && $this->getConfig('view[showSearch]'); if ($useSearch) { - $searchConfig = $this->getConfig('view[search]'); - $toolbarConfig->search = [ - 'prompt' => array_get($searchConfig, 'prompt', 'backend::lang.list.search_prompt'), - 'mode' => array_get($searchConfig, 'mode', 'all'), - 'scope' => array_get($searchConfig, 'scope'), - 'searchOnEnter' => array_get($searchConfig, 'searchOnEnter', false), - ]; + $toolbarConfig->search = $this->getSearchConfig('view[search]'); } /* @@ -635,21 +629,28 @@ protected function makeToolbarWidget() return $toolbarWidget; } + protected function getSearchConfig($key) + { + $config = $this->getConfig($key); + $searchConfig = $this->makeConfig(); + + $searchConfig->prompt = array_get($config, 'prompt', 'backend::lang.list.search_prompt'); + $searchConfig->mode = array_get($config, 'mode', 'all'); + $searchConfig->scope = array_get($config, 'scope'); + $searchConfig->searchOnEnter = array_get($config, 'searchOnEnter', false); + + return $searchConfig; + } + protected function makeSearchWidget() { if (!$this->getConfig('manage[showSearch]')) { return null; } - $config = $this->makeConfig(); - $searchConfig = $this->getConfig('view[search]'); - + $config = $this->getSearchConfig('manage[search]'); $config->alias = $this->alias . 'ManageSearch'; $config->growable = false; - $config->prompt = array_get($searchConfig, 'prompt', 'backend::lang.list.search_prompt'); - $config->mode = array_get($searchConfig, 'mode', 'all'); - $config->scope = array_get($searchConfig, 'scope'); - $config->searchOnEnter = array_get($searchConfig, 'searchOnEnter', false); $widget = $this->makeWidget('Backend\Widgets\Search', $config); $widget->cssClasses[] = 'recordfinder-search';