GSP
Quick Navigator

Search Site

Unix VPS
A - Starter
B - Basic
C - Preferred
D - Commercial
MPS - Dedicated
Previous VPSs
* Sign Up! *

Support
Contact Us
Online Help
Handbooks
Domain Status
Man Pages

FAQ
Virtual Servers
Pricing
Billing
Technical

Network
Facilities
Connectivity
Topology Map

Miscellaneous
Server Agreement
Year 2038
Credits
 

USA Flag

 

 

Man Pages


Manual Reference Pages  -  CGI::APPLICATION::PLUGIN::ANYTEMPLATE::BASE (3)

.ds Aq ’

NAME

CGI::Application::Plugin::AnyTemplate::Base - Base class for templates

CONTENTS

DESCRIPTION

This documentation is mainly for developers who want to write additional Template drivers. For how to use the system, see the docs for CGI::Application::Plugin::AnyTemplate

METHODS

param The param method gets and sets values within the template.



    my $template = $self->template->load;

    my @param_names = $template->param();

    my $value = $template->param(name);

    $template->param(name => value);
    $template->param(
        name1 => value1,
        name2 => value2
    );



It is designed to behave similarly to the param method in other modules like CGI and HTML::Template.

get_param_hash Returns the template variables as a hash of names and values.



    my %params     = $template->get_param_hash;



In a scalar context, returns a reference to the hash used internally to contain the values:



    my $params_ref = $template->get_param_hash;



clear_params Clears the values stored in the template:



    $template->param(
        name1 => value1,
        name1 => value2
    );
    $template->clear_params;
    $template->param(
        name_foo => value_bar,
    );

    # params are now:
        name_foo => value_bar,



output Returns the template with all the values filled in.



    return $template->output();



You can also supply names and values to the template at this stage:



    return $template->output(name => value, name2 => value2);



Before the template output is generated, the template_pre_process hook is called. Any callbacks that you register to this hook will be called before each template is processed. Register a template_pre_process callback as follows:



    $self->add_callback(template_pre_process, \&my_tmpl_pre_process);



Pre-process callbacks will be passed a reference to the $template object, and can can modify the parameters passed into the template by using the param method:



    sub my_tmpl_pre_process {
        my ($self, $template) = @_;

        # Change the internal template parameters by reference
        my $params = $template->get_param_hash;

        foreach my $key (keys %$params) {
            $params{$key} = to_piglatin($params{$key});
        }

        # Can also set values using the param method
        $template->param(foo, bar);

    }



After the template output is generated, the template_post_process hook is called. You can register a template_post_process callback as follows:



    $self->add_callback(template_post_process, \&my_tmpl_post_process);



Any callbacks that you register to this hook will be called after each template is processed, and will be passed both a reference to the template object and a reference to the output generated by the template. This allows you to modify the output of the template:



    sub my_tmpl_post_process {
        my ($self, $template, $output_ref) = @_;

        $$output_ref =~ s/foo/bar/;
    }



When you call the output method, any components embedded in the template are run. See EMBEDDED COMPONENTS, below.

filename If the template was loaded from a file, the filename method returns the template filename.
string_ref If the template was loaded from a string, the string_ref method returns a reference to the string.
object Returns a reference to the underlying template driver, e.g. the HTML::Template object or the Template::Toolkit object.

DOCS FOR TEMPLATE MODULE DEVELOPERS

The following documentation is of interest primarly for developers who wish to add support for a new type of Template system.

    METHODS FOR DEVELOPERS

initialize This method is called by the controller at load to create the driver-specific subclass of CGI::Application::Plugin::AnyTemplate

This is a virtual method and must be defined in the subclass.

The following paramters are passed to the driver and available as keys of the driver’s $self object:



     driver_config => ...    # hashref of driver-specific config
     native_config => ...    # hashref of native template system specific config
     include_paths => ...    # listref of template include paths
     filename      => ...    # template filename
     webapp        => ...    # reference to the current CGI::Application $self



driver_config_keys When it creates the driver object, CGI::Application::Plugin::AnyTemplate has to separate the driver_config from the native_config.

driver_config_params should return a list of parameters that are specific to the driver_config and not the native template system config.

For instance, the user can specify



    $self->template->config(
        HTMLTemplate => {
              embed_tag_name    => embed,
              global_vars       => 1,
              die_on_bad_params => 0,
              cache             => 1
        },
    );



The parameters global_vars, die_on_bad_params, and cache are all specific to HTML::Template. These are considered native parameters.

But embed_tag_name configures the CGI::Application::Plugin::AnyTemplate::Driver::HTMLTemplate subclass. This is considered a driver parameter.

Therefore embed_tag_name should be included in the list of params returned by driver_config_params.

Example driver_config_params:



    sub driver_config_keys {
        template_extension,
        embed_tag_name
    }



default_driver_config Should return a hash of default values for driver_config_params.

For instance:



    sub default_driver_config {
        {
            template_extension => .foo,
            embed_tag_name     => embed,
        };
    }



render_template This method must be overriden in a subclass. It has the responsibility of filling the template in $self->filename with the values in $self->param via the appropriate template system, and returning the output as either a string or a reference to a string.

It also must manage embedding nested components.

AUTHOR

Michael Graham, <mgraham@cpan.org>

BUGS

Please report any bugs or feature requests to bug-cgi-application-plugin-anytemplate@rt.cpan.org, or through the web interface at <http://rt.cpan.org>. I will be notified, and then you’ll automatically be notified of progress on your bug as I make changes.

SOURCE

The source code repository for this module can be found at http://github.com/mgraham/CAP-AnyTemplate/

SEE ALSO



    CGI::Application::Plugin::AnyTemplate
    CGI::Application::Plugin::AnyTemplate::ComponentHandler
    CGI::Application::Plugin::AnyTemplate::Driver::HTMLTemplate
    CGI::Application::Plugin::AnyTemplate::Driver::HTMLTemplateExpr
    CGI::Application::Plugin::AnyTemplate::Driver::HTMLTemplatePluggable
    CGI::Application::Plugin::AnyTemplate::Driver::TemplateToolkit
    CGI::Application::Plugin::AnyTemplate::Driver::Petal

    CGI::Application

    Template::Toolkit
    HTML::Template

    HTML::Template::Pluggable
    HTML::Template::Plugin::Dot

    Petal

    CGI::Application::Plugin::TT



COPYRIGHT & LICENSE

Copyright 2005 Michael Graham, All Rights Reserved.

This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself.

Search for    or go to Top of page |  Section 3 |  Main Index


perl v5.20.3 CGI::APPLICATION::PLUGIN::ANYTEMPLATE::BASE (3) 2016-03-18

Powered by GSP Visit the GSP FreeBSD Man Page Interface.
Output converted with manServer 1.07.