Tipps & Tricks - FileWalker in einem bestimmten Verzeichnis öffnen
Dieser Beitrag zeigt, wie man den FileWalker so modifizieren kann, dass beim Laden einer Seite ein bestimmtes Verzeichnis ausgewählt wird.
Verbindung
Im Modul "Integration" wurde eine FileWalker-Verbindung für den Pfad "c:\documents" gesetzt. Wie Sie eine Verbindung erstellen können, erfahren Sie hier.
Das Verzeichnis "c:\documents" enthält Unterordner für unterschiedliche Dokumententypen. Außerdem gibt es dort das Verzeichnis "customers", das wiederum einen Ordner pro Kundennummer enthält. In diesen Kundenordnern werden Dokumente wie Verträge, Bestellungen etc. abgelegt.
Ansicht im Browser
In der entsprechenden Applikation werden alle Kundennummern in einer Ansichtstabelle aufgelistet. Mit Klick auf die Lupen-Schaltfläche wird eine Ansichtsseite geladen, die ein FileWalker-Element enthält, bei dem in den Eigenschaften die zuvor erstellte FileWalker-Verbindung ausgewählt ist. Das FileWalker-Element soll in unserem Beispiel beim Laden jeweils automatisch in das Unterverzeichnis "contract" wechseln, das zur ausgewählten Kundennummer gehört.
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. Die Ansichtsseite wertet dann automatisch beim Laden den Parameter aus und lädt den entsprechenden Unterordner.
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")
}