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 )