npsEdit

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