X-Git-Url: http://wagnertech.de/git?a=blobdiff_plain;f=SL%2FClientJS.pm;h=7eb092c4733c98c23ecc0779cbc4020aca76702f;hb=3ac83c6134a876990a2b5e26075e4304b3ce1cae;hp=1218e4cc55a51d3ce8a4a1c1f819696ee016dc50;hpb=5551a36b8f059aa03a371fb5a851c116d305fccb;p=kivitendo-erp.git diff --git a/SL/ClientJS.pm b/SL/ClientJS.pm index 1218e4cc5..7eb092c47 100644 --- a/SL/ClientJS.pm +++ b/SL/ClientJS.pm @@ -14,7 +14,7 @@ use Rose::Object::MakeMethods::Generic my %supported_methods = ( # ## Non-jQuery methods ## - flash => 2, # display_flash(, ) + flash => 2, # kivi.display_flash(, ) # ## jQuery basics ## @@ -70,6 +70,11 @@ my %supported_methods = ( # Form Events focus => 1, + # ## jqModal plugin ## + + # Closing and removing the popup + jqmClose => 1, + # ## jstree plugin ## pattern: $.jstree._reference($()).() # Operations on the whole tree @@ -95,6 +100,11 @@ my %supported_methods = ( 'jstree:select_node' => 2, # $.jstree._reference($()).(, true) 'jstree:deselect_node' => 2, 'jstree:deselect_all' => 1, + + # ## other stuff ## + redirect_to => 1, # window.location.href = + + reinit_widgets => 0, # kivi.reinit_widgets() ); sub AUTOLOAD { @@ -160,6 +170,7 @@ sub to_array { sub render { my ($self, $controller) = @_; + $self->reinit_widgets if $::request->presenter->need_reinit_widgets; return $controller->render(\$self->to_json, { type => 'json' }); } @@ -209,12 +220,12 @@ with jQuery First some JavaScript code: // In the client generate an AJAX request whose 'success' handler - // calls "eval_json_response(data)": + // calls "eval_json_result(data)": var data = { action: "SomeController/the_action", id: $('#some_input_field').val() }; - $.post("controller.pl", data, eval_json_response); + $.post("controller.pl", data, eval_json_result); Now some Perl code: @@ -270,7 +281,7 @@ There are three things that need to be done for this to work: =item 1. The "client_js.js" has to be loaded before the AJAX request is started. -=item 2. The client code needs to call C with the result returned from the server. +=item 2. The client code needs to call C with the result returned from the server. =item 3. The server must use this module. @@ -389,8 +400,8 @@ But it is easier to integrate into a method call chain, e.g.: Display a C<$message> in the flash of type C<$type>. Multiple calls of C on the same C<$self> will be merged by type. -On the client side the flash of this type will be cleared before the -message is shown. +On the client side the flashes of all types will be cleared after each +successful ClientJS call that did not end with C<$js-Eerror(...)>. =item C @@ -401,6 +412,14 @@ client will then show the message in the 'error' flash. The messages of multiple calls of C on the same C<$self> will be merged. +=item C + +Redirects the browser window to the new URL by setting the JavaScript +property C. Note that +L is AJAX aware and uses this +function if the current request is an AJAX request as determined by +L. + =back =head2 JQUERY FUNCTIONS