Hallo Jan,
kurze Antwort: Ja, das geht.
Du kannst über ein Modul / Executable ein dynamisches Formular bauen und dieses dann z.B. beim Klick auf einen FS-Button anzeigen lassen.
Ich habe das ganze mal zur Erstellung eines Produktvergleichs gemacht, so dass auf Basis der vorhandenen Produkteigenschaften Formularfelder erzeugt wurden um zu definieren ob das Produkt diese Eigenschaft hat oder nicht bzw. noch einen redaktionellen Kommentar dazu zu pflegen.
Die Logik, wie deine Textdatei in FS Formularelemente umgewandelt werden muss, musst du natürlich selbst festlegen und dann implementieren.
Vielleicht helfen dir die folgenden groben Hinweise ja schon weiter:
Die eigentliche Kunst liegt dann in diesem Beispiel im Service, der das Formular erstellt.
Je nach Eingabekomponente kann das etwas frickelig sein, da das Hinzufügen von Options zu Radio-Buttons z.B. nicht ganz intuitiv ist...
@Override
public Object execute(Map<String, Object> params) throws ExecutionException {
processScript(params);
return true;
}
void processScript(final Map<String, Object> params) {
init(params);
FormData formData = buildAndShowForm();
if (null == formData) {
CMSDialog.showInfoDialog("Komfortpflege abgebrochen",
"Die Komfortpflege wurde abgebrochen. \nEs wurden keine Daten gespeichert.");
} else {
saveFormValues(formData);
CMSDialog.showInfoDialog("Komfortpflege abgeschlossen",
"Die Komfortpflege wurde erfolgreich abgeschlossen. \nDie gepflegten Daten wurden gespeichert.");
}
}
private FormData buildAndShowForm() {
GomEditorProvider gomProvider = script.getGomProvider();
FormReturnWrapper returnWrapper = productCompareService.createForm(projectAgent.getId(), product, gomProvider);
gomProvider = returnWrapper.getGomEditorProvider();
String rulesetDefinition = returnWrapper.getRulesetDefinition();
script.setGomProvider(gomProvider);
script.setRulesetDefinition(rulesetDefinition);
defaultValues = returnWrapper.getDefaultValues();
setDefaults(defaultValues);
return context.showForm();
}
PS: Der FormReturnWrapper ist eine Klasse von mir, da mein Service nicht nur das Formular, sondern auch passende Regeln und Default-Values generiert. Damit wrappe ich diese drei Objekte in eines um es als ein return-Value aus dem Methodenaufruf zurückzugeben.
Grüße
Sandro