package dispatch_test; use strict; use warnings; use diagnostics; use CGI::Carp qw/fatalsToBrowser/; use base 'CGI::Application'; use CGI::FormBuilder; use CGI; use Data::Dumper; 1; sub setup { my $self = shift; # my $rm = $form->cgi_param('rm'); $self->start_mode('RegForm'); $self->mode_param('rm'); $self->run_modes( 'RegForm' => 'registrant_form', 'RegistrantNeeds' => 'registrant_needs', 'Checkout' => 'checkout', 'Payment' => 'payment', 'Thankyou' => 'thank_you', 'Admin' => 'admin_screen', ); } sub registrant_form { my $self = shift; print STDERR "dispatch_test: Now running registrant_form().\n"; my $output = ""; my $q = new CGI; my $rm = $q->param('rm') || 'RegForm'; my $form = CGI::FormBuilder->new( fields => [qw/fname lname state/], required => [qw/fname lname state/], params => $q, # params from CGI.pm keepextras => 1, # keep mode param submit => [qw/Proceed_to_Meals/], ); if($form->submitted && $form->validate){ $rm = 'RegistrantNeeds'; # $output = $form->confirm(header => 1); return $self->registrant_needs(); } else { $output = $form->render(); } print STDERR "dispatch_test->registrant_form() says \$rm is $rm.\n"; return $output; } sub registrant_needs { my $self = shift; print STDERR "dispatch_test: Now running ->registrant_needs().\n"; my $output = ""; my $q = new CGI; my $rm = $q->param('rm') || 'RegistrantNeeds'; my $form = CGI::FormBuilder->new( fields => [qw/housing meals other/], required => [qw/meals/], params => $q, # params from CGI.pm keepextras => 1, # keep mode param submit => [qw/Proceed_to_Checkout/], ); if($form->submitted && $form->validate){ $rm = 'Checkout'; return $self->checkout(); } else { $output = $form->render(); } return $output; } sub checkout { my $self = shift; print STDERR "dispatch_test: Now running ->checkout().\n"; my $output = ""; my $q = new CGI; my $rm = $q->param('rm') || 'Checkout'; my $form = CGI::FormBuilder->new( fields => [qw/donation/], required => [qw/donation/], params => $q, # params from CGI.pm keepextras => 1, # keep mode param submit => [qw/Proceed_to_Payment/], ); if($form->submitted && $form->validate){ $rm = 'Payment'; return $self->payment(); } else { $output = $form->render(); } return $output; } sub payment { my $self = shift; print STDERR "dispatch_test: Now running ->payment().\n"; my $output = ""; my $q = new CGI; my $rm = $q->param('rm') || 'Payment'; my $form = CGI::FormBuilder->new( fields => [qw/creditcard/], required => [qw/creditcard/], params => $q, # params from CGI.pm keepextras => 1, # keep mode param ); if($form->submitted && $form->validate){ $rm = 'Thankyou'; return $self->thank_you(); } else { $output = $form->render(); } return $output; } sub thank_you { return "Thanks for your registration.
We look forward to seeing you."; }