renet
I'm new here

convertEntities funktioniert nicht in Datenquellen/Tabellenvorlagen

Guten Tag,

wir haben festgestellt, dass die Funktion convertEntities in unserer FS-Version nicht innerhalb von Datenquellen funktioniert. Dort werden konvertierte Entitäten nicht abgespeichert, sondern die ursprünglichen Sonderzeichen werden ausgegeben. In normalen Absätzen hingegen funktioniert das Konvertieren einwandfrei. Das Verhalten ist im Internet Explorer 8 und im Firefox 3.6 identisch.

Auszug aus dem Formular einer Tabellenvorlage, in der es nicht funktioniert:

       <CMS_INPUT_TEXT name="st_bezeichnung" convertEntities="quote" maxInputLength="200">

        <LANGINFOS>

          <LANGINFO lang="EN" label="Further name" description="Please enter a further name"/>

          <LANGINFO lang="*" label="Weitere Bezeichnung" description="Bitte geben Sie eine weitere Bezeichnung ein"/>

        </LANGINFOS>

      </CMS_INPUT_TEXT>

Auszug aus einem Formular einer Absatzvorlage, in der es funkioniert (selbes Projekt):

     <CMS_INPUT_TEXT name="st_subline" convertEntities="quote" useLanguages="yes">

        <LANGINFOS>

          <LANGINFO lang="*" label="Überschrift" description="Überschrift"/>

          <LANGINFO lang="EN" label="Headline" description="Headline"/>

        </LANGINFOS>

      </CMS_INPUT_TEXT>

Unsere Konvertierungsregel sieht wie folgt aus:

[quote]

0x3c="&lt;"

0x3e="&gt;"

0x26="&amp;"

0x24="&#36;"

0x25="&#37;"

JDBC Parameter der Datenbankverbindung, die für die Datenquellen verwendet wird:

# fs_db

jdbc.DRIVER=oracle.jdbc.OracleDriver

jdbc.PASSWORD=********

jdbc.POOLCYCLE=60

jdbc.POOLMAX=1

jdbc.POOLMIN=1

jdbc.POOLTIMEOUT=180

jdbc.URL=jdbc:oracle:thin:@FSORACLE:1521:FSDEV

jdbc.USER=********

jdbc.layerclass=de.espirit.or.impl.oracle.OracleLayer

jdbc.oracle.TABLESPACES=********

FS-Version (Client/Server): 4.2.454.47212

Das HTML-Encoding ist für alle Sprachen im Projekt auf UTF-8 eingestellt.

Handelt es sich hierbei um einen Bug, oder gibt es hierfür eine Konfigurationsmöglichkeit, die wir noch nicht entdeckt haben? Falls es ein Bug ist: Ist dieser in einer späteren Version bereits behoben? Vielen Dank für eure Hilfe im Voraus.

LG

René

4 Replies
hoebbel
Crownpeak employee

Hallo René,

  

ich rate mal und nehme an, dass die Ausgabe der Datenbankinhalte nicht diekt über die Variable erfolgt sondern entweder über das #row Objekt oder eine Fremdschlüsselbeziehung oder eine contentSelect Funktion.

In all diesen Fällen steht die Definition der Eingabekomponente nicht zur Verfügung und somit "weiss" das System nicht, dass die Inhalte konvertiert werden sollen.

  

Lösung ist entweder die Ausgabe über die Eingabekomponente (also anstelle von z.B. $CMS_VALUE(#row.bezeichnung)$ $CMS_VALUE(st_bezeichnung)$ in der Tabellenvorlage) oder besser direkt die Konvertierung mittels convert[2] durchzuführen, also anstelle von $CMS_VALUE(#row.bezeichnung)$ $CMS_VALUE(#row.bezeichnung.convert)$ oder $CMS_VALUE(#row.bezeichnung.convert2)$ benutzen.

Bei der Verwendung von convert[2] sollte dann aber auf convertEntities bei der Definition der Eingabekomponente verzichtet werden, da ansonsten die Gefahr gesteht, doppelt zu konvertieren.

  

Viele Grüsse aus Dortmund,

   Holger

graulich
I'm new here

Hallo Holger,

danke für die super Lösung. Funktioniert einwandfrei.

Viele Grüße,

Dominic

@Rene: Du kannst die Diskussion gerne als Beantwortet markieren.

0 Kudos

Hallo Holger,

danke für die Hilfe. Eine Anmerkung habe ich hierzu noch:

Zumindest in unserer FS-Version funktioniert die Konvertierung auch dann NICHT, wenn wir über $CMS_VALUE(st_xyz)$ im Ausgabekanal der Tabellenvorlage direkt auf die Eingabekomponente zugreifen.

Holger Höbbel schrieb:

Bei der Verwendung von convert[2] sollte dann aber auf convertEntities bei der Definition der Eingabekomponente verzichtet werden, da ansonsten die Gefahr gesteht, doppelt zu konvertieren.

Das verstehe ich nicht. Wenn wir mittels convert[2] an den Stellen, an denen der convertEntities-Wert nicht ausgewertet wird, ein Workaround schaffen, wie kann es dann zu doppelter Konvertierung kommen? Außerdem noch die Frage: Welcher Regelsatz wird bei convert[2] verwendet?

LG

René

0 Kudos
hoebbel
Crownpeak employee

Hallo René,

> Außerdem noch die Frage: Welcher Regelsatz wird bei convert[2] verwendet?

convert[2] sind zwei Methoden. Bei beiden Methoden wird der Standardregelsatz für den entsprechenden Ausgabekanal benutzt (ebenso wie bei convertEntities in der GUI Definition)

.convert entspricht convertEntities="STANDARD"

.convert2 entspricht convertEntities="QUOTE"

> Wenn wir mittels convert[2] an den Stellen, an denen der convertEntities-Wert nicht ausgewertet wird, ein Workaround schaffen, wie kann es dann zu doppelter Konvertierung kommen?

Wenn Ihr sowohl über die Eingabekomponente konvertiert als auch später über die Methode .convert und beispielsweise bei beiden Konvertierungen & -> & a m p ; wird, dann würde diese Regel zweimal angewendet und aus & würde & a m p; a m p ;

Viele Grüsse aus Dortmund,

  Holger

0 Kudos