Univention Bugzilla – Bug 26791
umc.dialog.confirmForm()-Method zum Erstellen von Abfrage-Popups mit Formularelementen
Last modified: 2012-12-12 21:08:28 CET
Wir verwenden öfters Popup-Dialoge, die Formularelemente enthalten. Es wäre hilfreich eine dies über eine Methode zu generalisieren, bspw.: > umc.dialog.confirmForm(/*Object[]*/widgets, /*Object[]*/buttons, /*Object[]?*/layout) Dabei können die gleichen Formulardefinition wie sie in umc.widgets.Form verwendet werden eingesetzt werden. umc.dialog.confirmForm() gibt ein Deferred-Objekt zurück, alternative können auch Callbacks über 'buttons' registriert werden. Die Callbacks werden von der Methode noch einmal intern gekapselt (um für das Deferred-Objekt resolve() oder cancel() entsprechend aufzurufen). Wichtig ist, dass das Formular sowie der Popup-Dialog selber beim Schließen über destroyRecursive() aus dem DOM gelöscht werden.
Ist eingebaut in: univention-management-console-frontend (2.0.18-1) unstable; urgency=low . * umc.dialog: Added confirmForm function (Bug #26791) Die Methode wird in Bug #26329 gebraucht. (In reply to comment #0) > aufzurufen). Wichtig ist, dass das Formular sowie der Popup-Dialog selber beim > Schließen über destroyRecursive() aus dem DOM gelöscht werden. Es wird beachtet, dass das Formular und der Dialog beim Schließen/Bestätigen/Abbrechen aus dem DOM gelöscht werden.
Die folgenden Sachen sind noch aufgefallen: > require('umc/dialog').confirmForm([{ type: 'TextArea', name: 'foo' }], [{ name:'submit', label: 'Submit' }]) → this._() existiert nicht und sollte _() sein > require('umc/dialog').confirmForm([{ type: 'TextBox', name: 'Foo' }], [{ default: true, name:'submit', label: 'Submit' }], null, {title:'Title'}) Es wäre gut, dass submit-Event des Forms mit dem Klick des Default-Buttons zu verknüpfen. Der Parameter buttons könnte auch weggelassen werden (es gibt nur ok und abbrechen), dann müsste aber noch erlaubt werden, ein Label für den OK-Button anzugeben. TBD. > require('umc/dialog').confirmForm([{ type: 'TextBox', name: 'Foo' }], [{ default: true, name:'submit', label: 'Submit' }], null, {title:'Title'}).then(function(res) { console.log('###', res) }) Es kommt ein Fehler auf der Konsole das ist aber ein Problem mit umc/dialog:confirm() → Bug 28551 Das Form braucht seit Dojo 1.8 nicht mehr explizit destroyed zu werden. Gut wäre es, beim deferred.resolve() die Werte des Forms (und nicht den Wert des Buttons) zu übergeben.
(In reply to comment #2) > → this._() existiert nicht und sollte _() sein Fixed > Es wäre gut, dass submit-Event des Forms mit dem Klick des Default-Buttons zu > verknüpfen. Der Parameter buttons könnte auch weggelassen werden (es gibt nur > ok und abbrechen), dann müsste aber noch erlaubt werden, ein Label für den > OK-Button anzugeben. TBD. Parameter buttons wurde gelöscht ist aber durch options.buttons überschreibbar. Label für OK und Cancel können ebenfalls überschrieben werden. > Das Form braucht seit Dojo 1.8 nicht mehr explizit destroyed zu werden. Ok, entsprechende Stelle rausgelöscht. > Gut wäre es, beim deferred.resolve() die Werte des Forms (und nicht den Wert > des Buttons) zu übergeben. Ja, es werden die Werte des Forms im deferred übergeben. Der deferred.resolve wird jetzt nur noch aufgerufen, wenn der submit button geklickt wird. Es gibt dadurch keine Information mehr, ob/wann das Formular geschlossen wurde. (Soll das geändert werden?)
(In reply to comment #2) > Es wäre gut, dass submit-Event des Forms mit dem Klick des Default-Buttons zu > verknüpfen. Das wurde auch gemacht. Beim klick von cancel/etc. wird jetzt auch deferred.cancel aufgerufen.
QA: Soweit funktioniert alles, super! Wie besprochen wäre es gut für die Funktion nur einen Options-Parameter zu haben. Dann ist die API sauberer.
univention-management-console-frontend 2.0.60-1
QA: OK.
UCS 3.1-0 has been released: http://forum.univention.de/viewtopic.php?f=54&t=2125 If this error occurs again, please use "Clone This Bug".