Search the FirstSpirit Knowledge Base
Hallo zusammen!
Wir haben brand-aktuell das Problem, dass die Methode map.toJSON keine Hochkomma escaped und uns dadurch das generierte Json um die Ohren fliegt.
Hat jemand eine Idee woran das liegen kann oder wie wir das programmatisch verhindern können?
Wir sind für jede Hilfe dankbar.
Ok also ein "'" als Zeichen, in der Tat, das Zeichen wird nicht escaped, auch bei mir nicht.
Das ist dann ein Fall für den e-Spirit Support.
Kannst Du mal ein Beispiel posten wo es fehlschlägt + FS Version?
Hey Sven, danke für die schnelle Antwort.
FS 5.2.1908
Unser Code (Auszug):
--$$CMS_SET(array,[])$$--
...
--$$CMS_SET(pictureMap,{:})$$--
--$$CMS_SET(set_picture)$$--
--$$CMS_REF(media: "ph1110x833")$$--
--$$CMS_END_SET$$--
--$$CMS_SET(set_picture_thumbnail)$$--
--$$CMS_REF(media: "ph1110x833")$$--
--$$CMS_END_SET$$--
--$$CMS_SET(void,pictureMap.put("href", set_picture.toString))$$--
--$$CMS_SET(void,pictureMap.put("thumbnailHref", set_picture_thumbnail.toString))$$--
--$$CMS_SET(void,pictureMap.put("alt", entry.item.lt_picture_alt))$$----$$CMS_SET(void,pictureMap.put("text", entry.item.lt_picture_caption))$$--
--$$CMS_SET(void,array.add(pictureMap.toJSON))$$--
...
--$$CMS_TRIM(level:3)$$--
--$<div class="modalGallery maxwidth" images='$CMS_VALUE(array)$' $CMS_VALUE(editorId())$></div>$--
--$$CMS_END_TRIM$
Wenn wir uns dann das DIV im Browser anschauen, sehen wir das das ARRAY im images attribute am ersten Hochkomma gebrochen wird.
Eigentlich sollte sowas doch aber von der Map.toJSON Methode abgefangen werden?
Ich habe das mal bei mir nachgebaut und nur die einzelnen Codeteile angepasst, aber die Funktionalität ist die Gleiche, hier erstmal der FS Code von mir als Vergleich:
$CMS_SET(array, [])$
$CMS_SET(pictureMap, {:})$
$CMS_SET(set_picture)$$CMS_REF(media: "picture_039")$$CMS_END_SET$
$CMS_SET(set_picture_thumbnail)$$CMS_REF(media: "picture_039")$$CMS_END_SET$
$CMS_SET(void,pictureMap.put("href", set_picture.toString))$
$CMS_SET(void,pictureMap.put("thumbnailHref", set_picture_thumbnail.toString))$
$CMS_SET(void,pictureMap.put("alt", "Lorem ipsum"))$
$CMS_SET(void,pictureMap.put("text", "Lorem ipsum"))$
$CMS_SET(void, array.add(pictureMap.toJSON))$
$CMS_TRIM(level:3)$
<div class="modalGallery maxwidth" images='$CMS_VALUE(array)$'></div>
$CMS_END_TRIM$
und das ergibt bei mir folgenden Ausgabe:
<div class="modalGallery maxwidth" images='[{"alt":"Lorem ipsum","href":"/fs5preview/preview/127588/media/DE/current/127836/ORIGINAL/picture_039.jpg","text":"Lorem ipsum","thumbnailHref":"/fs5preview/preview/127588/media/DE/current/127836/ORIGINAL/picture_039.jpg"}]'></div>
Hier nochmal das reine JSON, als formatierte Version
[
{
}
]
Sind denn irgendwo im Text oder der URL Hochkomma eingebaut?
Achso ... im Text, also ein DOM-Text z.B.?
Teste ich grad mal ... warte
Hab jetzt 2 Eingabekomponenten hinzugefügt
Ausgabe der beiden über
$CMS_SET(void,pictureMap.put("alt", st_headline))$
$CMS_SET(void,pictureMap.put("text", st_text.normalize.toText(true)))$
dabei kommt dann folgendes JSON bei rum, ich mach mal nen Screenshot
Wir haben Hochkomma im text, im alt, und im FileName des Bildes (welches ja für die URL Generierung genutzt wird - AdvancedUrlCreator)
Das sind Gänsefüßchen, aber keine Hochkomma.
--> ' <--
Also halbe Gänsefüßchen. Quasi ein einzelner Gänsefuß
Ok also ein "'" als Zeichen, in der Tat, das Zeichen wird nicht escaped, auch bei mir nicht.
Das ist dann ein Fall für den e-Spirit Support.