Bratzell
I'm new here

.getId() gibt -1 für Data Sources zurück

Jump to solution

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

Labels (1)
0 Kudos
1 Solution

Accepted Solutions
Bratzell
I'm new here

Re: .getId() gibt -1 für Data Sources zurück

Jump to solution

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

View solution in original post

0 Kudos
4 Replies
Peter_Jodeleit
Crownpeak employee
Crownpeak employee

Re: .getId() gibt -1 für Data Sources zurück

Jump to solution

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 Smiley Wink

Peter
0 Kudos
Bratzell
I'm new here

Re: .getId() gibt -1 für Data Sources zurück

Jump to solution

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 Kudos
mbergmann
Crownpeak employee
Crownpeak employee

Re: .getId() gibt -1 für Data Sources zurück

Jump to solution

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 Kudos
Bratzell
I'm new here

Re: .getId() gibt -1 für Data Sources zurück

Jump to solution

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 Kudos