[Jifty-commit] r2961 - in jifty/trunk: lib/Jifty/View/Declare

jifty-commit at lists.jifty.org jifty-commit at lists.jifty.org
Tue Mar 13 23:12:32 EDT 2007


Author: jesse
Date: Tue Mar 13 23:12:31 2007
New Revision: 2961

Modified:
   jifty/trunk/   (props changed)
   jifty/trunk/lib/Jifty/View/Declare/Helpers.pm

Log:
 r53383 at pinglin:  jesse | 2007-03-13 22:57:16 -0400
 * Importing sanity from doxory
 


Modified: jifty/trunk/lib/Jifty/View/Declare/Helpers.pm
==============================================================================
--- jifty/trunk/lib/Jifty/View/Declare/Helpers.pm	(original)
+++ jifty/trunk/lib/Jifty/View/Declare/Helpers.pm	Tue Mar 13 23:12:31 2007
@@ -2,15 +2,11 @@
 use strict;
 
 package Jifty::View::Declare::Helpers;
-
+use base qw/Template::Declare/;
 use base qw/Exporter/;
 use Template::Declare::Tags;
 
-use base qw/Template::Declare/;
-our @EXPORT = (
-    qw(form hyperlink tangent redirect new_action form_submit form_next_page page wrapper request get set render_param current_user render_action render_region ),
-    @Template::Declare::Tags::EXPORT
-);
+our @EXPORT = ( qw(form hyperlink tangent redirect new_action form_submit form_next_page page wrapper request get set render_param current_user render_action render_region), @Template::Declare::Tags::EXPORT);
 
 
 =head1 NAME
@@ -25,11 +21,6 @@
 
 
 
-=cut
-
-{
-    no warnings qw/redefine/;
-
 
 =head2 form CODE
 
@@ -39,6 +30,9 @@
 
 =cut
 
+
+{
+    no warnings qw/redefine/;
     sub form (&) {
         my $code = shift;
         outs_raw( Jifty->web->form->start );
@@ -248,17 +242,17 @@
 
 =cut
 
-
 sub page (&) {
     my $code = shift;
     sub {
         Jifty->handler->apache->content_type('text/html; charset=utf-8');
-        show('/_elements/nav');
         wrapper($code);
     };
+
 }
 
 
+
 =head2 wrapper $coderef
 
 Render a page. $coderef is a L<Template::Declare> coderef. 
@@ -266,81 +260,90 @@
 
 =cut
 
-
 sub wrapper ($) {
     my $content_code = shift;
-
     my ($title) = get_current_attr(qw(title));
 
     my $done_header;
     my $render_header = sub {
         no warnings qw( uninitialized redefine once );
+        $title ||= Jifty->config('framework')->{'ApplicationName'};
 
-        defined $title or return;
+        #   defined $title or return;
         return if $done_header++;
-
         Template::Declare->new_buffer_frame;
+        outs_raw(
+        '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">'
+            . '<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">' );
         render_header($title);
         $done_header = Template::Declare->buffer->data;
         Template::Declare->end_buffer_frame;
-
-        '';
+        return '';
     };
 
-    my $wrapped_content_code = sub {
-        no warnings qw( uninitialized redefine once );
-
-        local *is::title = sub {
-            shift;
-            $title = "@_";
-            &$render_header;
+    body {
+        div {
+            div {
+            show 'salutation'; 
+            show 'menu'; 
+        };
+            div {
+                div {
+                    Jifty->web->render_messages;
+                    {
+                        no warnings qw( uninitialized redefine once );
+
+                        local *is::title = sub {
+                            shift;
+
+                            for (@_) {
+                                if ( ref($_) eq 'CODE' ) {
+                                    Template::Declare->new_buffer_frame;
+                                    $_->();
+                                    $title .= Template::Declare->buffer->data;
+                                    Template::Declare->end_buffer_frame;
+                                } else {
+                                    $title .= Jifty->web->escape($_);
+                                }
+                            }
+                            &$render_header;
+                            h1 { attr { class => 'title' }; outs_raw($title) };
+                        };
+
+                        &_render_pre_content_hook();
+                        Jifty->web->render_messages;
+                        &$content_code;
+                        &$render_header unless ($done_header);
+                        &_render_jifty_page_detritus();
+
+                }
+                };
+            };
         };
-
-        &$content_code;
-        if ( !$done_header ) {
-            $title = _("Untitled");
-            &$render_header;
-        }
     };
+    outs_raw('</html>');
+    Template::Declare->buffer->data( $done_header . Template::Declare->buffer->data );
+}
 
-    body {
-        show('/_elements/sidebar');
-        with( id => "content" ), div {
-            with( name => 'content' ), a {};
-            if ( Jifty->config->framework('AdminMode') ) {
-                with( class => "warning admin_mode" ), div {
-                    outs( _('Alert') . ': ' );
-                    outs_raw(
-                        Jifty->web->tangent(
-                            label => _('Administration mode is enabled.'),
-                            url   => '/__jifty/admin/'
-                        )
-                    );
+sub _render_pre_content_hook {
+                        if ( Jifty->config->framework('AdminMode') ) {
+                            with( class => "warning admin_mode" ), div {
+                                outs( _('Alert') . ': ' );
+                                outs_raw( Jifty->web->tangent( label => _( 'Administration mode is enabled.'), url => '/__jifty/admin/'));
+                                }
+                        }
                     }
-            }
-            Jifty->web->render_messages;
-            $wrapped_content_code->();
-
-            show('/_elements/keybindings');
-            with( id => "jifty-wait-message", style => "display: none" ),
-                div { _('Loading...') };
+sub _render_jifty_page_detritus {
 
-# Jifty::Mason::Halo->render_component_tree if ( Jifty->config->framework('DevelMode') );
+                        show('keybindings');
+                        with( id    => "jifty-wait-message", style => "display: none"), div { _('Loading...') };
 
            # This is required for jifty server push.  If you maintain your own
            # wrapper, make sure you have this as well.
-            if (   Jifty->config->framework('PubSub')->{'Enable'}
-                && Jifty::Subs->list )
-            {
-                script { outs('new Jifty.Subs({}).start();') };
-            }
-        };
-    };
-
-    Template::Declare->buffer->data(
-        $done_header . Template::Declare->buffer->data );
-}
-
+                        if (   Jifty->config->framework('PubSub')->{'Enable'} && Jifty::Subs->list ) {
+                            script { outs('new Jifty.Subs({}).start();') };
+                        }
+                    }
 
 =head2 render_header $title
 
@@ -348,20 +351,14 @@
 
 =cut
 
-sub render_header {
-    my ($title) = @_;
-    outs_raw(
-        '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">'
-            . '<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">' );
-    with( title => $title ), show('/_elements/header');
-    div {
-        { id is 'headers' }
-        hyperlink(
-            url   => "/",
-            label => _( Jifty->config->framework('ApplicationName') )
-        );
-        with( class => "title" ), h1 {$title};
-    };
-}
+sub render_header { 
+    my $title = shift || '';
+    $title =~ s/<.*?>//g;    # remove html
+    HTML::Entities::decode_entities($title);
+    with( title => $title ), show('header');
+}               
+                    
+
+
 
 1;


More information about the Jifty-commit mailing list