Draggha
I'm new here

Bug in auf die Mastersprache beschränkten Validation Rules bei mehrsprachigen Listen

Jump to solution

Hallo liebe Community,

ich glaube einen Bug in den Validation Rules in Kombination mit mehrsprachigen Listen gefunden zu haben. Vielleicht benutze ich die Rules aber auch falsch. Hier ein Beispiel zur Erklärung:

Man hat ein Projekt mit 2 Projektsprachen und erstellt 2 Absatzvorlagen (eine Seitenvorlage wird als gegeben angesehen):

(1.) Eine Absatzvorlage mit einer mehrsprachigen FS_LIST, welche nur die Absatzvorlage aus.

(2.) Eine Absatzvoralge mit einem CMS_INPUT_TEXT namens "st_headline", welches folgende Validation Rule bekommt:

<ON_RELEASE>

   <IF>

      <EQUAL>

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

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

      </EQUAL>

   </IF>

   <WITH>

      <NOT>

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

      </NOT>

   </WITH>

   <DO>

      <VALIDATION>

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

         <MESSAGE lang="*" text="Please enter a value!"/>

      </VALIDATION>

   </DO>

</ON_RELEASE>

Anmerkung: Die Validierungsregel soll nur in der Mastersprache des Projekts greifen!

-----------------------------------------------------------------

Vorbedingung aller Test-Szenarien:

Man erstellt in der Mastersprache eine Testseite.

-----------------------

___Test 1___

❑ Vorbedingung:

   \_ Man öffnet die Testseite in der Mastersprache zur Bearbeitung.

   \_ Man fügt der Testseite eine Listen-Absatzvorlage (siehe 1.) mit einem Kindeelement (siehe 2.) hinzu.

   \_ In das Textfeld des Kindelements wird der Beispielwert "foo" eingetragen.

   \_ Man gibt die bearbeitete Seite frei.

❑ Erwartungen:

   \_ Die Seite wird ohne Probleme freigegeben.

___Test 2___

❑ Vorbedingung:

   \_ Man führt die Schritte der Vorbedingung des Testfalls 1 aus.

   \_ Man öffnet die Testseite in der 2. Projektsprache zur Bearbeitung.

   \_ Man fügt der Testseite eine Listen-Absatzvorlage (siehe 1.) mit einem Kindeelement (siehe 2.) hinzu.

   \_ In das Textfeld des Kindelements wird der Beispielwert "foo" eingetragen.

   \_ Man gibt die bearbeitete Seite frei.

❑ Erwartungen:

   \_ Die Seite wird ohne Probleme freigegeben.

___Test 2___

❑ Vorbedingung:

   \_ Man führt die Schritte der Vorbedingung des Testfalls 2 aus.

   \_ Man öffnet die Testseite in der 2. Projektsprache zur Bearbeitung.

   \_ In das Textfeld des Kindelements wird der Beispielwert "bar" eingetragen.

   \_ Man gibt die bearbeitete Seite frei.

❑ Erwartungen:

   \_ Die Seite wirft einen Validierungsfehler in der 2. Sprache obwohl die Validierungsregeln auf die Mastersprache begrenzt wurde.

Gruß

Johann

0 Kudos
1 Solution

Accepted Solutions

Hallo liebe Community,

nach Update auf Version 5.0.318.57504 ist dieses Verhalten nicht mehr reproduzierbar.

Gruß

Johann

View solution in original post

0 Kudos
3 Replies
MichaelaReydt
Community Manager

Hallo Johann,

für mich zum Verständnis:

Für die Nachstellung des Problems benötige ich:

  • ein zweisprachiges Projekt mit:
    • einer Seitenvorlage, die ansonsten leer sein kann,  und
    • zwei Absätze, von denen einer eine FS_LIST des Typs "inline" enthält. Diese FS_LIST verwendet den zweiten Absatz, der lediglich das Textfeld "st_headline" besitzt und die von Dir angegebene Validierungsregel für die Mastersprache besitzt.

Ist dies soweit richtig?

Leider kann ich die Beschreibung Deiner Testfälle nicht ganz nachvollziehen.

Existiert für Deine Tests genau eine Seite, die Du für alle drei Tests nacheinander verwendest? Oder existiert für jeden Test eine eigene Seite(page1, page2, page3) ?

Test1:

Du fügst der bereits bestehenden Testseite den FS_LIST-Absatz hinzu. Für diese legst Du einen Eintrag an, der auf dem Text-Absatz basiert. In diesem füllst Du nur das Feld der Mastersprache mit dem Wert "foo", so dass die Validierungsregel erfüllt ist und die Seite freigegeben werden müsste.

Habe ich das richtig verstanden?

Test2:

Hier schreibst Du, es sollen zunächst die Schritte des Tests 1 ausgeführt werden. Es existiert also eine Seite mit einem FS_LIST-Absatz. Diese Liste besitzt einen Eintrag, dessen Formular nur in der Mastersprache gefüllt ist. Dann soll ein zweiter FS_LIST-Absatz angelegt werden, für den jedoch das Formular nur in der 2. Sprache gefüllt wird?

Es ist an dieser Stelle für mich nicht klar, welches Kindelement gemeint ist und in welche Sprache der Beispielwert eingetragen werden soll.

Johann Haaf schrieb:

___Test 2___

[...]

   \_ In das Textfeld des Kindelements wird der Beispielwert "foo" eingetragen.

[...]

Ich frage mich außerdem, ob das Textfeld "st_headline" den Parameter useLanguage="yes" besitzt. Denn andernfalls würde der Wert doch auch in die Mastersprache übernommen werden und die Validierungsregel wäre erfüllt.

