Search the FirstSpirit Knowledge Base
Hallo,
ich habe ein Projekt nach FS5.0.105.53390 importiert.
In dem projekt gibt es zwei Sprachen.
Eine Seite ist nur in einer Sprache übersetzt (bei der anderen Sprache ist der Haken "Seite für diese Sprache vollständig übersetzt" nicht gesetzt).
Nun verlangt der JavaClient jedoch, dass ich auch das Eingabefeld
<CMS_INPUT_TEXT name="st_headline" allowEmpty="no" hFill="yes" useLanguages="yes">
<LANGINFOS>
<LANGINFO lang="*" label="Überschrift" description="Überschrift am Anfang der Seite"/>
</LANGINFOS>
</CMS_INPUT_TEXT>
bei der Sprache, die nicht "übersetzt" ist auch ausfüllen muss.
Ist das gewollt? Kann ich das irgendwie umgehen?
Grüße
Andreas
Hallo Herr Vogt,
in FS5 haben Sie mit Hilfe der Validatoren erweiterte Möglichkeiten, die Eingabe in Formularen zu überprüfen. Für Ihren Anwendungsfall würde das in etwa so aussehen:
<RULES>
<!-- master language: save of empty value not allowed -->
<ON_SAVE>
<IF>
<AND>
<EQUAL>
<PROPERTY source="#global" name="STORETYPE"/>
<TEXT>pagestore</TEXT>
</EQUAL>
<EQUAL>
<PROPERTY source="#global" name="LANG"/>
<PROPERTY source="#global" name="MASTER"/>
</EQUAL>
<PROPERTY source="#global" name="TRANSLATED"/>
</AND>
</IF>
<WITH>
<NOT>
<PROPERTY source="st_headline" name="EMPTY"/>
</NOT>
</WITH>
<DO>
<VALIDATION>
<PROPERTY source="st_headline" name="VALID"/>
<MESSAGE lang="*" text="A Headline must be provided!"/>
<MESSAGE lang="DE" text="Eine Überschrift muss erfasst werden!"/>
</VALIDATION>
</DO>
</ON_SAVE>
<!-- not master language: release of empty value not allowed -->
<ON_RELEASE>
<IF>
<AND>
<EQUAL>
<PROPERTY source="#global" name="STORETYPE"/>
<TEXT>pagestore</TEXT>
</EQUAL>
<NOT>
<EQUAL>
<PROPERTY source="#global" name="LANG"/>
<PROPERTY source="#global" name="MASTER"/>
</EQUAL>
</NOT>
<PROPERTY source="#global" name="TRANSLATED"/>
</AND>
</IF>
<WITH>
<NOT>
<PROPERTY source="st_headline" name="EMPTY"/>
</NOT>
</WITH>
<DO>
<VALIDATION>
<PROPERTY source="st_headline" name="VALID"/>
<MESSAGE lang="*" text="A Headline must be provided!"/>
<MESSAGE lang="DE" text="Eine Überschrift muss erfasst werden!"/>
</VALIDATION>
</DO>
</ON_RELEASE>
</RULES>
Genaueres dazu und weitere Anwendungsmöglichkeiten zeige ich Ihnen dann gerne vor-Ort am Mittwoch und Donnerstag 😉
Mit freundlichen Grüßen
Marvin Meyerding
Hallo Marvin,
Das Beispiel hat einen Haken, und zwar funktioniert es nur in eine Richtung zuverlässig, nämlich beim "Invalidieren".
Angenommen das Feld ist initial leer, der Haken "übersetzt" NICHT gesetzt. Der Redakteuer lässt das Feld leer, und setzt (ggf. versehentlich) den Haken "übersetzt". Die Validierung springt an, das Feld wird rot markiert. Soweit OK.
Wenn der Redakteur jetzt aber - ohne das Feld zu füllen - den Übersetzt-Haken wieder entfernt, ist das Feld weiterhin NICHT gültig, das Formular kann nicht gespeichert werden.
Hintergrund: Die Validierungsprüfung (anschaulich: das Setzen der Eigenschaft "VALID") wird in Deinem Beispiel nur durchgeführt solange bzw. wenn der Übersetzt-Haken gesetzt ist. Zur Prüfung gehört aber neben dem "als ungültig markieren" immer auch das Gegenstück "als gültig markieren". Und gerade letzteres wird durch die Abfrage des Übersetzt-Status in der Vorbedingung unterbunden.
Grundsätzlich muss man sehr genau überlegen, ob man Dinge/Eigenschaften, die der Redakteuer selber ändern kann in die Vorbedingung setzt. Fast immer sind solche Sachen in der Wertermittlung besser aufgehoben (hier mal ohne die Storeprüfung):
<ON_SAVE>
<IF>
<EQUAL>
<PROPERTY source="#global" name="LANG"/>
<PROPERTY source="#global" name="MASTER"/>
</EQUAL>
</IF>
<WITH>
<NOT>
<AND>
<PROPERTY source="st_headline" name="EMPTY"/>
<PROPERTY source="#global" name="TRANSLATED"/>
</AND>
</NOT>
</WITH>
<DO>
<VALIDATION>
<PROPERTY source="st_headline" name="VALID"/>
<MESSAGE lang="*" text="A Headline must be provided!"/>
<MESSAGE lang="DE" text="Eine Überschrift muss erfasst werden!"/>
</VALIDATION>
</DO>
</ON_SAVE>
Selbst eine Abfrage des FOCUS funktioniert ggf. nur solange wie eben dieses Feld selber nicht durch eine andere Regel gesetzt wird.
Michael