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 Tabellenspalte>').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") }