- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Media-Folder Pfad ausgeben mit FS_REFERENCE?
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
- Labels:
-
Developers
Accepted Solutions
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
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
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hallo Herr Schwab,
ich tendiere zu FS_REFERENCE, da CMS_INPUT_FILE mit der Version 5.0 wegfallen wird. Es ist jedoch zu beachten, dass FS_REFERENCE in der 4.2 noch nicht offiziell freigegeben ist. Die Referenz auf einen MediaFolder sollte man รผber folgenden Code bekommen:
$CMS_REF( pagefolder:fsReferenceFieldName.getUid(), abs:0 )$
abs:0 ist nur ein Beispiel. abs:0-4 liefert absolute bis relative Links mit und ohne Prรคfix. Nachzulesen in der Doku:
Hoffe, das hilft.
Viele Grรผรe,
C. Klingbeil
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hallo Herr Klingbeil,
vielen Dank fรผr Ihre Antwort.
Leider hilft mir dies noch nicht weiter.
Folgendes habe ich im Formular stehen:
<FS_REFERENCE name="foldername" upload="no">
<FILTER>
<HIDE type="all"/>
<ALLOW type="folders"/>
</FILTER>
<LANGINFOS>
<LANGINFO lang="*" label="Folderdescription=""/>
</LANGINFOS>
<PROJECTS>
<LOCAL name=".">
<SOURCES>
<FOLDER name="root" store="mediastore"/>
</SOURCES>
</LOCAL>
</PROJECTS>
</FS_REFERENCE>
In der Ausgabe habe ich nun Ihren Hinweis versucht
$CMS_REF(pagefolder:foldername.getUid(), abs:0 )$
Dabei erhalte ich dann die folgende Fehlermeldung:
16.03.2011 11:33:56.449 ERROR ($CMS_REF(pagefolder:foldername.getUid(), abs:0)$ at 169, 3): missing target for $CMS_REF()$: {pagefolder=null, abs=0}
Mรถchte ich mir dann anzeigen lassen, was getUid() liefert erhalte ich folgenden Hinweis:
16.03.2011 11:33:56.449 WARN ($CMS_VALUE(foldername.getUid())$ at 168, 4): Replacing null value with empty default!
Um dann auf Nummer sicher zu gehen, ob in der Variable รผberhaupt etwas gespeichert wurde habe ich mir diese direkt ausgeben lassen und folgendes erhalten:
de.espirit.firstspirit.access.editor.value.TargetReferenceImpl@4cd63a91
Habe ich evtl. noch etwas รผbersehen oder einen Denkfehler?
Nochmals vielen Dank!
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Sorry, es ist natรผrlich kein pagefolder sondern ein mediafolder. Trotzdem sollte die TargetReference eine getUid Methode haben. Ich prรผfe mal, ob sich noch ein weiterer Fehler eingeschlichen hat.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Wobei dann noch zu beachten bleibt, dass es meines Wissens nach nur fรผr physikalische Dateien [Seitenreferenzen, Medien] mรถglich ist, einen Pfad zu erzeugen.
Einfachste Lรถsung: Man holt sich von dem Ordner ein Kind, von welchem ein Pfad erzeugt werden kann und erzeugt diesen Pfad. Dann muss man nur noch von dem entsprechenden String alles nach dem letzten / wegschneiden, schon hat man das gewรผnschte Ergebnis.
Der Code mรผsste ungefรคhr so aussehen <mediaRefname> ist der Referenzname eines Mediums im Ordner:
$CMS_VALUE(ref(media:"<mediaRefname>",abs:2).url.substring(0,ref(media:"<mediaRefname>",abs:2).url.lastIndexOf("/")+1))$
Viele Grรผsse aus Dortmund,
Holger Hรถbbel
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Und alles nur, weil $CMS_REF()$ fรผr den IDProvider MediaFolder keine Referenz erzeugen kann... Wรคr das nicht etwas fรผr ein Feature Request? Ich wรผrde mir dann auch noch den PageFolder wรผnschen ๐
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hallo Frau Klingbeil,
dem mรถchte ich nicht widersprechen
Ach ja, die interne ID fรผr den entsprechenden Feature Request ist รผbrigens 48418 [was aber niemenden davon abhalten soll, hier in der Community einen entsprechenden, neuen Feature Request zu erstellen]
Viele Grรผsse aus Dortmund,
Holger Hรถbbel
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
รber FS_REFERENCE dรผrfte ich dann aber mit meinem momentanen Stand nicht wirklich weiter kommen, oder?
Wie oben schon kurz erwรคhnt verlรคuft ja eine Abfrage auf foldername.getUid() ohne Ergebnis. Auch der Versuch mit foldername.get() auf den IDProvider zuzugreifen bleibt ohne Ergebnis. Darรผber hรคtte ich vermutet, auf die Kinder des Ordners zuzugreifen.
Sorry, stehe jetzt leider vรถllig auf dem Schlauch :smileyconfused:
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hallo Herr Schwab,
versuchen Sie es mal so:
$CMS_SET(mediaClass,class("de.espirit.firstspirit.access.store.mediastore.Media"))$
$CMS_FOR(media,foldername.get().children(mediaClass))$
$CMS_IF(#for.isFirst)$
$CMS_VALUE(ref(media,abs:2).url.substring(0,ref(media,abs:2).url.lastIndexOf("/")+1))$
$CMS_END_IF$
$CMS_END_FOR$
Viele Grรผsse aus Dortmund,
Holger Hรถbbel

