diff --git a/site/controllers/kontakt.php b/site/controllers/kontakt.php index 8c9731c..69f4779 100644 --- a/site/controllers/kontakt.php +++ b/site/controllers/kontakt.php @@ -1,33 +1,71 @@ [ - 'rules' => ['required', 'email'], - 'message' => 'Bitte geben Sie eine gültige E-Mail Adresse ein.', - ], - 'name' => [ - 'rules' => ['required'], - 'message' => 'Bitte geben Sie Ihren Namen ein.', - ], - 'message' => [ - 'rules' => ['required'], - 'message' => 'Bitte geben Sie eine Nachricht ein.', - ], - ]); + if ($kirby->request()->is('POST') && get('submit')) { - if ($kirby->request()->is('POST')) { - $form->emailAction([ - 'to' => [ - 'info@feigel.it' - ], - 'from' => 'webmaster@schachfreunde-badsteben.de', - 'subject' => 'Kontaktanfrage über die Homepage der Schachfreunde Bad Steben', - ])->done(); + // check the honeypot + if (empty(get('website')) === false) { + go($page->url()); + } + + $data = [ + 'name' => get('name'), + 'email' => get('email'), + 'text' => get('text') + ]; + + $rules = [ + 'name' => ['required', 'minLength' => 3], + 'email' => ['required', 'email'], + 'text' => ['required', 'minLength' => 3, 'maxLength' => 3000], + ]; + + $messages = [ + 'name' => 'Bitte geben Sie einen Namen ein.', + 'email' => 'Bitte geben Sie eine gültige E-Mail-Adresse ein.', + 'text' => 'Bitte geben Sie einen Text ein, der zwischen 3 und 3000 Zeichen lang ist.' + ]; + + // some of the data is invalid + if ($invalid = invalid($data, $rules, $messages)) { + $alert = $invalid; + + // the data is fine, let's send the email + } else { + try { + $kirby->email([ + 'template' => 'email', + 'from' => 'webmaster@schachfreunde-badsteben.de', + 'replyTo' => $data['email'], + 'to' => 'info@feigel.it', + 'subject' => esc($data['name']) . ' hat eine Nachricht über das Kontaktformular gesendet', + 'data' => [ + 'text' => esc($data['text']), + 'sender' => esc($data['name']) + ] + ]); + + } catch (Exception $error) { + if (option('debug')): + $alert['error'] = 'Beim Versenden ist ein Fehler aufgetreten: ' . $error->getMessage() . ''; + else: + $alert['error'] = 'Beim Versenden ist ein Fehler aufgetreten!'; + endif; + } + + // no exception occurred, let's send a success message + if (empty($alert) === true) { + $success = 'Ihre Nachricht wurde gesendet! Wir werden uns bald bei Ihnen melden.'; + $data = []; + } + } } - return compact('form'); - }; + return [ + 'alert' => $alert, + 'data' => $data ?? false, + 'success' => $success ?? false + ]; + }; \ No newline at end of file diff --git a/site/snippets/blocks/kontaktformular.php b/site/snippets/blocks/kontaktformular.php deleted file mode 100644 index e69de29..0000000 diff --git a/site/templates/emails/email.php b/site/templates/emails/email.php new file mode 100644 index 0000000..9ab16f0 --- /dev/null +++ b/site/templates/emails/email.php @@ -0,0 +1,5 @@ +Hallo Schachfreunde Bad Steben, + += $text ?> + += $sender ?> \ No newline at end of file diff --git a/site/templates/kontakt.php b/site/templates/kontakt.php index effa858..6ff5796 100644 --- a/site/templates/kontakt.php +++ b/site/templates/kontakt.php @@ -58,45 +58,53 @@ - -