From 3d3bb7e2227aeb01f89569e037f50419e6ed0d66 Mon Sep 17 00:00:00 2001 From: David Siegfried Date: Tue, 5 Jul 2022 10:50:59 +0000 Subject: fix search-filter, closes #1023 Closes #1023 Merge request studip/studip!780 --- lib/classes/sidebar/RoomSearchWidget.class.php | 10 +++++++++- resources/assets/javascripts/lib/resources.js | 7 +++++-- resources/assets/stylesheets/scss/resources.scss | 5 ++++- templates/sidebar/room-search-criteria-templates.php | 8 +++++--- templates/sidebar/room-search-criteria.php | 10 ++++++---- 5 files changed, 29 insertions(+), 11 deletions(-) diff --git a/lib/classes/sidebar/RoomSearchWidget.class.php b/lib/classes/sidebar/RoomSearchWidget.class.php index ffe7470..0080658 100644 --- a/lib/classes/sidebar/RoomSearchWidget.class.php +++ b/lib/classes/sidebar/RoomSearchWidget.class.php @@ -63,6 +63,9 @@ class RoomSearchWidget extends SidebarWidget 'range_search' => $property->range_search, 'optional' => true ]; + if ($property->type === 'select') { + $this->criteria[$property->name]['options'] = $property->getOptionsArray(); + } } } @@ -273,12 +276,17 @@ class RoomSearchWidget extends SidebarWidget } elseif ($data['type'] === 'num' && $data['range_search']) { if (Request::submitted($name . '_min') || Request::submitted($name . '_max')) { - $this->selected_criteria[$name] = $data; + $this->selected_criteria[$name] = $data; $this->selected_criteria[$name]['value'] = [ Request::get($name . '_min'), Request::get($name . '_max') ]; } + } elseif ($data['type'] === 'bool') { + if (Request::submitted('options_' . $name)) { + $this->selected_criteria[$name] = $data; + $this->selected_criteria[$name]['value'] = Request::get($name); + } } else { if (Request::submitted($name)) { $this->selected_criteria[$name] = $data; diff --git a/resources/assets/javascripts/lib/resources.js b/resources/assets/javascripts/lib/resources.js index ccc8ca3..a3192fc 100644 --- a/resources/assets/javascripts/lib/resources.js +++ b/resources/assets/javascripts/lib/resources.js @@ -278,8 +278,10 @@ class Resources jQuery(new_criteria_text_field).text(option_title); if (option_type === 'bool') { - let new_criteria_input = jQuery(new_criteria).find('input'); + let new_criteria_input = jQuery(new_criteria).find('input[type=checkbox]'); jQuery(new_criteria_input).attr('name', option_value); + let new_criteria_hidden_input = jQuery(new_criteria).find('input[type=hidden]'); + jQuery(new_criteria_hidden_input).attr('name', 'options_' + option_value); } else if (option_type === 'select') { let new_criteria_select = jQuery(new_criteria).find('select')[0]; jQuery(new_criteria_select).attr('name', option_value); @@ -292,9 +294,10 @@ class Resources for (let option of option_select_options) { let splitted_option = option.split('~~'); options_html += ''; } + $(new_criteria_select).append(options_html); } else if (option_type === 'date') { let time_inputs = jQuery(new_criteria).find('input[data-time="yes"]'); let date_inputs = jQuery(new_criteria).find('input[type="date"]'); diff --git a/resources/assets/stylesheets/scss/resources.scss b/resources/assets/stylesheets/scss/resources.scss index 97f5db1..a10ca4a 100644 --- a/resources/assets/stylesheets/scss/resources.scss +++ b/resources/assets/stylesheets/scss/resources.scss @@ -168,7 +168,10 @@ ul.resource-tree { } & > label { - input, select { + input[type=text], + input[type=number], + input[type=date], + select { width: calc(100% - 2em); height: 30px; diff --git a/templates/sidebar/room-search-criteria-templates.php b/templates/sidebar/room-search-criteria-templates.php index 1713982..d75ccbd 100644 --- a/templates/sidebar/room-search-criteria-templates.php +++ b/templates/sidebar/room-search-criteria-templates.php @@ -5,10 +5,12 @@ 'class' => 'text-bottom remove-icon' ] ) ?> - + diff --git a/templates/sidebar/room-search-criteria.php b/templates/sidebar/room-search-criteria.php index 918de6e..96c24d8 100644 --- a/templates/sidebar/room-search-criteria.php +++ b/templates/sidebar/room-search-criteria.php @@ -35,10 +35,12 @@ > - -