Mit den Elementen npsStream
und npsEdit
können
aus Assistenten heraus Inhalte wie der Hauptinhalt oder der Wert eines
HTML-Feldes einer Dateiversion einem Editor wie dem HTML-Editor zur
Bearbeitung übergeben werden. Gehen Sie hierzu folgendermaßen vor:
Lesen Sie zunächst die zu bearbeitenden Daten als Stream aus und speichern Sie die Ticket-ID, die Sie dabei erhalten, in einer Variablen ab. Bei einem Hauptinhalt können Sie hierfür den folgenden Befehl verwenden:
set ticketId [obj withId objectID editedContent get blob.stream]
Verwenden Sie als objectID
beispielsweise die ID,
die Sie über den Parameter name
des Elements
npsSelectObject
erhalten haben. Bei Versionsfeldern muss der
Feldwert zunächst ermittelt und separat als Stream gespeichert werden:
set value [content withId contentID get fieldName ] set ticketId [stream uploadBase64 [base64:encode $value]]
In beiden Fällen wird die Ticket-ID in einer Variablen gespeichert. Sie
wird benötigt, um mit der npsStream
-Anweisung die zu
bearbeitenden Daten dem Content Management Server zu übergeben. Zusätzlich
erhält die npsStream
-Anweisung den MIME-Typ der Daten und den
Pfad der betreffenden CMS-Datei sowie eine frei wählbare ID, mit der man sich
später in der npsEdit
-Anweisung auf die Daten beziehen kann:
set path [obj withId objectID get visiblePath] npsStream ticket="$ticketId" mimeType="text/html" path="$path" id="htmlData"
Anschließend kann die npsEdit
-Anweisung unter Angabe der oben
festgelegten Referenz-ID (htmlData
) verwendet werden, um einen
Editor in die Assistenten-Seite einzubinden:
<npsEdit editor="html" stream="htmlData"/>
Mit der editor
-Angabe können alle im CMS verfügbaren Editoren
eingebunden werden: html
: HTML-Editor, external
:
lokale Anwendung, tinymce
: TinyMCE,
internal
: Interner Editor (Text-Eingabebereich).
Bitte beachten Sie, dass die im Editor vorgenommenen Änderungen nur dann
in einem Stream gespeichert (also übernommen) werden, wenn die
Assistenten-Seite, in die der Editor eingebunden ist, mit dem Button
ok
oder next
verlassen wird (Kleinschreibung
beachten).
Da im Assistenten die Auswahl der zu bearbeitenden Datei, die eigentliche
Bearbeitung und die Speicherung auf unterschiedlichen Seiten stattfinden kann
(sich die Ticket-ID also im Laufe des Bearbeitungsvorgangs ändert), erhält
der Assistent vom GUI in der Variablen wizard.tickets
eine Liste
von Stream-IDs mit den jeweils dazu gehörenden Ticket-IDs. Dadurch kann über
die frei gewählte Stream-ID (hier htmlData
) die jeweilige
Ticket-ID ermittelt werden:
proc wizardEditor {params args} { array set tickets [getParam wizard.tickets] set ticketId [getKey tickets htmlData] ...
Abschließend können die bearbeiteten Daten in die Dateiversion zurückgeschrieben werden, für einen Hauptinhalt mit:
obj withId objectId editedContent set blob.stream $ticketId
Bei anderen Feldern muss der Inhalt erst ausgelesen und dann als Feldwert gespeichert werden:
set value [base64:decode -asString [stream downloadBase64 $ticketId]] obj withId objectId editedContent set fieldName $value