kivi.detect_duplicate_ids_in_dom: Funktion zum Auffinden doppelter IDs im DOM
[kivitendo-erp.git] / js / kivi.js
index 2f6f232..1738422 100644 (file)
@@ -31,7 +31,7 @@ namespace("kivi", function(ns) {
   ns.parse_date = function(date) {
     var parts = date.replace(/\s+/g, "").split(ns._date_format.sep);
     date     = new Date(
-      ((parts[ ns._date_format.y ] || 0) * 1) || (new Date).getFullYear(),
+      ((parts[ ns._date_format.y ] || 0) * 1) || (new Date()).getFullYear(),
        (parts[ ns._date_format.m ] || 0) * 1 - 1, // Months are 0-based.
        (parts[ ns._date_format.d ] || 0) * 1
     );
@@ -111,20 +111,21 @@ namespace("kivi", function(ns) {
   };
 
   ns.t8 = function(text, params) {
-    var text = ns._locale[text] || text;
+    text = ns._locale[text] || text;
+    var key, value
 
     if( Object.prototype.toString.call( params ) === '[object Array]' ) {
       var len = params.length;
 
       for(var i=0; i<len; ++i) {
-        var key = i + 1;
-        var value = params[i];
+        key = i + 1;
+        value = params[i];
         text = text.split("#"+ key).join(value);
       }
     }
     else if( typeof params == 'object' ) {
-      for(var key in params) {
-        var value = params[key];
+      for(key in params) {
+        value = params[key];
         text = text.split("#{"+ key +"}").join(value);
       }
     }
@@ -236,6 +237,11 @@ namespace("kivi", function(ns) {
         kivi.PartPicker($(elt));
       });
 
+    if (ns.ProjectPicker)
+      ns.run_once_for('input.project_autocomplete', 'project_picker', function(elt) {
+        kivi.ProjectPicker($(elt));
+      });
+
     if (ns.CustomerVendorPicker)
       ns.run_once_for('input.customer_vendor_autocomplete', 'customer_vendor_picker', function(elt) {
         kivi.CustomerVendorPicker($(elt));
@@ -251,10 +257,6 @@ namespace("kivi", function(ns) {
     if (func)
       func();
 
-    ns.run_once_for('.tooltip', 'tooltip', function(elt) {
-      $(elt).tooltip();
-    });
-
     ns.run_once_for('.tooltipster', 'tooltipster', function(elt) {
       $(elt).tooltipster({
         contentAsHTML: false,
@@ -305,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
@@ -319,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) {
@@ -349,6 +361,8 @@ namespace("kivi", function(ns) {
         success: function(new_html) {
           dialog.html(new_html);
           dialog.removeClass('loading');
+          if (params.load)
+            params.load();
         }
       });
     }
@@ -401,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');