CGI::FormBuilder::Source::File man page on Pidora

Man page or keyword search:  
man Server   31170 pages
apropos Keyword Search (all sections)
Output format
Pidora logo
[printable version]

CGI::FormBuilder::SourUserFContributed Perl DCGI::FormBuilder::Source::File(3)

NAME
       CGI::FormBuilder::Source::File - Initialize FormBuilder from external
       file

SYNOPSIS
	   # use the main module
	   use CGI::FormBuilder;

	   my $form = CGI::FormBuilder->new(source => 'form.conf');

	   my $lname = $form->field('lname');  # like normal

DESCRIPTION
       This parses a file that contains FormBuilder configuration options, and
       returns a hash suitable for creating a new $form object.	 Usually, you
       should not use this directly, but instead pass a $filename into
       "CGI::FormBuilder", which calls this module.

       The configuration format steals from Python (ack!) which is sensitive
       to indentation and newlines. This saves you work in the long run.
       Here's a complete form:

	   # form basics
	   method: POST
	   header: 1
	   title:  Account Information

	   # define fields
	   fields:
	       fname:
		   label:   First Name
		   size:    40

	       minit:
		   label:   Middle Initial
		   size:    1

	       lname:
		   label:   Last Name
		   size:    60

	       email:
		   size:    80

	       phone:
		   label:    Home Phone
		   comment:  (optional)
		   required: 0

	       sex:
		   label:   Gender
		   options: M=Male, F=Female
		   jsclick: javascript:alert('Change your mind??')

	       # custom options and sorting sub
	       state:
		   options:  \&getstates
		   sortopts: \&sortstates

	       datafile:
		   label:   Upload Survey Data
		   type:    file
		   growable:   1

	   # validate our above fields
	   validate:
	       email:  EMAIL
	       phone:  /^1?-?\d{3}-?\d{3}-?\d{4}$/

	   required: ALL

	   # create two submit buttons, and skip validation on "Cancel"
	   submit:  Update, Cancel
	   jsfunc:  <<EOJS
	 // skip validation
	 if (this._submit.value == 'Cancel') return true;
       EOJS

	   # CSS
	   styleclass: acctInfoForm
	   stylesheet: /style/acct.css

       Any option that FormBuilder accepts is supported by this configuration
       file. Basically, any time that you would place a new bracket to create
       a nested data structure in FormBuilder, you put a newline and indent
       instead.

       Multiple options MUST be separated by commas. All whitespace is
       preserved intact, so don't be confused and do something like this:

	   fields:
	       send_me_emails:
		   options: Yes No

       Which will result in a single "Yes No" option. You want:

	   fields:
	       send_me_emails:
		   options: Yes, No

       Or even better:

	   fields:
	       send_me_emails:
		   options: 1=Yes, 0=No

       Or perhaps best of all:

	   fields:
	       send_me_emails:
		   options: 1=Yes Please, 0=No Thanks

       If you're confused, please join the mailing list:

	   fbusers-subscribe@formbuilder.org

       We'll be able to help you out.

METHODS
   new()
       This creates a new "CGI::FormBuilder::Source::File" object.

	   my $source = CGI::FormBuilder::Source::File->new;

       Any arguments specified are taken as defaults, which the file then
       overrides. For example, to always turn off "javascript" (so you don't
       have to in all your config files), use:

	   my $source = CGI::FormBuilder::Source::File->new(
			     javascript => 0
			);

       Then, every file parsed by $source will have "javascript => 0" in it,
       unless that file has a "javascript:" setting itself.

   parse($source)
       This parses the specified source, which is either a $file, "\$string",
       or "\@array", and returns a hash which can be passed directly into
       "CGI::FormBuilder":

	   my %conf = $source->parse('myform.conf');
	   my $form = CGI::FormBuilder->new(%conf);

   write_module($modname)
       This will actually write a module in the current directory which you
       can then use in subsequent scripts to get the same form:

	   $source->parse('myform.conf');
	   $source->write_module('MyForm');    # write MyForm.pm

	   # then in your Perl code
	   use MyForm;
	   my $form = MyForm->new;

       You can also override settings from "MyForm" the same as you would in
       FormBuilder:

	   my $form = MyForm->new(
			   header => 1,
			   submit => ['Save Changes', 'Abort']
		      );

       This will speed things up, since you don't have to re-parse the file
       every time. Nice idea Peter.

NOTES
       This module was completely inspired by Peter Eichman's
       "Text::FormBuilder", though the syntax is different.

       Remember that to get a new level in a hashref, you need to add a
       newline and indent. So to get something like this:

	   table => {cellpadding => 1, cellspacing => 4},
	   td	 => {align => 'center', bgcolor => 'gray'},
	   font	 => {face => 'arial,helvetica', size => '+1'},

       You need to say:

	   table:
	       cellpadding: 1
	       cellspacing: 4

	   td:
	       align: center
	       bgcolor: gray

	   font:
	       face: arial,helvetica
	       size: +1

       You get the idea...

SEE ALSO
       CGI::FormBuilder, Text::FormBuilder

REVISION
       $Id: File.pm 100 2007-03-02 18:13:13Z nwiger $

AUTHOR
       Copyright (c) 2005-2006 Nathan Wiger <nate@wiger.org>. All Rights
       Reserved.

       This module is free software; you may copy this under the terms of the
       GNU General Public License, or the Artistic License, copies of which
       should have accompanied your Perl kit.

perl v5.14.1			  2007-03-02 CGI::FormBuilder::Source::File(3)
[top]

List of man pages available for Pidora

Copyright (c) for man pages and the logo by the respective OS vendor.

For those who want to learn more, the polarhome community provides shell access and support.

[legal] [privacy] [GNU] [policy] [cookies] [netiquette] [sponsors] [FAQ]
Tweet
Polarhome, production since 1999.
Member of Polarhome portal.
Based on Fawad Halim's script.
....................................................................
Vote for polarhome
Free Shell Accounts :: the biggest list on the net