Search the FirstSpirit Knowledge Base
Hallo Community,
mit folgendem Script(-Auszug) versuche ich einen Datenquellen-Eintrag zu erzeugen, bei dem der Titel gesetzt wird. Das Script läuft durch, nur leider wird kein Eintrag erzeugt. Das "csTerm.save()" wird scheinbar schon in irgendeiner Form ausgeführt, da ich, wenn ich die Entity nicht "locke", eine entsprechende LockExeption bekomme.
Content2 csTerm = (Content2) contentStore.getStoreElement("terms", IDProvider.UidType.CONTENTSTORE);
Schema schema = csTerm.getSchema();
Session session = schema.getSession();
Entity entity = session.createEntity(csTerm.getEntityType().getName());
try {
csTerm.lock(entity);
csTerm.setLock(true, false);
Dataset dataset = csTerm.getDataset(entity);
FormData formData = dataset.getFormData();
GomEditorProvider prov = formData.getForm();
GomFormElement elementTitle = prov.findEditor("cs_title");
TextEditorValue editorTitle = (TextEditorValue) elementTitle.getDefaultValue();
editorTitle.set(lang, "NurnTest");
csTerm.save();
csTerm.unlock(entity);
csTerm.setLock(false, false);
…
Kann mir jemand weiterhelfen?
Aktuell haben wir noch keinen Sprachfallback und greifen auf die Attribute der row zu über:
$CMS_SET(entity, #row)$
$CMS_VALUE(entity.spaltenname)$
Da wir sehr viele Zeilen Code mit $CMS_VALUE(entity.spaltenname)$ haben und nicht an jedem Attribut den Sprachcode setzen wollen, würde wir am liebsten das Entity Objekt (die #row) der Zielsprache bekommen. Wir haben Angst ein paar Attribute zu vergessen und scheuen den Aufwand in ca. 30 Templates * 20 Attributen das Sprachenfallback zu implementieren.
Wir bräuchten sowas wie:
$CMS_SET(entity, #row.getLanguage("Zielsprache")$
Gibt es so eine Möglichkeit?
NACHTRAG:
Gibt man übrigens $CMS_VALUE(#row.link_DE)$ an, wird der Link prima in der deutschen Sprache ausgegeben. Für die englische Generierung gibt $CMS_VALUE(#row.link_DE)$ nichts aus.
Der Trick mit dem _<Sprachkürzel> scheint nicht für Objekte zu funktionieren.
Der Zusammenhang zum Thema sehe ich hier nicht. Bitte ggf. eine neue Frage aufmachen, danke.
Genau dieses Verhalten des Aufrufs $CMS_VALUE(#row.link_DE)$ würde ich als fehlerhaft einstufen, oder?
Warum kann man im deutschen "Generierungskontext" $CMS_VALUE(#row.link_DE)$ aufrufen und erhält ordnungsgemäß den deutschen Wert, und sobald sich der Generierungskontext im bspw. englischen befindet, liefert der Aufruf $CMS_VALUE(#row.link_DE)$ nichts mehr?!? (wie oben beschrieben bei Objekten wie CMS_INPUT_LINKS und Listen)
Habt ihr dazu Anregungen / Infos?
Beste Grüße
Dominic Graulich