tkuehl
I'm new here

BeanShellScript über Kontextmenü mit Formular

Jump to solution

Hallo!

Gibt es die Möglichkeit, Formularelemente zu nutzen, wenn man ein Skript über das Kontextmenü aufruft?

Mein Fachbereich möchte gerne, dass ein Kommentar eingegeben wird, wenn eine Inhaltsseite oder ein Medium freigegeben wird. Da könnte man wunderbar das einfache CMS_INPUT_TEXT verwenden. Allerdings habe ich noch keine Möglichkeit gefunden, dieses auch anzeigen zu lassen und hinterher auszuwerten.

Außerdem soll, wenn kein  Kommentar eingetragen wird, ein String übernommen werden, der in einer Metadaten-Variablen steht.

Irgendwelche Tipps?
Danke schonmal im Vorraus! Smiley Happy

1 Solution

Accepted Solutions
gockel
Crownpeak employee

Hallo,

da mir nicht ganz klar geworden ist, an welcher Stelle sich der vom Redakteur eingegebene Kommentar wiederfinden/gespeichert werden soll, hier mal ein paar unterschiedliche Einstiegspunkte:

  1. Kommentare in den Verwaltungen
  2. Formulare im Workflow
  3. Formularelemente im Skript

zu 1.:

Seit Version 4.1 gibt es die Möglichkeit die Eingabe von Kommentaren in den Verwaltungen zu erzwingen. Vergleiche hierzu Kapitel 7.4.2 ff der Administratorendokumentation und dort den Abschnitt Versions-Kommentare erfassen

zu 2.:

Da Sie von der Freigabe sprachen und hierfür ja sicherlich ein Arbeitsablauf verwendet wird, hier der kurze Hinweis auf die Möglichkeit der Definition von Formularen für Arbeitsabläufe. Siehe hierzu Kapitel 4.4. ff aus der Entwicklerdokumentation.

zu 3.:

Die Nutzung von Formularelementen im Skript ist auch sehr einfach möglich. Hierzu ein kleines Beispiel in Bezug zu Ihrem Anwendungsfall:

* Definition der Eingabekomponente im Formularreiter des Skriptes:

gom.jpg

Skriptcode im Kanal html(HTML)


// script was started on this storeelement
element = context.getStoreElement();

// show the form dialog
data = context.showGui();

if (data == null) {
    // user abort (cancel)
    return;
}

// puh, user clicked "OK" 🙂

textEditor = data.get("st_comment").getEditor();

// text editor is defined language independent -> use master language
comment = textEditor.get(context.getProject().getMasterLanguage());
if (comment == null || comment.length() == 0) {
    // use fallback from metadata

    // do we have meta data defined
    if (element.hasMeta()) {
        metaData = element.getMeta();
       
        // get text editor from meta data
        metaText = metaData.get("mt_comment").getEditor();
       
        // meta data are language independent by concept -> use master language
        comment = metaText.get(context.getProject().getMasterLanguage());
    }
}

context.logInfo("comment=" + comment);

// store the comment
// TODO

Gruss

View solution in original post

3 Replies
gockel
Crownpeak employee

Hallo,

da mir nicht ganz klar geworden ist, an welcher Stelle sich der vom Redakteur eingegebene Kommentar wiederfinden/gespeichert werden soll, hier mal ein paar unterschiedliche Einstiegspunkte:

  1. Kommentare in den Verwaltungen
  2. Formulare im Workflow
  3. Formularelemente im Skript

zu 1.:

Seit Version 4.1 gibt es die Möglichkeit die Eingabe von Kommentaren in den Verwaltungen zu erzwingen. Vergleiche hierzu Kapitel 7.4.2 ff der Administratorendokumentation und dort den Abschnitt Versions-Kommentare erfassen

zu 2.:

Da Sie von der Freigabe sprachen und hierfür ja sicherlich ein Arbeitsablauf verwendet wird, hier der kurze Hinweis auf die Möglichkeit der Definition von Formularen für Arbeitsabläufe. Siehe hierzu Kapitel 4.4. ff aus der Entwicklerdokumentation.

zu 3.:

Die Nutzung von Formularelementen im Skript ist auch sehr einfach möglich. Hierzu ein kleines Beispiel in Bezug zu Ihrem Anwendungsfall:

* Definition der Eingabekomponente im Formularreiter des Skriptes:

gom.jpg

Skriptcode im Kanal html(HTML)


// script was started on this storeelement
element = context.getStoreElement();

// show the form dialog
data = context.showGui();

if (data == null) {
    // user abort (cancel)
    return;
}

// puh, user clicked "OK" 🙂

textEditor = data.get("st_comment").getEditor();

// text editor is defined language independent -> use master language
comment = textEditor.get(context.getProject().getMasterLanguage());
if (comment == null || comment.length() == 0) {
    // use fallback from metadata

    // do we have meta data defined
    if (element.hasMeta()) {
        metaData = element.getMeta();
       
        // get text editor from meta data
        metaText = metaData.get("mt_comment").getEditor();
       
        // meta data are language independent by concept -> use master language
        comment = metaText.get(context.getProject().getMasterLanguage());
    }
}

context.logInfo("comment=" + comment);

// store the comment
// TODO

Gruss

Sehr gut! Nr. 3 ist genau das, was ich brauchte.

Dann kann ich ja jetzt mein selbst erstelltes Fenster getrost wieder weghauen 😉

0 Kudos
zava
Elite Observer

ab FirstSpirit 5

FormData data = context.showForm();

und weiter wie immer mit formdata object

0 Kudos