Regelauswertung Item-Übergreifend
Guten Tag,
wir möchten in FirstSpirit (2024.8) folgendes erreichen:
Es gibt eine Absatzvorlage "st_teaser" mit einem FS_CATALOG "st_items".
Die Items basieren auf der Absatzvorlage "st_item" und enthalten eine FS_REFERENCE "st_picture".
Wir möchten über die Regeln folgendes validieren/sicherstellen.
Gültig:
- Alle Items haben ein Bild gepflegt ("st_picture" überall gesetzt)
- Kein Item hat ein Bild gesetzt ("st_picture" überall leer) - Keine Items vorhanden
Ungültig:
- Manche Items haben ein Bild, andere nicht
Folgendes haben wir schon versucht:
- In den Items via Regeln auf eine Checkbox im Parent zugreifen.
-> Parent-Komponente im Item via Regeln nicht ansprechbar. - ValueService via Regeln im Parent aufrufen, darin über Items iterieren und schauen ob alle ein Bild haben oder keines
-> Funktioniert nicht zuverlässig, weil Änderungen an bestehenden Items nicht zuverlässig erkannt werden - ValueService via Regeln im Parent aufrufen, darin den Wert einer Chechbox im Parent auf die Checkboxen in den Items übertragen. Normale Regel-Validierung im Item dann über Checkbox im Item
-> Funktioniert nicht zuverlässig. Log behauptet checkbox wäre gesetzt, ist sie aber nicht - ValueService via Regeln im Parent, der je nach validität eine Checkbox im Parent setzt, onsave, Validierung dann im Parent onrelease.
-> Setzt den Haken nur richtig, wenn man sich in der Container-Ansicht befindet, nicht wenn man sich in der Item-Ansicht befindet.
Hat hier jemand eine Idee, wie man dies korrekt umsetzen kann?
Ziel ist es, dass in den Inhalten kein Misch-Masch vorliegt. Alle Items eines Containers sollen ein Bild haben, oder keines. Misch-Masch soll es nicht geben.
Vielen Dank für jede Hilfe.
Viele Grüße
Johanna
-
Hallo Johanna,
wenn ich die Anforderung richtig verstehe, kann das Problem ja nur beim Bearbeiten eines inneren Formulars auftreten (immer dann, wenn ein Bild hinzugefügt oder gelöscht wird). Das Problem wird also durch das Bearbeiten der Cards ausgelöst, wird aber nur aktiv, wenn eine andere Card einen abweichenden Wert hat.
Per Regel kannst Du aber nur die Eingabekomponenten des aktuellen Items prüfen und über einen Value Service die gespeicherten Werte eines anderen Knotens. Letzteres hilft aber nur, wenn die verschiedenen Cards nicht innerhalb derselben Session erzeugt werden. Das passt ja zu deinen geposteten ergebnissen
Ich hätte auch erst versucht, über einen ValueService entweder einen entsprechenden Fehler auszulösen oder (über den ScriptValueService) auf dem Vaterknoten irgendwie eine sinnvolle Informationen zu hinterlegen, dass ein Bild gesetzt/gelöscht wurde. Wegen der Einschränkung "gespeicherte Werte eines anderen Knotens" gehe ich aber wie bereits geschrieben davon aus, dass man das aber nicht vernünftig zum Laufen bekommen wird.
Mein nächster Ansatz wäre der IDProviderEventAgent. Damit kann ich dann jedesmal, wenn ein entsprechender Absatz geändert wird prüfen, ob dessen Inhalt valide ist. Ist aber höchstwahrscheinlich auch eine Sackgasse, da ein Redakteur (im SiteArchitect) zwischenspeichern kann, der Knoten also im Bearbeitungsmodus bleibt und somit nicht direkt nach dem Change Event von einem Service geändert werden kann. (Außerdem hat der IDProviderEventAgent sowieso nur einen Read-Only Userservice, also müsste die Änderung über einen anderen Mechanismus laufen). Wird man also auch nicht so ohne weiteres sauber zum Laufen bringen :(
Bleibt als Lösung eine entsprechende Prüfung über ein Workflow-Skript, dass die Freigabe nicht erlaubt, wenn die Daten nicht korrekt sind.
Wenn man auch ohne Workflow freigegeben kann, entfällt natürlich auch das Workflow Skript. Darf man den Redakteuren einen Klick aufzwingen? Wenn ja, würde mir noch einfallen, dass man beim Fokus auf den CATALOG eine versteckte Eingabekomponente (TOGGLE) setzt, die freigabeverhindernd ist. Dem Redakteur dann einen Button anbieten, über den ein Skript gestartet wird, dem der CATALOG als PARAM übergeben wird und das prüft, ob alles in Ordnung ist. Wenn ja, setzt es den Toggle zurück, wenn nein, gibt es dem Redakteur eine Rückmeldung, welche Cards welchen Status haben. Aber dann gibt es jedesmal, wenn ich den Fokus auf den Catalog setze, eine freigabeverhindernde Änderung. Das ist eine gute Userexperience :(
Insgesamt sehe ich somit keine schöne Lösung. Ich hoffe, jemand anderes hat eine bessere Idee als ich.
Viele Grüße
Holger0
Please sign in to leave a comment.
Comments
1 comment