[Jifty-commit] r2419 - in jifty/branches/template-declare: . lib/Jifty

jifty-commit at lists.jifty.org jifty-commit at lists.jifty.org
Thu Dec 21 23:39:57 EST 2006


Author: jesse
Date: Thu Dec 21 23:39:57 2006
New Revision: 2419

Modified:
   jifty/branches/template-declare/   (props changed)
   jifty/branches/template-declare/lib/Jifty/Everything.pm
   jifty/branches/template-declare/lib/Jifty/Server.pm
   jifty/branches/template-declare/lib/Jifty/View/Declare/Handler.pm

Log:
 r46388 at dhcp64-134-35-102:  jesse | 2006-12-21 20:39:24 -0800
 * print headers at the right time


Modified: jifty/branches/template-declare/lib/Jifty/Everything.pm
==============================================================================
--- jifty/branches/template-declare/lib/Jifty/Everything.pm	(original)
+++ jifty/branches/template-declare/lib/Jifty/Everything.pm	Thu Dec 21 23:39:57 2006
@@ -45,6 +45,7 @@
 use Jifty::Logger ();
 use Jifty::Handler ();
 use Jifty::View::Static::Handler ();
+use Jifty::View::Declare::Handler ();
 use Jifty::View::Mason::Handler ();
 
 use Jifty::Model::Metadata ();

Modified: jifty/branches/template-declare/lib/Jifty/Server.pm
==============================================================================
--- jifty/branches/template-declare/lib/Jifty/Server.pm	(original)
+++ jifty/branches/template-declare/lib/Jifty/Server.pm	Thu Dec 21 23:39:57 2006
@@ -44,6 +44,10 @@
     $self->recording_on if $ENV{'JIFTY_RECORD'};
 
     use Hook::LexWrap;
+    wrap 'Jifty::View::Declare::Handler::send_http_header', pre => sub {
+        print STDOUT "HTTP/1.0 ".  (Jifty->handler->apache->{headers_out}->{'Status'} || '200 Jifty OK') .  "\n";
+    };
+
     wrap 'HTML::Mason::FakeApache::send_http_header', pre => sub {
         my $r = shift;
         my $status = $r->header_out('Status') || '200 Jifty OK';

Modified: jifty/branches/template-declare/lib/Jifty/View/Declare/Handler.pm
==============================================================================
--- jifty/branches/template-declare/lib/Jifty/View/Declare/Handler.pm	(original)
+++ jifty/branches/template-declare/lib/Jifty/View/Declare/Handler.pm	Thu Dec 21 23:39:57 2006
@@ -22,7 +22,6 @@
     return $self;
 }
 
-
 sub show {
     my $self          = shift;
     my $code_template = shift;
@@ -30,33 +29,35 @@
     no warnings qw/redefine utf8/;
     local *Jifty::Web::out = sub {
         shift;    # Turn the method into a function
-        my $r = Jifty->handler->apache;
-        unless ( $r->http_header_sent ) {
-            $r->content_type || $r->content_type('text/html; charset=utf-8');    # Set up a default
-            if ( $r->content_type =~ /charset=([\w-]+)$/ ) {
-                my $enc = $1;
-                binmode *STDOUT, ((lc($enc) =~ /utf-?8/)  ? ":utf8" : "encoding($enc)");
-            }
-            eval {
-               #HTML::Mason::FakeApache's send_http_header uses "print STDOUT"
-               # this reimplements that.
-               Template::Declare::outs( $r->http_header );
-               $r->{http_header_sent} = 1;
-            };
+        unless ( Jifty->handler->stash->{http_header_sent} ) {
+            $self->send_http_header();
         }
 
+        local $Template::Declare::Tags::BUFFER = '';
         goto &Template::Declare::Tags::outs;
     };
+    print STDOUT Template::Declare::Tags::show($code_template);
 
-    local $Template::Declare::Tags::BUFFER = '';
-    my $rv = Template::Declare::Tags::show($code_template);
-
-    # XXX - Kluge - Before $r->send_http_headers is fixed for real, escape all non-latin1 characters.
-    print STDOUT Encode::encode( latin1 => $rv, &Encode::FB_XMLCREF )
-    unless Jifty->handler->apache->http_header_sent;
     return undef;
 }
 
+sub send_http_header {
+    my $self = shift;
+    my $r = Jifty->handler->apache;
+    $r->content_type
+        || $r->content_type('text/html; charset=utf-8');    # Set up a default
+    if ( $r->content_type =~ /charset=([\w-]+)$/ ) {
+        my $enc = $1;
+        binmode *STDOUT,
+            ( ( lc($enc) =~ /utf-?8/ ) ? ":utf8" : "encoding($enc)" );
+    }
+
+    #HTML::Mason::FakeApache's send_http_header uses "print STDOUT"
+    # this reimplements that.
+    print STDOUT $r->http_header;
+    Jifty->handler->stash->{http_header_sent} = 1;
+}
+
 sub resolve_template { my $pkg =shift;  return Template::Declare->resolve_template(@_);}
 
 1;


More information about the Jifty-commit mailing list