diff options
Diffstat (limited to 'book/index.cgi')
-rwxr-xr-x | book/index.cgi | 151 |
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 $_; +} |