kivi.popup_dialog(): übergebenen close-Handler auch ausführen
authorMoritz Bunkus <m.bunkus@linet-services.de>
Wed, 4 Jan 2017 16:01:12 +0000 (17:01 +0100)
committerMoritz Bunkus <m.bunkus@linet-services.de>
Wed, 4 Jan 2017 16:05:39 +0000 (17:05 +0100)
Die Funktion kivi.popup_dialog() installiert ihren eigenen
close-Handler, um den in dem Moment noch vorhandenen Dialog zu
entfernen (sofern der Dialog aus HTML-Code erzeugt oder von einer URL
nachgeladen wurde) bzw. zu schließen (sofern ein vorher bereits im DOM
existierendes Element angezeigt wurde). Dadurch werden vom Aufrufer
vergebene close-Handler überschrieben.

Da es mehrere Stellen im Programm gibt, an denen ein close-Handler
übergeben wird, wurde kivi.popup_dialog() nun so erweitert, dass es den
übergebenen Handler speichert und zuerst ausführt und erst anschließend
das Entfernen respektive Schließen durchführt.

js/kivi.js

index 058c8c5..c935c34 100644 (file)
@@ -312,6 +312,7 @@ namespace("kivi", function(ns) {
 
     params            = params        || { };
     var id            = params.id     || 'jqueryui_popup_dialog';
+    var custom_close  = params.dialog ? params.dialog.close : undefined;
     var dialog_params = $.extend(
       { // kivitendo default parameters:
           width:  800
@@ -321,7 +322,15 @@ namespace("kivi", function(ns) {
         // User supplied options:
       params.dialog || { },
       { // Options that must not be changed:
-        close: function(event, ui) { if (params.url || params.html) dialog.remove(); else dialog.dialog('close'); }
+        close: function(event, ui) {
+          if (custom_close)
+            custom_close();
+
+          if (params.url || params.html)
+            dialog.remove();
+          else
+            dialog.dialog('close');
+        }
       });
 
     if (!params.url && !params.html) {