--- trunk/lib/HTML.pm 2008/06/29 13:12:59 21 +++ trunk/lib/Frey/HTML.pm 2008/06/29 20:11:27 27 @@ -1,11 +1,19 @@ -package HTML; +package Frey::HTML; use strict; use warnings; use Time::HiRes qw/time/; use Data::Dump qw/dump/; -use Carp qw/confess/; +use Carp qw/confess carp/; + +=head1 NAME + +Frey::HTML - generate html pages + +=head2 METHODS + +=cut # FIXME @@ -27,6 +35,7 @@ warn "available templates = ",dump( Template::Declare->templates ); our @javascript; +our $debug = 0; use Template::Declare; use Template::Declare::Tags; # defaults to 'HTML' @@ -38,29 +47,52 @@ title { $path } link { { rel is 'stylesheet' } - { href is 'static/app.css' } + { href is '/static/app.css' } { type is 'text/css' } { media is 'screen' } }; foreach my $js ( @javascript ) { script { { type is 'text/javascript' } - { src is $js } + { src is "/$js" } } } } body { $orig->(); } - } - warn "TEMPLATE $path ",dump($args),sprintf(" in %.4fs\n",time - $t); + }; + warn "TEMPLATE $path ",dump($args),sprintf(" in %.4fs\n",time - $t) if $debug; }); -sub view { +=head2 page + +Wrap template into html page + + Frey::HTML->page( 'template_name', $req, $args ); + +=cut + +sub page { my $self = shift; - return Template::Declare->show( @_ ); + warn "## page ",dump($_[0],ref($_[1]),$_[2]),"\n"; + my $page = eval { Template::Declare->show( @_ ) }; + if ( $@ ) { + carp "ERROR: $@"; + $page = Template::Declare->show( 'error', $_[1], "page" . dump($_[0], ref($_[1])) . "\n$@" ); + warn $page; + } + return $page; } +=head2 add_javascript + +Add javascript to current page + + Frey::HTML->add_javascript( 'static/javascript.js' ); + +=cut + sub add_javascript { my $self = shift; my $js = shift or confess "no JavaScript path";