Provider#

NAME#

Kernel::Output::Template::Provider - Template Toolkit custom provider

PUBLIC INTERFACE#

OTRSInit()#

performs some post-initialization and creates a bridge between Template::Toolkit and OTRS by adding the OTRS objects to the Provider object. This method must be called after instantiating the Provider object.

Please note that we only store a weak reference to the LayoutObject to avoid ring references.

_fetch()#

try to get a compiled version of a template from the CacheObject, otherwise compile the template and return it.

Copied and slightly adapted from Template::Provider.

A note about caching: we have three levels of caching.

1. we have an in-memory cache that stores the compiled Document objects (fastest).
2. we store the parsed data in the CacheObject to be re-used in another request.
3. for string templates, we have an in-memory cache in the parsing method _compile().
    It will return the already parsed object if it sees the same template content again.

_load()#

calls our pre processor when loading a template.

Inherited from Template::Provider.

_compile()#

compiles a .tt template into a Perl package and uses the CacheObject to cache it.

Copied and slightly adapted from Template::Provider.

store()#

inherited from Template::Provider. This function override just makes sure that the original in-memory cache cannot be used.

_PreProcessTemplateContent()#

this is our template pre processor.

It handles some OTRS specific tags like [% InsertTemplate(“TemplateName.tt”) %] and also performs compile-time code injection (ChallengeToken element into forms).

Besides that, it also makes sure the template is treated as UTF8.

This is run at compile time. If a template is cached, this method does not have to be executed on it any more.