Home | Wiki | OI 1.x Docs | OI 2.x Docs OI logo

NAME

OpenInteract2::ContentGenerator::TemplateSource - Common routines for loading content from OI2 templates

SYNOPSIS

 # Sample from Text::Template content generator
 
 sub generate {
    my ( $self, $template_config, $template_vars, $template_source ) = @_;
    my $log = get_logger( LOG_TEMPLATE );
    my ( $source_type, $source ) =
        OpenInteract2::ContentGenerator::TemplateSource->identify( $template_source );
    if ( $source_type eq 'NAME' ) {
        my ( $template, $filename, $modified ) =
            OpenInteract2::ContentGenerator::TemplateSource->load_source( $source );
        $source_type = 'STRING';
        $source      = $template;
        $log->is_debug &&
            $log->debug( "Loading from name $source" );
    }
    else {
        $log->is_debug &&
            $Log->Debug( "Loading from source $source_type" );
    }
    $template_config->{TYPE}   = $source_type;
    $template_config->{SOURCE} = ( ref $source eq 'SCALAR' )
                                   ? $$source : $source;
    my $template = Text::Template->new( %{ $template_config } );
    unless ( $template ) {
        my $msg = "Failed to create template parsing object: " .
                  $Text::Template::ERROR;
        $log->error( $msg );
        oi_error $msg;
    }
    my $content = $template->fill_in( HASH => $template_vars );
    unless ( $content ) {
        my $msg = "Failed to fill in template: $Text::Template::ERROR";
        $log->error( $msg );
        oi_error $msg ;
    }
    return $content;
 }

CLASS METHODS

identify( \%template_source )

Checks \%template_source for template information and returns a source type and source. Here are the types of information we check for in \%template_source and what is returned:

If none of these are found an exception is thrown. (We throw a different exception if you use the ancient 'db'/'package' syntax.)

Additionally, if we are able to pull a name from the template source and the current OpenInteract2::Controller object can handle it, we call add_template_used() on it, passing it the template name.

Returns: two item list of source type and source.

load_source( $template_name )

Fetches the template with the fully-qualified name $template_name and returns a three-item list with: contents, full filename, and the last modified time.

If the template is not found we throw an exception, and any exception thrown from the fetch propogates up.

Returns: a three-item list with: contents, full filename, and the last modified time (which is a DateTime object).

COPYRIGHT

Copyright (c) 2002-2003 Chris Winters. All rights reserved.

AUTHORS

Chris Winters <chris@cwinters.com>

Generated from the OpenInteract 1.99_04 source.


Home | Wiki | OI 1.x Docs | OI 2.x Docs
SourceForge Logo