[Jifty-commit] r4370 - in jifty/trunk: lib/Jifty/Plugin
t/TestApp-Plugin-SinglePage/lib/TestApp/Plugin/SinglePage
jifty-commit at lists.jifty.org
jifty-commit at lists.jifty.org
Sun Nov 4 02:15:13 EST 2007
Author: clkao
Date: Sun Nov 4 02:15:12 2007
New Revision: 4370
Modified:
jifty/trunk/lib/Jifty/Plugin/SinglePage.pm
jifty/trunk/lib/Jifty/Web/Form/Clickable.pm
jifty/trunk/t/TestApp-Plugin-SinglePage/lib/TestApp/Plugin/SinglePage/View.pm
Log:
Add an additional trigger in Clickable for SinglePage to filter
out state variables for region-__page.
Modified: jifty/trunk/lib/Jifty/Plugin/SinglePage.pm
==============================================================================
--- jifty/trunk/lib/Jifty/Plugin/SinglePage.pm (original)
+++ jifty/trunk/lib/Jifty/Plugin/SinglePage.pm Sun Nov 4 02:15:12 2007
@@ -25,6 +25,9 @@
return if $self->_pre_init;
Jifty::Web::Form::Clickable->add_trigger( before_new => _sp_link($self));
+ Jifty::Web::Form::Clickable->add_trigger( name => 'before_state_variable',
+ callback => _filter_page_region_vars($self),
+ abortable => 1 );
my %opt = @_;
$self->region_name($opt{region_name} || '__page');
}
@@ -37,6 +40,17 @@
push @{$args->{onclick}}, @_ if @_;
}
+sub _filter_page_region_vars {
+ my $self = shift;
+ return sub {
+ my ( $clickable, $key, $value ) = @_;
+ if ($key eq 'region-'.$self->region_name || $key =~ m/^region-\Q$self->{region_name}\E\./) {
+ return 0;
+ }
+ return 1;
+ }
+}
+
sub _sp_link {
my $self = shift;
return sub {
@@ -46,7 +60,7 @@
$self->_push_onclick($args, {
region => $self->region_name,
replace_with => $url,
- args => $args->{parameters}});
+ args => { %{$args->{parameters}}} });
}
elsif (exists $args->{submit} && !$args->{onclick}) {
if ($args->{_form} && $args->{_form}{submit_to}) {
Modified: jifty/trunk/lib/Jifty/Web/Form/Clickable.pm
==============================================================================
--- jifty/trunk/lib/Jifty/Web/Form/Clickable.pm (original)
+++ jifty/trunk/lib/Jifty/Web/Form/Clickable.pm Sun Nov 4 02:15:12 2007
@@ -302,6 +302,9 @@
sub state_variable {
my $self = shift;
+ defined $self->call_trigger('before_state_variable', @_)
+ or return; # if aborted by trigger
+
my ( $key, $value, $fallback ) = @_;
if ( defined $value and length $value ) {
$self->{state_variable}{"J:V-$key"} = $value;
Modified: jifty/trunk/t/TestApp-Plugin-SinglePage/lib/TestApp/Plugin/SinglePage/View.pm
==============================================================================
--- jifty/trunk/t/TestApp-Plugin-SinglePage/lib/TestApp/Plugin/SinglePage/View.pm (original)
+++ jifty/trunk/t/TestApp-Plugin-SinglePage/lib/TestApp/Plugin/SinglePage/View.pm Sun Nov 4 02:15:12 2007
@@ -25,6 +25,9 @@
arguments => { name => $foo });
my $redir = new_action(class => "Jifty::Action::Redirect",
arguments => { url => '/index.html' });
+ render_region( 'foo' );
+ hyperlink( label => 'foo', onclick => { region => 'foo', replace_with => '_r_foo', args => { foo => '123123' } } );
+
form {
Jifty->web->form->register_action($redir);
render_action($create);
@@ -41,5 +44,10 @@
}
};
+template '_r_foo' => sub {
+ my $foo = get('foo');
+ h1 { $foo };
+};
+
1;
More information about the Jifty-commit
mailing list