marcus_rommel
I'm new here

FS 5.2 - Über Regeln eingeblendete "Message" verschwindet nicht wieder

Hallo liebe Community,

vielleicht habt ihr ja einen Tipp für mich. Wir haben zwei FS_LISTs die während einer Validierung ein unschönes Verhalten zeigen.

Der Redakteur soll darauf hingewiesen werden, dass nur in einer der beiden Listen etwas auszuwählen ist wenn er in beiden eine Auswahl trifft. Das funktioniert auch soweit sehr gut. Wenn er aber danach seinen "Fehler" korrigieren möchte und eine der beiden Listen leert wird die Nachricht weiterhin angezeigt.

Um das ganze nachzustellen habe ich die folgende Regel im Mithras Energy in der Tabellenvorlage "Produkte" getestet. Sie entspricht der die wir in unserem Projekt einsetzen, nur das wir da um das <VALIDATION>-tag kein <NOT>-tag setzen mussten. Warum auch immer das so ist - wenn mir das einer erklären kann wäre ich dafür auch nicht undankbar.

Regel:

<RULE>

     <IF>

          <GREATER_THAN>

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

               <NUMBER>0</NUMBER>

          </GREATER_THAN>

     </IF>

     <WITH>

          <GREATER_THAN>

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

               <NUMBER>0</NUMBER>

          </GREATER_THAN>

     </WITH>

     <DO>

          <NOT>

               <VALIDATION scope="INFO">

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

                    <MESSAGE lang="*" text="Das ist der Testtext!"/>

               </VALIDATION>

          </NOT>

     </DO>

</RULE>

Wenn man also jetzt im ContentCreator oder SiteArchitect Produktkategorie und Produkteigenschaften hinzufügt, dann bekommt Produktkategorie den Hinweistext. löscht man jetzt beispielsweise die Produktkategorie wieder, dann bleibt der Text da.

Was mache ich an dieser Stelle falsch?

Viele Grüße & Danke für eure Hilfe

Marcus

5 Replies
mbergmann
Crownpeak employee

Hallo Marcus,

das Problem ist hier dass die Größe der Liste im IF abgefragt wird. Dadurch wird die Regel bei einer Größe von 0 gar nicht ausgeführt, was auch bedeutet dass ein durch diese Regel vorher gesetzter Text nicht wieder entfernt wird.

Im IF einer Regel sollte nicht auf vom Redakteur änderbare Eigenschaften / Werte geprüft werden, weil man sich dadurch eine Art "Einbahnstraßen-Regel" baut, die nur in eine Richtung funktioniert.

Die Lösung wäre hier, die Bedingung mit in das WITH zu nehmen.

Viele Grüße

Michael

0 Kudos

Hallo Michael,

ich habe es jetzt wie folgt umgebaut:

<RULE>

     <WITH>

          <AND>

               <GREATER_THAN>

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

                    <NUMBER>0</NUMBER>

               </GREATER_THAN>

               <GREATER_THAN>

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

                    <NUMBER>0</NUMBER>

               </GREATER_THAN>

          </AND>

     </WITH>

     <DO>

          <NOT>

               <VALIDATION scope="INFO">

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

                    <MESSAGE lang="*" text="Das ist der Testtext!"/>

               </VALIDATION>

          </NOT>

     </DO>

</RULE>

Der Text verschwindet zwar im Formular der Mithras Tabellenvorlage wieder, aber nicht im Formular unseres Projektes. Der Aufbau der Regel ist identisch - sind nur andere Feldnamen. Auch die Eingabekomponenten sind soweit gleich. Beide FS_LIST mit DATASOURCE database.

Muss ich hier noch auf etwas anderes achten? Vielleicht übersehe ich einfach irgendetwas.

Viele Grüße und Danke

Marcus

0 Kudos

Hallo Marcus,

wie so oft liegt der Teufel im Detail. Vielleicht postet Du bitte noch die Regeln des fraglichen Projektes. Wenn beide Situationen identisch wären, dürfte es keine Abweichung geben. Irgendwas muss anders sein.

Grüße Marian

0 Kudos

Hallo Marcus,

bezüglich des NOT kann ich dir weiterhelfen. Deine Regel soll ausdrücken, dass die Eingabe dann korrekt ist (also keine Fehlermeldung erscheint), wenn NICHT beide Komponenten Einträge haben. Du kannst das NOT genauso gut um das AND legen, dann steht deine Anforderung in der Logik da: NOT ( categories > 0 AND properties > 0 ) => categories ist valide.

Für die restliche Fragestellung kann ich mich nur Marians Aussage anschließen. Irgendwo muss ein Unterschied sein. Hast du eventuell mehrere Regeln, die die gleiche Komponente bedienen und konfliktär sind?

Beste Grüße

Stefan

Hallo ihr beiden,

wir haben nun das Update auf 5.2.103 gemacht und das Problem tritt nicht mehr auf. DIe Nachricht erscheint und verschwindet wie gewünscht. Was auch immer es war, es ist jetzt zum Glück kein Problem mehr.

Vielen Dank für eure Hilfe.

Grüße

Marcus