The London Perl and Raku Workshop takes place on 26th Oct 2024. If your company depends on Perl, please consider sponsoring and/or attending.

NAME

CGI::AppBuilder - Configuration initializer

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
    echoMSG  - 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)

Input variables:

  $q    - CGI object 
  $ar   - array ref for parameters 
  $ar_log - hash ref for log record

Variables used or routines called:

  Debug::EchoMessage
    echoMSG - 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}

build_html_header ($q, $ar)

Input variables:

  $q    - CGI object 
  $ar   - array ref for parameters 

Variables used or routines called:

  Debug::EchoMessage
    echoMSG - echo messages
    set_param - get a parameter from hash array

How to use:

  my $ifn = 'myConfig.ini'; 
  my ($q,$ar) = $s->get_inputs($ifn);
  my $hrf = $self->build_html_header($q, $ar);

Return: hash array or array ref

This method performs the following tasks:

  1) check the following parameters: page_title, page_style, 
     page_meta, page_author, page_target, js_src, 
  2) writes log records to log files 
  3) close database connection if it finds DB handler in {dbh}

disp_form ($q, $ar)

Input variables:

  $q    - CGI object 
  $ar   - array ref for parameters 

Variables used or routines called:

  Debug::EchoMessage
    echoMSG - echo messages
    set_param - get a parameter from hash array

How to use:

  my $ifn = 'myConfig.ini'; 
  my ($q,$ar) = $s->get_inputs($ifn);
  $self->disp_form($q, $ar);

Return: none

This method expects the following varialbes:

  gi - GUI items
  gc - GUI columns
  gf - GUI form
  db - database connection varialbes (optional)
  vars_keep - variables separated by comma for hidden variables

This method performs the following tasks:

  1) checks whether GI, GC and GF variables being defined. 
  2) replaces AR, DB, GI, and GC variables with their contents
  3) builds GF elements 
  4) add hidden variables
  5) print the form

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.

  • Version 0.11

    Rewrote start_app method so that content-type can be changed.

SEE ALSO (some of docs that I check often)

CGI::Getopt, Oracle::Loader, Oracle::Trigger, CGI::AppBuilder, File::Xcopy, Debug::EchoMessage

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 489:

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