summaryrefslogtreecommitdiff
path: root/book/index.cgi
diff options
context:
space:
mode:
Diffstat (limited to 'book/index.cgi')
-rwxr-xr-xbook/index.cgi151
1 files changed, 151 insertions, 0 deletions
diff --git a/book/index.cgi b/book/index.cgi
new file mode 100755
index 0000000..7b8339c
--- /dev/null
+++ b/book/index.cgi
@@ -0,0 +1,151 @@
+#!/usr/bin/perl -w
+
+use CGI::FormBuilder;
+
+my $docroot = '../build/html';
+
+# TODO: check if protocol-agnostic URL works
+my $webroot = 'https://stadsvandring.dk/book-form';
+my $req_path = $docroot . '/book/index.tmpl';
+my $ack_path = $docroot . '/book/thanks/index.html';
+
+my $webmaster = 'webmaster@stadsvandring.dk';
+my $frontdesk = 'stadsvandring@stadsvandring.dk';
+my $helpdesk = 'webmaster@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 => 'sv',
+ title => 'Din næste stadsvandring',
+ method => 'POST',
+ fields => [qw/
+ requests
+ places
+ time
+ size
+ name
+ org
+ email
+ addr
+ misc
+ /],
+ validate => {
+ email => $valid_email,
+ _email => $valid_email, #fake check to silence warning of variable used only once
+ },
+ required => [qw/
+ name
+ email
+ requests
+ /],
+ messages => ':sv_SE',
+# submit => ['Submit'],
+ action => $webroot, #avoids loosing submitted values when redirected from other site
+);
+
+$form->field(
+ name => 'requests',
+ label => 'Önskemål om tur',
+ type => 'textarea',
+ rows => 3,
+);
+$form->field(
+ name => 'places',
+ label => 'Önskemål om start och– slut på turenlokalitet',
+ type => 'textarea',
+ rows => 3,
+);
+$form->field(
+ name => 'time',
+ label => 'Datum och tid',
+);
+$form->field(
+ name => 'size',
+ label => 'Gruppstorlek',
+);
+$form->field(
+ name => 'name',
+ label => 'Namn',
+);
+$form->field(
+ name => 'org',
+ label => 'Företag eller institution',
+);
+$form->field(
+ name => 'email',
+ label => 'Mailadress',
+);
+$form->field(
+ name => 'addr',
+ label => 'Adress och telefonnummer',
+ type => 'textarea',
+ rows => 3,
+);
+$form->field(
+ name => 'misc',
+ label => 'Andra upplysningar om gruppen och andra önskemål om turen',
+ type => 'textarea',
+ rows => 6,
+);
+
+my ($form_required_text) = $form->{opt}{messages}{form_required_text};
+my ($mail_from) = $webmaster;
+my ($mail_to, $mail_subject);
+
+if ($form->submitted) {
+ $infostring = "Tak for din booking-ansøgning ved stadsvandring.dk - du vil snarest blive kontaktet!";
+ if ($form->validate) {
+ $mail_to = $frontdesk;
+ $mail_subject = 'stadsvandring.dk booking-ansøgning';
+ } else {
+ $mail_to = "$frontdesk, $helpdesk";
+ $mail_subject = 'FEL i stadsvandring.dk booking-ansökan';
+ $infostring .= "\n<P>NB! Det var en FEL i en eller flere af telterne. Din ansökan blev sendt alligevel, men vi anbefaler at du checker igen at blanketten er korrekt udfyldt og sender den igen.";
+ $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>Følgende informationer blev sendt:";
+ $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 $_;
+}