[Jifty-commit] r3392 - in jifty/branches/fragcont/lib/Jifty: Plugin/SinglePage

jifty-commit at lists.jifty.org jifty-commit at lists.jifty.org
Thu Jun 7 19:20:53 EDT 2007


Author: clkao
Date: Thu Jun  7 19:20:53 2007
New Revision: 3392

Added:
   jifty/branches/fragcont/lib/Jifty/Plugin/SinglePage/
   jifty/branches/fragcont/lib/Jifty/Plugin/SinglePage/Dispatcher.pm
Modified:
   jifty/branches/fragcont/lib/Jifty/Web.pm

Log:
ditto for other implicit __page fragment to ignore region state.

Added: jifty/branches/fragcont/lib/Jifty/Plugin/SinglePage/Dispatcher.pm
==============================================================================
--- (empty file)
+++ jifty/branches/fragcont/lib/Jifty/Plugin/SinglePage/Dispatcher.pm	Thu Jun  7 19:20:53 2007
@@ -0,0 +1,31 @@
+package Jifty::Plugin::SinglePage::Dispatcher;
+use strict;
+use warnings;
+use Jifty::Dispatcher -base;
+
+before '__jifty/webservices/*' => run {
+    my (@actions) = grep { $_->class eq 'Jifty::Action::Redirect' } values %{ Jifty->web->request->{'actions'} };
+    $_->active(0) for @actions;
+
+    # XXX: shouldn't have multiple redirect
+    # Simply ignore Redirect from webservice if we are not in SPA
+    set '_webservice_redirect' => \@actions
+        if Jifty->find_plugin('Jifty::Plugin::SinglePage');
+
+};
+
+on qr{(__jifty/webservices/.*)} => run {
+    my $actions = get '_webservice_redirect';
+    Jifty->web->request->remove_state_variable('region-__page');
+    for my $act (@$actions) {
+        Jifty->web->request->add_fragment(
+            name      => '__page',
+            path      => $act->arguments->{url},
+            arguments => {},
+            wrapper   => 0
+        );
+    }
+    show $1;
+};
+
+1;

Modified: jifty/branches/fragcont/lib/Jifty/Web.pm
==============================================================================
--- jifty/branches/fragcont/lib/Jifty/Web.pm	(original)
+++ jifty/branches/fragcont/lib/Jifty/Web.pm	Thu Jun  7 19:20:53 2007
@@ -331,6 +331,7 @@
     }
     if ($self->request->continuation_path && Jifty->web->request->argument('_webservice_redirect')) {
 	# for continuation - perform internal redirect under webservices
+	Jifty->web->request->remove_state_variable('region-__page');
 	Jifty->web->request->add_fragment(
             name      => '__page',
             path      => $self->request->continuation_path,


More information about the Jifty-commit mailing list