heimseiten / contao-paste-into-nested-elements-bundle
Rüstet das Contao-6-Feature „In verschachtelte Elemente einfügen“ für Contao 5.7 nach: Inhaltselemente lassen sich aus der Artikelübersicht heraus direkt in eine Elementgruppe einfügen, ohne vorher deren Kindansicht zu öffnen.
Package info
github.com/heimseiten/contao-paste-into-nested-elements-bundle
Type:contao-bundle
pkg:composer/heimseiten/contao-paste-into-nested-elements-bundle
Requires
- php: ^8.3
- contao/core-bundle: ^5.7
Requires (Dev)
- contao/manager-plugin: ^2.3
Suggests
None
Provides
None
Conflicts
None
Replaces
None
README
Rüstet das Contao-6-Feature „In Nested-Elements einfügen" für Contao 5.7 nach.
Inhaltselemente lassen sich damit direkt aus der Übersicht eines Artikels in eine Elementgruppe einfügen — ohne deren Kindansicht vorher zu öffnen. Ablauf wie gewohnt: Element über Kopieren oder Verschieben in die Zwischenablage legen, dann am Zielelement auf Einfügen klicken.
Wo der Knopf erscheint
An jedem Element, das Kindelemente aufnehmen kann, und nur bei gefüllter Zwischenablage.
Welche Elemente das sind, beantwortet der FragmentCompositor des Kerns — also alles, was
mit #[AsContentElement(nestedFragments: true)] ausgezeichnet ist. Im Kern sind das
Elementgruppe, Akkordeon und Slider; Elemente aus anderen Erweiterungen werden ohne
Zutun mit erfasst, weil hier keine Liste von Elementtypen gepflegt wird.
Ein Element lässt sich nicht in sich selbst oder in eines seiner Kindelemente verschieben — in dem Fall erscheint der Knopf abgeblendet.
Was die Erweiterung nicht tut
Die Darstellung der Listen bleibt unverändert. Ergänzt wird ausschließlich der fehlende Knopf.
Unterschied zu Contao 6
Contao 6 fügt am Ende der Zielgruppe an. Diese Erweiterung fügt am Anfang ein, weil
Contao 5.7 dafür nur PASTE_INTO kennt; das Gegenstück PASTE_INTO_APPEND kam erst mit
Contao 6. Die Reihenfolge lässt sich anschließend wie gewohnt per Ziehen ändern.
Der Knopf sitzt außerdem am Ende der Operationen einer Zeile, während Contao 6 ihn direkt
neben Danach einfügen setzt. Diese Stelle im DC_Table ist in Contao 5.7 nicht
erweiterbar, ohne Kerncode zu kopieren.
Wie es funktioniert
Die Einfüge-Mechanik bringt Contao 5.7 bereits mit: mode=2 fügt in einen Datensatz ein,
und der Parameter ptable wird für selbstreferenzierende Tabellen ausgewertet
(DC_Table::getPtable(), „nested elements case"). Es fehlt allein der Knopf, der diese
Adresse aufruft — deshalb kommt die Erweiterung ohne Eingriff in den Kern aus und
registriert lediglich eine zusätzliche Zeilen-Operation.
Beschriftung und Symbol stammen ebenfalls aus dem Kern (DCA.pasteinto, pasteinto.svg).
Voraussetzungen
PHP 8.3+, Contao 5.7
Lizenz
GPL-3.0-or-later