[Jifty-commit] r6652 - in jifty/trunk: share/web/templates/__jifty/webservices

Jifty commits jifty-commit at lists.jifty.org
Tue Mar 17 18:40:18 EDT 2009


Author: sartak
Date: Tue Mar 17 18:40:16 2009
New Revision: 6652

Modified:
   jifty/trunk/   (props changed)
   jifty/trunk/share/web/templates/__jifty/webservices/xml

Log:


Modified: jifty/trunk/share/web/templates/__jifty/webservices/xml
==============================================================================
--- jifty/trunk/share/web/templates/__jifty/webservices/xml	(original)
+++ jifty/trunk/share/web/templates/__jifty/webservices/xml	Tue Mar 17 18:40:16 2009
@@ -1,38 +1,36 @@
 <%init>
 my $output = "";
 my $writer = XML::Writer->new( OUTPUT => \$output, UNSAFE => 1 );
-$r->content_type('text/xml; charset=utf-8');
 $writer->xmlDecl( "UTF-8", "yes" );
 $writer->startTag("response");
 
 if (my $ext = Jifty->web->request->argument('_webservice_external_redirect')) {
     $writer->startTag("redirect");
     $writer->cdataElement(url=> $ext);
+
     $writer->endTag();
-    $writer->endTag();
-    Jifty->web->out($output);
-    $m->abort;
 }
+else {
 
 FRAGMENT:
-for my $fragment ( Jifty->web->request->fragments ) {
+for my $f ( Jifty->web->request->fragments ) {
     # Set up the form if need be
     Jifty->web->form->_init;
-    Jifty->web->form->is_open(1) if $fragment->in_form;
+    Jifty->web->form->is_open(1) if $f->in_form;
 
     # Set up the region stack
     local Jifty->web->{'region_stack'} = [];
     my @regions;
     do {
-        push @regions, $fragment;
-    } while ($fragment = $fragment->parent);
+        push @regions, $f;
+    } while ($f = $f->parent);
 
-    for my $current (reverse @regions) {
-        my $new = Jifty->web->get_region( join '-', grep {$_} Jifty->web->qualified_region, $current->name );
+    for $f (reverse @regions) {
+        my $new = Jifty->web->get_region( join '-', grep {$_} Jifty->web->qualified_region, $f->name );
 
         # Arguments can be complex mapped hash values.  Get their
         # real values by mapping.
-        my %defaults = %{$current->arguments || {}};
+        my %defaults = %{$f->arguments || {}};
         for (keys %defaults) {
             my ($key, $value) = Jifty::Request::Mapper->map(destination => $_, source => $defaults{$_});
             delete $defaults{$_};
@@ -40,9 +38,9 @@
         }
 
         $new ||= Jifty::Web::PageRegion->new(
-            name           => $current->name,
-            path           => URI::Escape::uri_unescape($current->path),
-            region_wrapper => $current->wrapper,
+            name           => $f->name,
+            path           => URI::Escape::uri_unescape($f->path),
+            region_wrapper => $f->wrapper,
             parent         => Jifty->web->current_region,
             defaults       => \%defaults,
         );
@@ -69,6 +67,8 @@
     Jifty->web->form->is_open(0);
 }
 
+}
+
 my %results = Jifty->web->response->results;
 for (keys %results) {
     $writer->startTag("result", moniker => $_, class => $results{$_}->action_class);
@@ -92,7 +92,33 @@
     # Jifty::DBI::Record's yet, which are technically circular data
     # structures at some level (current_user of a
     # current_user->user_object is itself)
-    my $content = stripkids($results{$_}->content);
+    use Scalar::Util qw(blessed);
+    my $content = $results{$_}->content;
+
+    sub stripkids {
+        my $top = shift;
+        if ( not ref $top ) { return $top }
+        elsif (
+            blessed($top)
+            and (  $top->isa("Jifty::DBI::Record")
+                or $top->isa("Jifty::DBI::Collection") )
+            )
+        {
+            return undef;
+        } elsif ( ref $top eq 'HASH' ) {
+            foreach my $item ( keys %$top ) {
+                $top->{$item} = stripkids( $top->{$item} );
+            }
+        } elsif ( ref $top eq 'ARRAY' ) {
+            for ( 0 .. $#{$top} ) {
+                $top->[$_] = stripkids( $top->[$_] );
+            }
+        }
+        return $top;
+    }
+
+    $content = stripkids($content);
+    use XML::Simple;
     $writer->raw(XML::Simple::XMLout($content, NoAttr => 1, RootName => "content", NoIndent => 1))
       if keys %{$content};
 
@@ -100,30 +126,6 @@
 }
 
 $writer->endTag();
+$r->content_type('text/xml; charset=utf-8');
 Jifty->web->out($output);
 </%init>
-<%once>
-use Scalar::Util qw(blessed);
-use XML::Simple;
-sub stripkids {
-    my $top = shift;
-    if ( not ref $top ) { return $top }
-    elsif (
-        blessed($top)
-        and (  $top->isa("Jifty::DBI::Record")
-            or $top->isa("Jifty::DBI::Collection") )
-        )
-    {
-        return undef;
-    } elsif ( ref $top eq 'HASH' ) {
-        foreach my $item ( keys %$top ) {
-            $top->{$item} = stripkids( $top->{$item} );
-        }
-    } elsif ( ref $top eq 'ARRAY' ) {
-        for ( 0 .. $#{$top} ) {
-            $top->[$_] = stripkids( $top->[$_] );
-        }
-    }
-    return $top;
-}
-</%once>


More information about the Jifty-commit mailing list