Gleiche Frage für die FS_LIST: Besitzt diese den Parameter "useLanguages"?

Test3:

Es sollen die Schritte des Tests 2 ausgeführt werden, in dem jedoch zunächst die Schritte des Tests 1 erwartet werden.

Ich bin somit nicht sicher, ob ich an dieser Stelle einen dritten FS_LIST-Absatz anlegen soll. In diesem Fall wäre das Auftreten der Validierungsmeldung richtig, da in diesem dritten Absatz kein Wert für die Mastersprache gesetzt wäre (und er nicht durch useLanguages="no" übernommen worden wäre).

Vielleicht könntest du noch die Formulare der beiden Absätze angeben und die Testfälle konkretisieren, um die einzelnen Schritte deutlicher zu machen.

Viele Grüße

Michaela

0 Kudos

Hallo Michaela,

Für die Nachstellung des Problems benötige ich:

  • ein zweisprachiges Projekt mit:
    • einer Seitenvorlage, die ansonsten leer sein kann,  und
    • zwei Absätze, von denen einer eine FS_LIST des Typs "inline" enthält. Diese FS_LIST verwendet den zweiten Absatz, der lediglich das Textfeld "st_headline" besitzt und die von Dir angegebene Validierungsregel für die Mastersprache besitzt.

Ist dies soweit richtig?

Ja, das ist so weit richtig, nur dass die FS_LIST useLanguages="yes" eingestellt hat fehlt hier noch. Das ist es was ich mit einer "mehrsprachigen FS_LIST" meinte. Da hätte ich mich besser direkt so ausdrücken sollen.

Existiert für Deine Tests genau eine Seite, die Du für alle drei Tests nacheinander verwendest? Oder existiert für jeden Test eine eigene Seite(page1, page2, page3) ?

Das ist in diesem Falle nicht von Belang. Macht man eine Seite sieht man das fehlerhafte Verhalten der Validation Rules nach dem dritten Test. Macht man drei Seiten dafür sieht man das fehlerhafte Verhalten nur in der dritten Seite.

Test1:

Du fügst der bereits bestehenden Testseite den FS_LIST-Absatz hinzu. Für diese legst Du einen Eintrag an, der auf dem Text-Absatz basiert. In diesem füllst Du nur das Feld der Mastersprache mit dem Wert "foo", so dass die Validierungsregel erfüllt ist und die Seite freigegeben werden müsste.

Habe ich das richtig verstanden?

Ja das ist korrekt.

Test2:

Hier schreibst Du, es sollen zunächst die Schritte des Tests 1 ausgeführt werden. Es existiert also eine Seite mit einem FS_LIST-Absatz. Diese Liste besitzt einen Eintrag, dessen Formular nur in der Mastersprache gefüllt ist. Dann soll ein zweiter FS_LIST-Absatz angelegt werden, für den jedoch das Formular nur in der 2. Sprache gefüllt wird?

Es ist an dieser Stelle für mich nicht klar, welches Kindelement gemeint ist und in welche Sprache der Beispielwert eingetragen werden soll.

Bei einer mehrsprachigen Liste (FS_LIST mit useLanguages="yes") sind alle angelegten Kindelement innerhalb der Liste unabhängig von den Sprachen. Das heisst konkret:

1. Ich pflege ein Kindelement in Sprache 1 (der Mastersprache) => in Sprache 2 ist dieses Kindelement nicht angelegt worden (da die Liste mehrsprachig ist)

2. Ich pflege ein Kindelement in Sprache 2 => in Sprache 1 (der Mastersprache) ist dieses Kindelement nicht angelegt worden (da die Liste mehrsprachig ist)

In diesem Testfall geht es darum ein Kindelement für die 2. Projektsprache zu erstellen. Bis dato war dort die Liste ja leer. Dort sorgt man durch die Pflege des Wertes "foo" im Feld "st_headline" dafür, dass die FS_List in beiden Sprachvarianten den gleichen Inhalt haben (aber nicht den selben da die Liste ja mehrsprachig ist!). Die Validation Rule bleibt daraufhin immer noch erfüllt.

Johann Haaf schrieb:

___Test 2___

[...]

   \_ In das Textfeld des Kindelements wird der Beispielwert "foo" eingetragen.

[...]

Ich frage mich außerdem, ob das Textfeld "st_headline" den Parameter useLanguage="yes" besitzt. Denn andernfalls würde der Wert doch auch in die Mastersprache übernommen werden und die Validierungsregel wäre erfüllt.

Gleiche Frage für die FS_LIST: Besitzt diese den Parameter "useLanguages"?

"st_headline" ist hier nicht mehrsprachig zu pflegen. Hier geht es ausschließlich um die mehrsprachige Liste.

Test3:

Es sollen die Schritte des Tests 2 ausgeführt werden, in dem jedoch zunächst die Schritte des Tests 1 erwartet werden.

Ich bin somit nicht sicher, ob ich an dieser Stelle einen dritten FS_LIST-Absatz anlegen soll. In diesem Fall wäre das Auftreten der Validierungsmeldung richtig, da in diesem dritten Absatz kein Wert für die Mastersprache gesetzt wäre (und er nicht durch useLanguages="no" übernommen worden wäre).

In Testfall 3 wird kein neues Kindelement erstellt. Es soll lediglich der Wert in "st_headline", des nach der Anleitung von Testfall 2 gepflegten Kindelements, in der 2. Sprache von "foo" in "bar" geändert werden.

Danach sieht man das fehlerhafte Verhalten um das es mir geht.

Gruß

Johann

0 Kudos

Hallo liebe Community,

nach Update auf Version 5.0.318.57504 ist dieses Verhalten nicht mehr reproduzierbar.

Gruß

Johann

0 Kudos