another bug
[catagits/Catalyst-View-TT.git] / lib / Catalyst / View / TT.pm
CommitLineData
8077080c 1package Catalyst::View::TT;
2
3use strict;
caa61517 4use base qw/Catalyst::Base/;
8077080c 5use Template;
6use Template::Timer;
7use NEXT;
8
caa61517 9our $VERSION = '0.07';
8077080c 10
11__PACKAGE__->mk_accessors('template');
8077080c 12
13=head1 NAME
14
15Catalyst::View::TT - Template View Class
16
17=head1 SYNOPSIS
18
19 # use the helper
caa61517 20 create.pl view TT TT
8077080c 21
22 # lib/MyApp/View/TT.pm
23 package MyApp::View::TT;
24
25 use base 'Catalyst::View::TT';
26
27 __PACKAGE__->config->{DEBUG} = 'all';
28
29 1;
30
31 $c->forward('MyApp::View::TT');
32
33=head1 DESCRIPTION
34
7b592fc7 35This is the C<Template> view class. Your subclass should inherit
36from this class. If you want to override TT config settings, you
37can do it there by setting __PACKAGE__->config->{OPTION} as shown
38in the synopsis. Of interest might be EVAL_PERL, which is disabled
39by default, and LOAD_TEMPLATES, which is set to use the provider.
40
41If you want to use EVAL perl, add something like this:
42
43 __PACKAGE__->config->{EVAL_PERL} = 1;
44 __PACKAGE__->config->{LOAD_TEMPLATES} = undef;
8077080c 45
caa61517 46=head2 METHODS
8077080c 47
48=cut
49
50sub new {
caa61517 51 my $self = shift;
52 my $c = shift;
53 $self = $self->NEXT::new(@_);
8077080c 54 my $root = $c->config->{root};
caa61517 55 my %config = (
56 EVAL_PERL => 0,
57 INCLUDE_PATH => [ $root, "$root/base" ],
4e705c40 58 %{ $self->config() }
caa61517 59 );
8077080c 60 $config{CONTEXT} = Template::Timer->new(%config) if $c->debug;
caa61517 61 $self->template( Template->new( \%config ) );
8077080c 62 return $self;
63}
64
65=head3 process
66
67Renders the template specified in $c->stash->{template} or $c->request->match
68to $c->response->output.
69
70=cut
71
72sub process {
73 my ( $self, $c ) = @_;
74 $c->res->headers->content_type('text/html;charset=utf8');
75 my $output;
76 my $name = $c->stash->{template} || $c->req->match;
77 unless ($name) {
78 $c->log->debug('No template specified for rendering') if $c->debug;
79 return 0;
80 }
81 $c->log->debug(qq/Rendering template "$name"/) if $c->debug;
82 unless (
83 $self->template->process(
84 $name,
85 {
86 %{ $c->stash },
87 base => $c->req->base,
88 c => $c,
89 name => $c->config->{name}
90 },
91 \$output
92 )
93 )
94 {
95 my $error = $self->template->error;
96 $error = qq/Couldn't render template "$error"/;
97 $c->log->error($error);
98 $c->errors($error);
99 }
100 $c->res->output($output);
101 return 1;
102}
103
104=head3 config
105
106This allows your view subclass to pass additional settings to the
107TT config hash.
108
109=cut
110
111=head1 SEE ALSO
112
113L<Catalyst>.
114
115=head1 AUTHOR
116
117Sebastian Riedel, C<sri@cpan.org>
118Marcus Ramberg
119
120=head1 COPYRIGHT
121
122This program is free software, you can redistribute it and/or modify it under
123the same terms as Perl itself.
124
125=cut
126
1271;