Search the FirstSpirit Knowledge Base
Hallo,
ich habe keinen Hinweis in irgendeiner Doku / Release Note gefunden, die darauf hindeuten würde, dass man einen CMS_INPUT_CONTENTAREALIST nicht durch Umstellen des Formulars auf FS_LIST bringen könnte. Dies ist natürlich auch in Hinblick auf 5.0 essentiell.
Nun habe ich folgenden Fall in FS 4.2.468.50982 (FS 4.2R4):
CAL:
<CMS_INPUT_CONTENTAREALIST name="st_contentarealist_1" hFill="yes" rows="7">
<LANGINFOS>
<LANGINFO lang="*" label="Picture gallery:" description="List of all pictures for the gallery."/>
<LANGINFO lang="DE" label="Bildergalerie:" description="Liste aller Bilder der Galerie"/>
<LANGINFO lang="EN" label="Picture gallery:" description="List of all pictures for the gallery"/>
</LANGINFOS>
<SOURCES>
<TEMPLATE name="pictureblock"/>
</SOURCES>
<VARIABLES>
<VARIABLE name="st_picture_1"/>
<VARIABLE name="st_link_1"/>
<VARIABLE name="st_dom_5"/>
<VARIABLE name="st_picture_2"/>
</VARIABLES>
</CMS_INPUT_CONTENTAREALIST>
wird ersetzt durch:
<FS_LIST name="st_contentarealist_1" hFill="yes" rows="10">
<DATASOURCE type="inline" useLanguages="no">
<LABELS>
<LABEL lang="*">"Bild: \"" + #item.st_picture_1 + "\" | Bildunterschrift: \"" + #item.st_dom_5.toText(false) + "\" | Lightbox: \"" + #item.st_picture_2 + "\""</LABEL>
</LABELS>
<ACTIONS>
<ACTION name="ADD"/>
<ACTION name="REMOVE"/>
<ACTION name="UP"/>
<ACTION name="DOWN"/>
<ACTION name="EDIT"/>
<ACTION name="DETACH"/>
</ACTIONS>
<COLUMNS>
<COLUMN show="no">#identifier</COLUMN>
</COLUMNS>
<LAYOUT>
<ADD component="toolbar" constraint="top"/>
<ADD component="overview" constraint="center"/>
<ADD component="stackedview" constraint="bottom">
<PARAM name="show-language-tabs">yes</PARAM>
</ADD>
</LAYOUT>
<TEMPLATES source="sectiontemplates">
<TEMPLATE uid="pictureblock"/>
</TEMPLATES>
</DATASOURCE>
<LANGINFOS>
<LANGINFO lang="*" label="Picture gallery:" description="List of all pictures for the gallery."/>
<LANGINFO lang="DE" label="Bildergalerie:" description="Liste aller Bilder der Galerie"/>
<LANGINFO lang="EN" label="Picture gallery:" description="List of all pictures for the gallery"/>
</LANGINFOS>
</FS_LIST>
Jetzt hätte ich erwartet, dass die Daten in neuem Gewand erscheinen. Das funktioniert aber nur in ca. 10% aller Fälle. In den meisten Fällen bekommen wir im Java-Client beim Aufruf des Formulars die (blutrote) Meldung:
Hinweis
Fehler in der Vorlage '2011: Picture Gallery': Der ausgewählte Inhalt kann nicht angezeigt werden.
Grund: Not null Template expected
Details
java.lang.IllegalStateException: Not null Template expected.
at de.espirit.firstspirit.access.store.templatestore.gom.fslist.AbstractListDataFactory.deepCopy(AbstractListDataFactory.java:106)
at de.espirit.firstspirit.client.access.editor.FsListEditorValueImpl.copy(FsListEditorValueImpl.java:131)
at de.espirit.firstspirit.client.access.editor.FsListEditorValueImpl.adopt(FsListEditorValueImpl.java:111)
at de.espirit.firstspirit.client.access.editor.FsListEditorValueImpl.adopt(FsListEditorValueImpl.java:41)
at de.espirit.firstspirit.client.access.editor.AbstractEditorValue.definitelySet(AbstractEditorValue.java:636)
at de.espirit.firstspirit.client.access.editor.AbstractEditorValue.parseDataElement(AbstractEditorValue.java:419)
at de.espirit.firstspirit.client.access.editor.AbstractEditorValue.setValueNode(AbstractEditorValue.java:359)
at de.espirit.firstspirit.client.access.editor.AbstractEditorValue.initialize(AbstractEditorValue.java:125)
at de.espirit.firstspirit.module.GadgetSpecification$ValueMediatorFactoryImpl.createValue(GadgetSpecification.java:206)
at de.espirit.firstspirit.module.GadgetSpecification$ValueMediatorFactoryImpl.createValue(GadgetSpecification.java:186)
at de.espirit.firstspirit.client.access.editor.EditorValueFactory.create(EditorValueFactory.java:61)
at de.espirit.firstspirit.client.access.editor.EditorValueFactory.create(EditorValueFactory.java:46)
at de.espirit.firstspirit.store.access.DataImpl.create(DataImpl.java:180)
at de.espirit.firstspirit.store.access.DataImpl.create(DataImpl.java:161)
at de.espirit.firstspirit.store.access.DataBuilder.toData(DataBuilder.java:108)
at de.espirit.firstspirit.store.access.DataProviderHelper.getData(DataProviderHelper.java:123)
at de.espirit.firstspirit.store.access.pagestore.SectionImpl.getData(SectionImpl.java:320)
at de.espirit.firstspirit.client.gui.tree.store.pagestore.GomModuleView.setElement(GomModuleView.java:143)
at de.espirit.firstspirit.client.gui.tree.store.pagestore.GomModuleView.<init>(GomModuleView.java:68)
at de.espirit.firstspirit.client.gui.tree.store.pagestore.PSPageView.getView(PSPageView.java:208)
at de.espirit.firstspirit.client.gui.tree.store.pagestore.PSPageView.constructComponent(PSPageView.java:139)
at de.espirit.firstspirit.client.gui.tree.store.AbstractAccessTabbedView.getViewableComponent(AbstractAccessTabbedView.java:338)
at de.espirit.firstspirit.client.gui.tree.store.AbstractAccessTabbedView.getComponent(AbstractAccessTabbedView.java:193)
at de.espirit.firstspirit.client.gui.tree.store.AbstractAccessTabbedView.access$100(AbstractAccessTabbedView.java:50)
at de.espirit.firstspirit.client.gui.tree.store.AbstractAccessTabbedView$1.tabSelected(AbstractAccessTabbedView.java:152)
at de.espirit.firstspirit.client.gui.tree.store.AbstractAccessTabbedView$SubTabModel$2.invoke(AbstractAccessTabbedView.java:617)
at de.espirit.firstspirit.client.gui.tree.store.AbstractAccessTabbedView$SubTabModel$2.invoke(AbstractAccessTabbedView.java:616)
at de.espirit.firstspirit.client.gui.tree.store.AbstractAccessTabbedView$SubTabModel.notifyListeners(AbstractAccessTabbedView.java:669)
at de.espirit.firstspirit.client.gui.tree.store.AbstractAccessTabbedView$SubTabModel.notifyTabSelected(AbstractAccessTabbedView.java:615)
at de.espirit.firstspirit.client.gui.tree.store.AbstractAccessTabbedView$SubTabModel.selectTab(AbstractAccessTabbedView.java:605)
at de.espirit.firstspirit.client.gui.tree.store.AbstractAccessTabbedView$SubTabModel.select(AbstractAccessTabbedView.java:558)
at de.espirit.firstspirit.client.gui.tree.store.AbstractAccessTabbedView.getComponent(AbstractAccessTabbedView.java:234)
at de.espirit.firstspirit.client.gui.tree.store.AbstractGuiStoreElement.getView(AbstractGuiStoreElement.java:1071)
at de.espirit.firstspirit.client.gui.tabbing.ElementTabConfiguration$ElementView.getViewComponent(ElementTabConfiguration.java:261)
at de.espirit.firstspirit.client.gui.tabbing.TabContentView$ComponentFactory.getRealComponent(TabContentView.java:398)
at de.espirit.firstspirit.client.gui.tabbing.TabContentView$ComponentFactory.call(TabContentView.java:371)
at de.espirit.firstspirit.client.gui.tabbing.TabContentView$ComponentFactory.call(TabContentView.java:251)
at de.espirit.firstspirit.client.gui.util.GuiUtil$CallableWrapper.call(GuiUtil.java:1508)
at java.util.concurrent.FutureTask$Sync.innerRun(Unknown Source)
at java.util.concurrent.FutureTask.run(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
Das ist für eine Migration zu 5.0 ein ganz schöner Showstopper. Wenn ich mit dem Absatztemplate einen neuen Absatz anlege, funktioniert alles, ebenso wie erwähnt bei ca. 10% der Altdaten. Das sollte doch normalerweise funktionieren, oder?
Festzustellen ist, dass bei einem XMLdump (Developer Scripts) die alten CALs aus <SECTION>-Tags bestehen und die neuen aus <ENTRY>-Tags. Anscheinend stellt FS bei einem Editieren der CAL ebenfalls die Tags von SECTION auf ENTRY um. Derart umgewandelte CALs lassen sich dann auch (erster Anschein, nicht ausführlich geprüft) als FS_LIST editieren.
In der Doku habe ich keinen entsprechenden Hinweis gefunden. Deshalb meine Fragen:
Grüße,
Arndt
"Wenn in der 5.0 dann die 3.1er-Strukturen angemahnt werden, ist das ja schön und gut, nur verbaut mir das letztendlich die Möglichkeit, bereits in FS 4.2 meine Templates so weit umzustellen,"
die logging ausgaben gehen natuerlich auch nach 4.2R4 zurueck (in einer der naechsten Builds), ansonsten wird das natuerlih auch in den Releasenotes sowie den Notes zu Migration stehen, die muss man dann natuerlich lesen.