Zum Hauptinhalt gehen

FS5 Regeln: Regeln bei mehrsprachigen Projekten unbrauchbar?

Kommentare

9 Kommentare

  • Zendesk API User
    Author: andre - 10/5/2012 14:38

    > Ist das so beabsichtigt?

    ja.

    man koennte bspw. auch auf <ON_RELEASE/> umstellen

    oder

    http://www.e-spirit.com/odfs50/de/weiterfuehrende_themen/validatoren/_property___tag/translated/attribut_translated.html?community

    
    
    0
  • Zendesk API User
    Author: daniel_philippi - 10/5/2012 14:59

    <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>

    0
  • Zendesk API User
    Author: witt - 10/5/2012 19:20

    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.

    0
  • Zendesk API User
    Author: daniel_philippi - 10/9/2012 9:13

    Gibt es zu dem Modul eine Doku wie man es einsetzen kann?

    0
  • Zendesk API User
    Author: mbergmann - 10/12/2012 15:47

    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

    0
  • Zendesk API User
    Author: daniel_philippi - 10/17/2012 17:03

    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

    0
  • Zendesk API User
    Author: mbergmann - 10/17/2012 22:03

    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

    0
  • Zendesk API User
    Author: daniel_philippi - 10/18/2012 7:49

    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

    0
  • Zendesk API User
    Author: mbergmann - 10/18/2012 10:22

    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

    0

Bitte melden Sie sich an, um einen Kommentar zu hinterlassen.