aboutsummaryrefslogtreecommitdiff
path: root/lib/classes/sidebar
diff options
context:
space:
mode:
authorElmar Ludwig <elmar.ludwig@uni-osnabrueck.de>2023-08-31 08:02:33 +0000
committerJan-Hendrik Willms <tleilax+studip@gmail.com>2023-08-31 08:02:33 +0000
commitff198de85cf50c71e9b278fbf9d9c83d1ef35191 (patch)
tree42ad3b67f0d29c16b0ea57f24abb35c8e2a87e29 /lib/classes/sidebar
parent583cd98fefb81ed85f617b507861b7244cf897a6 (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.php28
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));
}