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