CGI-QuickForm

 view release on metacpan or  search on metacpan

QuickForm.pm  view on Meta::CPAN

@EXPORT_OK = qw( colour color ) ;
*color = \&colour ;
sub colour { qq{<span style="color:$_[0]">$_[1]</span>} }


sub show_form {
    my %form = (
        -LANGUAGE         => 'en',         # Language to use for default messages
        -USER_REQUIRED    => undef,
        -USER_INVALID     => undef,
        -REQUIRED_HTML    => '<span style="font-weight:bold;color:BLUE">+</span>',
        -INVALID_HTML     => '<span style="font-weight:bold;color:RED">*</span>',
        -TITLE            => 'Quick Form', # Default page title and heading
        -INTRO            => undef,
        -HEADER           => undef,      
        -FOOTER           => undef,
        -NAME             => '',
        -JSCRIPT          => {},
        -ONSUBMIT         => '',
        -ACCEPT           => \&_on_valid_form,
        -VALIDATE         => undef,        # Call this to validate entire form
        -SIZE             => undef,

QuickForm.pm  view on Meta::CPAN

    show_form(
        -ACCEPT           => \&on_valid_form, 
        -BORDER           => 0,
        -FOOTER           => undef,
        -HEADER           => undef,      
        -INTRO            => undef,
        -LANGUAGE         => 'en',
        -USER_REQUIRED    => undef,
        -USER_INVALID     => undef,
        -TITLE            => 'Test Form',
        -REQUIRED_HTML    => '<span style="font-weight:bold;color:BLUE">+</span>',
        -INVALID_HTML     => '<span style="font-weight:bold;color:RED">*</span>',
        -VALIDATE         => undef,       # Set this to validate the entire record
        -SIZE             => undef,
        -MAXLENGTH        => undef,
        -ROWS             => undef,
        -COLUMNS          => undef,
        -CHECK            => 1,
        -SPACE            => 0, # Output some newlines to assist debugging if 1
        -MULTI_COLUMN     => 0,
        -NAME             => undef,
        -ONSUBMIT         => undef,

QuickForm.pm  view on Meta::CPAN


Optional string. If you specify C<-TITLE> you may want to specify this field
too; it puts a paragraph of text before the form. The English default is
"Please enter the information.", there is a default for each supported
language (see C<-LANGUAGE>).

=item C<-INVALID_HTML> 

Optional HTML string. Default is:

    <span style="font-weight:bold;color:RED">*</span>

You can over-ride this to set your own marker to indicate an invalid field.
You could use an image tag for example:

    <img src="/images/invalid.jpg" alt="*" />

Note that if you use your own C<-USER_REQUIRED> or C<-USER_INVALID> strings,
this string will replace the sequence C<~I~> if it occurs.

See C<example1> and the companion option C<-REQUIRED_HTML>.

QuickForm.pm  view on Meta::CPAN

=item C<-ONSUBMIT>

Optional string. If specified this string is given to the start_form()
function as its C<-onSubmit> option; used with Javascript.
(See C<-JSCRIPT> and C<-NAME>.)

=item C<-REQUIRED_HTML> 

Optional HTML string. Default is:

    <span style="font-weight:bold;color:BLUE">+</span>

You can over-ride this to set your own marker to indicate a required field.

Note that if you use your own C<-USER_REQUIRED> or C<-USER_INVALID> strings,
this string will replace the sequence C<~R~> if it occurs.

See C<example1> and the companion option C<-INVALID_HTML>.

=item C<-TITLE> 

QuickForm.pm  view on Meta::CPAN

preceeds C<-HEADLINE> should normally set C<-END_ROW> to true; this isn't done
automatically in case your form has two or more columns and you want to have
different headlines above each column. Thus a typical headline field looks
like:

    {
        -LABEL           => 'General Information',
        -HEADLINE        => 1,
        -COLSPAN         => 2, # Probably needs to be more for -MULTI_COLUMN
        -END_ROW         => 1,
        -STYLE_FIELDNAME => 'style="background-color:black;color:white;font-weight:bold"', 

    },

=item C<-LABEL> 

Required string. This is the display label for the field. It is also used as
the field's name if no C<-name> option is used.

=item C<-REQUIRED> 

README  view on Meta::CPAN

    show_form(
        -ACCEPT           => \&on_valid_form, 
        -BORDER           => 0,
        -FOOTER           => undef,
        -HEADER           => undef,      
        -INTRO            => undef,
        -LANGUAGE         => 'en',
        -USER_REQUIRED    => undef,
        -USER_INVALID     => undef,
        -TITLE            => 'Test Form',
        -REQUIRED_HTML    => '<span style="font-weight:bold;color:BLUE">+</span>',
        -INVALID_HTML     => '<span style="font-weight:bold;color:RED">*</span>',
        -VALIDATE         => undef,       # Set this to validate the entire record
        -SIZE             => undef,
        -MAXLENGTH        => undef,
        -ROWS             => undef,
        -COLUMNS          => undef,
        -CHECK            => 1,
        -SPACE            => 0, # Output some newlines to assist debugging if 1
        -MULTI_COLUMN     => 0,
        -NAME             => undef,
        -ONSUBMIT         => undef,

README  view on Meta::CPAN


Optional string. If you specify C<-TITLE> you may want to specify this field
too; it puts a paragraph of text before the form. The English default is
"Please enter the information.", there is a default for each supported
language (see C<-LANGUAGE>).

=item C<-INVALID_HTML> 

Optional HTML string. Default is:

    <span style="font-weight:bold;color:RED">*</span>

You can over-ride this to set your own marker to indicate an invalid field.
You could use an image tag for example:

    <img src="/images/invalid.jpg" alt="*" />

Note that if you use your own C<-USER_REQUIRED> or C<-USER_INVALID> strings,
this string will replace the sequence C<~I~> if it occurs.

See C<example1> and the companion option C<-REQUIRED_HTML>.

README  view on Meta::CPAN

=item C<-ONSUBMIT>

Optional string. If specified this string is given to the start_form()
function as its C<-onSubmit> option; used with Javascript.
(See C<-JSCRIPT> and C<-NAME>.)

=item C<-REQUIRED_HTML> 

Optional HTML string. Default is:

    <span style="font-weight:bold;color:BLUE">+</span>

You can over-ride this to set your own marker to indicate a required field.

Note that if you use your own C<-USER_REQUIRED> or C<-USER_INVALID> strings,
this string will replace the sequence C<~R~> if it occurs.

See C<example1> and the companion option C<-INVALID_HTML>.

=item C<-TITLE> 

README  view on Meta::CPAN

preceeds C<-HEADLINE> should normally set C<-END_ROW> to true; this isn't done
automatically in case your form has two or more columns and you want to have
different headlines above each column. Thus a typical headline field looks
like:

    {
        -LABEL           => 'General Information',
        -HEADLINE        => 1,
        -COLSPAN         => 2, # Probably needs to be more for -MULTI_COLUMN
        -END_ROW         => 1,
        -STYLE_FIELDNAME => 'style="background-color:black;color:white;font-weight:bold"', 

    },

=item C<-LABEL> 

Required string. This is the display label for the field. It is also used as
the field's name if no C<-name> option is used.

=item C<-REQUIRED> 

eg/example2  view on Meta::CPAN

# May be used/distributed under the GPL.

# WARNING - this program is provided as an example of QuickForm use and not as
# an example of production quality CGI code - it may not be secure. 

use strict ;

use CGI qw( :standard :html3 ) ;
use CGI::QuickForm qw( show_form colour ) ;

my $STYLE_HEADLINE   = 'style="background-color:black;color:white;font-weight:bold"' ;

show_form(
    -MULTI_COLUMN     => 1, # MULTI_COLUMN
    -TITLE            => 'Test Form',
    -ACCEPT           => \&on_valid_form, 
    -SIZE             => 25,
    -SPACE            => 1,
    -CHECK            => ( query_string() =~ /QFCHK=0/o ? 0 : 1 ), 
    -FOOTER           => qq{<a href="} . 
                         url() . #"

eg/example4  view on Meta::CPAN

# LIKE. The CSV driver does not appear to support WHERE at all.
#   my $TABLE    = 'contacts_csv' ;
#   my $CONNECT  = "DBI:CSV:f_dir=$DATABASE" ;
my $TABLE           = 'contacts' ; 
my $CONNECT         = "DBI:XBase:/root/web/db/contactsqf" ; 

my @FIELD    = (
            {
                -DB_NAME   => 'ID',
                -DB_QUOTE  => 1,       # 0 for numeric fields
                -DB_HTML   => 'tt',    # e.g. bold, italic, h1, tt, etc.
                -DB_ALIGN  => 'RIGHT', # LEFT (default), CENTER, RIGHT
                -DB_VALIGN => undef,   # BOTTOM, CENTER, TOP 
                -DB_PREFIX => undef,   # e.g. &#163; or $ etc.
                -LABEL     => 'ID',
                -END_ROW   => 1,
                -REQUIRED  => 1,
                -maxlen    => 12,
            },
            {
                -DB_NAME   => 'FORENAME',

eg/example4  view on Meta::CPAN

    my( $field, $html ) = @_ ;

    if( $html eq 'mailto' or $html eq 'email' ) {
        $field = qq{<a href="mailto:$field">$field</a>} ;
    }
    elsif( $html eq 'url' or $html eq 'web' ) {
        my $protocol = $field =~ m,^(?:http|ftp|gopher|wais|/), ? 
                            '' : 'http://' ;
        $field = qq{<a href="$protocol$field">$field</a>} ;
    }
    elsif( $html eq 'b' or $html eq 'bold' ) {
        $field = qq{<b>$field</b>} ;
    }
    elsif( $html eq 'i' or $html eq 'italic' ) {
        $field = qq{<i>$field</i>} ;
    }
    elsif( $html eq 'bi' or $html eq 'bolditalic' ) {
        $field = qq{<b><i>$field</i></b>} ;
    }
    elsif( $html eq 'tt' or $html eq 'fixed' ) {
        $field = qq{<tt>$field</tt>} ;
    }
    elsif( $html =~ /^h([1-6])$/o ) {
        $field = qq{<h$1>$field</h$1>} ;
    }

    $field ;

eg/example6  view on Meta::CPAN

# http://perl.apache.org

use strict ;

require 'CGI/Apache.pm' ;   # ADDED FOR MOD_PERL
use Apache::Constants qw( :common ) ;   # ADDED FOR MOD_PERL
use CGI qw( :standard :html3 ) ;
use CGI::QuickForm qw( show_form colour ) ;

my $STYLE_FIELDVALUE = 'style="background-color:#DDDDDD"' ;
my $STYLE_HEADLINE   = 'style="background-color:black;color:white;font-weight:bold"' ;

sub handler { # ADDED FOR MOD_PERL

    show_form(
        -MULTI_COLUMN     => 1, # MULTI_COLUMN
        -SPACE            => 0,
        -CHECK            => ( query_string() =~ /QFCHK=0/o ? 0 : 1 ), 
        -FOOTER           => qq{<a href="} . #" 
                             url() . path_info() .  # ADDED FOR MOD_PERL
                             qq{?QFCHK=0\&Age=28\&Surname=Bloggs\&Forename=Freda">} .#"



( run in 1.151 second using v1.01-cache-2.11-cpan-5dc5da66d9d )