- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
FS_Catalog: Inhalte kopieren
Hallo Community,
ich versuche via API Werte von einem FS_Catalog in einem anderen zu kopieren.
svg_image_tooltip
<FS_REFERENCE
name="st_picture"
allowEmpty="no"
convertEntities="standard"
imagePreview="no"
upload="yes"
useLanguages="no">
<FILTER>
<ALLOW type="picture"/>
<HIDE type="file"/>
<HIDE type="mediafolder"/>
</FILTER>
<LANGINFOS>
<LANGINFO lang="*" label="Image" description="Please select a picture."/>
</LANGINFOS>
<PROJECTS>
<LOCAL name=".">
<SOURCES>
<FOLDER name="root" store="mediastore"/>
</SOURCES>
</LOCAL>
</PROJECTS>
</FS_REFERENCE>
<FS_CATALOG name="st_svg_image_container" useLanguages="yes">
<LANGINFOS>
<LANGINFO lang="*" label="Alte Komponenente"/>
</LANGINFOS>
<TEMPLATES type="section">
<TEMPLATE uid="svg_tooltip_element"/>
</TEMPLATES>
</FS_CATALOG>
<FS_CATALOG name="st_tooltips" useLanguages="no">
<LANGINFOS>
<LANGINFO lang="*" label="Neue Komponente"/>
</LANGINFOS>
<TEMPLATES type="section">
<TEMPLATE uid="svg_tooltip_element"/>
</TEMPLATES>
</FS_CATALOG>
Der neue Katalog ist komplett leer, im alten gibt es Inhalte, die ich รผbertragen mรถchte. Der Grund ist, dass der alte Katalog irrtรผmlich sprachabhรคngig definiert wurde und
ich mรถchte gerne bestimmte Inhalten retten, die bei der รnderung von useLanguages="yes" zu useLanguages="no" sonst verloren gehen.
Ich habe folgendes ausprobiert, das soll die Cards im neuen Katalog erzeugen.
page.setLock(true,true);
Catalog oldCatalog = (Catalog) sectionFormData.get(masterLanguage, "st_svg_image_container").get();
Catalog newCatalog = (Catalog) sectionFormData.get(masterLanguage, "st_tooltips").get();
for (Catalog.Card oldCard : oldCatalog)
{
newCatalog.create(itemTemplate, oldCard.getItem());
}
sectionFormData.get(masterLanguage, "st_tooltips").set(newCatalog);
section.setFormData(sectionFormData);
page.save("migrated st_svg_image_container->st_tooltips " + masterLanguage.getAbbreviation());
page.setLock(false,true);
Und kriege zur Laufzeit:
de.espirit.firstspirit.agency.ElementValidationReportsException: ValidationError[element='svg_image_tooltip' (ID=346719, project=290792), msg={MultiFormValidationReport{(DE:{st_picture:[Validation{SAVE,false:Must not be empty! Editor: st_picture, Type: de.espirit...}]
at de.espirit.firstspirit.store.access.ElementsValidationCollector.throwIfInvalid(ElementsValidationCollector.java:70)
at de.espirit.firstspirit.store.access.DefaultStoreElement.checkSave(DefaultStoreElement.java:808)
at de.espirit.firstspirit.store.access.DefaultStoreElement.save(DefaultStoreElement.java:718)
Ja, st_picture ist ein Pflichtfeld aber da ist schon was drin und ich รคndere da gar nichts.
Ich bin fรผr jeden Tipp dankbar ๐
Gruร,
Ana
P.S. Das Item-Template svg_tooltip_element hat auch ein st_picture, ist aber kein Pflichtfeld.
<CMS_MODULE>
...
<FS_REFERENCE name="st_picture" convertEntities="standard" imagePreview="no" upload="yes" useLanguages="no">
<FILTER>
<ALLOW type="picture"/>
<HIDE type="file"/>
<HIDE type="mediafolder"/>
</FILTER>
<LANGINFOS>
<LANGINFO lang="*" label="Image" description="Please select a picture."/>
</LANGINFOS>
<PROJECTS>
<LOCAL name=".">
<SOURCES>
<FOLDER name="root" store="mediastore"/>
</SOURCES>
</LOCAL>
</PROJECTS>
</FS_REFERENCE>
</CMS_MODULE>
- Labels:
-
Developers
Accepted Solutions
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hallo Ana,
laut ApiDoc zu Catalog.create musst Du auf jeden Fall noch .add nutzen, da .create eine reine Factory-Methode ist die die erzeugte Card eben NICHT direkt dem Catalog hinzufรผgt (siehe Hinweis unter โImportant:โ).
Das ist wahrscheinlich noch nicht die endgรผltige Lรถsung, bringt dich aber hoffentlich schonmal weiter.
Zum weiteren Testen wรคre ggf. noch ein pragmatischer Ansatz, statt dem normalen .save die SafeOperation zu nutzen, da du dort die Validierung ausschalten kannst. Das natรผrlich nicht โproduktivโ sondern nur zu Testzwecken, um einfacher herauszufinden, wo genau nach dem Speichern etwas fehlt (sollte dann ja im Formular rot markiert sein).
Viele Grรผรe
Michael
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hallo Ana,
laut ApiDoc zu Catalog.create musst Du auf jeden Fall noch .add nutzen, da .create eine reine Factory-Methode ist die die erzeugte Card eben NICHT direkt dem Catalog hinzufรผgt (siehe Hinweis unter โImportant:โ).
Das ist wahrscheinlich noch nicht die endgรผltige Lรถsung, bringt dich aber hoffentlich schonmal weiter.
Zum weiteren Testen wรคre ggf. noch ein pragmatischer Ansatz, statt dem normalen .save die SafeOperation zu nutzen, da du dort die Validierung ausschalten kannst. Das natรผrlich nicht โproduktivโ sondern nur zu Testzwecken, um einfacher herauszufinden, wo genau nach dem Speichern etwas fehlt (sollte dann ja im Formular rot markiert sein).
Viele Grรผรe
Michael
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi Michael,
vielen Dank, beide Hinweise haben mir sehr geholfen!
LG Ana

