diff options
| author | Elmar Ludwig <elmar.ludwig@uni-osnabrueck.de> | 2023-08-18 07:35:16 +0000 |
|---|---|---|
| committer | Jan-Hendrik Willms <tleilax+studip@gmail.com> | 2023-08-18 07:35:16 +0000 |
| commit | f88ee31160cc2a8f21067e2cb30c6324a4f1fa38 (patch) | |
| tree | 347b129a4ff460a74554ccee0ccd18f3a288a9d3 | |
| parent | c6fda0f6436f53ce8f285edc70f4771191cddc9b (diff) | |
add form to OptionsWidget and refactor code a bit, fixes #1474
Closes #1474
Merge request studip/studip!2044
| -rw-r--r-- | lib/classes/sidebar/LinkElement.php | 3 | ||||
| -rw-r--r-- | lib/classes/sidebar/OptionsWidget.php | 4 | ||||
| -rw-r--r-- | resources/assets/stylesheets/scss/buttons.scss | 9 | ||||
| -rw-r--r-- | resources/assets/stylesheets/scss/sidebar.scss | 20 | ||||
| -rw-r--r-- | templates/sidebar/list-widget.php | 31 |
5 files changed, 30 insertions, 37 deletions
diff --git a/lib/classes/sidebar/LinkElement.php b/lib/classes/sidebar/LinkElement.php index 8e3e270..a6bbe96 100644 --- a/lib/classes/sidebar/LinkElement.php +++ b/lib/classes/sidebar/LinkElement.php @@ -226,10 +226,9 @@ class LinkElement extends WidgetElement implements ArrayAccess protected function renderButton() { return sprintf( - '<form action="%1$s" method="post" %2$s>%3$s<button type="submit">%4$s</button></form>', + '<button formaction="%s" class="as-link" %s>%s</button>', htmlReady($this->url), arrayToHtmlAttributes((array) $this->attributes), - CSRFProtection::tokenTag(), htmlReady($this->label) ); } diff --git a/lib/classes/sidebar/OptionsWidget.php b/lib/classes/sidebar/OptionsWidget.php index 1e56ed1..f50625c 100644 --- a/lib/classes/sidebar/OptionsWidget.php +++ b/lib/classes/sidebar/OptionsWidget.php @@ -34,7 +34,7 @@ class OptionsWidget extends ListWidget $toggle_url_off = isset($toggle_url_off) ? html_entity_decode($toggle_url_off) : null; $content = sprintf( - '<a href="%s" role="checkbox" aria-checked="%s" class="options-checkbox options-%s" %s>%s</a>', + '<button formaction="%s" role="checkbox" aria-checked="%s" class="as-link options-checkbox options-%s" %s>%s</button>', htmlReady($state && $toggle_url_off !== null ? $toggle_url_off : $toggle_url), $state ? 'true' : 'false', $state ? 'checked' : 'unchecked', @@ -55,7 +55,7 @@ class OptionsWidget extends ListWidget $url = html_entity_decode($url); $content = sprintf( - '<a href="%s" role="radio" aria-checked="%s" class="options-radio options-%s" %s>%s</a>', + '<button formaction="%s" role="radio" aria-checked="%s" class="as-link options-radio options-%s" %s>%s</button>', htmlReady($url), $checked ? 'true' : 'false', $checked ? 'checked' : 'unchecked', diff --git a/resources/assets/stylesheets/scss/buttons.scss b/resources/assets/stylesheets/scss/buttons.scss index 659a26a..539a2a3 100644 --- a/resources/assets/stylesheets/scss/buttons.scss +++ b/resources/assets/stylesheets/scss/buttons.scss @@ -142,12 +142,13 @@ button.styleless { border: 0; } button.as-link { + background-color: transparent; border: none; - padding: 0px; - margin: 0px; + color: $base-color; cursor: pointer; - background-color: transparent; + margin: 0px; + padding: 0px; &:hover { - background-color: transparent; + color: $active-color; } } diff --git a/resources/assets/stylesheets/scss/sidebar.scss b/resources/assets/stylesheets/scss/sidebar.scss index f03d7a2..493049c 100644 --- a/resources/assets/stylesheets/scss/sidebar.scss +++ b/resources/assets/stylesheets/scss/sidebar.scss @@ -123,6 +123,11 @@ ul.widget-list { padding-left: 20px; word-wrap: break-word; } + + button { + text-align: left; + width: 100%; + } } div#sidebar-navigation { div.sidebar-widget-header { @@ -191,21 +196,6 @@ div#sidebar-navigation { } } } - - button { - background: transparent; - border: 0; - color: $base-color; - margin: 0; - padding: 0; - text-align: left; - width: 100%; - - &:hover { - color: $active-color; - cursor: pointer; - } - } } .sidebar-widget-cloud { diff --git a/templates/sidebar/list-widget.php b/templates/sidebar/list-widget.php index 0507cfa..e9af862 100644 --- a/templates/sidebar/list-widget.php +++ b/templates/sidebar/list-widget.php @@ -1,15 +1,18 @@ -<ul class="<?= implode(' ', $css_classes) ?>" aria-label="<?= htmlReady($title) ?>"> -<? foreach ($elements as $index => $element): ?> - <? if ($element instanceof LinkElement): ?> - <? $icon = $element->icon ?? null ?> - <? if ($icon && $element->isDisabled()): ?> - <? $icon = $icon->copyWithRole('inactive') ?> +<form method="post"> + <?= CSRFProtection::tokenTag() ?> + <ul class="<?= implode(' ', $css_classes) ?>" aria-label="<?= htmlReady($title) ?>"> + <? foreach ($elements as $index => $element): ?> + <? if ($element instanceof LinkElement): ?> + <? $icon = $element->icon ?? null ?> + <? if ($icon && $element->isDisabled()): ?> + <? $icon = $icon->copyWithRole('inactive') ?> + <? endif ?> <? endif ?> - <? endif ?> - <li id="<?= htmlReady($index) ?>" - <?= isset($icon) ? 'style="' . $icon->asCSS() .'"' : '' ?> - <?= !empty($element->active) ? 'class="active"' : '' ?>> - <?= $element->render() ?> - </li> -<? endforeach; ?> -</ul> + <li id="<?= htmlReady($index) ?>" + <?= isset($icon) ? 'style="' . $icon->asCSS() .'"' : '' ?> + <?= !empty($element->active) ? 'class="active"' : '' ?>> + <?= $element->render() ?> + </li> + <? endforeach; ?> + </ul> +</form> |
