matthiasforberg
Occasional Collector

Unerwartete Ausgabe von FS_INDEX über Metadaten

Hallo,

ich habe ein Problem mit der neuen Komponente FS_INDEX und komme mit der Doku leider nicht weiter. Und zwar bekomme ich bei der Ausgabe etwas anderes als das Erwartete. Möglicherweise liegt es an der Eingabe über Metadaten?!

Folgendes Szenario:

Im Flyout Menü angezeigte Teaser werden über Metadaten auf der Struktur eingegeben. Leider funktioniert dann aber bei der Ausgabe die Iteration über die values nicht. Bei "normaler" Einbindung über eine Absatzvorlage hingegen führt das zum gewünschten Ergebnis. Hier die Beispiele für die jeweilige Einbindung und die Ausgabe:

Ein- und Ausgabe im selben Template:

Formular:

<FS_INDEX name="stNavigationTeaser">

  <LANGINFOS>

    <LANGINFO lang="*" label="Teaser"/>

  </LANGINFOS>

  <SOURCE name="DatasetDataAccessPlugin"/>

</FS_INDEX>

HTML Kanal:

$CMS_IF(!stNavigationTeaser.isEmpty)$

    $CMS_VALUE(stNavigationTeaser.class)$

    $CMS_FOR(_dataset, stNavigationTeaser.values)$

            $CMS_VALUE(_dataset.formData.fs_id)$ $CMS_VALUE(_dataset.formData.ttHeadline)$

    $CMS_END_FOR$

$CMS_END_IF$

Ausgabe:

  de.espirit.firstspirit.generate.values.IndexConverter$IterableAccessor

 

  64 Navigation Teaser Right

Eingabe über Metadaten, Ausgabe in Navigation:

Formular:

<FS_INDEX name="mdNavigationTeaser">

  <LANGINFOS>

    <LANGINFO lang="*" label="Teaser"/>

  </LANGINFOS>

  <SOURCE name="DatasetDataAccessPlugin"/>

</FS_INDEX>

HTML Kanal:

$CMS_IF(!#nav.folder.meta("mdNavigationTeaser").isEmpty)$

    $CMS_VALUE(#nav.folder.meta("mdNavigationTeaser").class)$

    $CMS_FOR(_dataset, #nav.folder.meta("mdNavigationTeaser").values)$

            $CMS_VALUE(_dataset.formData.fs_id)$ $CMS_VALUE(_dataset.formData.ttHeadline)$

    $CMS_END_FOR$

$CMS_END_IF$

Ausgabe:

  de.espirit.firstspirit.client.access.editor.lists.IndexImpl

Muss ich da irgendwas anders machen? Oder geht das an der Stelle nur über den anderen Weg über die API, also über iterator() und getIdentifiert() usw.? Das fände ich ehrlich gesagt etwas umständlich. Ich gehe eher davon aus, dass das kein beabsichtigtes Verhalten ist. Zumindest bekomme ich bei anderen Eingabekomponenten in den Metadaten auch den erwarteten Datentyp heraus...

Grüße

Matthias

0 Kudos
1 Reply
laqu
I'm new here

Das selbe Problem hatten wir auch, das ganze ist wohl ein Bug.

Die Lösung (Workaround) )wir vom Helpdesk bekommen haben, sieht folgendermaßen aus:

Im Template:
=========
$CMS_RENDER(script:"index_converter", varName:"_list", values:#global.node.meta("meta_index", "inherit"))$
$CMS_FOR(tmp,_list)$
RECORD: $CMS_VALUE(tmp.class)$ - $CMS_VALUE(tmp.type)$ - $CMS_VALUE(tmp.identifier)$
$CMS_END_FOR$
$CMS_SET(_list, null)$

Skript:
=====
templateStore = context.getUserService().getTemplateStore();
metadataTemplateId = context.getProject().getMetadataTemplate();
metadataTemplate = templateStore.getTemplateById(metadataTemplateId);

gomProvider = metadataTemplate.getGomProvider();
gomIndex = gomProvider.findEditor("meta_index");
gomIndexSource = gomIndex.source();
dataAccessSession = gomIndexSource.createSession(context, false);

formDataList = new ArrayList();

for (record : values.iterator()) {
identifier = record.getIdentifier();
dataset = dataAccessSession.getData(identifier);
formDataList.add(dataset.getFormData());
}

context.getContext().getParentContext().setVariableValue(varName, formDataList);
********************************************************************

Sobald der Fehler beseitigt wurde, sollte der Workaround natürlich wieder entfernt werden.

Viele Grüße,

Lars

0 Kudos