- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Tabellen: Kategorienbaum mit Selbstreferenz (1:n)
Hallo Community,
ich wรผrde gerne einen Kategorienbaum mit variabler Tiefe aufbauen. Hierzu habe ich eine Tabelle angelegt die eine 1:n Beziehung zu sich selbst hat, d.h. eine Kategorie kann eine Vaterkategorie haben oder nicht (Wurzelkategorie).
In der Tabellenvorlage muss dem Redakteur also die Mรถglichkeit gegeben werden eine Vaterkategorie auszuwรคhlen. Wenn nun ein Objectchooser verwendet wird, wird folgende Meldung angezeigt:
"Ein Formularelement darf nicht die eigene Tabellenvorlage als Ziel definieren."
Frage: Ist es mรถglich das Vorhaben in FirstSpirit abzubilden oder muss als Workaround eine Tiefe vorgegeben werden und somit mit mehreren gleichen Tabellen (z.B. category1 -> category2 -> category3) gearbeitet werden?
- Labels:
-
Developers
Accepted Solutions
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Die Exception kommt, weil in den Daten die angezeigt werden sollen, bereits eine Endlosschleife vorhanden ist. Das Thema habe ich bei uns aufgenommen, unter der ID #115307.
Es sollte aber funktionieren, wenn die Zuordnungen frei von Zyklen sind.
Vielleicht reicht es auch aus, CMS_INPUT_COMBOBOX als Auswahlkomponente einzusetzen? Die kรถnnte spรคter immer noch durch FS_DATASET ersetzt werden (wenn ein Fix fรผr #115307 verfรผgbar ist).
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Mit FS_DATASET mรผsste das gewรผnschte mรถglich sein. Allerdings kรถnnte es da zu Problemen bei Zyklen kommen (Kategorie A hat Kategorie B als Vater und umgekehrt). Mindestens die Ausgabe im Template mรผsste damit dann umgehen kรถnnen.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hallo Peter,
danke fรผr die schnelle Antwort, das habe ich bereits ausprobiert, erhalte dann allerdings folgende Meldung im Formular prรคsentiert:
de.espirit.firstspirit.client.access.editor.EndlessEditorLoopException: Detected endless loop in GOM definition for 'tt_category'!
at de.espirit.firstspirit.client.access.editor.swing.AbstractValueGuiEditor.stack(AbstractValueGuiEditor.java:1180)
at de.espirit.firstspirit.client.access.editor.swing.DatasetGuiEditor.getEditorComponent(DatasetGuiEditor.java:355)
at de.espirit.firstspirit.ui.gadgets.swing.legacy.GuiEditorWrappingSwingGadget.getEditorComponent(GuiEditorWrappingSwingGadget.java:424)
at de.espirit.firstspirit.ui.gadgets.swing.legacy.GuiEditorWrappingSwingGadget.getComponent(GuiEditorWrappingSwingGadget.java:401)
at de.espirit.firstspirit.ui.gadgets.swing.ValueHoldingSwingGadgetWrapper.getEditorComponent(ValueHoldingSwingGadgetWrapper.java:199)
at de.espirit.firstspirit.ui.gadgets.swing.ValueHoldingSwingGadgetWrapper.getComponent(ValueHoldingSwingGadgetWrapper.java:239)
at de.espirit.firstspirit.ui.gadgets.swing.ValueHoldingSwingGadgetMediator.getComponent(ValueHoldingSwingGadgetMediator.java:596)
at de.espirit.firstspirit.ui.gadgets.swing.AggregatingSwingGadgetPanel.add(AggregatingSwingGadgetPanel.java:132)
at de.espirit.firstspirit.ui.gadgets.swing.module.ModuleSwingGadget$1.invoke(ModuleSwingGadget.java:53)
at de.espirit.firstspirit.ui.gadgets.swing.module.ModuleSwingGadget$1.invoke(ModuleSwingGadget.java:51)
at de.espirit.firstspirit.ui.gadgets.swing.AbstractAspectableAggregate.forEach(AbstractAspectableAggregate.java:96)
at de.espirit.firstspirit.ui.gadgets.swing.module.ModuleSwingGadget.getComponent(ModuleSwingGadget.java:50)
at de.espirit.firstspirit.ui.gadgets.swing.AggregatingSwingGadgetMediator.getComponent(AggregatingSwingGadgetMediator.java:301)
at de.espirit.firstspirit.client.gui.SwingFormView.getComponent(SwingFormView.java:161)
at de.espirit.firstspirit.client.gui.SwingMultiFormView.getComponent(SwingMultiFormView.java:258)
at de.espirit.firstspirit.client.gui.tree.store.pagestore.GomModuleView.getComponent(GomModuleView.java:158)
at de.espirit.firstspirit.client.gui.GomModulePanel.getViewComponent(GomModulePanel.java:256)
at de.espirit.firstspirit.client.gui.GomModulePanel.initialize(GomModulePanel.java:159)
at de.espirit.firstspirit.client.gui.GomModulePanel$3.run(GomModulePanel.java:229)
at de.espirit.common.gui.EventDispatchThreadHelper.invokeLater(EventDispatchThreadHelper.java:78)
at de.espirit.firstspirit.client.gui.GomModulePanel.setVisibleLanguage(GomModulePanel.java:227)
at de.espirit.firstspirit.client.gui.GomModulePanel.getVisibleLanguage(GomModulePanel.java:241)
at de.espirit.firstspirit.client.gui.tree.store.contentstore.AbstractGuiXmlPanel.getGomPanel(AbstractGuiXmlPanel.java:121)
at de.espirit.firstspirit.client.access.editor.swing.DatasetGuiEditor$InternalGuiXmlPanel.<init>(DatasetGuiEditor.java:1178)
at de.espirit.firstspirit.client.access.editor.swing.DatasetGuiEditor$InternalGuiXmlPanel.<init>(DatasetGuiEditor.java:1170)
at de.espirit.firstspirit.client.access.editor.swing.DatasetGuiEditor.getEditorComponent(DatasetGuiEditor.java:358)
at de.espirit.firstspirit.ui.gadgets.swing.legacy.GuiEditorWrappingSwingGadget.getEditorComponent(GuiEditorWrappingSwingGadget.java:424)
at de.espirit.firstspirit.ui.gadgets.swing.legacy.GuiEditorWrappingSwingGadget.getComponent(GuiEditorWrappingSwingGadget.java:401)
at de.espirit.firstspirit.ui.gadgets.swing.ValueHoldingSwingGadgetWrapper.getEditorComponent(ValueHoldingSwingGadgetWrapper.java:199)
at de.espirit.firstspirit.ui.gadgets.swing.ValueHoldingSwingGadgetWrapper.getComponent(ValueHoldingSwingGadgetWrapper.java:239)
at de.espirit.firstspirit.ui.gadgets.swing.ValueHoldingSwingGadgetMediator.getComponent(ValueHoldingSwingGadgetMediator.java:596)
at de.espirit.firstspirit.ui.gadgets.swing.AggregatingSwingGadgetPanel.add(AggregatingSwingGadgetPanel.java:132)
at de.espirit.firstspirit.ui.gadgets.swing.module.ModuleSwingGadget$1.invoke(ModuleSwingGadget.java:53)
at de.espirit.firstspirit.ui.gadgets.swing.module.ModuleSwingGadget$1.invoke(ModuleSwingGadget.java:51)
at de.espirit.firstspirit.ui.gadgets.swing.AbstractAspectableAggregate.forEach(AbstractAspectableAggregate.java:96)
at de.espirit.firstspirit.ui.gadgets.swing.module.ModuleSwingGadget.getComponent(ModuleSwingGadget.java:50)
at de.espirit.firstspirit.ui.gadgets.swing.AggregatingSwingGadgetMediator.getComponent(AggregatingSwingGadgetMediator.java:301)
at de.espirit.firstspirit.client.gui.SwingFormView.getComponent(SwingFormView.java:161)
at de.espirit.firstspirit.client.gui.SwingMultiFormView.getComponent(SwingMultiFormView.java:258)
at de.espirit.firstspirit.client.gui.tree.store.pagestore.GomModuleView.getComponent(GomModuleView.java:158)
at de.espirit.firstspirit.client.gui.GomModulePanel.getViewComponent(GomModulePanel.java:256)
at de.espirit.firstspirit.client.gui.GomModulePanel.initialize(GomModulePanel.java:148)
at de.espirit.firstspirit.client.gui.GomModulePanel$3.run(GomModulePanel.java:229)
at de.espirit.common.gui.EventDispatchThreadHelper.invokeLater(EventDispatchThreadHelper.java:78)
at de.espirit.firstspirit.client.gui.GomModulePanel.setVisibleLanguage(GomModulePanel.java:227)
at de.espirit.firstspirit.client.gui.applications.FormTabConfiguration$GomFormView$1.run(FormTabConfiguration.java:161)
at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:209)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:677)
at java.awt.EventQueue.access$000(EventQueue.java:85)
at java.awt.EventQueue$1.run(EventQueue.java:638)
at java.awt.EventQueue$1.run(EventQueue.java:636)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:87)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:647)
at de.espirit.firstspirit.client.AWTDispatchingEventQueue.defaultDispatchEvent(AWTDispatchingEventQueue.java:130)
at de.espirit.firstspirit.client.AWTDispatchingEventQueue._dispatchEvent(AWTDispatchingEventQueue.java:122)
at de.espirit.firstspirit.client.AWTDispatchingEventQueue.dispatchEvent(AWTDispatchingEventQueue.java:108)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:296)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:211)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:201)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:196)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:188)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)
GOM Definition:
<FS_DATASET name="tt_category" allowDelete="no">
<LANGINFOS>
<LANGINFO lang="*" label="Dataset" description="Please select a dataset"/>
<LANGINFO lang="DE" label="Datensatz" description="Bitte wรคhlen Sie einen Datensatz"/>
</LANGINFOS>
<LEGACYTEMPLATE>content.category</LEGACYTEMPLATE>
<SOURCES>
<CONTENT name="content_category"/>
</SOURCES>
</FS_DATASET>
Ich รผberlege mir gerade alternative Lรถsungen.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Die Exception kommt, weil in den Daten die angezeigt werden sollen, bereits eine Endlosschleife vorhanden ist. Das Thema habe ich bei uns aufgenommen, unter der ID #115307.
Es sollte aber funktionieren, wenn die Zuordnungen frei von Zyklen sind.
Vielleicht reicht es auch aus, CMS_INPUT_COMBOBOX als Auswahlkomponente einzusetzen? Die kรถnnte spรคter immer noch durch FS_DATASET ersetzt werden (wenn ein Fix fรผr #115307 verfรผgbar ist).
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Vielen Dank, mit der Combobox funktionieren selbstreferenzen. Nach eigenen Tests hat es sich allerdings als unpraktisch fรผr Redaktuere herausgestellt den Kategorienbaum so aufzubauen.
Die Eingabe mit Standardmitteln รผber mehrere Ebenen ist zu kompliziert, da der Kategorienpfad fรผr den Redakteur nicht erkennbar ist (ausser im Label liesse sich die Ausgabe rekursiv generieren).
Nachtrag: Es lagen รผbrigens keine Zyklen in den Daten vor bei meinen ersten Tests mit dem Objectchooser, die Tabellen waren leer.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Vielen Dank, mit der Combobox funktionieren selbstreferenzen. Nach eigenen Tests hat es sich allerdings als unpraktisch fรผr Redaktuere herausgestellt den Kategorienbaum so aufzubauen.
Die Eingabe mit Standardmitteln รผber mehrere Ebenen ist zu kompliziert, da der Kategorienpfad fรผr den Redakteur nicht erkennbar ist (ausser im Label liesse sich die Ausgabe rekursiv generieren).
Stellen Sie doch einen Feature-Request fรผr so eine Komponente.
Eventuell fรผhlt sich auch ein e-Spirit-Parter berufen, so eine Komponente als Modul zu entwickeln?

