Einlagern: Journal nicht abstürzen lassen, wenn noch nichts umgelagert wurde
[kivitendo-erp.git] / js / client_js.js
index 34b254b..e096d52 100644 (file)
@@ -4,10 +4,24 @@
 // "scripts/generate_client_js_actions.pl". See the documentation for
 // SL/ClientJS.pm for instructions.
 
-function eval_json_result(data) {
+namespace("kivi", function(ns) {
+ns.display_flash = function(type, message) {
+  $('#flash_' + type + '_content').text(message);
+  $('#flash_' + type).show();
+};
+
+ns.eval_json_result = function(data) {
   if (!data)
     return;
 
+  if (data.error)
+    return ns.display_flash('error', data.error);
+
+  $(['info', 'warning', 'error']).each(function(idx, category) {
+    $('#flash_' + category).hide();
+    $('#flash_' + category + '_content').empty();
+  });
+
   if ((data.js || '') != '')
     eval(data.js);
 
@@ -15,9 +29,13 @@ function eval_json_result(data) {
     $(data.eval_actions).each(function(idx, action) {
       // console.log("ACTION " + action[0] + " ON " + action[1]);
 
+      // ## Non-jQuery methods ##
+           if (action[0] == 'flash')                kivi.display_flash(action[1], action[2]);
+
       // ## jQuery basics ##
+
       // Basic effects
-           if (action[0] == 'hide')                 $(action[1]).hide();
+      else if (action[0] == 'hide')                 $(action[1]).hide();
       else if (action[0] == 'show')                 $(action[1]).show();
       else if (action[0] == 'toggle')               $(action[1]).toggle();
 
@@ -56,10 +74,23 @@ function eval_json_result(data) {
       else if (action[0] == 'removeProp')           $(action[1]).removeProp(action[2]);
       else if (action[0] == 'val')                  $(action[1]).val(action[2]);
 
+      // Class attribute
+      else if (action[0] == 'addClass')             $(action[1]).addClass(action[2]);
+      else if (action[0] == 'removeClass')          $(action[1]).removeClass(action[2]);
+      else if (action[0] == 'toggleClass')          $(action[1]).toggleClass(action[2]);
+
       // Data storage
       else if (action[0] == 'data')                 $(action[1]).data(action[2], action[3]);
       else if (action[0] == 'removeData')           $(action[1]).removeData(action[2]);
 
+      // Form Events
+      else if (action[0] == 'focus')                $(action[1]).focus();
+
+      // ## jqModal plugin ##
+
+      // Closing and removing the popup
+      else if (action[0] == 'jqmClose')             $(action[1]).jqmClose();
+
       // ## jstree plugin ##
 
       // Operations on the whole tree
@@ -76,6 +107,7 @@ function eval_json_result(data) {
       else if (action[0] == 'jstree:reopen')        $.jstree._reference($(action[1])).reopen();
 
       // Modifying nodes
+      else if (action[0] == 'jstree:create_node')   $.jstree._reference($(action[1])).create_node(action[2], action[3], action[4]);
       else if (action[0] == 'jstree:rename_node')   $.jstree._reference($(action[1])).rename_node(action[2], action[3]);
       else if (action[0] == 'jstree:delete_node')   $.jstree._reference($(action[1])).delete_node(action[2]);
       else if (action[0] == 'jstree:move_node')     $.jstree._reference($(action[1])).move_node(action[2], action[3], action[4], action[5]);
@@ -85,9 +117,25 @@ function eval_json_result(data) {
       else if (action[0] == 'jstree:deselect_node') $.jstree._reference($(action[1])).deselect_node(action[2]);
       else if (action[0] == 'jstree:deselect_all')  $.jstree._reference($(action[1])).deselect_all();
 
+      // ## other stuff ##
+      else if (action[0] == 'redirect_to')          window.location.href = action[1];
+      else if (action[0] == 'reinit_widgets')       kivi.reinit_widgets();
+
       else                                          console.log('Unknown action: ' + action[0]);
 
     });
 
   // console.log("current_content_type " + $('#current_content_type').val() + ' ID ' + $('#current_content_id').val());
-}
+};
+
+ns.submit_ajax_form = function(url, form_selector, additional_data) {
+  var separator = /\?/.test(url) ? '&' : '?';
+  $.post(url + separator + $(form_selector).serialize(), additional_data, ns.eval_json_result);
+  return true;
+};
+
+});
+
+// Local Variables:
+// mode: js
+// End: