Questions & Answers

SOLVED
jan_bogutzki
I'm new here

Formular aus Datei erstellen?

Jump to solution

Hallo Community,

wir planen aktuell die Umstellung der Sprachdatei fรผr unseren Angular-Client ins CMS zu ziehen und somit die Texte in die Hand der Fachabteilung zu geben. Dafรผr muss dann aber auch eine Absatzvorlage erstellt werden, die sich dynamisch aus einer Textdatei mit den Platzhaltern erstellt.

Ist eine dynamische Generierung des Formulars mรถglich? Bisher konnte ich in der Doku dazu nichts finden.

GruรŸ

Jan

1 Solution

Accepted Solutions

Hallo Michael,

es geht um Sprachschnipsel aus der Anwendung selbst. Bisher wird diese von den Entwicklern gepflegt. Es gibt aber immer wieder den Wunsch, dass sich die Texte รคndern sollen, auch fรผr bestimmte Zeitfenster. Da wir im CMS eine Zeitsteuerung haben und die Redakteure dort alles selbst pflegen kรถnnen, liegt das nahe die Daten nun dort hin zu verlagern.

Inzwischen haben wir uns fรผr die Datenquelle entschieden. Die Redakteure fanden dieses Element am brauchbarsten fรผr ihre Arbeit (Klickpfade, Suche usw.)

GruรŸ

Jan

View solution in original post

0 Kudos
3 Replies
bIT_sosswald
Returning Responder

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

0 Kudos
mbergmann
Crownpeak employee

Hallo Jan,

schau Dir bitte mal den FormsAgent und die ShowFormDialogOperation an - darรผber kannst Du Formulare dynamisch erzeugen, indem Du lediglich das entsprechende XML zusammen baust und รผbergibst. Siehe z.B. auch hier: Re: Freigabeprozess: Wie kann ich dort ein eigenes Panel anzeigen?

Das Ganze eignet sich aber natรผrlich nur, wenn man das Formular "zwischendurch" braucht, d.h. es entsteht daraus kein Template.

Um was fรผr Texte geht es denn da? Wenn es eine eher "allgemeine" Liste von Texten ist, kรถnnte man das ggf. รผber globale Inhalte oder Datenquellen lรถsen und dort immer nur "einzelne" Textelemente hinterlegen.

Viele GrรผรŸe

Michael

Hallo Michael,

es geht um Sprachschnipsel aus der Anwendung selbst. Bisher wird diese von den Entwicklern gepflegt. Es gibt aber immer wieder den Wunsch, dass sich die Texte รคndern sollen, auch fรผr bestimmte Zeitfenster. Da wir im CMS eine Zeitsteuerung haben und die Redakteure dort alles selbst pflegen kรถnnen, liegt das nahe die Daten nun dort hin zu verlagern.

Inzwischen haben wir uns fรผr die Datenquelle entschieden. Die Redakteure fanden dieses Element am brauchbarsten fรผr ihre Arbeit (Klickpfade, Suche usw.)

GruรŸ

Jan

0 Kudos

Type a product name