tlegat
I'm new here

Regelauswertung bei FS_CATALOG im Webedit

Jump to solution

Folgendes Szenario

Galerie als Catalog Komponente, soll wenigstens ein Element (mit Bild!) enthalten. Überprüfung soll im Webedit erst bei Speichern sein, damit nicht gleich beim Anlegen alles rot leuchtet.

  <FS_CATALOG name="st_items" forbidPolyglotDataHierarchy="yes" height="2" useLanguages="yes" viewMode="symbols">

    <LANGINFOS>

      <LANGINFO lang="*" label="Items"/>

      <LANGINFO lang="DE" label="Elemente"/>

    </LANGINFOS>

    <TEMPLATES type="section">

      <TEMPLATE uid="gallery_item"/>

    </TEMPLATES>

  </FS_CATALOG>

Das Regelwerk dazu. Merke: Prüfung auf TRANSLATED nur für Seiten, nicht für Datensätze, in denen das Modul vorkommt.

<RULES>

    <!-- empty field in PAGE: check on save, check translation and prevent faulty saving -->

    <RULE when="ONSAVE">

        <WITH>

            <AND>

                <LESS_THAN>

                    <PROPERTY name="SIZE" source="st_items"/>

                    <NUMBER>1</NUMBER>

                </LESS_THAN>

                <PROPERTY name="INCLUDED" source="#global"/>

                <EQUAL>

                    <PROPERTY name="STORETYPE" source="#global"/>

                    <TEXT>pagestore</TEXT>

                </EQUAL>

                <PROPERTY name="TRANSLATED" source="#global"/>

            </AND>

        </WITH>

        <DO>

            <NOT>

                <VALIDATION scope="SAVE">

                    <PROPERTY name="VALID" source="st_items"/>

                    <MESSAGE lang="*" text="Please add items to the gallery."/>

                    <MESSAGE lang="DE" text="Fügen Sie der Galerie Elemente hinzu."/>

                </VALIDATION>

            </NOT>

        </DO>

    </RULE>

    <!-- empty field in DATASET: check on save, check translation and prevent faulty saving -->

    <RULE when="ONSAVE">

        <WITH>

            <AND>

                <LESS_THAN>

                    <PROPERTY name="SIZE" source="st_items"/>

                    <NUMBER>1</NUMBER>

                </LESS_THAN>

                <PROPERTY name="INCLUDED" source="#global"/>

                <NOT>

                    <EQUAL>

                        <PROPERTY name="STORETYPE" source="#global"/>

                        <TEXT>pagestore</TEXT>

                    </EQUAL>

                </NOT>

            </AND>

        </WITH>

        <DO>

            <NOT>

                <VALIDATION scope="RELEASE">

                    <PROPERTY name="VALID" source="st_items"/>

                    <MESSAGE lang="*" text="Please add items to the gallery."/>

                    <MESSAGE lang="DE" text="Fügen Sie der Galerie Elemente hinzu."/>

                </VALIDATION>

            </NOT>

        </DO>

    </RULE>

</RULES>

Eingabekomponente von gallery_item, es muss ein Bild gesetzt sein!

<FS_REFERENCE name="st_image" hFill="yes" sections="no" upload="yes" useLanguages="no">

    <FILTER>

      <ALLOW type="picture"/>

    </FILTER>

    <LANGINFOS>

      <LANGINFO lang="*" label="Image"/>

      <LANGINFO lang="DE" label="Bild"/>

    </LANGINFOS>

    <PROJECTS>

      <LOCAL name="." uploadFolder="gallery">

        <SOURCES>

          <FOLDER name="gallery" store="mediastore"/>

        </SOURCES>

      </LOCAL>

    </PROJECTS>

  </FS_REFERENCE>

und die Regeln:

<RULES>

    <!-- empty field: check on save and prevent faulty saving -->

    <RULE when="ONSAVE">

        <WITH>

            <PROPERTY name="EMPTY" source="st_image"/>

        </WITH>

        <DO>

            <NOT>

                <VALIDATION scope="SAVE">

                    <PROPERTY name="VALID" source="st_image"/>

                    <MESSAGE lang="*" text="Please upload or select an image."/>

                    <MESSAGE lang="DE" text="Laden Sie ein Bild hoch oder wählen Sie eines der vorhandenen aus."/>

                </VALIDATION>

            </NOT>

        </DO>

    </RULE>

</RULES>

Das Problem

Im CC kann ich ein neues FS Catalog-Element anlegen und die Änderung speichern. Die Validierung des gallery_item greift nicht.

Öffne ich hingegen das neue Element, muss ich es auch sinnvoll befüllen. Die Validierung greift.

Ändere ich nun die Regelvalidierung in gallery_item und entferne when="ONSAVE", dann wird das neue Element in der Galerie direkt rot markiert und lässt ein Speichern nicht mehr zu.

Hierbei handelt es sich offenbar um ein Fehlverhalten in der Abarbeitung der Regeln bei verschachtelten Komponenten.

