off => 3,
one => 3,
- # ## jqModal plugin ##
+ # ## jQuery UI dialog plugin ## pattern: $(<TARGET>).dialog('<FUNCTION>')
# Closing and removing the popup
- jqmClose => 1, # $(<TARGET>).jqmClose()
+ 'dialog:close' => 1,
# ## jstree plugin ## pattern: $.jstree._reference($(<TARGET>)).<FUNCTION>(<ARGS>)
croak "Unsupported jQuery action: $method" unless defined $num_args;
croak "Parameter count mismatch for $method(actual: " . scalar(@args) . " wanted: $num_args)" if scalar(@args) != $num_args;
- if ($num_args) {
- # Force flattening from SL::Presenter::EscapedText: "" . $...
- $args[0] = "" . $args[0];
- $args[0] =~ s/^\s+//;
+ foreach my $idx (0..$num_args - 1) {
+ # Force flattening from SL::Presenter::EscapedText and trim leading whitespace for scalars
+ $args[$idx] = "" . $args[$idx] if ref($args[$idx]) eq 'SL::Presenter::EscapedText';
+ $args[$idx] =~ s/^\s+// if !ref($args[$idx]);
}
push @{ $self->_actions }, [ $method, @args ];
return $self;
}
+sub dialog {
+ my ($self) = @_;
+ $self->{_prefix} = 'dialog:';
+ return $self;
+}
+
sub flash {
my ($self, $type, @messages) = @_;
$js->jstree->rename_node('#tb-' . $text_block->id, $text_block->title)
->jstree->select_node('#tb-' . $text_block->id);
+ # Close a popup opened by kivi.popup_dialog():
+ $js->dialog->close('#jqueryui_popup_dialog');
+
# Finally render the JSON response:
$self->render($js);
$controller->render(\$self->to_json, { type => 'json' });
+=item C<dialog>
+
+Tells C<$self> that the next action is to be called on a jQuery UI
+dialog instance, e.g. one opened by C<kivi.popup_dialog()>. For
+example:
+
+ $js->dialog->close('#jqueryui_popup_dialog');
+
=item C<jstree>
Tells C<$self> that the next action is to be called on a jstree