Skip to main content

Wie komme ich an die Eingabekomponenten / das Formular einer Absatzvorlage per API

Comments

5 comments

  • Zendesk API User
    Author: Nitros - 6/11/2020 14:48

    Denkfehler. :smileyhappy:

    Vorlagen (magenta) haben keine Eingabefelder. Inhalte (grün) haben diese. Was man hier braucht ist also eine Section und kein SectionTemplate Objekt. Beachte, dass es zu einem Absatz mehre Inhalte geben kann. Prinzipiell sind sie im DataProvider Interface definiert. Section implementiert dieses.

    Der Rest sollte recht einfach sein:

    public Set<FormField<?>> getFields(final DataProvider dataProvider, final Language language){

        final FormData formData = dataProvider.getFormData();

        final Spliterator<GomFormElement> spliterator = formData.getForm()

            .forms()

            .spliterator();

        return StreamSupport.stream(spliterator, false)

            .map(GomFormElement::name)

            .map(fieldName -> formData.get(language, fieldName))

            .collect(Collectors.toSet());

    }

    0
  • Zendesk API User
    Author: julia - 6/12/2020 8:04

    Nein, ich brauche tatsächlich das Kopieren des Formulare auf Templateebene.

    Der Unterschied zwischen Template (magenta) und Inhalte (grün) ist mir bekannt :smileywink:!

    Ich möchte nicht die Inhalte kopieren, sondern die Formulare, also Eingabefelder (nicht die Inhalte, die sich in den Eingabefeldern befinden!)

    Kann mir hier Jemand helfen?

    Danke im Voraus

    0
  • Zendesk API User
    Author: Peter_Jodeleit - 6/12/2020 9:13

    Hallo Julia,

    das geht am einfachsten indem du den Quelltext der Formularbeschreibung in das Ziel kopierst:

    targetSectionTemplate.setGomSource(sourceSectionTemplate.getGomSource());

    LG, Peter

    0
  • Zendesk API User
    Author: Nitros - 6/12/2020 9:30

    Ach so, verstehe.

    Wenn es tatsächlich einfach überschrieben werden soll, dann würde ich getGomSource und setGomSource probieren. Das scheint dem Formular Tab zu entsprechen.

    Ansonsten sehe ich in der Doku, GomEditorProvider extends GomList<GomElement>. Bei GomList scheint es sich um eine Implementierung vom java.util.List zu handelt. Habt ihr einmal ausprobiert am GomEditorProvider einfach die get() und add() Methode zu nutzen?

    Also...

    GomEditorProvider provider = sectionTemplate.getGomProvider();

    GomElement element = provider.get(0);

    otherSectionTemplate.getGomProvider().add(element);

    Das scheint zu funktionieren.

    Edit: Ninjaed. :smileysad:

    0
  • Zendesk API User
    Author: julia - 6/12/2020 11:01

    Hallo Peter und Jens,

    danke für die schnellen Rückmeldungen.

    Beide Varianten funktionieren super, wobei man beachten muss, dass bei der ersten das komplette Formular überschrieben wird und somit die alten Felder weg sind.

    Und bei der zweiten Variante nicht vergessen den GomProvider wieder zu setzen.

    GomEditorProvider otherProvider = otherSectionTemplate.getGomProvider();

    otherProvider.add(element); 

    otherSectionTemplate.setGomProvider(otherProvider);

    Danke und Gruß

    Julia

    0

Please sign in to leave a comment.