3b36b83b40
Updated error message formatting for more user-friendly feedback. Enhanced UI by restructuring success and error notifications with improved styles and layout. Added a `name` attribute to the submit button for better form submission handling. Adjusted text field IDs and names for consistency.
71 lines
2.6 KiB
PHP
71 lines
2.6 KiB
PHP
<?php
|
|
return function($kirby, $pages, $page) {
|
|
|
|
$alert = null;
|
|
|
|
if ($kirby->request()->is('POST') && get('submit')) {
|
|
|
|
// 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:<br /> <strong>' . $error->getMessage() . '</strong>';
|
|
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 [
|
|
'alert' => $alert,
|
|
'data' => $data ?? false,
|
|
'success' => $success ?? false
|
|
];
|
|
}; |