<?php
define("ABS_PATH", $_SERVER['DOCUMENT_ROOT']);
include(ABS_PATH . "/head_nav.php");
include(ABS_PATH . "/middle.php");
?>
          <div class="section">
            <div class="toc-wrapper">
              <span class="toc-title">Contents:</span>
              <ul class="toc">
                  <li class=""><a href="#SYNOPSIS">SYNOPSIS</a></li>
                  <li class=""><a href="#DESCRIPTION">DESCRIPTION</a></li>
                  <li class=""><a href="#METHODS">METHODS</a></li>
                  <li class="sub"><a href="#method_new">new(\%params)</a></li>
                  <li class="sub"><a href="#method_fetch">fetch($name, @args)</a></li>
                  <li class=""><a href="#CONFIGURATION_OPTIONS">CONFIGURATION OPTIONS</a></li>
                  <li class="sub"><a href="#section_PLUGINS">PLUGINS</a></li>
                  <li class="sub"><a href="#section_PLUGIN_BASE">PLUGIN_BASE</a></li>
                  <li class="sub"><a href="#section_LOAD_PERL">LOAD_PERL</a></li>
                  <li class="sub"><a href="#section_TOLERANT">TOLERANT</a></li>
                  <li class="sub"><a href="#section_DEBUG">DEBUG</a></li>
                  <li class=""><a href="#TEMPLATE_TOOLKIT_PLUGINS">TEMPLATE TOOLKIT PLUGINS</a></li>
                  <li class=""><a href="#AUTHOR">AUTHOR</a></li>
                  <li class=""><a href="#COPYRIGHT">COPYRIGHT</a></li>
                  <li class=""><a href="#SEE_ALSO">SEE ALSO</a></li>
              </ul>
            </div>
          </div>
          
                <div class="pod">
            <div class="section">
              <div class="head">
                <h1 id="SYNOPSIS">SYNOPSIS</h1>
                <a href="#body" class="top" title="Back up to the top of the page" >Top</a>
              </div>
              <div class="body">
                <pre>use Template::Plugins;

$plugin_provider = Template::Plugins-&gt;new(\%options);

($plugin, $error) = $plugin_provider-&gt;fetch($name, @args);</pre>
              </div>
            </div>
            <div class="section">
              <div class="head">
                <h1 id="DESCRIPTION">DESCRIPTION</h1>
                <a href="#body" class="top" title="Back up to the top of the page" >Top</a>
              </div>
              <div class="body">
                <p>
                      The <code>Template::Plugins</code> module defines a provider class which
                      can be used to load and instantiate Template Toolkit plugin modules.
                    </p>
              </div>
            </div>
            <div class="section">
              <div class="head">
                <h1 id="METHODS">METHODS</h1>
                <a href="#body" class="top" title="Back up to the top of the page" >Top</a>
              </div>
              <div class="body">
                <div class="subsection">
                  <div class="head">
                    <h2 id="method_new" class="method" onclick="switch_subsection(this)" title="Click title to show/hide sub-section content.">new(\%params)</h2>
                    <a href="#body" class="top" title="Back up to the top of the page" >Top</a>
                  </div>
                  <div class="body">
                    <p>
                          Constructor method which instantiates and returns a reference to a
                          <code>Template::Plugins</code> object. A reference to a hash array of
                          configuration items may be passed as a parameter. These are described
                          below.
                        </p>
                        <p>
                          Note that the <a href="../../modules/Template.php">Template</a>
                          front-end module creates a <code>Template::Plugins</code> provider,
                          passing all configuration items. Thus, the examples shown below in the
                          form:
                        </p>
                        <pre>$plugprov = Template::Plugins-&gt;new({
    PLUGIN_BASE =&gt; 'MyTemplate::Plugin',
    LOAD_PERL   =&gt; 1,
    ...
});</pre>
                        <p>
                          can also be used via the <a href="../../modules/Template.php">Template</a> module as:
                        </p>
                        <pre>$ttengine = Template-&gt;new({
    PLUGIN_BASE =&gt; 'MyTemplate::Plugin',
    LOAD_PERL   =&gt; 1,
    ...
});</pre>
                        <p>
                          as well as the more explicit form of:
                        </p>
                        <pre>$plugprov = Template::Plugins-&gt;new({
    PLUGIN_BASE =&gt; 'MyTemplate::Plugin',
    LOAD_PERL   =&gt; 1,
    ...
});

