From cf625a5080c371fad30982ab6b75a1530f24e650 Mon Sep 17 00:00:00 2001 From: christophboecker Date: Tue, 14 Apr 2026 12:34:57 +0200 Subject: [PATCH 1/4] Eigene Lazy-Elemente mit Namespace verarbeiten --- fragments/minibar/minibar_element.php | 4 ++-- lib/element/element.php | 29 +++++++++++++++++++++++++++ lib/minibar.php | 6 +++++- 3 files changed, 36 insertions(+), 3 deletions(-) diff --git a/fragments/minibar/minibar_element.php b/fragments/minibar/minibar_element.php index 0cb5636..a9e929a 100644 --- a/fragments/minibar/minibar_element.php +++ b/fragments/minibar/minibar_element.php @@ -1,11 +1,11 @@ element; $class = 'rex-minibar-element '; -$class .= rex_string::normalize(get_class($element), '-'); +$class .= $element->cssClass(); $class .= ($element->getOrientation() == rex_minibar_element::RIGHT ? ' rex-minibar-element-right' : ''); $class .= ($element->isDanger() ? ' rex-minibar-status-danger' : ''); $class .= ($element->isWarning() ? ' rex-minibar-status-warning' : ''); diff --git a/lib/element/element.php b/lib/element/element.php index 6f59c73..de05576 100644 --- a/lib/element/element.php +++ b/lib/element/element.php @@ -17,6 +17,35 @@ abstract class rex_minibar_element */ abstract public function render(); + /** + * liefert einen CSS-Namen, über den Elemente dieser Klasse + * individuell konfiguriert werden können. + * + * Für eigene Klassen: optional überschreiben + * + * Default: normalisierter Klassenname + * + * @api + */ + public function cssClass() : string + { + return rex_string::normalize(static::class, '-'); + } + + /** + * Liefert einen anonymisierten Identifier zur Verwendung in API-Aufrufen + * MD5-kodierter Pfadname + * + * Dem Hack ist ein M vorangestellt, das JS-Identifier mit eine Buchstaben + * beginnen müssen/sollten + * + * @api + */ + public function jsId() : string + { + return 'M' . md5(static::class); + } + /** * Returns the orientation in the minibar. * diff --git a/lib/minibar.php b/lib/minibar.php index a63378e..8c1551a 100644 --- a/lib/minibar.php +++ b/lib/minibar.php @@ -21,6 +21,10 @@ public function addElement(rex_minibar_element $instance) } /** + * Identifiziert eine Elementklasse entweder über den Klassennamen im Klartext + * oder über den als MD5 kodierten Klassennamen. + * (zur Info, dem Hash stgeht ein M voran) + * * @param string $className * * @return rex_minibar_element|null @@ -28,7 +32,7 @@ public function addElement(rex_minibar_element $instance) public function elementByClass($className) { foreach ($this->elements as $element) { - if (get_class($element) === $className) { + if ($element::class === $className || $element->jsId() === $className) { return $element; } } From 5a53d8caca3e1bf0f970fbd38bc956b0345bc24e Mon Sep 17 00:00:00 2001 From: christophboecker Date: Tue, 14 Apr 2026 14:16:30 +0200 Subject: [PATCH 2/4] kleinere Nacharbeiten --- fragments/minibar/minibar_element.php | 2 +- lib/element/element.php | 2 +- lib/minibar.php | 1 + 3 files changed, 3 insertions(+), 2 deletions(-) diff --git a/fragments/minibar/minibar_element.php b/fragments/minibar/minibar_element.php index a9e929a..c3b0c14 100644 --- a/fragments/minibar/minibar_element.php +++ b/fragments/minibar/minibar_element.php @@ -13,7 +13,7 @@ $onmouseover = ''; if ($element instanceof rex_minibar_lazy_element && rex_minibar_lazy_element::isFirstView()) { - $elementId = get_class($element); + $elementId = $element->jsId(); $context = rex_context::restore(); $url = $context->getUrl(['lazy_element' => $elementId, 'article_id' => rex_article::getCurrentId(), 'current_lang'=> rex_clang::getCurrentId()] + rex_api_minibar::getUrlParams()); $onmouseover = << Date: Tue, 14 Apr 2026 15:51:35 +0200 Subject: [PATCH 3/4] Typos behoben --- lib/element/element.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/element/element.php b/lib/element/element.php index ccbc54a..df1f807 100644 --- a/lib/element/element.php +++ b/lib/element/element.php @@ -36,7 +36,7 @@ public function cssClass() : string * Liefert einen anonymisierten Identifier zur Verwendung in API-Aufrufen * MD5-kodierter Pfadname * - * Dem Hash ist ein M vorangestellt, das JS-Identifier mit eine Buchstaben + * Dem Hash ist ein M vorangestellt, da JS-Identifier mit einem Buchstaben * beginnen müssen/sollten * * @api From 9c304298f3e9f64d84f4ef3657cb0a6db858c1a7 Mon Sep 17 00:00:00 2001 From: Thomas Skerbis Date: Tue, 14 Apr 2026 17:01:56 +0200 Subject: [PATCH 4/4] Copilot Reviews gefixt --- lib/element/element.php | 8 +++++--- lib/minibar.php | 2 +- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/lib/element/element.php b/lib/element/element.php index df1f807..85c4d59 100644 --- a/lib/element/element.php +++ b/lib/element/element.php @@ -29,12 +29,13 @@ abstract public function render(); */ public function cssClass() : string { - return rex_string::normalize(static::class, '-'); + static $cache = []; + return $cache[static::class] ??= rex_string::normalize(static::class, '-'); } /** * Liefert einen anonymisierten Identifier zur Verwendung in API-Aufrufen - * MD5-kodierter Pfadname + * MD5-kodierter Klassenname * * Dem Hash ist ein M vorangestellt, da JS-Identifier mit einem Buchstaben * beginnen müssen/sollten @@ -43,7 +44,8 @@ public function cssClass() : string */ public function jsId() : string { - return 'M' . md5(static::class); + static $cache = []; + return $cache[static::class] ??= 'M' . md5(static::class); } /** diff --git a/lib/minibar.php b/lib/minibar.php index f314ffc..8e014ca 100644 --- a/lib/minibar.php +++ b/lib/minibar.php @@ -23,7 +23,7 @@ public function addElement(rex_minibar_element $instance) /** * Identifiziert eine Elementklasse entweder über den Klassennamen im Klartext * oder über den als MD5 kodierten Klassennamen. - * (zur Info, dem Hash stgeht ein M voran) + * (zur Info, dem Hash steht ein M voran) * * @param string $className *