CGI-Application-Plugin-TT
view release on metacpan or search on metacpan
lib/CGI/Application/Plugin/TT.pm view on Meta::CPAN
### tt_include_path
###
##############################################
#
# Change the include path after the template object
# has already been created
#
sub tt_include_path {
my $self = shift;
return $self->tt_obj->context->load_templates->[0]->include_path unless(@_);
$self->tt_obj->context->load_templates->[0]->include_path(ref($_[0]) ? $_[0] : [@_]);
return;
}
##############################################
###
### tt_template_name
###
##############################################
#
# Auto-generate the filename of a template based on
# the current module, and the name of the
# function that called us.
#
sub tt_template_name {
my $self = shift;
my ($tt, $options, $frompkg) = _get_object_or_options($self);
my $func = $options->{TEMPLATE_NAME_GENERATOR} || \&__tt_template_name;
return $self->$func(@_);
}
##############################################
###
### __tt_template_name
###
##############################################
#
# Generate the filename of a template based on
# the current module, and the name of the
# function that called us.
#
# example:
# module $self is blessed into: My::Module
# function name that called us: my_function
#
# generates: My/Module/my_function.tmpl
#
sub __tt_template_name {
my $self = shift;
my $uplevel = shift || 0;
# the directory is based on the object's package name
my $dir = File::Spec->catdir(split(/::/, ref($self)));
# the filename is the method name of the caller plus
# whatever offset the user asked for
(caller(2+$uplevel))[3] =~ /([^:]+)$/;
my $name = $1;
return File::Spec->catfile($dir, $name.'.tmpl');
}
##
## Private methods
##
sub _set_object {
my $self = shift;
my $tt = shift;
my $class = ref $self ? ref $self : $self;
if (ref $self) {
$self->{__TT_OBJECT} = $tt;
} else {
no strict 'refs';
${$class.'::__TT_OBJECT'} = $tt;
}
}
sub _get_object_or_options {
my $self = shift;
my $class = ref $self ? ref $self : $self;
# Handle the simple case by looking in the object first
if (ref $self) {
return ($self->{__TT_OBJECT}, $self->{__TT_CONFIG}) if $self->{__TT_OBJECT};
return (undef, $self->{__TT_CONFIG}) if $self->{__TT_CONFIG};
}
# See if we can find them in the class hierarchy
# We look at each of the modules in the @ISA tree, and
# their parents as well until we find either a tt
# object or a set of configuration parameters
require Class::ISA;
foreach my $super ($class, Class::ISA::super_path($class)) {
no strict 'refs';
return (${$super.'::__TT_OBJECT'}, ${$super.'::__TT_CONFIG'}, $super) if ${$super.'::__TT_OBJECT'};
return (undef, ${$super.'::__TT_CONFIG'}, $super) if ${$super.'::__TT_CONFIG'};
}
return;
}
##############################################
###
### _tt_add_devpopup_info
###
##############################################
#
# This method will look to see if the devpopup
# plugin is being used, and will display all the
# parameters that were passed to the template.
#
sub _tt_add_devpopup_info {
my $self = shift;
my $name = shift;
my $params = shift;
return unless UNIVERSAL::can($self, 'devpopup');
( run in 1.530 second using v1.01-cache-2.11-cpan-75ffa21a3d4 )