CGI-Portable
view release on metacpan or search on metacpan
lib/DemoMailForm.pm view on Meta::CPAN
use warnings;
use vars qw($VERSION @ISA);
$VERSION = '0.50';
######################################################################
=head1 DEPENDENCIES
=head2 Perl Version
5.004
=head2 Standard Modules
Fcntl
Symbol
Net::SMTP 2.15 (earlier versions may work)
=head2 Nonstandard Modules
CGI::Portable 0.50
CGI::Portable::AppStatic 0.50
CGI::MultiValuedHash 1.09
HTML::FormTemplate 2.021
=cut
######################################################################
use Fcntl qw(:DEFAULT :flock);
use Symbol;
use CGI::Portable 0.50;
use CGI::Portable::AppStatic 0.50;
@ISA = qw(CGI::Portable::AppStatic);
use CGI::MultiValuedHash 1.09;
use HTML::FormTemplate 2.021;
######################################################################
=head1 SYNOPSIS
=head2 Use Default Question
#!/usr/bin/perl
use strict;
use warnings;
require CGI::Portable;
my $globals = CGI::Portable->new();
require CGI::Portable::AdapterCGI;
my $io = CGI::Portable::AdapterCGI->new();
$io->fetch_user_input( $globals );
$globals->default_application_title( 'Demo Email Form' );
$globals->default_maintainer_name( 'Tony Simons' );
$globals->default_maintainer_email_address( 'tony@aardvark.net' );
my %CONFIG = ();
$globals->set_prefs( \%CONFIG );
$globals->call_component( 'DemoMailForm' );
$io->send_user_output( $globals );
1;
=head2 Use Custom Questions Defined Here
my %CONFIG = (
custom_fd => 1,
field_defn => [
{
visible_title => "What's your age?",
type => 'textfield',
name => 'age',
is_required => 1,
validation_rule => '\d',
error_message => 'You must enter a number.',
}, {
visible_title => "What's the combination?",
type => 'checkbox_group',
name => 'words',
'values' => ['eenie', 'meenie', 'minie', 'moe'],
default => ['eenie', 'minie'],
labels => [qw( This That And Another )],
}, {
visible_title => "Who do you love?",
type => 'textfield',
name => 'name',
}, {
visible_title => "What's your favorite colour?",
type => 'popup_menu',
name => 'color',
'values' => ['red', 'green', 'blue', 'chartreuse'],
},
],
);
=head2 Use Custom Questions Defined In Perl File
use Cwd;
$globals->file_path_root( cwd() ); # let us default to current working dir
$globals->file_path_delimiter( $^O=~/Mac/i ? ":" : $^O=~/Win/i ? "\\" : "/" );
my %CONFIG = (
custom_fd => 1,
field_defn => 'survey_questions.txt', # do Perl code to make array ref
);
=head2 Use Custom Questions Defined In simple Boulder File
use Cwd;
$globals->file_path_root( cwd() ); # let us default to current working dir
$globals->file_path_delimiter( $^O=~/Mac/i ? ":" : $^O=~/Win/i ? "\\" : "/" );
my %CONFIG = (
custom_fd => 1,
field_defn => 'survey_questions.txt', # file in simple Boulder format
fd_in_seqf => 1,
);
lib/DemoMailForm.pm view on Meta::CPAN
$self->send_mail_to_writer( $form );
}
}
}
######################################################################
sub get_field_definitions {
my $self = shift( @_ );
my @field_definitions = ();
push( @field_definitions,
{
visible_title => "Your Name",
type => 'textfield',
name => $FFN_NAMEREAL,
size => 30,
is_required => 1,
error_message => 'You must enter your name.',
exclude_in_echo => 1,
}, {
visible_title => "Your E-mail",
type => 'textfield',
name => $FFN_EMAIL,
size => 30,
is_required => 1,
validation_rule => '\S\@\S',
help_message => 'E-mails are in the form "user@domain".',
error_message => 'You must enter your e-mail.',
exclude_in_echo => 1,
}, {
visible_title => "Keep A Copy",
type => 'checkbox',
name => $FFN_WANTCOPY,
nolabel => 1,
help_message => "If checked, a copy of this message is e-mailed to you.",
exclude_in_echo => 1,
},
);
push( @field_definitions, @{$self->get_question_field_defs()} );
push( @field_definitions,
{
type => 'submit',
label => 'Send',
}, {
type => 'reset',
label => 'Clear',
},
);
return( \@field_definitions );
}
######################################################################
sub get_question_field_defs {
my $self = shift( @_ );
my $globals = $self->{$KEY_SITE_GLOBALS};
my $rh_prefs = $globals->get_prefs_ref();
# check if we are using default or custom questions
unless( $rh_prefs->{$PKEY_CUSTOM_FD} ) {
return( \@DEF_FORM_QUESTIONS ); # using default
}
my $field_defn = $rh_prefs->{$PKEY_FIELD_DEFN};
# check if we have actual custom questions or filename to them
# check if question file is executable Perl or not
unless( $rh_prefs->{$PKEY_FD_IN_SEQF} ) { # it is Perl file
return( $globals->resolve_prefs_node_to_array( $field_defn ) );
}
# we will now get questions from a simple Boulder formatted file
return( $self->fetch_all_records( $field_defn ) || [] );
}
######################################################################
sub no_questions_error {
my $self = shift( @_ );
my $globals = $self->{$KEY_SITE_GLOBALS};
$globals->page_title( "Error Starting MailForm" );
$globals->set_page_body( <<__endquote );
<h1>@{[$globals->page_title()]}</h1>
<p>I'm sorry, but an error has occurred while trying to start
the Mail Form. We are missing critical settings information
that is required to operate. Specifically, we don't know what
questions we are supposed to ask you. Here are some details about
what caused this problem:</p>
<p>@{[$globals->get_error()]}</p>
@{[$self->get_amendment_message()]}
__endquote
}
######################################################################
sub new_message {
my ($self, $form) = @_;
my $globals = $self->{$KEY_SITE_GLOBALS};
$globals->page_title( $globals->pref( $PKEY_MSG_NEW_TITLE ) ||
"Send Me An E-mail" );
$globals->set_page_body(
$globals->pref( $PKEY_MSG_NEW_HEAD ) || <<__endquote );
<h1>@{[$globals->page_title()]}</h1>
<p>This form is provided as an easy way for you to send me a private
e-mail message, when you wish to contact me and/or give me your
thoughts on this site. This is also a good forum to report any bugs
you have discovered, so I can fix them as soon as possible.</p>
__endquote
$globals->append_page_body( <<__endquote );
<p>The fields indicated with a '@{[$form->required_field_marker()]}'
are required.</p>
@{$form->make_html_input_form( 1, 1 )}
<p>It may take from 1 to 30 seconds to process this form, so please be
patient and don't click Send multiple times. A confirmation message
will appear if everything worked.</p>
__endquote
}
( run in 0.590 second using v1.01-cache-2.11-cpan-0bb4e1dffa6 )