- #!/usr/bin/perl
- use strict;
- use warnings;
- use CGI::FormBuilder;
- my $build_path = '../build';
- # TODO: check if protocol-agnostic URL works
- my $webroot = 'https://byvandring.nu/kontakt/';
- my $req_path = $build_path . '/html/kontakt/index.html';
- my $ack_path = $build_path . '/html/kontakt/tak/index.html';
- my $webmaster = 'info@byvandring.nu';
- my $frontdesk = 'info@byvandring.nu';
- my $helpdesk = 'siri@jones.dk';
- # Set this to 1 for a separate confirmation page
- my ($confirm) = 1;
- my $form = CGI::FormBuilder->new(
- lang => 'da',
- title => 'Henvendelse til Byvandring.nu',
- method => 'POST',
- fields => [qw/
- navn
- org
- postnr
- email
- tur
- antal
- tid
- kommentar
- /],
- validate => {
- # postnr => '/^([Dd][Kk])?.?[0-9-]{4}$/',
- #email => 'MAIL', # Built-in email validation is too simplistic
- email => '/^[+_A-Za-z0-9-]+(\.[+_A-Za-z0-9-]+)*@[A-Za-z0-9-]+(\.[A-Za-z0-9-]+)*(\.[_A-Za-z0-9-]+)$/',
- antal => 'INT',
- },
- required => [qw/
- email
- /],
- messages => ':da_DK',
- submit => ['Send oplysningerne'],
- action => $webroot, #avoids loosing submitted values when redirected from other site
- );
- $form->field(
- name => 'navn',
- label => 'Navn',
- comment => '(dit eget navn)'
- );
- $form->field(
- name => 'org',
- label => 'Firma/ skole',
- comment => '(hvem du repræsenterer)'
- );
- $form->field(
- name => 'postnr',
- label => 'Postnummer',
- size => 5,
- comment => '(hvis du har lyst)'
- );
- $form->field(
- name => 'tur',
- label => 'Tur',
- size => 5,
- comment => '(turnavn, bydel eller tema)'
- );
- $form->field(
- name => 'antal',
- label => 'Antal',
- size => 5,
- comment => '(antal deltagere)'
- );
- $form->field(
- name => 'tid',
- label => 'Tidspunkt',
- size => 5,
- comment => '(dato og tidspunkt)'
- );
- $form->field(
- name => 'kommentar',
- type => 'textarea',
- rows => 3,
- );
- my ($form_required_text) = $form->{opt}{messages}{form_required_text};
- my ($mail_from) = $webmaster;
- my ($mail_to, $mail_subject);
- if ($form->submitted) {
- my $infostring = "Tak for din henvendelse!";
- if ($form->validate) {
- $mail_to = $frontdesk;
- $mail_subject = 'Henvendelse til Byvandring.nu';
- } else {
- $mail_to = "$frontdesk, $helpdesk";
- $mail_subject = 'FEJL ved henvendelse til Byvandring.nu';
- $infostring .= "\n<P>OBS! Der var fejl i et eller flere af felterne. Informationerne er sendt uanset, men det anbefales at gå tilbage, checke at alle felter er udfyldt korrekt, og derefter sende 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';
- my $field = $form->fields;
- $form->mailresults(
- to => $mail_to,
- from => $mail_from,
- subject => "$mail_subject",
- ) unless ( !!$field->{tur} + !!$field->{antal} + !!$field->{tid} < 2 );
- if ($confirm) {
- $infostring .= "\n<P>Følgende informationer er blevet sendt:";
- $form->{opt}{messages}{form_confirm_text} = "$infostring";
- print $form->confirm(
- header => 1,
- template => $ack_path
- );
- } else {
- print $form->render(
- header => 1,
- sticky => (! $form->validate),
- #FIXME text => $infostring,
- template => $req_path
- );
- }
- } else {
- print $form->render(
- header => 1,
- template => $req_path
- );
- }
- 1;
|