Zum Hauptinhalt gehen

Eingabe auf Ursprungswert zurücksetzen - eigenentwickelte Eingabekomponente

Kommentare

8 Kommentare

  • Zendesk API User
    Author: hoebbel - 3/11/2021 9:49

    Hallo Julia,

    ich kenne mich mit eigenen Eingabekomponenten zwar nicht aus, aber allgemein gibt es einen Unterschied zwischen einer leeren und einer nicht gesetzten Eingabekomponente.

    Im XML der Persistenz ist dies das Attribut set="1" (gesetzt) oder set="0". In der Praxis sieht das dann beispielsweise so aus:

    <CMS_VALUE name="st_input_text"><LANG id="§" set="0"/></CMS_VALUE>

    <CMS_VALUE name="st_input_text"><LANG id="§" set="1"><TEXT/></LANG></CMS_VALUE>

    Die erste Zeile zeigt eine nicht gesetzte CMS_INPUT_TEXT Eingabekomponente an, die zweite eine, in der Inhalt vorhanden war, der gelöscht wurden.

    Um die Eingabekomponente wieder "ungesetzt" zu bekommen, muss man null in das FormField schreiben.

    Mit Templatemitteln geschieht dies über einen FS_BUTTON, der die entsprechende Eingabekomponente an ein Skript übergibt, die dann wiederum null setzt, also beispielsweise so:

      <FS_BUTTON name="delete_meta_text" noBreak="yes" onClick="script:delete_component">

        <LANGINFOS>

          <LANGINFO lang="*" label="Delete data of textfield"/>

        </LANGINFOS>

        <PARAMS>

          <PARAM name="component_to_delete">#field.st_input_text</PARAM>

        </PARAMS>

      </FS_BUTTON>

    import de.espirit.firstspirit.forms.FormField;

    if (component_to_delete instanceof FormField) { 

    component_to_delete.set(null); 

    }

    ich hoffe, dass hilft Dir bei deinem Problem weiter.

    Viele Grüße

    Holger

    0
  • Zendesk API User
    Author: felix_reinhold - 3/11/2021 10:12

    Hallo Julia,

    nur, um mal kurz eine Alternative in den Raum zu werfen:

    Warum eine eigene Eingabekomponente, die im Regelfall schlechter zu warten ist und gleichzeitig auch nochmal für CC und SA separat behandelt werden muss?

    Ich glaube in deinem Fall hätte ein einfach Button mit onDrop gereicht, der ein Executable aufruft, dass ein Standardformular befüllt.

    In meinen Augen wesentlich geringerer Aufwand und vermutlich besser wartbar :smileyhappy:

    Das clearen wäre da dann auch genau so wie von Holger beschrieben, denn der Delete-Button wäre in diesem Fall ein einfacher, zweiter FS_BUTTON.

    Viele Grüße

    Felix

    0
  • Zendesk API User
    Author: StefanSchulz - 3/11/2021 11:59

    Hi Julia,

    um noch eine dritte Alternative auf den Tisch zu legen: Einbindungen externer Datenquellen, wie MAMs, kann man idealerweise über unseren DataAccessPlugin Mechanismus umsetzen. Hat man ein solches Plugin, kann man externe Datenreferenzen mit einer FS_INDEX Komponente einbinden. Diese ist generell zwar eine mehrwertige Komponente, aber man kann via Regeln die Anzahl der Einträge auf einen Eintrag validieren. Bei der Ausgabe (Generierung) würde man dann prüfen, ob ein Eintrag vorhanden ist und ansonsten den Wert aus der Referenz-Komponente nehmen.

    Vorteile:

    • man benötigt keine eigene Eingabekomponente
    • man benötigt keinen Umweg über FS_BUTTON
    • Leerprüfung ist eine Empty-Prüfung auf den Index
    • innerhalb der Generierung kann man auf die Plugin-spezifischen Element und Daten zugreifen
    • die Anzeige der Daten des eingebundenen Elements ist als Snippet im Plugin definierbar
    • all das funktioniert Client-unabhängig sowohl im SiteArchitect als auch ContentCreator (und FragmentCreator)

    Vielleicht eine praktischere Alternative für deinen Anwendungsfall.

    Beste Grüße

    Stefan

    0
  • Zendesk API User
    Author: mbergmann - 3/12/2021 16:02

    Hallo Julia,

    Ich hätte jetzt auch ein DAP vorgeschlagen... Hierzu gab es sogar mal ein Techinar. Infos inkl. Aufzeichnung findest du hier:

    Techinar: Neue Eingabekomponenten und DataAccessPlugins

    Viele Grüße

    Michael

    0
  • Zendesk API User
    Author: felix_reinhold - 3/12/2021 16:20

    Findet ihr das DAP nicht zu aufwendig für sowas?

    Mit dem Button ist es ein kleines TemplateFormular und ein Script mit ~20 Zeilen Code, das man im Zweifelsfall auch ohne Modul umsetzen könnte.

    Viele Grüße

    Felix

    0
  • Zendesk API User
    Author: StefanSchulz - 3/15/2021 6:47

    Hi Felix,

    ein FS_BUTTON ist technisch sicherlich auch möglich. Vermutlich von der Wartbarkeit nicht so schön, zumal die Persistenz sehr lose mit der Skriptfunktionalität verknüpft ist.

    Es kommt auf Einsatzzweck an und mit was ein Redakteur gut umgehen kann. Das hängt sicherlich vom Projekt und vom Kunden ab.

    Beste Grüße

    Stefan

    0
  • Zendesk API User
    Author: julia - 3/15/2021 17:31

    Hallo zusammen,

    vielen lieben Dank für die ganzen Beiträge.

    Um Euch nicht zu verwirren, habe ich das ursprüngliche Problem gar nicht erwähnt, welches auch beim e-Spirit Helpdesk lag.

    Und zwar:

    Als ich meinen Delete Button gedrückt habe, habe ich in der Eingabekomponente nur leer Felder gesehen und alles sah gut aus. Aber in der Versionshistorie standen da immer komische null Werte.

    Ab und an kam es vor (die Redakteure berichteten), dass diese komischen Werte (aus der Versionshistorie) dann tatsächlich in der Eingabekomponente gelandet waren und wir eine falsche CDN URL hatten.

    Der Fehler ist aber nicht aufgetreten, als die Redakteure das Icon „Vorgabewert setzen“ betätigt haben. Dann war der Wert in der Eingabemaske und in der Versionshistorie tatsächlich leer. Somit wollte in durch meinen Delete-Button auch den Zustand erlangen wie beim „Vorgabewert setzen“.

    Jetzt habe ich FirstSpirit auf die Version 02-2021 aktualisiert und ohne weitere Schritte zu tätigen sieht es jetzt gut in der Versionshistorie aus. Somit war es ein Bug in einer alten Version.

    Vielen Dank und Gruß,

    Julia

    0
  • Zendesk API User
    Author: StefanSchulz - 3/16/2021 6:40

    Hallo Julia,

    schön zu lesen. Noch viel Erfolg im Projekt. :smileyhappy:

    Beste Grüße

    Stefan

    0

Bitte melden Sie sich an, um einen Kommentar zu hinterlassen.