Search the FirstSpirit Knowledge Base
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
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
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
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(); |
Puh, da bin ich überfragt.
ggf. hilft:
https://community.e-spirit.com/message/18059#18059
Ansonsten wäre das für mich ein Fall für den helpdesk.
Grüße,
Philipp