B_Schwab
I'm new here

Media-Folder Pfad ausgeben mit FS_REFERENCE?

Jump to solution

Hallo zusammen,

für Konfigurationsangaben in einem JavaScript benötige ich nur den Pfad eines Media-Folders. Damit dieser nicht hartcodiert im JavaScript hinterlegt werden muss, möchte ich dies z.B. mit FS_REFERENCE pflegbar machen.

Über das Ergebnis "TargetReference" habe ich bisher mit Hilfe der API keine Möglichkeit gefunden, mir den reinen Pfad auszugeben. Auch über CMS_INPUT_FILE hatte ich noch keinen Erfolg.

Über CMS_INPUT_FILE kann ich ja z.B. bei einer Datei selbst über $CMS_VALUE(ref(st_file))$ die Pfadangaben der Datei ausgeben, was bei Verzeichnissen leider nicht funktioniert.

Sehe leider gerade vor lauter Bäumen den Wald nicht mehr.

Hat evtl. jemand eine Idee, wie man dies realisieren könnte? Ist FS_REFERENCE oder CMS_INPUT_FILE dafür überhaupt der richtige Ansatz?

Vielen Dank.

B. Schwab

19 Replies

Hallo Herr Höbbel,

leider ohne Erfolg.

Versuch 1 mit FS_REFERENCE:

16.03.2011 14:11:56.726 ERROR ($CMS_FOR( media, foldername.get().children(mediaClass) )$ at 169, 1): Cannot iterate over: class de.espirit.firstspirit.parser.eval.Undefined

    inside of: Template 'Standard page' (id=261044)

    inside of: $CMS_TRIM(level:3)$ - at 67, 14

    inside of: $CMS_FOR( media, foldername.get().children(mediaClass) )$ - at 169, 1

Versuch 2 mit CMS_INPUT_FILE

16.03.2011 14:13:09.142 ERROR ($CMS_FOR( media, foldername.get().children(mediaClass) )$ at 169, 1): Cannot iterate over: class de.espirit.firstspirit.parser.eval.Undefined

    inside of: Template 'Standard page' (id=261044)

    inside of: $CMS_TRIM(level:3)$ - at 67, 14

    inside of: $CMS_FOR( media, foldername.get().children(mediaClass) )$ - at 169, 1

Viele Grüße

B. Schwab

0 Kudos
hoebbel
Crownpeak employee

Hallo Herr Schwab,

was bekommen Sie denn mittels $CMS_VALUE(foldername.class)$ ausgegeben?

Und welche FirstSpirit Version benutzen Sie?

Viele Grüsse aus Dortmund,

  Holger Höbbel

0 Kudos

Hallo Herr Höbbel,

$CMS_VALUE(foldername.class)$ liefert "de.espirit.firstspirit.access.editor.value.TargetReferenceImpl". (bei Verwendung von FS_REFERENCE)

FS Version: 4.2.223.40456

Viele Grüße

B. Schwab

Nachricht geändert durch Björn Schwab

0 Kudos
hoebbel
Crownpeak employee

Hallo Herr Schwab,

und $CMS_VALUE(foldername.get().class)$ gibt Ihnen de.espirit.firstspirit.parser.eval.Undefined?

Oder haben Sie das CMS_SET in der Zeile vorher vergessen, um die Medien-Klasse zu definieren?

Viele Grüße,

Holger Höbbel

0 Kudos

Hallo Herr Höbbel,

$CMS_VALUE(foldername.get().class)$ liefert nachfolgende Meldung:

16.03.2011 14:33:48.198 WARN  ($CMS_VALUE(foldername.get().class)$ at 169, 4): Replacing null value with empty default!

"de.espirit.firstspirit.parser.eval.Undefined" wird ausgegeben beim Aufruf von $CMS_FOR( media, foldername.get().children(mediaClass) )$.

Das CMS_SET ist vorhanden (habe Ihren Auszug 1:1 kopiert und eingefügt).

Viele Grüße

B. Schwab

0 Kudos
hoebbel
Crownpeak employee

Hallo Herr Schwab,

aber ein Ordner ist in der Eingabekomponente ausgewählt worden?

Können Sie bitte einen anderen Ordner noch auswählen, um sicherzustellen, dass keine inkompatiblen Daten gespeichert sind?

Und noch eine Frage: Der entsprechende Ordner beinhaltet auch mindestens ein Medium?

Viele Grüsse aus Dortmund,

  Holger Höbbel

0 Kudos

Hallo Herr Höbbel,

ein Ordner war ausgewählt.

Habe nun nochmal alles "auf Anfang" gesetzt. D.h. Eingabekomponente neu angelegt und Verzeichnis noch einmal ausgewählt.

Das Resultat: es funktioniert! Ich befürchte dann fast, dass sich bei meinen Versuchen ein Fehler eingeschlichen hat 😕

Vielen Dank für die schnelle Hilfe!

Viele Grüße

B. Schwab

0 Kudos
hoebbel
Crownpeak employee

Hallo Herr Schwab,

hier noch eine Verbesserung der Syntax (kürzer und performanter, da nicht mehr über die Kinder iteriert wird)

$CMS_SET(mediaClass,class("de.espirit.firstspirit.access.store.mediastore.Media"))$

$CMS_SET(media,foldername.get().children(mediaClass).getFirst())$

$CMS_VALUE(ref(media,abs:2).url.substring(0,ref(media,abs:2).url.lastIndexOf("/")+1))$

[Dank an Gockel für den Hinweis]

Viele Grüsse aus Dortmund,

  Holger Höbbel

0 Kudos

Hallo Herr Höbbel,

super, vielen Dank!

Grüße

B. Schwab

0 Kudos
hoebbel
Crownpeak employee

Was ich noch vergessen habe:

In der Vorschau erhält man nicht das erwartete Verhalten, da es dort

  1. keine Ordner gibt, sondern statt dessen die Vorschauseiten flach in dem Vorschauordner angelegt werden bzw. die Medien direkt aus der Datenbank gestreamed werden
  2. die URL aus mehreren Parametern zusammengesetzt wird, die vom Preview Servlet ausgewertet werden. Diese haben nichts mit den im Client definierten Ordnern zu tun - man bekommt hier also Ergebnisse des ersten Mediums in dem Ordner, welches ja für den Workaround aufgerufen wird.
0 Kudos