--- 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";