#!/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/fribillet/'; my $req_path = $build_path . '/html/fribillet/index.html'; my $ack_path = $build_path . '/html/fribillet/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; # 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 => 'da', title => 'Fribillet til byvandring', method => 'POST', fields => [qw/ navn modtager postnr email tur antal tid kommentar /], validate => { email => $valid_email, _email => $valid_email, #fake check to silence warning of variable used only once }, 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 => 'modtager', label => 'Modtager', comment => '(hvem du vil invitere)' ); $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 = 'Fribillet til byvandring'; } else { $mail_to = "$frontdesk, $helpdesk"; $mail_subject = 'FEJL vedr. fribillet til byvandring'; $infostring .= "\n

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'; $form->mailresults( to => $mail_to, from => $mail_from, subject => "$mail_subject", ); if ($confirm) { $infostring .= "\n

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;