kivi.detect_duplicate_ids_in_dom: Funktion zum Auffinden doppelter IDs im DOM
[kivitendo-erp.git] / js / kivi.js
index 058c8c5..1738422 100644 (file)
@@ -307,11 +307,13 @@ namespace("kivi", function(ns) {
   // - id: dialog DIV ID (optional; defaults to 'jqueryui_popup_dialog')
   // - url, data, type: passed as the first three arguments to the $.ajax() call if an AJAX call is made, otherwise ignored.
   // - dialog: an optional object of options passed to the $.dialog() call
+  // - load: an optional function that is called after the content has been loaded successfully (only if an AJAX call is made)
   ns.popup_dialog = function(params) {
     var dialog;
 
     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 +323,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) {
@@ -351,6 +361,8 @@ namespace("kivi", function(ns) {
         success: function(new_html) {
           dialog.html(new_html);
           dialog.removeClass('loading');
+          if (params.load)
+            params.load();
         }
       });
     }
@@ -403,6 +415,22 @@ namespace("kivi", function(ns) {
     console.error('kivi.run("' + function_name + '"): No function by that name found');
     return undefined;
   };
+
+  ns.detect_duplicate_ids_in_dom = function() {
+    var ids   = {},
+        found = false;
+
+    $('[id]').each(function() {
+      if (this.id && ids[this.id]) {
+        found = true;
+        console.warn('Duplicate ID #' + this.id);
+      }
+      ids[this.id] = 1;
+    });
+
+    if (!found)
+      console.log('No duplicate IDs found :)');
+  };
 });
 
 kivi = namespace('kivi');