dluettel
Elite Observer

Liste in ContentCreator anzeigen

Jump to solution

Hallo Zusammen,

ich will ein Skritp schreiben, welche später in ContentCreator ausgeführt werden soll.

Hier möchte ich folgendes tun:

- hole mir alle Aufträge von dem Projekt in eine Liste

- Zeige diese Liste dem User an, damit er einen Auftrag auswählen kann

- User wählt Auftrag aus und den Auftrag wird ausgeführt.

Im SiteArchitect kann ich ja ganz einfach einen  JOptionPane.showInputDialog verwenden für die Liste anzeigen.

   String[] choices = new String[listString.size()];

   choices = listString.toArray(choices);

    String input = (String) JOptionPane.showInputDialog(null, "Bitte wählen Sie den Auftrag aus.",

        "The Choice of a Lifetime", JOptionPane.QUESTION_MESSAGE, null, choices, choices[0]);

Aber wie kann ich eine Liste im ContentCreator anzeigen und auch gleichzeitig den Rückgabe wert erhalten?

Gruß

Daniel

0 Kudos
1 Solution

Accepted Solutions
philippr
Returning Spectator

Hi Daniel,

soweit mir bekannt sollte das über den OperationAgent und der ShowFormDialogOperation funktionieren.

Wenn du ein Script erstellst, welches im ContentCreator genutzt werden kann, kannst du dem Formularkanal des Scriptes mit den notwendigen Eingabekomponeten erstellen oder dir in dem Script eine Eingabekomponente zusammenbauen:

/* Ungetestet als Script */

opAgent = context.requireSpecialist(OperationAgent.TYPE);

langAgent = context.requireSpecialist(LanguageAgent.TYPE);

masterLang = langAgent.getMasterLanguage();

formsAgent = context.requireSpecialist(FormsAgent.TYPE);

generateForm() {

          formBuilder = new StringBuilder();

          formBuilder.append("<CMS_MODULE>");

          formBuilder.append("<CMS_LABEL>");

          formBuilder.append("<LANGINFOS>");

          formBuilder.append("<LANGINFO lang=\"*\" label=\"This Script copies all language dependend information from source language to target language(s)\"/>");

          formBuilder.append("</LANGINFOS>");

          formBuilder.append("</CMS_LABEL>");

          formBuilder.append("<CMS_INPUT_COMBOBOX name=\"sc_sourceLanugage\" allowEmpty=\"no\" hFill=\"yes\" useLanguages=\"no\" singleLine=\"no\">");

          formBuilder.append("<ENTRIES>");

          for (lang : context.getProject().getLanguages()) {

                    formBuilder.append("<ENTRY value=\""+lang.getAbbreviation()+"\">");

                    formBuilder.append("<LANGINFOS>");

                    formBuilder.append("<LANGINFO lang=\"*\" label=\""+lang.getAbbreviation()+"\"/>");

                    formBuilder.append("</LANGINFOS>");

                    formBuilder.append("</ENTRY>");

          }

          formBuilder.append("</ENTRIES>");

          formBuilder.append("<LANGINFOS>");

          formBuilder.append("<LANGINFO lang=\"*\" label=\"Source Language\"/>");

          formBuilder.append("</LANGINFOS>");

          formBuilder.append("</CMS_INPUT_COMBOBOX>");

        formBuilder.append("</CMS_MODULE>");

}

sfdOp = opAgent.getOperation(ShowFormDialogOperation.TYPE);

sfdOp.setTitle("Title");

inputData = null;

try {

          inputData = sfdOp.perform(formsAgent.getForm(generateForm()), langAgent.getLanguages());

} catch(e) {

          //error

}

if(inputData != null) {

          sourceLang = inputData.get(masterLang, "sc_sourceLanugage").get();

}


Das dürfte in ContentCreator und SiteArchitect funktionieren.

Vielleicht kann das ja hier noch kurz jemand bestätigen, das habe ich nicht getestet.

Grüße,

Philipp

View solution in original post

0 Kudos
3 Replies
philippr
Returning Spectator

Hi Daniel,

soweit mir bekannt sollte das über den OperationAgent und der ShowFormDialogOperation funktionieren.

Wenn du ein Script erstellst, welches im ContentCreator genutzt werden kann, kannst du dem Formularkanal des Scriptes mit den notwendigen Eingabekomponeten erstellen oder dir in dem Script eine Eingabekomponente zusammenbauen:

/* Ungetestet als Script */

opAgent = context.requireSpecialist(OperationAgent.TYPE);

langAgent = context.requireSpecialist(LanguageAgent.TYPE);

masterLang = langAgent.getMasterLanguage();

formsAgent = context.requireSpecialist(FormsAgent.TYPE);

generateForm() {

          formBuilder = new StringBuilder();

          formBuilder.append("<CMS_MODULE>");

          formBuilder.append("<CMS_LABEL>");

          formBuilder.append("<LANGINFOS>");

          formBuilder.append("<LANGINFO lang=\"*\" label=\"This Script copies all language dependend information from source language to target language(s)\"/>");

          formBuilder.append("</LANGINFOS>");

          formBuilder.append("</CMS_LABEL>");

          formBuilder.append("<CMS_INPUT_COMBOBOX name=\"sc_sourceLanugage\" allowEmpty=\"no\" hFill=\"yes\" useLanguages=\"no\" singleLine=\"no\">");

          formBuilder.append("<ENTRIES>");

          for (lang : context.getProject().getLanguages()) {

                    formBuilder.append("<ENTRY value=\""+lang.getAbbreviation()+"\">");

                    formBuilder.append("<LANGINFOS>");

                    formBuilder.append("<LANGINFO lang=\"*\" label=\""+lang.getAbbreviation()+"\"/>");

                    formBuilder.append("</LANGINFOS>");

                    formBuilder.append("</ENTRY>");

          }

          formBuilder.append("</ENTRIES>");

          formBuilder.append("<LANGINFOS>");

          formBuilder.append("<LANGINFO lang=\"*\" label=\"Source Language\"/>");

          formBuilder.append("</LANGINFOS>");

          formBuilder.append("</CMS_INPUT_COMBOBOX>");

        formBuilder.append("</CMS_MODULE>");

}

sfdOp = opAgent.getOperation(ShowFormDialogOperation.TYPE);

sfdOp.setTitle("Title");

inputData = null;

try {

          inputData = sfdOp.perform(formsAgent.getForm(generateForm()), langAgent.getLanguages());

} catch(e) {

          //error

}

if(inputData != null) {

          sourceLang = inputData.get(masterLang, "sc_sourceLanugage").get();

}


Das dürfte in ContentCreator und SiteArchitect funktionieren.

Vielleicht kann das ja hier noch kurz jemand bestätigen, das habe ich nicht getestet.

Grüße,

Philipp

0 Kudos

Hallo Philipp,

vielen Dank. Jetzt starte ich anschließend noch einen Auftrag aus der Maske heraus. Leider kommt bei dem Status dann immer NOT_STARTED, obwohl der Auftrag durchläuft.

ScheduleEntryControl sec = scheduleEntry.execute();


0 Kudos
philippr
Returning Spectator

Puh, da bin ich überfragt.

ggf. hilft:

https://community.e-spirit.com/message/18059#18059

  • hilft ein refresh() auf sec?

Ansonsten wäre das für mich ein Fall für den helpdesk.

Grüße,

Philipp

0 Kudos