diff options
| author | Elmar Ludwig <elmar.ludwig@uni-osnabrueck.de> | 2023-08-31 08:02:33 +0000 |
|---|---|---|
| committer | Jan-Hendrik Willms <tleilax+studip@gmail.com> | 2023-08-31 08:02:33 +0000 |
| commit | ff198de85cf50c71e9b278fbf9d9c83d1ef35191 (patch) | |
| tree | 42ad3b67f0d29c16b0ea57f24abb35c8e2a87e29 /lib/classes/sidebar | |
| parent | 583cd98fefb81ed85f617b507861b7244cf897a6 (diff) | |
add data-formaction attribute for submit-upon-select, fixes #3115
Closes #3115
Merge request studip/studip!2097
Diffstat (limited to 'lib/classes/sidebar')
| -rw-r--r-- | lib/classes/sidebar/OptionsWidget.php | 28 |
1 files changed, 17 insertions, 11 deletions
diff --git a/lib/classes/sidebar/OptionsWidget.php b/lib/classes/sidebar/OptionsWidget.php index a3660b5..304a5ac 100644 --- a/lib/classes/sidebar/OptionsWidget.php +++ b/lib/classes/sidebar/OptionsWidget.php @@ -77,20 +77,26 @@ class OptionsWidget extends ListWidget */ public function addSelect($label, $url, $name, $options, $selected_option = false, $attributes = []) { - $widget = new SelectWidget($label, $url, $name); - $widget->layout = false; + $option_content = ''; - foreach ($options as $value => $option_label) { - $widget->addElement(new SelectElement($value, $option_label, $value === $selected_option)); + foreach ($options as $value => $option) { + $selected = $value === $selected_option ? 'selected' : ''; + $option_content .= sprintf( + '<option value="%s" %s>%s</option>', + htmlReady($value), + $selected, + htmlReady($option) + ); } - if (isset($widget->attributes) && is_array($widget->attributes)) { - $widget->attributes = array_merge($widget->attributes, $attributes); - } else { - $widget->attributes = $attributes; - } - - $content = $widget->render(); + $content = sprintf( + '<select data-formaction="%s" class="sidebar-selectlist submit-upon-select" name="%s" aria-label="%s" %s>%s</select>', + htmlReady($url), + htmlReady($name), + htmlReady($label), + arrayToHtmlAttributes($attributes), + $option_content + ); $this->addElement(new WidgetElement($content)); } |
