Tipps & Tricks - FileWalker in einem bestimmten Verzeichnis öffnen

Dieser Beitrag zeigt, wie man den FileWalker so modifizieren kann, dass ein bestimmtes Verzeichnis beim Laden einer Seite automatisch ausgewählt ist.

Verbindung

Für unser Beispiel ist die FileWalker-Verbindung auf den Pfad "c:\documents" gesetzt.

Dieses Verzeichnis enthält Unterordner mit den verschiedenen Dokumententypen (z.B. Vorlagen). Außerdem gibt es dort das Verzeichnis "customers", das wiederum einen Ordner pro Kundennummer enthält. In diesen Kundenordnern liegen Dokumente wie Verträge, Bestellungen etc. vor.

Ansicht im Browser

Hier sind Kundennummern in einer Ansichtstabelle aufgelistet. Mit Klick auf die Lupen-Schaltfläche wird eine Ansichtsseite geladen, die ein FileWalker-Element enthält, bei dem die Beispiel-Verbindung ausgewählt ist. Das FileWalker-Element lädt das vorgegebene Unterverzeichnis. In den folgenden Beispielen ist dies das Unterverzeichnis "contract", das alle abgelegten Verträge der Kundennummer enthält, die in der Tabelle per Klick auf die Lupe ausgewählt wurde.

Bitte beachten:

Im folgenden Beispiel 1 kann bis zum Root-Verzeichnis der FileWalker-Verbindung zurück und somit auch in jedes beliebige Kundenverzeichnis navigiert werden. Damit werden Zugriffsrechte gewährt, die evtl. nicht beabsichtigt sind!

In Beispiel 2 kann nicht zurück navigiert werden. Das Unterverzeichnis wird als neues Root-Verzeichnis gesetzt.

Welches Beispiel eingesetzt wird, ist in erster Linie eine Sicherheitsfrage für den Zugriff auf die verwalteten Dateien. In beiden Beispielen erfolgt aktuell keine Prüfung, ob das Unterverzeichnis existiert.

Beispiel 1: In ein Unterverzeichnis navigieren

Der Aufrufer schickt den Parameter "subDir" (Request-Name: "qs_subDir") mit, der das Unterverzeichnis des FileWalkers bestimmt. Der Wert des Parameters kann im Eigenschaftendialog der Tabellenspalte, die die Schaltfläche enthält, z.B. per Velocity dynamisch zusammengebaut werden:

#set($customerid = $drRecord.getValue('<GUID table colums>').asString())
#set($path = "customers/" + $customerid + "/contract")
$path

Setzen Sie im Skript die GUID der Tabellenspalte ein, die die Kundennummer enthält. Die GUID kann in den Eigenschaften der Tabellenspalte auf dem Reiter "Expert" ermittelt werden.

Beispiel 2: Neues Rootverzeichnis setzen

Der Aufrufer schickt einen Parameter, dessen Wert im RenderingHandler der Seite, auf der der FileWalker platziert ist, weiter verarbeitet und in die Session aufgenommen wird. Der Name des Parameters ist frei wählbar, in unserem Beispiel lautet er "customerid". Wie bei Möglichkeit 1 ist der Parameter hier im Beispiel wieder in den Eigenschaften einer Schaltfläche in der Ansichtstabelle, die die Kundennummern enthält, definiert.

Der RenderingHandler auf der Seite mit dem FileWalker-Element nimmt den Schlüssel "FILEWALKER_DYNPATH_<GUIDFILEWALKERKONTROLLE>" in die Session auf. Der Wert dieser Variable ist das Unterverzeichnis, das aufgerufen werden soll. Da das Unterverzeichnis in der Session aufgenommen wurde, gilt diese Angabe bei jedem Aufruf so lange, bis der Wert wieder aktiv aus der Session entfernt wird.

if (g_parameter.containsParameter("customerid")) 
{ 
	def customerid = g_parameter.get("customerid")
	def path = "customers/${customerid}/contract"
	g_session.put("FILEWALKER_DYNPATH_547ABBCCFC94390342DAD464106A1D5748E4A39E", path.toString()) 
} else { g_session.remove("FILEWALKER_DYNPATH_547ABBCCFC94390342DAD464106A1D5748E4A39E") }