Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Modul Tipp: Repeater #270

Closed
eaCe opened this issue Oct 2, 2021 · 7 comments
Closed

Modul Tipp: Repeater #270

eaCe opened this issue Oct 2, 2021 · 7 comments

Comments

@eaCe
Copy link
Member

eaCe commented Oct 2, 2021

Aus aktuellem Anlass habe ich ein Repeater Modul gebaut, das auf 2 Ebenen verschachtelt ist.
Das habe ich bisher leider noch nicht mit MBlock hinbekommen (siehe FriendsOfREDAXO/mblock#78 (comment)).

Wenn Interesse besteht würde ich dafür einen Tipp schreiben.

Das Modul läuft mit Alpinejs, es hat mich einige Nerven gekostet, Alpinejs und pjax vertragen sich im Redaxo-Umfeld wohl nicht so gut... Nun läuft es, vermutlich kann man das aber noch eleganter schreiben.

Man kann Gruppen und Felder hinzufügen oder löschen, aber nicht verschieben. Das wäre sicher sinnvoll, habe ich aber noch nicht gebaut.

Ich hänge euch hier einfach mal ein gif dazu an.

repeater

@skerbis
Copy link
Member

skerbis commented Oct 2, 2021

Gerne.

@eaCe
Copy link
Member Author

eaCe commented Oct 3, 2021

@skerbis willst du das vielleicht zunächst gegentesten?

Ich habe ein paar Funktionen erweitert und das ganze etwas aufgehübscht (siehe Screenshot).

Bildschirmfoto am 2021-10-03 um 08 19 40

Zunächst muss Alpinejs eingebunden werden.
Ich habe das einfach über das Project Addon gemacht...

if (rex::isBackend() && rex::getUser()) {
    rex_view::addJSFile('//unpkg.com/alpinejs', [rex_view::JS_DEFERED => true]);
}

Modul Input:
https://gist.github.com/eaCe/38186743b325ca5953cfc7858b47364f

Output zum testen:

<?php
$accordionItems = json_decode(html_entity_decode(REX_VALUE[1]));
echo '<pre>';
var_dump($accordionItems);
echo '</pre>';
?>

@skerbis
Copy link
Member

skerbis commented Oct 3, 2021

Wie verhält es sich mit Widgets aus REDAXO und ggf. Texteditoren?

@skerbis
Copy link
Member

skerbis commented Oct 3, 2021

Getestet und gut

@eaCe
Copy link
Member Author

eaCe commented Oct 3, 2021

Für Widgets und Texteditoren muss man die Funktionalität natürlich erweitern.
Ich habe das erst mal nicht berücksichtigt.

Wenn alle möglichen Felder genutzt werden sollen benötigt man diverse Helper Funktionen. Ich habe testweise mal ein Link-Feld eingebaut. Hierfür benötige ich eine rex_api_function und ein bisschen jQuery. Leider kann man keine jQuery Events in nativen JS einfangen.

Will sagen - es geht, braucht aber weiteren Code. Wenn man das ganze weiterspinnt wird eher ein Addon draus.
Man könnte z.B. die Felddefinitionen über REX_VARs erstellen, in denen dann auch der Alpinejs Kram steht. Und dann die entsprechenden Ajax Funktionen und co… Aber das wäre dann für mich kein Trick oder Tipp mehr.

Wobei ich zumindest beim Link vielleicht doch auf die Helper verzichten kann... Ich muss noch etwas rumexperimentieren...

@skerbis
Copy link
Member

skerbis commented Oct 3, 2021

Gut 👍 für den Trick ist’s doch schon super.

@eaCe eaCe mentioned this issue Oct 3, 2021
@eaCe
Copy link
Member Author

eaCe commented Oct 3, 2021

Danke @skerbis

@eaCe eaCe closed this as completed Oct 3, 2021
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

2 participants