================ Uploads in Plone ================ Erstellen Sie zuerst im Plone einen neuen Ordner. Am besten mit dem Namen ``uploads``. .. image:: ploneordner_erstellen.gif Gehen Sie danach ins ZMI und erstellen Sie unterhalb des Ordners ``uploads`` den Ordner ``daten``. Diesmal im ZMI mit dem Objekttyp ``Folder``. Das verhindert auf einfache Art, dass der Ordner mit den Daten von Plone aus gesehen wird. .. image:: datenordner_erstellen.gif Erstellen Sie im Ordner ``uploads`` eine **Controller Page Template** mit dem Namen ``index_html``. Dieser Name bestimmt, dass diese Datei die Hauptdatei dieses Ordners ist und der Type *Controller Page Template* ist eine erweiterte Seitenvorlage, die speziell für Formulare gemacht wurde. Sie enthält im ZMI zusätzlich die Karteikarten *Validation* und *Actions*. In denen kann man bestimmen, welche Skripte zum Prüfen herangezogen werden und welche Aktionen bei Erfolg oder Misserfolg der Prüfungen durchgeführt werden sollen. .. image:: cpt_erstellen.gif Als Vorlage für Seitenvorlagen verwende ich gerne ``portal_skins/plone_content/document_view``. Bei dieser Vorlage muss man kaum mehr etwas anpassen. Die fertige Seite sieht dann so aus::
Document actions (print, sendto etc)

Uploadformular

In diesem Formular koennen Sie ein Bild oder eine andere Datei hochladen. Diese Datei wird dann hier in einer Liste angezeigt.

 

(Required)
Geben Sie hier den Pfad zur Datei an, die hochgeladen werden soll.

 

show related items if they exist
Jetzt muss noch ein Skript erstellt werden, das beim Absenden des Formulars aufgerufen wird. Erstellen Sie dafür ein neues Objekt vom Typ **Controller Python Script**. Dabei handelt es sich um ein erweitertes Python-Skript, speziell zur Verarbeitung von Formulardaten. Als Dateinamen geben Sie hier für das Beispiel bitte "upload" an. .. image:: uploadskript_erstellen.gif So sieht unser fertiges Upload-Skript aus:: datadir = container.daten if datei: new_file = datadir.manage_addFile( id = datei.filename, file = datei, ) message = "Datei wurde hochgeladen" else: message = "Die Datei wurde NICHT hochgeladen" state.setKwargs({"portal_status_message": message}) return state Achten Sie bitte darauf, dass auch ein Parameter übergeben wird. In unserem Fall ``datei``. Siehe Bild: .. image:: fertiges_uploadskript.gif Wichtiger Hinweis! Das Skript fängt keine Fehler ab und auf Validatoren gehe ich auch nicht ein. Alles weitere erfahren Sie im Plone Buch von Andy McKay im Kapitel 6.4 (Formulare verwenden). Jetzt müssen die beiden Dateien miteinander verbunden werden. Das geschieht über die jeweiligen *Action*-Reiter. Öffnen Sie im ZMI die Datei ``index_html`` und klicken Sie auf den *Action*-Reiter. .. image:: index_html_action_erstellen.gif Das sieht, wenn es fertig ist so aus: .. image:: index_html_action_erstellt.gif Jetzt geht es mit der Action des Skripts ``upload`` weiter. Öffnen Sie im ZMI die Datei ``upload`` und klicken Sie auf den *Action*-Reiter. .. image:: upload_action_erstellen.gif Das sieht, wenn es fertig ist so aus: .. image:: upload_action_erstellt.gif Und das ist das Ergebnis: .. image:: fertige_seite.gif Wenn man sich aber abmeldet, dann bemerkt man, dass kein Upload ohne Anmeldung möglich ist. Dem kann man dadurch entgehen, indem man dem Skript, das mehr Rechte braucht, eine Proxyrolle zuweist. Dafür öffnen Sie das Skript ``upload`` im ZMI. Klicken Sie auf den Reiter *Proxy*. Wählen Sie **Manager** aus und bestätigen Sie mit einem Klick auf *Save Changes* .. image:: proxyrolle_zuweisen.gif