$ttengine = Template-&gt;new({
    LOAD_PLUGINS =&gt; [ $plugprov ],
});</pre>
                  </div>
                </div>    <div class="subsection">
                  <div class="head">
                    <h2 id="method_fetch" class="method" onclick="switch_subsection(this)" title="Click title to show/hide sub-section content.">fetch($name, @args)</h2>
                    <a href="#body" class="top" title="Back up to the top of the page" >Top</a>
                  </div>
                  <div class="body">
                    <p>
                          Called to request that a plugin of a given name be provided. The relevant
                          module is first loaded (if necessary) and the <a href="../../modules/Template/Plugin.php#method_load">load()</a> class method
                          called to return the factory class name (usually the same package name)
                          or a factory object (a prototype). The <a href="../../modules/Template/Plugin.php#method_new">new()</a> method is then
                          called as a class or object method against the factory, passing all
                          remaining parameters.
                        </p>
                        <p>
                          Returns a reference to a new plugin object or <code>($error,
                          STATUS_ERROR)</code> on error. May also return <code>(undef,
                          STATUS_DECLINED)</code> to decline to serve the request. If
                          <code>TOLERANT</code> is set then all errors will be returned as
                          declines.
                        </p>
                  </div>
                </div>
              </div>
            </div>
            <div class="section">
              <div class="head">
                <h1 id="CONFIGURATION_OPTIONS">CONFIGURATION OPTIONS</h1>
                <a href="#body" class="top" title="Back up to the top of the page" >Top</a>
              </div>
              <div class="body">
                <p>
                      The following list summarises the configuration options that can be
                      provided to the <code>Template::Plugins</code> <a
                      href="#method_new">new()</a> constructor. Please consult <a href="../../manual/Config.php">Template::Manual::Config</a>
                      for further details and examples of each configuration option in use.
                    </p>
                    <div class="subsection">
                  <div class="head">
                    <h2 id="section_PLUGINS" onclick="switch_subsection(this)" title="Click title to show/hide sub-section content.">PLUGINS</h2>
                    <a href="#body" class="top" title="Back up to the top of the page" >Top</a>
                  </div>
                  <div class="body">
                    <p>
                          The <a href="../../manual/Config.php#section_PLUGINS">PLUGINS</a> option can be used to provide a
                          reference to a hash array that maps plugin names to Perl module names.
                        </p>
                        <pre>my $plugins = Template::Plugins-&gt;new({
    PLUGINS =&gt; {
        cgi =&gt; 'MyOrg::Template::Plugin::CGI',
        foo =&gt; 'MyOrg::Template::Plugin::Foo',
        bar =&gt; 'MyOrg::Template::Plugin::Bar',
    },  
});</pre>
                  </div>
                </div>    <div class="subsection">
                  <div class="head">
                    <h2 id="section_PLUGIN_BASE" onclick="switch_subsection(this)" title="Click title to show/hide sub-section content.">PLUGIN_BASE</h2>
                    <a href="#body" class="top" title="Back up to the top of the page" >Top</a>
                  </div>
                  <div class="body">
                    <p>
                          If a plugin is not defined in the <a href="../../manual/Config.php#section_PLUGINS">PLUGINS</a>
                          hash then the <a href="../../manual/Config.php#section_PLUGIN_BASE">PLUGIN_BASE</a> is used to attempt to construct
                          a correct Perl module name which can be successfully loaded.
                        </p>
                        <pre># single value PLUGIN_BASE
my $plugins = Template::Plugins-&gt;new({
    PLUGIN_BASE =&gt; 'MyOrg::Template::Plugin',
});

