application (instead of the current workaround for multiple apps under
mod_perl)
- classmetadata template variables can now be overriden individually
+ - Template toolkit objects are configured with Maypole::Config->view_options
2.04 Tue Oct 27 14:00:00 2004
package BeerDB;
-use Maypole::Application qw/-Debug/;
+use Maypole::Application;
use Class::DBI::Loader::Relationship;
+sub debug { $ENV{BEERDB_DEBUG} }
+
BEGIN {
# This is the sample application. Change this to the path to your
# database. (or use mysql or something)
my $url = URI->new( shift @ARGV );
my $root = URI->new( $self->config->uri_base )->path;
$self->{path} = $url->path;
- $self->{path} .= '/' if $self->{path} eq $root;
$self->{path} =~ s/^$root//i if $root;
$self->parse_path;
$self->parse_args($url);
# Public accessors.
__PACKAGE__->mk_accessors(
- qw( view uri_base template_root model loader display_tables ok_tables
- rows_per_page dsn user pass opts application_name)
+ qw( view view_options uri_base template_root model loader display_tables
+ ok_tables rows_per_page dsn user pass opts application_name)
);
# Should only be modified by model.
The name of the view class for your Maypole Application. Defaults to
"Maypole::View::TT".
+=head3 view_options
+
+A hash of configuration options for the view class. Consult the documentation
+for your chosen view class for information on available configuration options.
+
=head2 Model-Related
=head3 classes
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$ =~ /: (\d+)/;
sub template {
my ( $self, $r ) = @_;
- my $template = Template->new( { INCLUDE_PATH => [ $self->paths($r) ] } );
+
+ my $view_options = $r->config->view_options || {};
+ $self->{provider} ||= Template::Provider->new();
+ $self->{tt} ||= Template->new({
+ COMPILE_DIR => catdir(tmpdir(), $r->config->application_name),
+ %$view_options,
+ LOAD_TEMPLATES => [ $self->{provider} ],
+ });
+
+ $self->{provider}->include_path([ $self->paths($r) ]);
+
my $output;
- if ( $template->process( $r->template, { $self->vars($r) }, \$output ) ) {
+ if ($self->{tt}->process( $r->template, { $self->vars($r) }, \$output )) {
$r->{output} = $output;
return OK;
}
else {
- $r->{error} = $template->error;
+ $r->{error} = $self->{tt}->error;
return ERROR;
}
}
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
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> for available options.
+
=over 4
=item template
-
Processes the template and sets the output. See L<Maypole::View::Base>
=back