Questions & Answers

SOLVED
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

Type a product name