package Maypole::View::TT; use base 'Maypole::View::Base'; use Maypole::Constants; use Template; use File::Spec::Functions qw(catdir tmpdir); use strict; our $VERSION = "1." . sprintf "%04d", q$Rev: 333 $ =~ /: (\d+)/; sub template { my ( $self, $r ) = @_; unless ($self->{tt}) { my $view_options = $r->config->view_options || {}; $self->{provider} = Template::Provider->new($view_options); $self->{tt} = Template->new({ %$view_options, LOAD_TEMPLATES => [ $self->{provider} ], }); } $self->{provider}->include_path([ $self->paths($r) ]); my $template_file = $r->template; my $ext = $r->config->template_extension; $template_file .= $ext if defined $ext; my $output; if ($self->{tt}->process($template_file, { $self->vars($r) }, \$output )) { $r->{output} = $output; return OK; } else { $r->{error} = $self->{tt}->error; return ERROR; } } 1; =head1 NAME Maypole::View::TT - A Template Toolkit view class for Maypole =head1 SYNOPSIS BeerDB->config->view("Maypole::View::TT"); # The default anyway # Set some Template Toolkit options BeerDB->config->view_options( { TRIM => 1, COMPILE_DIR => '/var/tmp/mysite/templates', } ); =head1 DESCRIPTION This is the default view class for Maypole; it uses the Template Toolkit to fill in templates with the objects produced by Maypole's model classes. Please see the L, and in particular, the L chapter for the template variables available and for a refresher on how template components are resolved. The underlying Template toolkit object is configured through C<$r-Econfig-Eview_options>. See L for available options. =over 4 =item template Processes the template and sets the output. See L =back =head1 AUTHOR Simon Cozens =cut