Skip to main content

Formular aus Datei erstellen?

Comments

3 comments

  • Zendesk API User
    Author: bIT_sosswald - 11/29/2019 8:48

    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
  • Zendesk API User
    Author: mbergmann - 11/29/2019 12:10

    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

    0
  • Zendesk API User
    Author: jan_bogutzki - 4/11/2020 20:33

    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

Please sign in to leave a comment.