App-ZofCMS
view release on metacpan or search on metacpan
lib/App/ZofCMS/Plugin/QuickNote.pm view on Meta::CPAN
$fh = $email->open;
}
print $fh $self->_make_email_body( $qn_conf, $query );
$fh->close
or die "couldn't send whole message: $!\n";
return 1;
}
sub _make_email_body {
my ( $self, $qn_conf, $query ) = @_;
my $format = $qn_conf->{format};
unless ( defined $format ) {
$format = <<'END_FORMAT';
Quicknote from host {::{host}::} sent on {::{time}::}
Name: {::{name}::}
E-mail: {::{email}::}
Message:
{::{message}::}
END_FORMAT
}
for ( qw/quicknote_name quicknote_email quicknote_message/ ) {
$query->{$_} = 'N/A'
unless length $query->{$_};
}
my $sent_time = localtime;
$format =~ s/\{::\{time}::}/$sent_time/g;
$format =~ s/\{::\{host}::}/$qn_conf->{sender_host}/g;
$format =~ s/\{::\{name}::}/$query->{quicknote_name}/g;
$format =~ s/\{::\{email}::}/$query->{quicknote_email}/g;
$format =~ s/\{::\{message}::}/$query->{quicknote_message}/g;
return $format;
}
sub _setup_form {
my ( $self, $query ) = @_;
my $template
= HTML::Template->new_scalar_ref( \ $self->_form_template );
$template->param(
page => $query->{page},
name => $query->{quicknote_name},
email => $query->{quicknote_email},
message => $query->{quicknote_message},
);
return $template;
}
sub _form_template {
return <<'END_FORM';
<tmpl_if name="success">
<p class="quicknote_success"><tmpl_var name="success"></p>
<tmpl_else>
<form class="quicknote" action="<tmpl_var escape="html" name="action">" method="POST">
<div>
<tmpl_if name="error">
<p class="quicknote_error"><tmpl_var name="error"></p>
</tmpl_if>
<input type="hidden" name="quicknote_username" value="your full name">
<input type="hidden" name="page" value="<tmpl_var name="page">">
<ul>
<li>
<label for="quicknote_name">Name:</label
><input type="text" name="quicknote_name" id="quicknote_name"
value="<tmpl_var escape="html" name="name">">
</li>
<li>
<label for="quicknote_email">E-mail: </label
><input type="text" name="quicknote_email" id="quicknote_email"
value="<tmpl_var escape="html" name="email">">
</li>
<li>
<label for="quicknote_message">Message: </label
><textarea name="quicknote_message" id="quicknote_message"
cols="40" rows="10"><tmpl_var escape="html" name="message"></textarea>
</li>
</ul>
<input type="submit" id="quicknote_submit" value="Send">
</div>
</form>
</tmpl_if>
END_FORM
}
1;
__END__
=encoding utf8
=head1 NAME
App::ZofCMS::Plugin::QuickNote - drop-in "quicknote" form to email messages from your site
=head1 SYNOPSIS
In your ZofCMS template:
# basic:
quicknote => {
to => 'me@example.com',
},
# juicy
quicknote => {
mailer => 'testfile',
to => [ 'foo@example.com', 'bar@example.com'],
subject => 'Quicknote from example.com',
must_name => 1,
must_email => 1,
must_message => 1,
name_max => 20,
email_max => 20,
message_max => 1000,
success => 'Your message has been successfuly sent',
format => <<'END_FORMAT',
Quicknote from host {::{host}::} sent on {::{time}::}
Name: {::{name}::}
E-mail: {::{email}::}
Message:
{::{message}::}
END_FORMAT
},
In your L<HTML::Template> template:
<tmpl_var name="quicknote">
=head1 DESCRIPTION
The module is a plugin for L<App::ZofCMS> which provides means to easily
drop-in a "quicknote" form which asks the user for his/her name, e-mail
address and a message he or she wants to send. After checking all of the
provided values plugin will e-mail the data which the visitor entered to
the address which you specified.
( run in 1.515 second using v1.01-cache-2.11-cpan-8f98c5d2c55 )