NAME
   CGI::Application::Plugin::PageBuilder - Simplifies building pages with
   multiple templates.

SYNOPSIS
   This module is built on the idea that building complex web pages with
   the default CGI::Application method can get to be a real mess if you
   prefer to load many smaller templates to create your pages.

   Now instead of

    sub run_mode {
           my $self = shift;
           my $header = $self->load_tmpl( 'header.tmpl' )->output();
           my $html;

           my $start = $self->load_tmpl( 'view_start.tmpl' );
           $start->param( view_name => 'This View' );
           $html .= $start->output();

            my $db = MyApp::DB::Views->retrieve_all(); # Class::DBI
            while ( my $line = $db->next() ) {
                    my $template = $self->load_tmpl( 'view_element.tmpl' );
                    $template->param( name => $line->name() );
                    $template->param( info => $line->info() );
                    $html .= $template->output();
            }
            $html .= $self->load_tmpl( 'view_end.tmpl' )->output();
            $html .= $self->load_tmpl( 'footer.tmpl' )->output();
            return $html;
    }

   You can do this:

    CGI:App subclass:

    sub run_mode {
           my $self = shift;

           $self->pb_template( 'header.tmpl' );
           $self->pb_template( 'view_start.tmpl' );

           my $db = MyApp::DB::Views->retrieve_all();
           while( my $line = $db->next() ) {
                   $self->pb_template( 'view_element.tmpl' );
                   $self->pb_param( name, $line->name() );
                   $self->pb_param( info, $line->info() );
           }
           $self->pb_template( 'view_end.tmpl' );
           $self->pb_template( 'footer.tmpl' );

           return $self->pb_build();
    }

   Which arguably looks much cleaner.

METHODS
 pb_template
   $self->pb_template( 'the_template_to_use.tmpl', ... );

   Adds the template to the page. Any arguments past the template name are
   passed to HTML::Template.

 pb_param
   $self->pb_param( name, value );

   Sets the value for the param in the template. This applies to the last
   template loaded by pb_template().

 pb_build
   $self->pb_build();

   Builds the page and returns the resulting HTML.

TODO
   Passing options to HTML::Template needs more testing.

AUTHOR
   Clint Moore "<[email protected]>"

LICENSE AND COPYRIGHT
   Copyright (c) 2005, Clint Moore "<[email protected]>".

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