diff --git a/assets/js/script.js b/assets/js/script.js index 8cff1ae..adbab8c 100644 --- a/assets/js/script.js +++ b/assets/js/script.js @@ -109,17 +109,22 @@ function slugify(str) { function subscribe(event) { event.preventDefault(); - const email = document.querySelector("#subscribe-form input"); + const emailInput = document.querySelector("#subscribe-form input"); - if (email.value.toLowerCase().match(/^[^\s@]+@[^\s@]+\.[^\s@]+$/)) { + if (emailInput.value.toLowerCase().match(/^[^\s@]+@[^\s@]+\.[^\s@]+$/)) { const header = { method: "POST", - body: email.value, + body: JSON.stringify(emailInput.value), }; - fetch("/subscribe.json"); + fetch("/subscribe.json", header) + .then((res) => res.json()) + .then((data) => { + const formNode = emailInput.parentNode.parentNode; + formNode.outerHTML = "

" + data.message + "

"; + }); } else { - email.value = "E-mail invalide. Recommencez."; + emailInput.value = "E-mail invalide. Recommencez."; } } diff --git a/site/config/config.php b/site/config/config.php index 1b90d2f..efdd9bd 100644 --- a/site/config/config.php +++ b/site/config/config.php @@ -20,5 +20,6 @@ return array( 'routes' => array( require __DIR__ . '/routes/virtual-category.php', require __DIR__ . '/routes/send-newsletter.php', + require __DIR__ . '/routes/subscribe.php', ), ); diff --git a/site/config/routes/send-newsletter.php b/site/config/routes/send-newsletter.php index 3828bc6..1e64ebd 100644 --- a/site/config/routes/send-newsletter.php +++ b/site/config/routes/send-newsletter.php @@ -11,7 +11,7 @@ return [ try { $kirby->email([ - 'from' => "adrien.payet@outlook.com", + 'from' => "info@actuel-inactuel.fr", 'to' => 'payet.adrien@protonmail.com', 'subject' => 'actualités', 'body' => 'Ceci est un test simple.', diff --git a/site/config/routes/subscribe.php b/site/config/routes/subscribe.php new file mode 100644 index 0000000..61e8df6 --- /dev/null +++ b/site/config/routes/subscribe.php @@ -0,0 +1,46 @@ + '/subscribe.json', + 'method' => 'POST', + 'action' => function () { + $jsonRequest = file_get_contents("php://input"); + $email = Str::lower(json_decode($jsonRequest)); + + if (V::email($email)) { + kirby()->impersonate('kirby'); + + $page = page("inscription"); + $subscribers = $page->subscribers()->yaml(); + + + + $emailExists = in_array(["email" => $email], $subscribers); + + if ($emailExists) { + return [ + "status" => "error", + "message" => "Cet email est déjà inscris." + ]; + } + + $newSubscriber = ["email" => $email]; + $subscribers[] = $newSubscriber; + + $page->update([ + 'subscribers' => $subscribers + ]); + + return [ + "status" => "success", + "message" => "Inscription réussie." + ]; + } else { + return [ + "status" => "error", + "message" => "Email invalide." + ]; + } + } +]; +