From 9e3cfdbe768375994ca61d22c11039c151e95239 Mon Sep 17 00:00:00 2001 From: Elmar Ludwig <elmar.ludwig@uni-osnabrueck.de> Date: Thu, 28 Sep 2023 07:56:28 +0000 Subject: [PATCH] add SeparatorElement for sidebar widgets, re #3235 Merge request studip/studip!2204 --- lib/classes/sidebar/ListWidget.php | 12 +++++++- lib/classes/sidebar/SeparatorElement.php | 28 +++++++++++++++++++ .../assets/stylesheets/scss/sidebar.scss | 6 ++++ templates/sidebar/list-widget.php | 1 + 4 files changed, 46 insertions(+), 1 deletion(-) create mode 100644 lib/classes/sidebar/SeparatorElement.php diff --git a/lib/classes/sidebar/ListWidget.php b/lib/classes/sidebar/ListWidget.php index ed37e4cd694..e6edce21db7 100644 --- a/lib/classes/sidebar/ListWidget.php +++ b/lib/classes/sidebar/ListWidget.php @@ -37,6 +37,16 @@ class ListWidget extends SidebarWidget $this->classes = array_diff($this->css_class, [$css_class]); } + /** + * Adds a separator to the widget + * + * @param array $attributes Optional additional attributes + */ + public function addSeparator($attributes = []) + { + $this->addElement(new SeparatorElement($attributes)); + } + /** * */ @@ -46,4 +56,4 @@ class ListWidget extends SidebarWidget return parent::render($variables); } -} \ No newline at end of file +} diff --git a/lib/classes/sidebar/SeparatorElement.php b/lib/classes/sidebar/SeparatorElement.php new file mode 100644 index 00000000000..4cfb1ffb335 --- /dev/null +++ b/lib/classes/sidebar/SeparatorElement.php @@ -0,0 +1,28 @@ +<?php + +class SeparatorElement extends WidgetElement +{ + public $attributes = []; + + /** + * create a separator element + * + * @param array $attributes HTML-attributes in an associative array. + */ + public function __construct($attributes = []) + { + parent::__construct(); + + $this->attributes = $attributes; + } + + /** + * Renders the element. + * + * @return string + */ + public function render() + { + return sprintf('<hr %s>', arrayToHtmlAttributes($this->attributes)); + } +} diff --git a/resources/assets/stylesheets/scss/sidebar.scss b/resources/assets/stylesheets/scss/sidebar.scss index 9a556a474ec..fd885af8a9c 100644 --- a/resources/assets/stylesheets/scss/sidebar.scss +++ b/resources/assets/stylesheets/scss/sidebar.scss @@ -124,6 +124,12 @@ ul.widget-list { word-wrap: break-word; } + hr { + border-style: none; + border-top: thin solid var(--content-color-40); + margin: 4px 0px 4px -20px; + } + button { @extend .as-link; text-align: left; diff --git a/templates/sidebar/list-widget.php b/templates/sidebar/list-widget.php index e9af862500b..5c94a0ed149 100644 --- a/templates/sidebar/list-widget.php +++ b/templates/sidebar/list-widget.php @@ -2,6 +2,7 @@ <?= CSRFProtection::tokenTag() ?> <ul class="<?= implode(' ', $css_classes) ?>" aria-label="<?= htmlReady($title) ?>"> <? foreach ($elements as $index => $element): ?> + <? $icon = null ?> <? if ($element instanceof LinkElement): ?> <? $icon = $element->icon ?? null ?> <? if ($icon && $element->isDisabled()): ?> -- GitLab