.getId() gibt -1 für Data Sources zurück
Author: Bratzell
Publication Date: 7/14/2017 9:47
Hallo zusammen,
ist es möglich herauszufinden wo eine Datei genutzt wird?
Das ganze ist Teil einer CSV-Tabelle erstellt als Page-Template zu der ich hier schon mal Fragen gestellt habe.
Über das $CMS_VALUE(for_media.getId() + " ")$ erhalte ich eine passende ID solange es sich um etwas im Page Content handelt.
Falls die Datei in den Datenquellen referenziert wird mir -1 ausgegeben und falls die Datei gar nicht referenziert ist Garnichts.
Die -1 stört mich wie komme ich an die passende ID der Datenquelle?
$CMS_TRIM(level:3)$
$CMS_SET(set_mediastoreRoot, #global.project.userService.getStore(class("de.espirit.firstspirit.access.store.Store$Type").MEDIASTORE, !#global.preview))$
Refferenzname|Ablageort|Dateigroesse|Seitenrefferenz|CRC
$CMS_SET(Media, class("de.espirit.firstspirit.access.store.mediastore.Media"))$
$CMS_FOR(for_media,set_mediastoreRoot.getChildren(Media,true))$
$CMS_IF(for_media.getType()==Media.FILE)$
$CMS_SET(set_file, for_media.getFile(#global.language))$
$CMS_IF(set_file.extension=="pdf")$
$CMS_TRIM(level:4)$
$CMS_VALUE(for_media.uid )$|
$CMS_REF(for_media)$|
$CMS_VALUE(set_file.getSize())$|
$CMS_FOR(for_media, for_media.getIncomingReferences())$
$CMS_VALUE(for_media.getId() + " ")$
$CMS_END_FOR$|
$CMS_VALUE(set_file.getCrc())$
$CMS_END_TRIM$
$CMS_END_IF$
$CMS_END_IF$
$CMS_END_FOR$
$CMS_END_TRIM$
Grüße
Artur
-
Author: Peter_Jodeleit - 7/14/2017 10:30
Du kannst abhängig vom Typ der eingehenden Referenz eine Fallunterscheidung machen. Bei Content-Referenzen bekommst du über "getReferencedElement" üblicherweise an den Datenquellen-Knoten (wenn es keine Datenquelle für den Datensatz gibt, liefert dies den Knoten für die Tabellen-Vorlage).
Off Topic: Die zwei "FOR"-Schleifen mit gleicher Laufvariable finde ich sehr verwirrend :smileywink:
0 -
Author: Bratzell - 7/14/2017 13:09
Hallo Peter,
Danke dir ich habs jetzt so gemacht:
$CMS_TRIM(level:3)$
$CMS_SET(set_mediastoreRoot, #global.project.userService.getStore(class("de.espirit.firstspirit.access.store.Store$Type").MEDIASTORE, !#global.preview))$
Refferenzname|Ablageort|Dateigroesse|Seitenrefferenz|CRC
$CMS_SET(Media, class("de.espirit.firstspirit.access.store.mediastore.Media"))$
$CMS_FOR(for_media, set_mediastoreRoot.getChildren(Media,true))$
$CMS_IF(for_media.getType()==Media.FILE)$
$CMS_SET(set_file, for_media.getFile(#global.language))$
$CMS_IF(set_file.extension=="pdf")$
$CMS_TRIM(level:4)$
$CMS_VALUE(for_media.uid)$|
$CMS_REF(for_media)$|
$CMS_VALUE(set_file.getSize())$|
$CMS_FOR(for_media_item, for_media.getIncomingReferences())$
$CMS_IF(for_media_item.getId() == -1)$
$CMS_SET(media_value_1, for_media_item.getReferencedElement.getId())$
$CMS_VALUE(media_value_1 + " ")$
$CMS_ELSE$
$CMS_SET(media_value_2, for_media_item.getId())$
$CMS_VALUE(#global.root.media_value_2)$
$CMS_END_IF$
$CMS_END_FOR$|
$CMS_VALUE(set_file.getCrc())$
$CMS_END_TRIM$
$CMS_END_IF$
$CMS_END_IF$
$CMS_END_FOR$
$CMS_END_TRIM$
Grüße
Artur
0 -
Author: mbergmann - 7/15/2017 10:44
Hallo Artur,
ich glaube, Du brauchst die Fallunterscheidung nicht unbedingt. Es sollte reichen, einfach IMMER die Variante mit .getReferencedElement() zu nehmen.
Kleiner Hinweis (s. auch Peters Kommentar): Im Fall von Datensätzen bekommst Du soweit ich mich erinnere ggf. nicht die ID des Datensatzes sondern die der Datenquelle.
Viele Grüße
Michael
0 -
Author: Bratzell - 8/4/2017 8:54
Hallo Michael,
Danke für eure Hilfe hierzu Michael und Peter.
Tut mir Leid für die späte Antwort, ich war im Urlaub ;-).
Ich hab ganze jetzt so gelöst das ich nicht den Seitenpfad genommen hab sondern den Strukturpfad.
Hier mal der spezifischen Code:
$CMS_FOR(for_media_item, for_media.getIncomingReferences())$
$CMS_IF(for_media_item.getId() == -1)$
$CMS_SET(media_value_1, for_media_item.getReferencedElement.getId())$
$CMS_VALUE(media_value_1 + " ")$
$CMS_ELSE$
$CMS_SET(media_value_2, for_media_item.getReferencedObject())$
$CMS_SET(media_parent_1, media_value_2.getParent())$
$CMS_SET(media_parent_2, media_parent_1.getParent())$
$CMS_FOR(media_site_1, media_parent_2.getIncomingReferences())$
$CMS_SET(media_site_2, media_site_1.getReferencedObject())$
$CMS_REF(media_site_2)$
$CMS_END_FOR$
$CMS_END_IF$
$CMS_END_FOR$
Mit freundlichen Grüßen
Artur
0
Please sign in to leave a comment.
Comments
4 comments