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, + + + + \ 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 @@ - -
-
-
-
- -
- +
+ +
+ + +
+
+
+
+ +
+ + ' . esc($alert['name']) . '' : '' ?> +
+ +
+ +
+ + ' . esc($alert['email']) . '' : '' ?> +
+
+
+ +
+ + ' . esc($alert['text']) . '' : '' ?> +
+
+
+
+
-
- -
- -
-
-
- -
- -
-
-
- + + +
+

-
- - - success()): ?> - Thank you for your message. We will get back to you soon! -
- $form]) ?> -
- + +
+ - +
diff --git a/src/css/input.css b/src/css/input.css index 8281ff3..e2e1314 100644 --- a/src/css/input.css +++ b/src/css/input.css @@ -70,7 +70,7 @@ @apply text-sf_blau-500 font-bold hover:text-sf_gelb-600; } - .uniform__potty { + .honeypot { position: absolute; left: -9999px; }