Hallo Donato,
unser erster naiver Versuch war der folgende:
import de.espirit.firstspirit.access.* import de.espirit.firstspirit.access.store.* import de.espirit.firstspirit.agency.* import de.espirit.firstspirit.client.* import de.espirit.firstspirit.forms.* import de.espirit.firstspirit.access.store.pagestore.* import de.espirit.firstspirit.client.access.editor.* import de.espirit.firstspirit.client.access.editor.lists.* GuiScriptContext context = ctx assert e instanceof Page storeAgent = context.requireSpecialist(StoreAgent.TYPE) pageStore = storeAgent.getStore(Store.Type.PAGESTORE) languageAgent = context.requireSpecialist(LanguageAgent.TYPE) Language masterLang = languageAgent.getMasterLanguage() Page targetPage = pageStore.getStoreElement("test_catalog_target", IDProvider.UidType.PAGESTORE) Body targetBody = targetPage.getBodyByName("main") Section targetSection = targetBody.getChildren(Section.class).iterator().next() FormData targetSectionForm = targetSection.getFormData() Catalog catalog = targetSectionForm.get(masterLang, "st_catalog").get() Body sourceBody = e.getBodyByName("main") try { targetPage.setLock(true, true) for (section in sourceBody.getChildren(Section.class)) { FormData sectionFormData = section.getFormData() println "source ${section.class} with form ${sectionFormData}" Catalog.Card card = catalog.create(section.getTemplate(), sectionFormData) catalog.add(card) FormData cardFormData = card.getItem() println "card of class ${card.class} with form ${cardFormData}" } targetSectionForm.get(masterLang, "st_catalog").set(catalog) targetSection.setFormData(targetSectionForm) targetPage.save("save after add to fs_catalog", true) } finally { targetPage.setLock(false, true) }
Da wir die FormData gar nicht (programmatisch) verändern, sollte dies ja nicht die Ursache sein.
Wir haben mit obigem Script die Sektionen aus dem main-Body der ausgewählten Seite in einen FS_CATALOG einer Zielseite ("st_catalog") überführt. Unter anderem enthielten die kopierten Sektionen wiederum einen Catalog, der Absätze mit einem INPUT_DOM ("Paragraph") enthielt. Nun ist es teilweise passiert, dass Änderungen in den kopierten INPUT_DOMs zwar im Formular angezeigt, aber nicht in die Ausgabe (Preview) gerendert wurden. Teilweise wurden hinzugefügte Cards im Catalog nicht angezeigt (erst nach einem Neustart des Clients). Teilweise erschienen nach dem Speichern der Seite nach Bearbeitung eines INPUT_DOMs "Geister-Absätze" in der Sidebar links (siehe Screenshot: der rot markierte Schnipsel gehört dort nicht hin und erscheint nach dem ersten Tastendruck im INPUT_DOM, verschwindet wieder nach Klick auf den "Paragraph"-Schnipsel). Teilweise waren einige INPUT_DOMs nicht bearbeitbar, obwohl die Seite im "Bearbeiten"-Modus war. Teilweise ist das sonderbare Verhalten auch geblieben, nachdem die Seite mit den Quell-Sektionen gelöscht wurde.
Bei uns kommt derzeit FS 5.2.608 unter Java 1.8.0_121 (Client) zum Einsatz.