Gantry::Template::Framing - Framing plugin for Gantry.


Gantry documentation Contained in the Gantry distribution.

Index


Code Index:

NAME

Top

Gantry::Template::Framing - Framing plugin for Gantry.

SYNOPSIS

Top

  use Gantry::Template::Framing;




DESCRIPTION

Top

To use Old World framing do something like this:

    use Gantry qw/ -Engine=YourChoice -TemplateEngine=Framing /;

This plugin module contains the method calls for the Template Framing.

METHODS

Top

$self->do_action

do_action is a required function for the template plugin. It purpose is to call or dispatch to the appropriate method. This function is passed three parameters:

my( $self, $action, @path_array ) = @_;

This method is responsible for calling the controller method and storing the output from the controller.

$self->do_error

This method gives you the flexibility of logging, re-estabilishing a database connection, rebuilding the template object, etc.

$self->do_process

This method is the final step in the template plugin. Here you need call the template object passing the controller data and return the output.

webapp_get_framing

A function for internal use. Returns to other methods of this class an old world framing object.

template_engine

Returns the package name.

SEE ALSO

Top

Gantry(3), Gantry::Template::TT

LIMITATIONS

Top

AUTHOR

Top

Tim Keefer <tkeefer@gmail.com>

COPYRIGHT and LICENSE

Top


Gantry documentation Contained in the Gantry distribution.

package Gantry::Template::Framing;

########### STILL BROKEN #######################

use strict;

use base 'Exporter';

use Carp;

############################################################
# Variables                                                #
############################################################
our @EXPORT     = qw( 
    do_action
    do_error
    do_process 
    template_engine
);

############################################################
# Functions                                                #
############################################################
#-------------------------------------------------
# $self->do_action( 'do_main|do_edit', @p )
#-------------------------------------------------
sub do_action {
    my( $self, $action, @p ) = @_;
    
    $self->stash->controller->data( $self->$action( @p ) ); 
}

#-------------------------------------------------
# $self->do_error( $r, @err )
#-------------------------------------------------
sub do_error {
    my( $self, $r, @err ) = @_;
    
#    $r->log_error( @err ); 

}

#-------------------------------------------------
# $self->do_process( $r, @err )
#-------------------------------------------------
sub do_process {
    my( $self ) = @_;

    if ( $self->template_disable ) {
        return( $self->stash->controller->data );
    }
    else {
        if ( not defined $self->stash->view->tempalte ) {
            $self->stash->view->template( $self->template );
        }

        return( $self->stash->view->data . $self->stash->controller->data )
            if not $self->stash->view->tempalte;

        return $self->_templatify();
    }
} # END do_process

#-------------------------------------------------
# $self->_templatify
#-------------------------------------------------
sub _templatify {
    my $self = shift;

    my $retval;

    # find the template
    my $template_file;
    my @dirs = split /:/, $self->root;  # assumes Unix style paths

    CANDIDATE_DIR:
    foreach my $dir ( @dirs ) {
        my $candidate = "$dir/" . $self->template;

        if ( -f $candidate ) {
            $template_file = $candidate;
            last CANDIDATE_DIR;
        }
    }

    die 'Error: could not find ' . $self->template . ' in ' . $self->root
            unless $template_file;

    open my $TEMPLATE, '<', $template_file
            or die "Couldn't read $template_file: $!";

    while ( my $line = <$TEMPLATE> ) {

        if ( $line =~ /(##DIR_CONFIG\(([a-zA-Z_0-9-]+)\)##)/ ) {
            my $val = $self->fish_config($2) || '';
            my $hook = quotemeta($1);

            $line =~ s/$hook/$val/g;
        }

        # directives to implement:
        # x DIR_CONFIG
        # - VAR
        # BODY_TEXT
        # AUX_BODY_TEXT
        # AUX_BODY_TEXT2
        # PAGE_TITLE
        # ONPAGE_TITLE
        # DATE
        # USER_NAME
        # INCLUDE (not yet), dumps a named file from doc root to output stream
    }

    close $TEMPLATE;

    return $retval;
}

#-------------------------------------------------
# $self->template_engine
#-------------------------------------------------
sub template_engine {
    return __PACKAGE__;
}

1;

__END__