]> wagnertech.de Git - mfinanz.git/blobdiff - js/kivi.js
kivi.popup_dialog: auf jQuery UI basierende Popupdialoge
[mfinanz.git] / js / kivi.js
index bd169b2312093afbfa018db9d0e68fe38aad8b89..2be03018b007b90bb25e9e918cfcce8fa622fb31 100644 (file)
@@ -26,6 +26,69 @@ namespace("kivi", function(ns) {
   ns.setupLocale = function(locale) {
     ns._locale = locale;
   };
+
+  ns.reinit_widgets = function() {
+    $('.datepicker').each(function() {
+      $(this).datepicker();
+    });
+
+    if (ns.PartPicker)
+      $('input.part_autocomplete').each(function(idx, elt){
+        kivi.PartPicker($(elt));
+      });
+  };
+
+  // Return a function object by its name (a string). Works both with
+  // global functions (e.g. "check_right_date_format") and those in
+  // namespaces (e.g. "kivi.t8").
+  // Returns null if the object is not found.
+  ns.get_function_by_name = function(name) {
+    var parts = name.match("(.+)\\.([^\\.]+)$");
+    if (!parts)
+      return window[name];
+    return namespace(parts[1])[ parts[2] ];
+  };
+
+  // Open a modal jQuery UI popup dialog. The content is loaded via AJAX.
+  //
+  // Parameters:
+  // - id: dialog DIV ID (optional; defaults to 'jqueryui_popup_dialog')
+  // - url, data, type: passed as the first three arguments to the $.ajax() call
+  // - dialog: an optional object of options passed to the $.dialog() call
+  ns.popup_dialog = function(params) {
+    var dialog;
+
+    params            = params        || { };
+    var id            = params.id     || 'jqueryui_popup_dialog';
+    var dialog_params = $.extend(
+      { // kivitendo default parameters:
+          width:  800
+        , height: 500
+        , modal:  true
+      },
+        // User supplied options:
+      params.dialog || { },
+      { // Options that must not be changed:
+        close: function(event, ui) { dialog.remove(); }
+      });
+
+    $('#' + id).remove();
+
+    dialog = $('<div style="display:none" class="loading" id="' + id + '"></div>').appendTo('body');
+    dialog.dialog(dialog_params);
+
+    $.ajax({
+      url:     params.url,
+      data:    params.data,
+      type:    params.type,
+      success: function(new_html) {
+        dialog.html(new_html);
+        dialog.removeClass('loading');
+      }
+    });
+
+    return true;
+  };
 });
 
 kivi = namespace('kivi');