summaryrefslogtreecommitdiff
path: root/footer.cgi
diff options
context:
space:
mode:
authorJonas Smedegaard <dr@jones.dk>2017-04-18 20:06:16 +0200
committerJonas Smedegaard <dr@jones.dk>2017-04-18 20:06:16 +0200
commit755de616c9a1fafb438f45380736d86c7ba217bf (patch)
tree5f6482f212e755af6f0f8224da04321bcf83cc61 /footer.cgi
Initial draft.
Diffstat (limited to 'footer.cgi')
-rwxr-xr-xfooter.cgi107
1 files changed, 107 insertions, 0 deletions
diff --git a/footer.cgi b/footer.cgi
new file mode 100755
index 0000000..7081c98
--- /dev/null
+++ b/footer.cgi
@@ -0,0 +1,107 @@
+#!/usr/bin/perl -w
+
+use CGI::FormBuilder;
+
+my $docroot = '../build/html';
+
+# TODO: check if protocol-agnostic URL works
+my $webroot = 'https://form.stadsvandring.dk/form';
+my $req_path = $docroot . '/index.tmpl';
+my $ack_path = $docroot . '/thanks/index.html';
+
+my $webmaster = 'webmaster@stadsvandring.dk';
+my $frontdesk = 'info@stadsvandring.dk';
+my $helpdesk = 'hostmaster@stadsvandring.dk';
+
+# Set this to 1 for a separate confirmation page
+my ($confirm) = 1;
+
+# Built-in email validation is too simplistic
+my $valid_email = '/^[+_A-Za-z0-9-]+(\.[+_A-Za-z0-9-]+)*@[A-Za-z0-9-]+(\.[A-Za-z0-9-]+)*(\.[_A-Za-z0-9-]+)$/';
+
+my $form = CGI::FormBuilder->new(
+ lang => 'en',
+ title => 'stadsvandring contact form',
+ method => 'POST',
+ fields => [qw/
+ name
+ email
+ /],
+ validate => {
+ email => $valid_email,
+ _email => $valid_email, #fake check to silence warning of variable used only once
+ },
+ required => [qw/
+ name
+ email
+ /],
+ messages => ':en_US',
+ submit => ['Submit'],
+ action => $webroot, #avoids loosing submitted values when redirected from other site
+);
+
+$form->field(
+ name => 'name',
+ placeholder => 'Name',
+);
+$form->field(
+ name => 'email',
+ placeholder => 'Email',
+);
+
+my ($form_required_text) = $form->{opt}{messages}{form_required_text};
+my ($mail_from) = $webmaster;
+my ($mail_to, $mail_subject);
+
+if ($form->submitted) {
+ $infostring = "Thanks for your interest in stadsvandring.dk!";
+ if ($form->validate) {
+ $mail_to = $frontdesk;
+ $mail_subject = 'stadsvandring.dk contact form';
+ } else {
+ $mail_to = "$frontdesk, $helpdesk";
+ $mail_subject = 'ERROR in stadsvandring.dk contact form';
+ $infostring .= "\n<P>NB! There was an error in one or more of the fields. The info was sent anyway, but you are adviced to go back, check that all fields are properly filed out, and then send again.";
+ $confirm = 0;
+ };
+ # Abuse subject to add additional headers
+# $mail_subject .= "\n" . 'Content-Type: text/plain; charset="ISO-8859-1";';
+# $mail_subject .= "\n" . 'Content-Transfer-Encoding: 8bit';
+ $form->mailresults(
+ to => $mail_to,
+ from => $mail_from,
+ subject => "$mail_subject",
+ );
+ if ($confirm) {
+ $infostring .= "\n<P>The following info has been submitted:";
+ $form->{opt}{messages}{form_confirm_text} = "$infostring";
+ print $form->confirm(
+ header => 1,
+ template => $ack_path
+ );
+ } else {
+ printhack( $form->render(
+ header => 1,
+ sticky => (! $form->validate),
+#FIXME text => $infostring,
+ template => $req_path
+ ));
+ }
+} elsif ($ENV{'FORMBUILDER_NOHEADER'}) {
+ printhack( $form->render(
+ header => 0,
+ template => $req_path
+ ));
+} else {
+ printhack( $form->render(
+ header => 1,
+ template => $req_path
+ ));
+}
+
+# fix charset in header
+sub printhack {
+ $_ = shift;
+ s,charset=\Kiso\-8859\-1,utf-8,;
+ print $_;
+}