#!/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
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
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 $_; }