Skip to main content

WebEdit5: Dyn. Formulare und Verhalten des JavaClients

Comments

9 comments

  • Zendesk API User
    Author: MichaelaReydt - 1/28/2013 11:41

    Hallo,

    ich bin mir nicht sicher, ob ich das geschilderte Problem richtig verstanden habe.

    Zur Erklärung für mich:

    Es existieren  die zwei Eingabekomponenten "ptEventType" (Radiobutton) und "ptTitle" (Textzeile).

    Die Regel soll folgendes erwirken?

    * Radiobutton nicht aktiviert -> Textzeile muss gefüllt werden

    * Radiobutton aktiviert -> Textzeile muss nicht gefüllt werden

    Stimmt das so?

    Ich hab das jetzt nur mit zwei CMS_INPUT_TEXT-Komponenten probiert. Da funktioniert die folgende Regel für beide Clients:

    <RULES>

    <ON_SAVE>

            <IF>

                <EQUAL>

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

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

                </EQUAL>

            </IF>

            <WITH>

                <NOT>

                    <AND>

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

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

                    </AND>

                </NOT>

            </WITH>

            <DO>

                <VALIDATION>

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

                    <MESSAGE lang="*" text="No content provided!"/>

                </VALIDATION>

                <VALIDATION>

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

                    <MESSAGE lang="*" text="No content provided!"/>

                </VALIDATION>

            </DO>

        </ON_SAVE>

    </RULES>

    LG Michaela

    0
  • Zendesk API User
    Author: daniel2 - 1/28/2013 12:42

    Hallo Michaela,

    nicht ganz:

    Sobald ptEventType den Wert "child" annimmt, darf ptTitle nicht leer sein.

    Das funktioniert wie gesagt wunderbar im WebEdit mit der meinigen Lösung, aber nicht im JavaClient. Ich bräuchte diese Lösung allerdings auf irgendeine Art und Weise für beide Clients.

    LG,

    Daniel

    0
  • Zendesk API User
    Author: StefanSchulz - 1/28/2013 15:24

    Hi Daniel,

    ich mag mich ob deines Ziels täuschen, aber aktuell sagt deine Regel (if-Teil mal außen vor, denn der bestimmt nur, ob die Regel durchgeführt wird oder nicht), dass ptTitle dann valide ist, wenn es nicht leer ist oder ptEventType = child ist. Ich glaube aber, du willst ptEventType != child haben, oder?

    Das wäre dann folgender Werteabschnitt:

    <NOT>

      <AND>

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

        <EQUAL>

          <PROPERTY source="ptEventType" name="VALUE"/>

          <TEXT>child</TEXT>

        </EQUAL>

      </AND>

    </NOT>

    Regeln sollten prinzipiell in beiden Clients gleich funktionieren, ansonsten liegt möglicherweise ein Fehler vor.

    Gruß

    Stefan

    0
  • Zendesk API User
    Author: daniel2 - 1/28/2013 15:58

    Hi Stefan,

    ich will ptEventType == child haben. :smileyhappy: Nur dann soll ptTitle "required" sein – sonst nicht.

    ptTitle wird bei anderen Werten des Radiobuttons sogar ausgeblendet, was auch das Problem darstellen könnte.

    So blende ich ptTitle aus (in Abhängigkeit eines weiteren Feldes):

    <ON_EVENT>

        <WITH>     

          <OR>

            <NOT>

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

            </NOT>

            <NOT>

              <AND>

                <EQUAL>

                  <PROPERTY source="ptType" name="VALUE"/>

                  <TEXT>event</TEXT>

                </EQUAL>

                <EQUAL>

                  <PROPERTY source="ptEventType" name="VALUE"/>

                  <TEXT>child</TEXT>

                </EQUAL>

              </AND>

            </NOT>

          </OR>

        </WITH>

        <DO>

          <PROPERTY source="ptTitle" name="VISIBLE"/>

        </DO>

      </ON_EVENT>

    Vielen Dank und Grüße zurück,

    Daniel

    0
  • Zendesk API User
    Author: StefanSchulz - 1/28/2013 16:12

    Daniel Klimsa schrieb:

    ich will ptEventType == child haben. :smileyhappy: Nur dann soll ptTitle "required" sein – sonst nicht.

    Ja, genau das beschreibt die Logik, die ich oben angegeben habe. :smileywink:

    Vielleicht mal umgangssprachlich: ptTitle ist dann ungültig, wenn es leer ist und wenn ptEventType child ist.

    Folglich gilt:

    • ist ptEventType = child und ptTitle leer, dann ist der Zustand ungültig.
    • ist ptTitle nicht leer, dann ist der Zustand gültig (egal, welchen Wert ptEventType hat)
    • ist ptEventType != child, dann ist der Zustand gültig (egal, welchen Wert ptTitle hat)

    Ich vermute mal, dein eigener Denkansatz führt dich ein wenig in die Irre. Es geht in der Regel nicht um "required", sondern um die Definition, wann der Zustand (also die Kombination der Werte in den Eingabekomponenten) gültig ist und wann nicht. Das "required" kommt durch das ON_SAVE hinzu, dass nämlich nur dann gespeichert werden kann, wenn ein gültiger Zustand erreicht ist.

    Hoffe, das klärt es ein wenig.

    Gruß

    Stefan

    0
  • Zendesk API User
    Author: daniel2 - 1/28/2013 19:03

    Hi Stefan,

    danke für Deine unendliche Geduld und natürlich liegst Du vollkommen richtig. :-)

    Allerdings habe ich bereits Michaela falsch geantwortet - es ist so, wie ich eingangs schrieb:

    Nur wenn ptEventType == child, dann soll ptTitle nicht mit einer Fehlermeldung versehen werden - deshalb mein Lösungsansatz mit <or> (ptEventType hat mehrere Werte, bei deren Auswahl ptTitle nicht leer sein darf).

    Wie muss ich die Regel schreiben, damit das so funktioniert?

    Viele Grüße,

    Daniel

    P.S.: Ein eventueller gemeinsamer Kaffee geht dann mal auf mich. ;-)

    0
  • Zendesk API User
    Author: StefanSchulz - 1/29/2013 7:10

    Hi Daniel,

    Argl. Lesen hilft. Jetzt sehe ich auch erst das Problem :smileyhappy:

    Du benutzt ja einen Radiobutton. Und der Wert eines Radiobuttons ist natürlich kein Text sondern eine Option. Daher schlägt ein Vergleich mit einem Text immer fehl. In Webedit funktioniert's, weil dort technisch bedingt eine Zeichenkette als Wert verwendet wird.

    Richtig ist die Verwendung der Eigenschaft ENTRY statt VALUE (gilt übrigens auch für Combobox). Allerdings nur dann, wenn der Wert nicht aus der Datenbank geladen wird (dann hättest du verloren).

    Und als Bonbon: deine Regel vom Anfang stimmt dann. :smileyhappy:

    Gruß

    Stefan

    0
  • Zendesk API User
    Author: daniel2 - 1/29/2013 9:50

    Hi Stefan,

    wir müssen uns glaub ich alle nen Kaffee spendieren. ,-)

    Danke für den Hinweis mit der zu verwendenden Eigenschaft "ENTRY" – muss ich die "TEXT"-Tags auch anpassen? Denn so komm ich nicht zum gewünschten Ergebnis, obwohl die Einträge nicht aus der DB kommen:

    <ON_SAVE>

        <IF>

          <EQUAL>

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

            <TEXT>DE</TEXT>

          </EQUAL>

        </IF>

        <WITH>

          <OR>

            <NOT>

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

            </NOT>

            <EQUAL>

              <PROPERTY source="ptEventType" name="ENTRY"/>

              <TEXT>child</TEXT>

            </EQUAL>

          </OR>

        </WITH>

        <DO>

          <VALIDATION>

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

            <MESSAGE lang="*" text="Bitte tragen Sie eine Überschrift für diesen Artikel ein."/>

          </VALIDATION>

        </DO>

      </ON_SAVE>

    Sorry, bin in der Doku nicht fündig geworden.

    Grüße,

    Daniel

    0
  • Zendesk API User
    Author: StefanSchulz - 1/30/2013 9:42

    Das sollte so funktionieren. Bitte gib mal die FS-Versionsnummer an und poste die Definition des Radiobutton.

    Nebenfrage: Wozu machst du eigentlich die Einschränkung auf DE?

    Gruß

    Stefan

    0

Please sign in to leave a comment.