Skip to content

Custom-Lazy-Elemente mit Namespace handhaben#98

Open
christophboecker wants to merge 4 commits intomasterfrom
namespaced-elemente
Open

Custom-Lazy-Elemente mit Namespace handhaben#98
christophboecker wants to merge 4 commits intomasterfrom
namespaced-elemente

Conversation

@christophboecker
Copy link
Copy Markdown
Member

siehe #97

Der PR basisert auf der Lösungsvariante 3 des Issues:

Ersetze den als js-Identifier benutzten Klassennamen durch einen auf dem md5-Hash des Klassennamens (ggf. mit Namespace) basierenden Identifier.

Details zur Lösung:

  • da ein Identifier nicht mit einer Ziffer beginnen darf, wird der Buchstabe M dem Hash vorangestellt.
  • Der Hash-basierte Identifier wird von einer Methode der Klasse element des Addons erzeugt.
  • In der Klasse rex_minifier ist die Suche nach dem passenden Element via Klassenname (->elementByClass(...)) erweitert auf "Klassenname oder Klassenname-basierter Hash".
  • Der Klassenname wird auch als CSS-Klasse eingefügt. Auch das wurde bei der Gelegenheit auf den Aufruf einer Methode der Element-Klasse geändert. Das erlaubt in Curtom-Elementen einen individuellen CSS-Namen zu verwenden.
  • Nebenbei einen PHPDOC-Fehler behoben.

Keine Änderungen in der Doku; die Änderungen betreffen Hintergrundaktionen. Bzgl. der Element-basiserten CSS-Klasse gibt es jetzt keine Hinweise in der Doku; zumindest habe ich keine gefunden. Daher habe ich auch keinen Passus zur neuen Methode elementklasse->cssClass() geschrieben.

Mit einem Custom-Lazy-Element mit Namespace erfolgreich getestet.

@skerbis Falls Du als Maintainer der Meinung bist, dass die Änderungen einen BC darstellen und deshalb ein Major-Relase 3.0 erzeugt werden müsste, bitte ich Dich, damit noch zu warten. Für das nächste Major-Release würde ich das Addon gerne komplett auf Namespace umstellen.

Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Note

Copilot was unable to run its full agentic suite in this review.

Der PR führt eine hash-basierte Identifikation für Custom-Lazy-Elemente (inkl. Namespace) ein und erweitert die Elementauflösung, damit Lazy-Elemente nicht mehr ausschließlich über den Klassennamen im Klartext gefunden werden müssen.

Changes:

  • Neue API-Methoden cssClass() und jsId() am rex_minibar_element eingeführt.
  • elementByClass() so erweitert, dass sowohl Klartext-Klassenname als auch Hash-Identifier funktionieren.
  • Fragment-Rendering auf cssClass()/jsId() umgestellt und PHPDoc korrigiert.

Reviewed changes

Copilot reviewed 3 out of 3 changed files in this pull request and generated 4 comments.

File Description
lib/minibar.php Elementauflösung akzeptiert jetzt Klassenname oder Hash (jsId())
lib/element/element.php Neue API für CSS-Klasse und anonymisierte JS-ID (MD5 + Prefix)
fragments/minibar/minibar_element.php Ausgabe nutzt cssClass() und Lazy-URL nutzt jsId()

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment thread lib/minibar.php
Comment thread lib/minibar.php Outdated
Comment thread lib/element/element.php
Comment thread lib/element/element.php
Copy link
Copy Markdown
Member

@skerbis skerbis left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@christophboecker ich habe noch ein paar Kleinigkeiten vom Copilot Review durchgeführt

@skerbis
Copy link
Copy Markdown
Member

skerbis commented Apr 14, 2026

Wir sollten bei Umstelleung auf PHP Namesapce auch das beherzigen:
#72
Ideal die Bar als Webcomponent realisieren.

Copy link
Copy Markdown
Member Author

@christophboecker christophboecker left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Siehe Anmerkung. Alles andere kann man machen.

Comment thread lib/minibar.php
@christophboecker
Copy link
Copy Markdown
Member Author

Ideal die Bar als Webcomponent realisieren.

Hallo Thomas, das ist gewiss ein spannendes Thema. Bei meinen bisherigen Versuchen in Sachen Shadow-DOM ist mir früher oder später (eher früher) der Kragen geplatzt und ich hab es bleiben gelassen. Ich biete die Umstellung auf Namespace an, aber nicht auf Webcomponent und schon garnicht mit Shadow-DOM.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants