my %supported_methods = (
# ## Non-jQuery methods ##
- flash => 2, # display_flash(<TARGET>, <ARGS>)
+ flash => 2, # kivi.display_flash(<TARGET>, <ARGS>)
# ## jQuery basics ##
# Form Events
focus => 1,
+ # ## jqModal plugin ##
+
+ # Closing and removing the popup
+ jqmClose => 1,
+
# ## jstree plugin ## pattern: $.jstree._reference($(<TARGET>)).<FUNCTION>(<ARGS>)
# Operations on the whole tree
'jstree:select_node' => 2, # $.jstree._reference($(<TARGET>)).<FUNCTION>(<ARGS>, true)
'jstree:deselect_node' => 2,
'jstree:deselect_all' => 1,
+
+ # ## other stuff ##
+ redirect_to => 1, # window.location.href = <TARGET>
+
+ reinit_widgets => 0, # kivi.reinit_widgets()
);
sub AUTOLOAD {
sub render {
my ($self, $controller) = @_;
+ $self->reinit_widgets if $::request->presenter->need_reinit_widgets;
return $controller->render(\$self->to_json, { type => 'json' });
}
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:
=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<eval_json_response()> with the result returned from the server.
+=item 2. The client code needs to call C<kivi.eval_json_result()> with the result returned from the server.
=item 3. The server must use this module.
Display a C<$message> in the flash of type C<$type>. Multiple calls of
C<flash> 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-E<gt>error(...)>.
=item C<error $message>
The messages of multiple calls of C<error> on the same C<$self> will
be merged.
+=item C<redirect_to $url>
+
+Redirects the browser window to the new URL by setting the JavaScript
+property C<window.location.href>. Note that
+L<SL::Controller::Base/redirect_to> is AJAX aware and uses this
+function if the current request is an AJAX request as determined by
+L<SL::Request/is_ajax>.
+
=back
=head2 JQUERY FUNCTIONS