Bug 26791 - umc.dialog.confirmForm()-Method zum Erstellen von Abfrage-Popups mit Formularelementen
umc.dialog.confirmForm()-Method zum Erstellen von Abfrage-Popups mit Formular...
Status: CLOSED FIXED
Product: UCS
Classification: Unclassified
Component: UMC (Generic)
UCS 3.0
Other Linux
: P3 enhancement (vote)
: UCS 3.1
Assigned To: Florian Best
Alexander Kläser
: interim-1
Depends on:
Blocks: 9899
  Show dependency treegraph
 
Reported: 2012-04-16 11:39 CEST by Alexander Kläser
Modified: 2012-12-12 21:08 CET (History)
0 users

See Also:
What kind of report is it?: ---
What type of bug is this?: ---
Who will be affected by this bug?: ---
How will those affected feel about the bug?: ---
User Pain:
Enterprise Customer affected?:
School Customer affected?:
ISV affected?:
Waiting Support:
Flags outvoted (downgraded) after PO Review:
Ticket number:
Bug group (optional):
Max CVSS v3 score:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Alexander Kläser univentionstaff 2012-04-16 11:39:39 CEST
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.
Comment 1 Florian Best univentionstaff 2012-08-31 10:08:24 CEST
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.
Comment 2 Alexander Kläser univentionstaff 2012-09-14 16:36:58 CEST
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.
Comment 3 Florian Best univentionstaff 2012-09-17 09:58:42 CEST
(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?)
Comment 4 Florian Best univentionstaff 2012-09-17 12:17:15 CEST
(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.
Comment 5 Alexander Kläser univentionstaff 2012-09-17 13:39:59 CEST
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.
Comment 6 Florian Best univentionstaff 2012-09-17 13:44:22 CEST
univention-management-console-frontend 2.0.60-1
Comment 7 Alexander Kläser univentionstaff 2012-09-17 14:23:05 CEST
QA: OK.
Comment 8 Stefan Gohmann univentionstaff 2012-12-12 21:08:28 CET
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".