PhilippM
New Creator

Schreiben von Strukturvariablen mittels Beanshell?

Hallo zusammen!

Ist es möglich mittels Beanshell auf Strukturvariablen zuzugreifen bzw. diese zu verändern?

Ein paar Worte zum Hintergrund. Die Strukturvariablen sind nur für Admins sichtbar. Wir möchten gerne,

dass die Redakteure in einem Bestimmten Bereich im Projekt selbst festlegen können ob dort eine Subnavigation angezeigt werden soll oder nicht. Es soll für diese Subnavigation die Möglichkeit geben ein Bild zu hinterlegen, welches ebenfalls in einer Strukturvariablen gespeichert wird.

Aktuell werden diese Werte von einem Redaktuer mit Adminrechten editiert.

Dies Soll in Zukunft verhindert werden. Ist es möglich ein Beanshell an einem bestimmten Ordner in der Struktur aufzurufen, welchem man über eine Eingabemaske das anzuzeigende Bild übergeben kann bzw. eine Checkbox Subnavigation true/false und diese Werte in einer Strukturvariablen speichert?

Im Voraus schon einmal vielen Dank für Eure Hilfe.

0 Kudos
1 Reply
broszeit
I'm new here

Hallo,

ja, wenn ich nichts übersehen habe, sollte das so gehen, wie gewünscht.

Im Skript kann man Strukturvariablen zum Beispiel so setzen:

// siteStoreFolder muss vorhanden sein

siteStoreFolder.setLock(true, false);

FormData formData = siteStoreFolder.getFormData();

FormField formField = formData.createVariable( Language lang, "Name_der_Strukturvariablen");

formField.set("neuer_Wert");

siteStoreFolder.setFormData(formData);

siteStoreFolder.save();

siteStoreFolder.setLock(true, false);

In Skripten gibt es einen Formularreiter, welcher mit den bekannten Formularelementen gefüllt werden kann. Dort kann zum Beispiel ein CMS_INPUT_TOGGLE für das Aktivieren und Deaktivieren der Subnavigation erstellt werden oder eine FS_REFERENCE um das Bild auszuwählen.

Das Formular wird im Skript einfach mithilfe der Methode "context.showForm()" angezeigt.

Nach dem Bestätigen des Formulars müssen die Werte der Eingabekomponenten dann im Skript ausgelesen werden und passend in den Strukturvariablen hinterlegt werden. Hierfür gibt die Methode showForm() ein FormData-Objekt zurück.

Das Skript muss dann in einem Arbeitsablauf ausgeführt werden, damit die Rechte passend gesetzt werden können.

Viele Grüße

Rouven

0 Kudos