The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.

NAME

CGI::AppBuilder - CGI Application Builder

SYNOPSIS

  use CGI::AppBuilder;

  my $cg = CGI::AppBuilder->new('ifn', 'my_init.cfg', 'opt', 'vhS:a:');
  my $ar = $cg->get_inputs; 

DESCRIPTION

There are already many application builders out there. Why you need another one? Well, if you are already familiar with CGI::Builder or CGI::Application, this one will provide some useful methods to you to read your configuration file and pre-process your templates. Please read on.

new (ifn => 'file.cfg', opt => 'hvS:')

Input variables:

  $ifn  - input/initial file name. 
  $opt  - options for Getopt::Std

Variables used or routines called:

  None

How to use:

   my $ca = new CGI::AppBuilder;      # or
   my $ca = CGI::AppBuilder->new;     # or
   my $ca = CGI::AppBuilder->new(ifn=>'file.cfg',opt=>'hvS:'); # or
   my $ca = CGI::AppBuilder->new('ifn', 'file.cfg','opt','hvS:'); 

Return: new empty or initialized CGI::AppBuilder object.

This method constructs a Perl object and capture any parameters if specified. It creates and defaults the following variables:

  $self->{ifn} = ""
  $self->{opt} = 'hvS:'; 

start_app ($prg,$arg,$nhh)

Input variables:

  $prg  - program name 
  $arg  - array ref for arguments - %ARGV
  $nhh  - no html header pre-printed 
          1 - no HTML header is set in any circumstance
          0 - HTML header will be set when it is possible

Variables used or routines called:

  build_html_header - build HTML header array
  Debug::EchoMessage
    echo_msg  - echo messages
    start_log - start and write message log
  CGI::Getopt
    get_inputs - read input file and/or CGI form inputs
    

How to use:

   my ($q, $ar, $ar_log) = $self->start_app($0,\@ARGV);

Return: ($q,$ar,$ar_log) where

  $q - a CGI object
  $ar - hash ref containing parameters from input file and/or 
        CGI form inputs and the following elements:
    ifn - initial file name
    opt - command input options
    cfg - configuratoin array
    html_header - HTML header parameters (hash ref)
    msg - contain message hash
  $ar_log - hash ref containing log information

This method performs the following tasks:

  1) initial a CGI object
  2) read initial file if specified or search for a default file
     (the same as $prg with .ini extension) and save the file name
     to $ar->{ifn}. 
  3) define message level
  4) start HTML header and body using I<page_title> and I<page_style>
     if they are defined.
  5) parse CGI form inputs and combine them with parameters defined
     in initial file
  6) read configuration file ($prg.cfg) if it exists and save the 
     array to $ar->{cfg}
  7) prepare log record if write log is enabled

It checks the parameters read from initial file for page_title, page_style, page_author, page_meta, top_nav, bottom_nav, and js_src.

end_app ($q, $ar, $ar_log, $nhh)

Input variables:

  $q    - CGI object 
  $ar   - array ref for parameters 
  $ar_log - hash ref for log record
  $nhh  - no html header pre-printed 
          1 - no HTML is printed in any circumstance
          0 - HTML header will be printed when it is possible

Variables used or routines called:

  Debug::EchoMessage
    echo_msg - echo messages
    end_log - start and write message log
    set_param - get a parameter from hash array

How to use:

   my ($q, $ar, $ar_log) = $self->start_app($0,\@ARGV);
   $self->end_app($q, $ar, $ar_log);

Return: none

This method performs the following tasks:

  1) ends HTML document 
  2) writes log records to log files 
  3) close database connection if it finds DB handler in {dbh}

HISTORY

  • Version 0.10

    This version is to extract out the app methods from CGI::Getopt class. It was too much for CGI::Getopt to include the start_app, end_app, build_html_header, and disp_form methods.

      0.11 Rewrote start_app method so that content-type can be changed.
      0.12 Moved disp_form to CGI::AppBuilder::Form,
           moved build_html_header to CGI::AppBuilder::Header, and 
           imported all the methods in sub-classes into this class.
  • Version 0.20

SEE ALSO (some of docs that I check often)

Oracle::Loader, Oracle::Trigger, CGI::Getopt, File::Xcopy, CGI::AppBuilder, CGI::AppBuilder::Message, CGI::AppBuilder::Log, CGI::AppBuilder::Config, etc.

AUTHOR

Copyright (c) 2005 Hanming Tu. All rights reserved.

This package is free software and is provided "as is" without express or implied warranty. It may be used, redistributed and/or modified under the terms of the Perl Artistic License (see http://www.perl.com/perl/misc/Artistic.html)

1 POD Error

The following errors were encountered while parsing the POD:

Around line 300:

You forgot a '=back' before '=head1'