[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