[Jifty-commit] r3388 - in jifty/branches/fragcont/lib/Jifty: . Plugin Web

jifty-commit at lists.jifty.org jifty-commit at lists.jifty.org
Thu Jun 7 17:36:17 EDT 2007


Author: clkao
Date: Thu Jun  7 17:36:17 2007
New Revision: 3388

Modified:
   jifty/branches/fragcont/lib/Jifty/Continuation.pm
   jifty/branches/fragcont/lib/Jifty/Plugin/SinglePage.pm
   jifty/branches/fragcont/lib/Jifty/Request.pm
   jifty/branches/fragcont/lib/Jifty/Web/Form.pm
   jifty/branches/fragcont/lib/Jifty/Web/Form/Clickable.pm

Log:
Have call continuation work on webservices, but not return properly yet.

Modified: jifty/branches/fragcont/lib/Jifty/Continuation.pm
==============================================================================
--- jifty/branches/fragcont/lib/Jifty/Continuation.pm	(original)
+++ jifty/branches/fragcont/lib/Jifty/Continuation.pm	Thu Jun  7 17:36:17 2007
@@ -157,6 +157,16 @@
     my $self = shift;
 
     Jifty->log->debug("Redirect to @{[$self->request->path]} via continuation");
+    if (Jifty->web->request->argument('_webservice_redirect')) {
+	# for continuation - perform internal redirect under webservices
+	Jifty->web->request->add_fragment(
+            name      => '__page',
+            path      => $self->request->path,
+            arguments => {},
+            wrapper   => 0
+        );
+	return;
+    }
     # If we needed to fix up the path (it contains invalid
     # characters) then warn, because this may cause infinite
     # redirects
@@ -190,6 +200,7 @@
 
     # Redirect to right page if we're not there already
     Jifty->web->_redirect($next->request->path . "?J:RETURN=" . $next->id);
+    return 1;
 }
 
 =head2 return

Modified: jifty/branches/fragcont/lib/Jifty/Plugin/SinglePage.pm
==============================================================================
--- jifty/branches/fragcont/lib/Jifty/Plugin/SinglePage.pm	(original)
+++ jifty/branches/fragcont/lib/Jifty/Plugin/SinglePage.pm	Thu Jun  7 17:36:17 2007
@@ -34,6 +34,9 @@
 	    $args->{refresh_self} = 1;
 	    $args->{as_button} = 1;
 	}
+	if (my $form = delete $args->{_form}) {
+	    $args->{call} = $form->call;
+	}
         my $onclick = $args->{onclick};
         if ( ref($onclick) eq 'HASH' ) {
             if ( $onclick->{region} && !ref( $onclick->{region} ) ) {

Modified: jifty/branches/fragcont/lib/Jifty/Request.pm
==============================================================================
--- jifty/branches/fragcont/lib/Jifty/Request.pm	(original)
+++ jifty/branches/fragcont/lib/Jifty/Request.pm	Thu Jun  7 17:36:17 2007
@@ -530,8 +530,7 @@
     return if $self->is_subrequest;
     return unless $self->continuation_type and $self->continuation_type eq "call" and $self->continuation;
     $self->log->debug("Calling continuation ".$self->continuation->id);
-    $self->continuation->call;
-    return 1;
+    return $self->continuation->call;
 }
 
 =head2 return_from_continuation

Modified: jifty/branches/fragcont/lib/Jifty/Web/Form.pm
==============================================================================
--- jifty/branches/fragcont/lib/Jifty/Web/Form.pm	(original)
+++ jifty/branches/fragcont/lib/Jifty/Web/Form.pm	Thu Jun  7 17:36:17 2007
@@ -217,8 +217,7 @@
 
 sub submit {
     my $self = shift;
-
-    my $button = Jifty::Web::Form::Clickable->new(submit => undef, @_)->generate;
+    my $button = Jifty::Web::Form::Clickable->new(submit => undef, _form => $self, @_)->generate;
     Jifty->web->out(qq{<div class="submit_button">});
     $button->render_widget;
     Jifty->web->out(qq{</div>});

Modified: jifty/branches/fragcont/lib/Jifty/Web/Form/Clickable.pm
==============================================================================
--- jifty/branches/fragcont/lib/Jifty/Web/Form/Clickable.pm	(original)
+++ jifty/branches/fragcont/lib/Jifty/Web/Form/Clickable.pm	Thu Jun  7 17:36:17 2007
@@ -464,6 +464,9 @@
 sub _continuation {
     # continuation info used by the update() call on client side
     my $self = shift;
+    if ($self->call) {
+	return { 'type' => 'call', id => $self->call };
+    }
     if ($self->returns) {
 	return { 'create' => $self->_orig_url };
     }
@@ -487,6 +490,7 @@
     my $field = Jifty::Web::Form::Field->new(
         { %$args,
           type => 'InlineButton',
+          continuation => $self->_continuation,
           @_ }
     );
     my %parameters = $self->post_parameters;


More information about the Jifty-commit mailing list