Auflisten aller Ordner "Files/Pictures"

3 views
Skip to first unread message

Thomas

unread,
Aug 17, 2007, 4:19:46 PM8/17/07
to SharpCms (DE)
Ich würde gerne in der Datei -PageContent.xslt ein Template erstellen,
das mir alle Ordner aus dem Verzeichnis "Custom/App-Data/Files/Files/
Pictures/" auflistet. Ich hab schon eingies veruscht, komme aber nciht
drauf, wie das gehen könnte.

Soweit wäre ich mal gekommen:

<xsl:template mode="show" match="element[@type='gallerylist']">
<xsl:variable select="folder/@path" name="path" />
<h2>
<xsl:value-of select="header" />
</h2>
<ul>
<xsl:for-each select="folder/folder">
<li>[???]</li>
</xsl:for-each>
</ul>
</xsl:template>

Kann mir hier irgendwer weiter helfen.

Jürgen Gutsch

unread,
Aug 17, 2007, 5:31:12 PM8/17/07
to SharpCms (DE)
Hallo Thomas,

ich habe mal etwas herumgespielt. Und zwar habe ich mir das in der
"settings.xml" den Abschnitt für die Galerie angeschaut und habe
spasseshalber in dem Item mit dem Namen "Aktion" als Value "tree"
gegeben. Ich habe das "gallery" Tag vorher kopiert und in "folderlist"
umbenannt.

<folderlist>
<item name="Plugin" attribute="plugin" type="hidden" value="File" />
<item name="Action" attribute="action" type="hidden" value="tree" />
<item name="Folder" attribute="value" type="choosefolder" />
</folderlist>

...und siehe da, die XML Ausgabe der Seite sieht dann, nachdem ich das
Element folderlist in die Seite eingefügt hatte, wie folgt aus:

- <element type="folderlist">
<plugin>File</plugin>
<action>tree</action>
<value>Files/Pictures/gallery/</value>
- <filetree>
- <folder name="Files">
- <folder name="Files">
<folder name="Documents" />
<folder name="Media" />
- <folder name="Pictures">
- <folder name="gallery">
+ <folder name="2006Toscana1">
+ <folder name="2006Toscana2">
+ <folder name="Hilzingen">
+ <folder name="Hochzeitsfest">
+ <folder name="hohentwiel">
+ <folder name="Sektempfang">
+ <folder name="Trauung">
+ <folder name="Umzug">
+ <folder name="Urlaub_2005_-_Paderborn">
+ <folder name="Wir">
</folder>
</folder>
</folder>
</folder>
</folder>
</folder>
</folder>
</filetree>
</element>

jetzt ist es ein einfaches mit XPath durch die Folder gehen und eine
List anzuzeigen


Grüße
Jürgen

Thomas

unread,
Aug 18, 2007, 8:49:16 AM8/18/07
to SharpCms (DE)
Sorry, aber kannst du mir das ein bisschen genauer erklären? Über ...?
event_xml=true sehe ich jetzt zwar die gleiche Struktur, kann damit
aber irgendwie ncihts anfangen :-(

<xsl:template mode="show" match="element[@type='gallerylist']">

<h2>
<xsl:value-of select="header" />
</h2>
<ul>

<xsl:for-each select="tree/folder">


<li>
[???]
</li>
</xsl:for-each>
</ul>
</xsl:template>

Was macht eigentlich diese Action "tree" und wie kann ich nun genau
die Ordner auflisten, die ich aus einem bestimmten Verzeichnis haben
will?

On 17 Aug., 23:31, Jürgen Gutsch <juergen.gut...@googlemail.com>
wrote:

> > Kann mir hier irgendwer weiter helfen.- Zitierten Text ausblenden -
>
> - Zitierten Text anzeigen -

Thomas

unread,
Aug 18, 2007, 10:30:19 AM8/18/07
to SharpCms (DE)
ok ok ok, ich glaube, jetzt hab ich es einigermassengeschnallt :-)

Mein Template sieht jetzt so aus:


<xsl:template mode="show" match="element[@type='gallerylist']">

<xsl:variable select="value" name="path" />


<h2>
<xsl:value-of select="header" />
</h2>

<xsl:for-each select="filetree/folder/folder/folder/folder/
folder">
<dl>
<dt>
<a>
<xsl:attribute name="href">
<xsl:text> </xsl:text>
</xsl:attribute>
<xsl:value-of select="@name" />
</a>
</dt>
<dd class="img">
<a>
<xsl:attribute name="href">
<xsl:text> </xsl:text>
</xsl:attribute>
<img>
<xsl:attribute name="src">
<xsl:text>default.aspx?process=download/</xsl:text>
<xsl:value-of select="$path" />
<xsl:text>/</xsl:text>
<xsl:value-of select="@name" />
<xsl:text>/</xsl:text>
<xsl:value-of select="file/@name" />
<xsl:text>&amp;height=100</xsl:text>
</xsl:attribute>
<xsl:attribute name="alt">
<xsl:value-of select="@name" />
</xsl:attribute>
</img>
</a>
</dd>
<dd>
<xsl:text> </xsl:text>
</dd>
</dl>
</xsl:for-each>
</xsl:template>

Es ist nciht ganz korrekt. Bei dem Template gehe ich davon aus, dass
sich alle Bildergalerien im gleichen Verzeichnis befinden. In meinem
Fall unter "Files/Pictures/impressions".

Kann man das in der schleife nciht einfacher schreiben? <xsl:for-each
select="filetree/folder/folder/folder/folder/folder">

> > - Zitierten Text anzeigen -- Zitierten Text ausblenden -

Jürgen Gutsch

unread,
Aug 18, 2007, 10:53:48 AM8/18/07
to SharpCms (DE)
Hi Thomas,

ich hätte es wahrscheinlich auch so gemacht. man muss halt nachher
darauf achten, dass die Galleries alle in der selben struktur sind.

Was aktion "tree" genau macht, weis ich nicht, allerdings scheinen auf
die Art alle Ordner unter "Files" ausgelesen zu werden. Es wird
wahrscheinlich auch die gleiche Methode aufgerufen, die in der
Dateienverwaltung (Admin bereich) die Struktur für den Navigations-
Tree erzeugt.

Ich habe deswegen mit der Action "tree" herumgespielt, weil ich in der
"ProviderFile.cs" in der Methode "Load" folgendes gefunden habe:
switch (action)
{
case "tree":
LoadTree(pathTrail, control);
break;
case "folder":
LoadFolder(pathTrail, control);
break;
case "file":
LoadFile(pathTrail, control);
break;
case "download":
LoadDownload(pathTrail, control);
break;
}

> > - Zitierten Text anzeigen -- Hide quoted text -
>
> - Show quoted text -

Reply all
Reply to author
Forward
0 new messages