CGI-Application-Plugin-TmplInnerOuter
view release on metacpan or search on metacpan
lib/CGI/Application/Plugin/TmplInnerOuter.pm view on Meta::CPAN
*tmpl_main = \&_tmpl_outer; # includes argument, this pulls outer, main.html template
*_tmpl_inner = \&_tmpl;
*tmpl = \&_tmpl; # without argument, returns inner template
sub _tmpl_outer {
my $self = shift;
return $self->_tmpl('main.html');
}
sub _tmpl {
my($self,$name) = @_;
$name ||= $self->_get_tmpl_name;
#$self->{_tmpl} ||= {};
unless( $self->{_tmpl}->{$name} ) {
my $path = $self->tmpl_path;
$path ||= './';
$self->tmpl_path( $path );
my $tmpl = get_tmpl($name,$self->_get_tmpl_default($name))
or warn("cant get [$name] template");
$self->{_tmpl}->{$name} = $tmpl;
}
return $self->{_tmpl}->{$name};
}
sub _set_tmpl_default {
my ($self,$default,$name) = @_;
defined $default or confess('missing template code arg');
$name ||= $self->_get_tmpl_name;
#$self->{_tmpl_default} ||= {};
$self->{_tmpl_default}->{$name} = \$default;
return $name;
}
*tmpl_inner_name_set = \&tmpl_inner_name;
sub tmpl_inner_name {
my ($self,$name) = @_;
if( defined $name ){ $self->{__tmpl_inner_name} = $name }
$self->{__tmpl_inner_name} ||= $self->get_current_runmode or die('no runmode');
return $self->{__tmpl_inner_name};
}
sub _get_tmpl_name { $_[0]->tmpl_inner_name . '.html' }
sub _get_tmpl_default {
my ($self,$name) = @_;
$name ||= $self->_get_tmpl_name;
#$self->{_tmpl_default} ||={};
if ($name eq 'main.html' and ! defined $self->{_tmpl_default}->{'main.html'}){
### main.html was not defined, using default hard coded main.html template
$self->_set_tmpl_default(
q{<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html>
<head>
<title><TMPL_VAR NAME=TITLE></title>
<meta http-equiv="Content-Type" content="text/html;charset=utf-8"/>
</head>
<body>
<TMPL_VAR NAME=BODY>
</body>
</html>},'main.html');
}
return $self->{_tmpl_default}->{$name};
}
*tmpl_set = \&_set_vars;
*_get_vars = \&_set_vars;
sub _set_vars {
my $self = shift;
#$self->{_tmpl_vars} || = {};
#unless ( @_ ){
# return $self->{_tmpl_vars};
#}
my %vars = @_;
for ( keys %vars ){
my $key = $_; my $val = $vars{$key}; defined $val or next;
$self->{_tmpl_vars}->{$key} = $val;
};
#return 1;
$self->{_tmpl_vars}
}
sub _get_vars {
my $self = shift;
$self->{_tmpl_vars} ||={};
return $self->{_tmpl_vars};
}
sub _feed_vars {
my $self = shift;
my $tmpl = shift;
defined $tmpl or confess('missing arg');
### start
my $vars = $self->_get_vars;
VARS : for( keys %$vars){
my $key = $_;
my $val = $vars->{$key};
defined $val or next VARS;
$tmpl->param( $_ => $vars->{$_} );
}
### ok
return 1;
( run in 1.479 second using v1.01-cache-2.11-cpan-13bb782fe5a )