File: TT.pm

package info (click to toggle)
maypole 2.10-1
  • links: PTS
  • area: main
  • in suites: etch-m68k
  • size: 472 kB
  • ctags: 108
  • sloc: perl: 1,345; makefile: 21
file content (81 lines) | stat: -rw-r--r-- 1,984 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
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<Maypole manual|Maypole::Manual>, and in particular, the
L<view|Maypole::Manual::View> 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-E<gt>config-E<gt>view_options>. See L<Template|Template> for available
options.

=over 4

=item template

Processes the template and sets the output. See L<Maypole::View::Base>

=back


=head1 AUTHOR

Simon Cozens

=cut