# multiple value PLUGIN_BASE
my $plugins = Template::Plugins-&gt;new({
    PLUGIN_BASE =&gt; [   'MyOrg::Template::Plugin',
                       'YourOrg::Template::Plugin'  ],
});</pre>
                  </div>
                </div>    <div class="subsection">
                  <div class="head">
                    <h2 id="section_LOAD_PERL" onclick="switch_subsection(this)" title="Click title to show/hide sub-section content.">LOAD_PERL</h2>
                    <a href="#body" class="top" title="Back up to the top of the page" >Top</a>
                  </div>
                  <div class="body">
                    <p>
                          The <a href="../../manual/Config.php#section_LOAD_PERL">LOAD_PERL</a> option can be set to allow you to
                          load regular Perl modules (i.e. those that don't reside in the
                          <code>Template::Plugin</code> or another user-defined namespace) as
                          plugins.
                        </p>
                        <p>
                          If a plugin cannot be loaded using the <a href="../../manual/Config.php#section_PLUGINS">PLUGINS</a> or
                          <a href="../../manual/Config.php#section_PLUGIN_BASE">PLUGIN_BASE</a> approaches then, if the <a
                          href="../../manual/Config.php#section_LOAD_PERL">LOAD_PERL</a> is set, the provider will make a
                          final attempt to load the module without prepending any prefix to the
                          module path.
                        </p>
                        <p>
                          Unlike regular plugins, modules loaded using <a href="../../manual/Config.php#section_LOAD_PERL">LOAD_PERL</a> do not receive a <a href="../../modules/Template/Context.php">Template::Context</a> reference as
                          the first argument to the <code>new()</code> constructor method.
                        </p>
                  </div>
                </div>    <div class="subsection">
                  <div class="head">
                    <h2 id="section_TOLERANT" onclick="switch_subsection(this)" title="Click title to show/hide sub-section content.">TOLERANT</h2>
                    <a href="#body" class="top" title="Back up to the top of the page" >Top</a>
                  </div>
                  <div class="body">
                    <p>
                          The <a href="../../manual/Config.php#section_TOLERANT">TOLERANT</a> flag can be set to indicate that the
                          <code>Template::Plugins</code> module should ignore any errors
                          encountered while loading a plugin and instead return
                          <code>STATUS_DECLINED</code>.
                        </p>
                  </div>
                </div>    <div class="subsection">
                  <div class="head">
                    <h2 id="section_DEBUG" onclick="switch_subsection(this)" title="Click title to show/hide sub-section content.">DEBUG</h2>
                    <a href="#body" class="top" title="Back up to the top of the page" >Top</a>
                  </div>
                  <div class="body">
                    <p>
                          The <a href="../../manual/Config.php#section_DEBUG">DEBUG</a> option can be used to enable debugging
                          messages for the <code>Template::Plugins</code> module by setting it to
                          include the <code>DEBUG_PLUGINS</code> value.
                        </p>
                        <pre>use Template::Constants qw( :debug );

my $template = Template-&gt;new({
    DEBUG =&gt; DEBUG_FILTERS | DEBUG_PLUGINS,
});</pre>
                  </div>
                </div>
              </div>
            </div>
            <div class="section">
              <div class="head">
                <h1 id="TEMPLATE_TOOLKIT_PLUGINS">TEMPLATE TOOLKIT PLUGINS</h1>
                <a href="#body" class="top" title="Back up to the top of the page" >Top</a>
              </div>
              <div class="body">
                <p>
                      Please see <a href="../../manual/Plugins.php">Template::Manual::Plugins</a> For a complete list of all the plugin
                      modules distributed with the Template Toolkit.
                    </p>
              </div>
            </div>
            <div class="section">
              <div class="head">
                <h1 id="AUTHOR">AUTHOR</h1>
                <a href="#body" class="top" title="Back up to the top of the page" >Top</a>
              </div>
              <div class="body">
                <p>
                      Andy Wardley &lt;abw@wardley.org&gt; <a
                      href="https://wardley.org/">https://wardley.org/</a>
                    </p>
              </div>
            </div>
            <div class="section">
              <div class="head">
                <h1 id="COPYRIGHT">COPYRIGHT</h1>
                <a href="#body" class="top" title="Back up to the top of the page" >Top</a>
              </div>
              <div class="body">
                <p>
                      Copyright (C) 1996-2007 Andy Wardley. All Rights Reserved.
                    </p>
                    <p>
                      This module is free software; you can redistribute it and/or modify it
                      under the same terms as Perl itself.
                    </p>
              </div>
            </div>
            <div class="section">
              <div class="head">
                <h1 id="SEE_ALSO">SEE ALSO</h1>
                <a href="#body" class="top" title="Back up to the top of the page" >Top</a>
              </div>
              <div class="body">
                <p>
                      <a href="../../manual/Plugins.php">Template::Manual::Plugins</a>, <a href="../../modules/Template/Plugin.php">Template::Plugin</a>, <a href="../../modules/Template/Context.php">Template::Context</a>, <a href="../../modules/Template.php">Template</a>.
                    </p>
              </div>
            </div>
            
            </div>
<?php include(ABS_PATH . "/footer.php"); ?>
