[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