Auch das Highlighting ist ungünstig, da der behobene Fehler an der Galerie dennoch weiter rot aufleuchtet, bis man das nächste Mal versucht, zu speichern und damit zu revalidieren.

Wunschkonzert

Hier wäre wünschenswert, dass

  1. es ein when="ONCHANGE" gäbe, was die Validierung nur auf Basis von Änderungen durch den Nutzer durchführt, insbesondere wenn Unterkomponenten bearbeitet werden.
  2. Validierung bei neu erstellten Elementen nicht direkt greift, sondern dem Nutzer die Gelegenheit gibt, Komponenten korrekt zu befüllen, bevor man ihm Fehler vorhält.

Verwendete FS Version 5.2.1102

0 Kudos
1 Solution
5 Replies
kohlbrecher
Crownpeak employee

Hallo,

Im CC kann ich ein neues FS Catalog-Element anlegen und die Änderung speichern. Die Validierung des gallery_item greift nicht.

Öffne ich hingegen das neue Element, muss ich es auch sinnvoll befüllen. Die Validierung greift.

Zugegeben fühlt sich dieses Verhalten nach einem Bug an aber ich denke die Erklärung für dieses Verhalten ist, dass bei Verschachtelungen eine Grenze gesetzt werden muss, da sonst der Aufwand für die Überprüfung sehr hoch werden kann und es eventuell zu Endlosschleifen kommen kann.

es ein when="ONCHANGE" gäbe, was die Validierung nur auf Basis von Änderungen durch den Nutzer durchführt, insbesondere wenn Unterkomponenten bearbeitet werden.

Ohne die Angabe eines "when" handelt es sich um ein ONCHANGE oder wann genau soll diese Regel greifen? Das Problem mit den Unterkomponenten habe ich oben probiert zu erklären.

Validierung bei neu erstellten Elementen nicht direkt greift, sondern dem Nutzer die Gelegenheit gibt, Komponenten korrekt zu befüllen, bevor man ihm Fehler vorhält.

Hier liegt das Problem wahrscheinlich an der Feststellung des Zeitpunktes. Eine spontane Idee wäre eine Regel die bei "ONCHANGE" und "nicht leer" greift und eine weitere Regel, die bei ONSAVE dann sicherstellt, dass das Element nicht leer ist.

Grüße

Jan

0 Kudos

Hallo Jan,

das Problem bei der "Grenze" ist, dass sie nicht offensichtlich oder dokumentiert ist. Die Frage, die offen bleibt, ist dann, warum die Validierung ohne when-Attribut greift, mit dem Attribut jedoch nicht. Das klingt nicht nach Verschachtelungsgrenze.

Außerdem: warum kann allowEmpty erst beim Speichern prüfen und dann echte Fehler anzeigen, wohingegen das ohne "when" von Anfang an geschieht? Ja, das eine steckt an der Eingabekomponente, das andere kann überall stehen, aber wie im Betreff bereits erwähnt: kann man nicht etwas einführen, was die Mechanik von allowEmpty nachahmt, d.h. eine Prüfung erst NACH der ersten Änderung?

Das ONCHANGE würde ich hier auf der Elternebene einsetzen, also für st_items.

Es soll dann die Kindelemente prüfen, wenn es zu Änderungen kam, und nur dann - und nicht ständig, eben gerade um Endlosschleifen und Performance-Probleme zu vermeiden.

Grundsätzlich wäre es wünschenswert, dass hier viel deutlicher gemacht wird, wo die Grenzen der GUI sind, damit man als Entwickler die Oberfläche auch entsprechend gestalten kann. Das Regelwerk ist gerade bei Datensätzen noch unzufriedenstellend und da arbeitet man ggfs doch lieber mit allowEmpty, was zuverlässig erst beim Speichern Fehler anzeigt - und nicht davor.

0 Kudos
Henczi
Crownpeak employee

Hallo Tibor,

Wir nehmen deine Kritikpunkte sehr ernst und hoffen eine baldige Lösung zu finden.

Am besten formulierst du dazu deine Punkte etwas um und stellst sie hier in der Community als Feature Requests ein.

Diese können dann von der Gruppe diskutiert werden. Damit hast du die besten Chancen,

dass die von dir gewünschten Änderungen in einer der kommenden FirstSpirit Versionen

enthalten sind.

Ich hoffe die Antwort hilft dir etwas weiter.

Mit freundlichem Gruß

Nico

0 Kudos

Hi Tibor,

danke dass du die entsprechenden Anfragen angelegt hast. Schön dass wir von dir so produktives und umfangreiches Feedback bekommen.

Ich hoffe, dass die Anfragen schnell aufgelöst werden können. Ich gehe erstmal davon aus, dass dieser Vorgang hier soweit auch gelöst ist und du von den Kollegen hörst, wenn es zu deinen Anfragen Neuigkeiten gibt.

Grüße,

Hannes

0 Kudos