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>