[Jifty-commit] r3401 - in jifty/branches/fragcont: lib/Jifty/Plugin share/web/static/js share/web/templates/__jifty/webservices

jifty-commit at lists.jifty.org jifty-commit at lists.jifty.org
Fri Jun 8 13:02:20 EDT 2007


Author: clkao
Date: Fri Jun  8 13:02:19 2007
New Revision: 3401

Modified:
   jifty/branches/fragcont/lib/Jifty/Dispatcher.pm
   jifty/branches/fragcont/lib/Jifty/Plugin/SinglePage.pm
   jifty/branches/fragcont/share/web/static/js/jifty.js
   jifty/branches/fragcont/share/web/templates/__jifty/webservices/xml

Log:
* If we are doing external redirect, supress fragment replacement.
* fix refresh_self in submit so on failed action response we get
  __page refreshed that is like page reload.


Modified: jifty/branches/fragcont/lib/Jifty/Dispatcher.pm
==============================================================================
--- jifty/branches/fragcont/lib/Jifty/Dispatcher.pm	(original)
+++ jifty/branches/fragcont/lib/Jifty/Dispatcher.pm	Fri Jun  8 13:02:19 2007
@@ -736,7 +736,7 @@
     $self->_abort;
 }
 
-sub _abort { die "ABORT" }
+sub _abort { Carp::croak "ABORT" }
 
 =head2 _do_show [PATH]
 

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	Fri Jun  8 13:02:19 2007
@@ -13,6 +13,13 @@
     $self->region_name($opt{region_name} || '__page');
 }
 
+sub _push_onclick {
+    my $self = shift;
+    my $args = shift;
+    $args->{onclick} = [ $args->{onclick} ] unless ref $args->{onclick} eq 'ARRAY';
+    push @{$args->{onclick}}, @_ if @_;
+}
+
 sub _sp_link {
     my $self = shift;
     return sub {
@@ -23,27 +30,30 @@
             # XXX mind the existing onclick
             warn 'ooops got original onclick' . Dumper( $args->{onclick} )
                 if $args->{onclick};
-            $args->{onclick} = {
+            $self->_push_onclick($args, {
                 region       => $self->region_name,
                 replace_with => $url,
-                args         => delete $args->{parameters},
-            };
+                args         => delete $args->{parameters}});
         }
-	elsif (exists $args->{submit}) {
-	    $args->{onclick} = { submit => delete $args->{submit} };
-	    $args->{refresh_self} = 1;
+        elsif (exists $args->{submit}) {
+	    use Data::Dumper;
+#	    warn Dumper($args);
+	    $self->_push_onclick($args, { refresh_self => 1, submit => delete $args->{submit} });
 	    $args->{as_button} = 1;
 	}
-	if (my $form = delete $args->{_form}) {
+        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} ) ) {
-		my $region = $self->region_name;
-                $onclick->{region}
-                    = $region . '-' . $onclick->{region}
-                    unless $onclick->{region} eq $region or $onclick->{region} =~ m/^\Q$region\E-/;
+        if ( $args->{onclick} ) {
+            $self->_push_onclick($args);    # make sure it's array
+            for my $onclick ( @{ $args->{onclick} } ) {
+                if ( $onclick->{region} && !ref( $onclick->{region} ) ) {
+                    my $region = $self->region_name;
+                    $onclick->{region} = $region . '-' . $onclick->{region}
+                        unless $onclick->{region} eq $region
+                        or $onclick->{region} =~ m/^\Q$region\E-/;
+                }
             }
         }
     }

Modified: jifty/branches/fragcont/share/web/static/js/jifty.js
==============================================================================
--- jifty/branches/fragcont/share/web/static/js/jifty.js	(original)
+++ jifty/branches/fragcont/share/web/static/js/jifty.js	Fri Jun  8 13:02:19 2007
@@ -831,7 +831,6 @@
              redirect != null;
              redirect = redirect.nextSibling) {
             if (redirect.nodeName == 'redirect') {
-                alert(redirect.getAttribute("url"));
                 document.location = redirect.getAttribute("url");
             }
         }

Modified: jifty/branches/fragcont/share/web/templates/__jifty/webservices/xml
==============================================================================
--- jifty/branches/fragcont/share/web/templates/__jifty/webservices/xml	(original)
+++ jifty/branches/fragcont/share/web/templates/__jifty/webservices/xml	Fri Jun  8 13:02:19 2007
@@ -4,6 +4,12 @@
 $writer->xmlDecl( "UTF-8", "yes" );
 $writer->startTag("response");
 
+if (my $ext = Jifty->web->request->argument('_webservice_external_redirect')) {
+    $writer->startTag("redirect", url => $ext);
+    $writer->endTag();
+}
+else {
+
 FRAGMENT:
 for my $f ( Jifty->web->request->fragments ) {
     # Set up the region stack
@@ -50,6 +56,8 @@
     Jifty->web->current_region->exit while Jifty->web->current_region;
 }
 
+}
+
 my %results = Jifty->web->response->results;
 for (keys %results) {
     $writer->startTag("result", moniker => $_, class => $results{$_}->action_class);
@@ -106,11 +114,6 @@
     $writer->endTag();
 }
 
-if (my $ext = Jifty->web->request->argument('_webservice_external_redirect')) {
-    $writer->startTag("redirect", url => $ext);
-    $writer->endTag();
-}
-
 $writer->endTag();
 $r->content_type('text/xml; charset=utf-8');
 Jifty->web->out($output);


More information about the Jifty-commit mailing list