Skip to content

Instantly share code, notes, and snippets.

@hesco
Created March 5, 2015 03:17
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save hesco/3a13c7e1effcf352b28d to your computer and use it in GitHub Desktop.
Save hesco/3a13c7e1effcf352b28d to your computer and use it in GitHub Desktop.
%= form_for 'http://dev.supporters.campaignfoundations.com/donate' => ( id => 'cf_supporters_donate' ) => ( method => 'POST' ) => begin
%= csrf_field
<div id="donor_form">
% if ( validation->has_error() ) {
<h3><span style=\"color:red\">Please resubmit the donation form after correcting the following errors:</span></h3>";
% } else {
%= include 'donor_pre_pitch_copy'
% }
<table style="border-style:solid; border-color:green"><tr><td>
<div class="donor">
<tr>
<td>
%= label_for 'donor.fname' => 'First Name'
</td>
<td>
%= text_field 'donor.fname', type => 'text', placeholder => "John"
</td>
</tr>
<tr>
<td>
%= label_for 'donor.lname' => 'Last Name'
</td>
<td>
%= text_field 'donor.lname', type => 'text', placeholder => "Doe"
</td>
</tr>
<tr>
<td>
%= label_for 'donor.phone' => 'Phone'
</td>
<td>
%= text_field 'donor.phone', type => 'text', placeholder => "404-555-1212"
</td>
</tr>
<tr>
<td>
%= label_for 'donor.email' => 'Email'
</td>
<td>
%= text_field 'donor.email', type => 'text', placeholder => "donor\@example.com"
</td>
</tr>
<tr>
<td>
%= label_for 'donor.address1' => 'Address Line 1'
</td>
<td>
%= text_field 'donor.address1', type => 'text', placeholder => "123 Elm Street"
</td>
</tr>
<tr>
<td>
%= label_for 'donor.address2' => 'Address Line 2'
</td>
<td>
%= text_field 'donor.address2', type => 'text', placeholder => ""
</td>
</tr>
<tr>
<td>
%= label_for 'donor.city' => 'City'
</td>
<td>
%= text_field 'donor.city', type => 'text', placeholder => "Our Town"
</td>
</tr>
<tr>
<td>
%= label_for 'donor.state' => 'State'
</td>
<td>
%= text_field 'donor.state', type => 'text', placeholder => "Our State"
</td>
</tr>
<tr>
<td>
%= label_for 'donor.zip' => 'Postal Code'
</td>
<td>
%= text_field 'donor.zip', type => 'text', placeholder => "12345"
</td>
</tr>
<tr>
<td>
%= label_for 'donation.amount' => 'Amount'
</td>
<td>
%= text_field 'donation.amount', type => 'text', placeholder => "100.00"
</td>
</tr>
<tr>
<td>
%= label_for 'donation.lastfour' => 'Last four digits of card number'
</td>
<td>
%= text_field 'donation.lastfour', type => 'text', placeholder => "1234"
</td>
</tr>
</div>
<tr>
<div class="form_button">
<td>
</td>
<td>
<div class="continue">
%= submit_button 'Continue'
</div>
</td>
</div>
</tr>
</table>
</div>
%= end
package CF::Supporters::Controller::Donate;
use Data::Dumper;
use Mojo::Base 'Mojolicious::Controller';
use Mojo::Headers;
# use lib qw{ lib };
use CF::Supporters;
use CF::DB;
use CF::Schema;
# use CF::Email;
use Mojolicious::Validator;
use Mojolicious::Validator::Validation;
sub donor_form {
my $self = shift;
my $headers = Mojo::Headers->new;
# $self->app->cfg = $self->overload_cfg_for_site();
# $self->app->log->trace('TRACE: entering ->donor_form(), mode: ' . CF::Supporters::mojo_mode . ', for: ' . $self->tx->remote_address . ', referred by: not yet working' );
# $self->app->log->debug('TRACE: entering ->donor_form(), mode: ' . CF::mojo_mode . ', for: ' . $self->tx->remote_address . ', referred by: ' . $self->tx->req->headers->referrer);
my $validation = $self->validation;
# return $self->render() unless $validation->has_data;
return $self->render(
template => 'supporters/donate/donate_form',
format => 'html' )
unless $validation->has_data;
$validation->required('donor.fname');
$validation->required('donor.lname');
$validation->required('donor.email')->like( qr{\@} );
# # $validation->required('donor.email')->like( $RE{Email}{Address} );
$validation->required('donor.phone');
$validation->required('donor.address1');
$validation->required('donor.address2');
$validation->required('donor.city');
$validation->required('donor.state');
$validation->required('donor.zip');
$validation->required('donation.amount');
$validation->required('donation.firstfour');
# $self->app->log->debug('DEBUG: exiting ->donor_form() for: ' . $self->tx->remote_address);
# return $self->render( text => 'In CF::Supporters::Controller::Donate->donor_form().' );
my $supporter_id = $self->insert_donor();
my $donation = $self->insert_donation( $supporter_id );
return $self->render(
template => 'supporters/donate/confirm_donation',
format => 'html',
phone => $self->req->param('donor.phone'),
amount => $self->req->param('donation.amount') );
# $self->app->log->trace('TRACE: exiting ->donor_form() having failed to route to please_check_back_soon page for: ' . $self->tx->remote_address);
return;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment