ItemListFormField erweitern

  • Hallo zusammen,


    für ein Formular habe ich bisher das ItemListFormField verwendet, um darin E-Mail-Adressen angeben zu können. Nach dem Absenden werden die Werte darin alle darauf kontrolliert, dass es richtige E-Mail-Adressen sind.


    Jetzt habe ich in meiner Software allerdings noch einzelne Verteiler, die einfach nur aus mehreren E-Mail-Adressen bestehen. Jetzt möchte ich, dass man in dem ItemListFormField auch diese Verteiler eingeben kann. Dazu wären einerseits die Suggestions hilfreich (wie z.B. bei UserFormField), andererseits aber auch das explizite Speichern der objectID für die Verteiler. Die E-Mail-Adressen selber können (und sollen) einfach die objectID 0 (Standard im ItemListFormField) behalten, damit diese von den Verteilern unterschieden werden können. Dann dürfte ich am Ende also eine ItemList bestehend aus E-Mail-Adressen mit der objectID 0 haben und Verteilernamen mit deren entsprechenden objectID.


    Meine Idee dazu war jetzt das ItemListFormField zu erweitern um meine Anforderungen hinzuzufügen. Das ist soweit auch denke ich recht einfach machbar. Durch Angabe des javaScriptDataHandlerModule und des templateName sollte ich weiter meine eigene Implementierung auch im Frontend einspielen. Gesagt, getan: Mein Template sieht wie folgt aus und gleicht dem Original des ItemListFormField, bis auf das Modul im require-Teil:


    Das Modul MailingList sieht bei mir jetzt aktuell wie folgt aus:

    Auch hier habe ich mich stark an der bereits vorhandenen Implementierung der UserFormField orientiert, ebenfalls beim Handler-Module:

    Jetzt stellt sich mir erstmal die Frage, wie ich es jetzt mache, dass bei Mail-Adressen die objectID 0 eingetragen wird und bei über die Suggestions angeklickten Verteiler die entsprechende objectID des Verteilers genutzt wird.


    Neben diesem Problem stoße ich noch auf folgendes andere Problem: Beim Absenden des Formulars wird der Inhalt meines MailingListFormField gelöscht und danach kommt der Fehler, dass ich das Feld ausfüllen muss. Die Daten werden also nicht "on Submit" ans Formular angehängt wie bei der ItemList selber, vermute ich. Muss ich da auch noch etwas ändern?


    Hoffe darauf, dass mir da jemand helfen kann.


    Gruß

    ilou

    Edited once, last by ilou ().

  • Nachdem mir jetzt gestern ein Fehler in der ItemList aufgefallen ist, der aktuell auf seinen Merge wartet, werden die Objekte jetzt erfolgreich mit ihrer objectID (Suggestions mit objectID, einfache Mail-Adressen mit objectID 0) eingefügt. Jetzt stehe ich vor dem Problem, dass beim Auswerten der Daten, alle bis auf die letzte einfache Mail-Adresse entfernt werden, weil alle die objectID 0 haben. Das müsste ich noch irgendwie behoben bekommen, weiß aber nicht wie. Vielleicht kann da einer helfen.


    Und als zweites Problem habe ich nun, dass bei einem Fehler im Formular (z.B. weder eine Mail-Adresse, noch ein Verteiler) die bisher eingegebenen Daten verschwinden. Wie werden diese ins Formular geladen, insb. in dem speziellen Fall des hier erwähnten ItemListFormField?

  • Kurzes Update meinerseits:


    Ich konnte bisher folgende Probleme lösen:

    Die Trennung von Mail-Adressen und Verteilern habe ich jetzt so gelöst, dass die Mail-Adressen beim Absenden des Formulars aufsteigende negative (also eher absteigend; -1, -2, -3, ...) IDs erhalten. Damit können die serverseitig entsprechend überprüft und gehandhabt werden. Beim hinzufügen selber erhalten diese die objectId 0, was hier aber erstmal egal ist.


    Und als zweites Problem habe ich nun, dass bei einem Fehler im Formular (z.B. weder eine Mail-Adresse, noch ein Verteiler) die bisher eingegebenen Daten verschwinden. Wie werden diese ins Formular geladen, insb. in dem speziellen Fall des hier erwähnten ItemListFormField?

    Das Problem konnte ich lösen, bzw. entstand durch den fehlenden Parameter values in der MailingListItemList. Dabei habe ich auch angepasst, dass im Template die Werte als JSON-Array übergeben werden, damit die einzelnen Empfänger (wieder ID 0) und Verteiler mit ihren IDs (wenn diese richtig vom Server übertragen werden, ist aber bisher nicht in der Datenbank implementiert) entsprechend angezeigt werden. Soweit funktioniert also eigentlich alles, wie ich es will.


    Ob es die richtige Entscheidung war, das so zu handhaben, wird sich noch herausstellen.


    Eine Frage bleibt aber offen: Wozu benötige ich genau das javaScriptDataHandlerModule?


    Gruß

    ilou