diff --git a/libraries/classes/Controllers/Table/SearchController.php b/libraries/classes/Controllers/Table/SearchController.php index 4b044fd647..193e5e3a52 100644 --- a/libraries/classes/Controllers/Table/SearchController.php +++ b/libraries/classes/Controllers/Table/SearchController.php @@ -371,6 +371,18 @@ class SearchController extends AbstractController $htmlAttributes .= ' onfocus="return ' . 'verifyAfterSearchFieldChange(' . $search_index . ', \'#tbl_search_form\')"'; + $foreignDropdown = ''; + + if ($this->foreigners && $this->relation->searchColumnInForeigners($this->foreigners, $this->columnNames[$column_index]) && is_array($foreignData['disp_row'])) { + $foreignDropdown = $this->relation->foreignDropdown( + $foreignData['disp_row'], + $foreignData['foreign_field'], + $foreignData['foreign_display'], + '', + $GLOBALS['cfg']['ForeignKeyMaxLimit'] + ); + } + $value = $this->template->render('table/search/input_box', [ 'str' => '', 'column_type' => (string) $type, @@ -384,10 +396,10 @@ class SearchController extends AbstractController 'foreign_data' => $foreignData, 'table' => $GLOBALS['table'], 'column_index' => $search_index, - 'foreign_max_limit' => $GLOBALS['cfg']['ForeignKeyMaxLimit'], 'criteria_values' => $entered_value, 'db' => $GLOBALS['db'], 'in_fbs' => true, + 'foreign_dropdown' => $foreignDropdown, ]); return [ diff --git a/libraries/classes/Controllers/Table/ZoomSearchController.php b/libraries/classes/Controllers/Table/ZoomSearchController.php index 7ed63303c9..2d7e53c894 100644 --- a/libraries/classes/Controllers/Table/ZoomSearchController.php +++ b/libraries/classes/Controllers/Table/ZoomSearchController.php @@ -373,6 +373,21 @@ class ZoomSearchController extends AbstractController $column_names_hashes[$columnName] = md5($columnName); } + $foreignDropdown = []; + + for ($i = 0; $i == count($this->columnNames) - 1; $i++) { + $foreignData = $this->relation->getForeignData($this->foreigners,$this->columnNames[$i],false, '', ''); + if ($this->foreigners && $this->relation->searchColumnInForeigners($this->foreigners, $this->columnNames[$i]) && is_array($foreignData['disp_row'])) { + $foreignDropdown[$i] = $this->relation->foreignDropdown( + $foreignData['disp_row'], + $foreignData['foreign_field'], + $foreignData['foreign_display'], + '', + $GLOBALS['cfg']['ForeignKeyMaxLimit'] + ); + } + } + $this->render('table/zoom_search/result_form', [ 'db' => $GLOBALS['db'], 'table' => $GLOBALS['table'], @@ -385,7 +400,7 @@ class ZoomSearchController extends AbstractController 'data' => $data, 'data_json' => json_encode($data), 'zoom_submit' => isset($_POST['zoom_submit']), - 'foreign_max_limit' => $GLOBALS['cfg']['ForeignKeyMaxLimit'], + 'foreign_dropdown' => $foreignDropdown, ]); } @@ -436,6 +451,18 @@ class ZoomSearchController extends AbstractController $htmlAttributes .= ' onfocus="return ' . 'verifyAfterSearchFieldChange(' . $search_index . ', \'#zoom_search_form\')"'; + $foreignDropdown = ''; + + if ($this->foreigners && $this->relation->searchColumnInForeigners($this->foreigners, $this->columnNames[$column_index]) && is_array($foreignData['disp_row'])) { + $foreignDropdown = $this->relation->foreignDropdown( + $foreignData['disp_row'], + $foreignData['foreign_field'], + $foreignData['foreign_display'], + '', + $GLOBALS['cfg']['ForeignKeyMaxLimit'] + ); + } + $value = $this->template->render('table/search/input_box', [ 'str' => '', 'column_type' => (string) $type, @@ -449,10 +476,10 @@ class ZoomSearchController extends AbstractController 'foreign_data' => $foreignData, 'table' => $GLOBALS['table'], 'column_index' => $search_index, - 'foreign_max_limit' => $GLOBALS['cfg']['ForeignKeyMaxLimit'], 'criteria_values' => $entered_value, 'db' => $GLOBALS['db'], 'in_fbs' => true, + 'foreign_dropdown' => $foreignDropdown, ]); return [ diff --git a/libraries/classes/Twig/RelationExtension.php b/libraries/classes/Twig/RelationExtension.php index e16678f2a2..1775be3427 100644 --- a/libraries/classes/Twig/RelationExtension.php +++ b/libraries/classes/Twig/RelationExtension.php @@ -20,11 +20,6 @@ class RelationExtension extends AbstractExtension $relation = new Relation($GLOBALS['dbi']); return [ - new TwigFunction( - 'foreign_dropdown', - [$relation, 'foreignDropdown'], - ['is_safe' => ['html']] - ), new TwigFunction( 'get_display_field', [$relation, 'getDisplayField'], diff --git a/templates/table/search/input_box.twig b/templates/table/search/input_box.twig index 7915cc77ae..4e82329fe6 100644 --- a/templates/table/search/input_box.twig +++ b/templates/table/search/input_box.twig @@ -3,13 +3,7 @@ {% if foreign_data['disp_row'] is iterable %} {% elseif foreign_data['foreign_link'] == true %}