- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
FS5 Regeln: Regeln bei mehrsprachigen Projekten unbrauchbar?
Hallo Zusammen.
Regeln zu definieren ist toll, endlich verstรคndlicherere Fehlermeldungen. Allerdings haben sie einen groรen Nachteil wie ich gerade feststellen musste. Sie gelten nรคmlich fรผr alle Sprachreiter.
Beispiel:
Wenn ich bei einer Eingabekomponente allowEmpty="no" gesetzt habe konnte ich das Formular in dem Sprachreiter in dem ich bin, nur speichern wenn es gefรผllt ist. In einer anderen Sprache wurde es nicht gefรผllt wird aber auch ignoriert, da ich im aktuellen Sprachreiter alles ausgefรผlt habe.
Bei den Regeln ist es nun so, dass die Regel s.u. nun in allen Sprachen greift. D.h. wenn die Redakteure in Deutschland eine neue Seite erstellen mรผssen sie auch zwingend den englischen und chinesischen Inhalt einfรผgen. Das wird natรผrlich nicht gehen, damit wรคren dann aber die schรถnen Regeln fรผr uns unbrauchbar.
Ist das so beabsichtigt? Vielleicht fehlt auch noch was in der Regeldefinition wobei ich diese aus der Doku bzw. dem Midras Projekt habe?!
Viele Grรผรe,
Daniel
<ON_SAVE>
<WITH>
<NOT>
<PROPERTY source="pt_description" name="EMPTY"/>
</NOT>
</WITH>
<DO>
<VALIDATION>
<PROPERTY source="pt_description" name="VALID"/>
<MESSAGE lang="*" text="The META DESCRIPTION must not be empty!"/>
<MESSAGE lang="DE" text="Der META DESCRIPTION darf nicht leer sein!"/>
</VALIDATION>
</DO>
</ON_SAVE>
- Labels:
-
Developers
Accepted Solutions
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hallo Daniel,
bei mir unter v5.0.106 funktioniert es so nicht - jedenfalls nicht in allen Variationen der Reihenfolge von Benutzeraktionen - genau das war ja mein Punkt ๐
Deine Regel sorgt lediglich fรผr ein Markieren als "ungรผltig / nicht speicherbar" beim SETZEN des Hakens "รผbersetzt" bei leeren Feld. Wenn man den Haken direkt danach wieder entfernt, bleibt die rote Markierung als "ungรผltig" erhalten.
Durch die Vorbedingung erfolgt eine Auswertung bzw. das "Setzen" der Gรผltigkeit nur wenn/solange der Haken gesetzt ist. Dazu gehรถrt aber nicht nur das "ungรผltig" setzten, sondern auch das (wieder) "gรผltig" setzen. Genau letzteres soll auch soweit ich es verstanden habe beim Entfernen des Hakens passieren. Die Vorbedingung verhindert das aber und verwirrt dadurch wahrscheinlich den Redakteur:
Immerhin ist ein und derselbe Zustand (Kein Haken bei "รผbersetzt" UND leeres Feld) nun angeblich ungรผltig, der vorher gรผltig war.
Ein Speichern ist allerdings trotzdem mรถglich, hier scheint eine separate Validierung angestoรen zu werden mit "frischen" Gรผltigkeitsstati.
Dennoch sollte man das ganze fรผr den Redakteuer konsistent gestalten (wenn rot, kein Speichern) - und dazu in diesem Fall wirklich ohne Vorbedingung arbeiten.
Funktioniert denn folgende Regel nicht?
<ON_SAVE>
<WITH>
<NOT>
<AND>
<PROPERTY source="pt_title" name="EMPTY"/>
<PROPERTY source="#global" name="TRANSLATED"/>
</AND>
</NOT>
</WITH>
<DO>
<VALIDATION>
<PROPERTY source="pt_title" name="VALID"/>
<MESSAGE lang="*" text="The PAGE TITLE must not be empty!"/>
<MESSAGE lang="DE" text="Der SEITENTITEL darf nicht leer sein!"/>
</VALIDATION>
</DO>
</ON_SAVE>
Viele Grรผรe
Michael
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
> Ist das so beabsichtigt?
ja.
man koennte bspw. auch auf <ON_RELEASE/> umstellen
oder
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
<ON_RELEASE> wรคre hierfรผr ungeeignet, denn ein Speichern soll wirklich nur mit gepflegtem Inhalt mรถglich sein.
Die zweite Option war allerdings sehr hilfreich. Ich habe meine REGEL dementsprechend um eine Verbedingung erweitert und nun funktioniert es wunderbar.
<ON_SAVE>
<IF>
<PROPERTY source="#global" name="TRANSLATED"/>
</IF>
<WITH>
<NOT>
<PROPERTY source="pt_description" name="EMPTY"/>
</NOT>
</WITH>
<DO>
<VALIDATION>
<PROPERTY source="pt_description" name="VALID"/>
<MESSAGE lang="*" text="The META DESCRIPTION must not be empty!"/>
<MESSAGE lang="DE" text="Der META DESCRIPTION darf nicht leer sein!"/>
</VALIDATION>
</DO>
</ON_SAVE>
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Alternativ kann man das Inteface de.espirit.firstspirit.service.value.ValueService implementieren. Hierzu gibt es auch ein Beispiel http://www.e-spirit.com/odfs50/de/weiterfuehrende_themen/validatoren/einfuehrung.html?community am Ende der Seite.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Gibt es zu dem Modul eine Doku wie man es einsetzen kann?
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Vorsicht, das funktioniert nur in eine Richtung. Die Abfrage von TRANSLATED sollte nicht in der Vorbedingung erfolgen sondern Teil der Wertermittlung sein. Sonst wird das Feld beim Setzen des Hakens zwar ungรผltig, beim Entfernen aber nicht wieder gรผltig.
Siehe auch https://community.e-spirit.com/message/11561#11561
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Das ist korrekt, allerdings muss die Abfrage muss sowohl in der Vorbedingung als auch in der Werteermittlung gesetzt sein, sonst funktioniert es nicht.
Bei mir funktioniert es nur so:
<ON_SAVE>
<IF>
<PROPERTY source="#global" name="TRANSLATED"/>
</IF>
<WITH>
<AND>
<NOT>
<PROPERTY source="pt_title" name="EMPTY"/>
</NOT>
<PROPERTY source="#global" name="TRANSLATED"/>
</AND>
</WITH>
<DO>
<VALIDATION>
<PROPERTY source="pt_title" name="VALID"/>
<MESSAGE lang="*" text="The PAGE TITLE must not be empty!"/>
<MESSAGE lang="DE" text="Der SEITENTITEL darf nicht leer sein!"/>
</VALIDATION>
</DO>
</ON_SAVE>
Gruร,
Daniel
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hallo Daniel,
bei mir unter v5.0.106 funktioniert es so nicht - jedenfalls nicht in allen Variationen der Reihenfolge von Benutzeraktionen - genau das war ja mein Punkt ๐
Deine Regel sorgt lediglich fรผr ein Markieren als "ungรผltig / nicht speicherbar" beim SETZEN des Hakens "รผbersetzt" bei leeren Feld. Wenn man den Haken direkt danach wieder entfernt, bleibt die rote Markierung als "ungรผltig" erhalten.
Durch die Vorbedingung erfolgt eine Auswertung bzw. das "Setzen" der Gรผltigkeit nur wenn/solange der Haken gesetzt ist. Dazu gehรถrt aber nicht nur das "ungรผltig" setzten, sondern auch das (wieder) "gรผltig" setzen. Genau letzteres soll auch soweit ich es verstanden habe beim Entfernen des Hakens passieren. Die Vorbedingung verhindert das aber und verwirrt dadurch wahrscheinlich den Redakteur:
Immerhin ist ein und derselbe Zustand (Kein Haken bei "รผbersetzt" UND leeres Feld) nun angeblich ungรผltig, der vorher gรผltig war.
Ein Speichern ist allerdings trotzdem mรถglich, hier scheint eine separate Validierung angestoรen zu werden mit "frischen" Gรผltigkeitsstati.
Dennoch sollte man das ganze fรผr den Redakteuer konsistent gestalten (wenn rot, kein Speichern) - und dazu in diesem Fall wirklich ohne Vorbedingung arbeiten.
Funktioniert denn folgende Regel nicht?
<ON_SAVE>
<WITH>
<NOT>
<AND>
<PROPERTY source="pt_title" name="EMPTY"/>
<PROPERTY source="#global" name="TRANSLATED"/>
</AND>
</NOT>
</WITH>
<DO>
<VALIDATION>
<PROPERTY source="pt_title" name="VALID"/>
<MESSAGE lang="*" text="The PAGE TITLE must not be empty!"/>
<MESSAGE lang="DE" text="Der SEITENTITEL darf nicht leer sein!"/>
</VALIDATION>
</DO>
</ON_SAVE>
Viele Grรผรe
Michael
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hallo Michael.
Perfekt, so funktioniert es.
Ich hatte die Zeile "<PROPERTY source="#global" name="TRANSLATED"/>
" nicht verneint. Daher ging es nicht.
Es dauert noch eine Weile bis ich eure Logik der "Dreifachverneinung" verinnerlicht habe. Ich Frage ja ab ob ein Feld leer ist, dann muss ich die Abfrage verneinen, die dann die Validierung anstรถรt wenn das Feld wirklich leer ist, das verursacht einige Knoten bei mir ...
Aber trotzdem vielen Dank fรผr die Hilfe.
Gruร,
Daniel
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hallo Daniel,
ein Tipp zur vielleicht "knotenfreieren", allgemeinen Herangehensweise:
Wenn man das ganze nicht als Ablauflogik sondern anschaulich als Zuweisung einer "Eigenschaft VALID" versteht, finde ich es einfacher (so erklรคre ich es auch in den Schulungen). Das ist dann รผbrigens auch konsistent mit den anderen Verwendungen der dynamischen Formulare (Sichtbarkeit, Editierbarkeit usw.) und man braucht fรผr beides nur ein einziges Denkmodell.
Anschaulich funktioniert beides dann so: Das "Ergebnis" aus dem <WITH> wird in die Eigenschaft(en) gesteckt, die man im <DO> angibt.
Mir hilft es, vorher das Ganze auf einem Zettel als Pseudo(!)code zu formulieren. Man braucht letztlich eine Ermittlung der "Eigenschaft" VALID, hier an Deinem Beispiel mal exemplarisch
pt_title.valid = ?
Oft ist es aber einfacher, zunรคchst zu formulieren wann etwas UNgรผltig ist und das dann umzuformen:
"Das Feld ist GENAU DANN ungรผltig wenn es leer ist UND die Seite als รผbersetzt markiert ist" wird dann zu
pt_title.invalid = pt_title.empty && #global.translated
mit pt_title.invalid = ! (pt.title.valid) wird daraus
<=> ! pt_title.valid = pt_title.empty && #global.translated
<=> pt_title.valid = ! (pt_title.empty && #global.translated)
Und schon hat man das, was man nur noch in Regelsyntax gieรen muss. Der linke Teil entspricht dann dem <PROPERTY source="pt_title" name="VALID"> in der Validierung, der rechte dem <WITH>-Teil.
Das Ganze funktioniert auch wunderbar wenn mehrere Komponenten im Spiel sind.
Viele Grรผรe
Michael

