Add confirmation message for newsletter signup
Add success confirmation message to newsletter plugin Update translation files with confirmation text Improve form handling to show confirmation message Add styling for confirmation message display Ensure name field is properly included in form
This commit is contained in:
parent
99ef5f93c2
commit
b88baf1bef
3 changed files with 31 additions and 13 deletions
|
|
@ -106,4 +106,5 @@ email_placeholder = "Your email address"
|
|||
notice = "We send about 12 emails per year. You can unsubscribe whenever you want."
|
||||
submit_button = "Subscribe"
|
||||
success_message = "Check your inbox!"
|
||||
success_confirm = "Thank you! We've sent you an email. Open the link in the email and confirm to complete your subscription."
|
||||
error_message = "Something went wrong!"
|
||||
|
|
|
|||
|
|
@ -110,4 +110,5 @@ email_placeholder = "Din e-postadresse"
|
|||
notice = "Vi sender omtrent 12 e-poster i året. Du kan melde deg av når som helst."
|
||||
submit_button = "Meld deg på"
|
||||
success_message = "Sjekk innboksen din!"
|
||||
success_confirm = "Takk! Vi har sendt en e-post til deg. Åpne lenken i e-posten og bekreft for å fullføre påmeldingen."
|
||||
error_message = "Noe gikk galt!"
|
||||
|
|
|
|||
|
|
@ -43,6 +43,7 @@ function newsletterT(string $key): string {
|
|||
'notice' => 'Vi sender ca. 12 e-poster i året.',
|
||||
'submit_button' => 'Meld deg på',
|
||||
'success_message' => 'Sjekk innboksen din!',
|
||||
'success_confirm' => 'Takk! Vi har sendt en e-post til deg. Åpne lenken i e-posten og bekreft for å fullføre påmeldingen.',
|
||||
'error_message' => 'Noe gikk galt!'
|
||||
];
|
||||
return $fallbacks[$key] ?? $key;
|
||||
|
|
@ -121,6 +122,7 @@ function newsletterGetTranslations(): array {
|
|||
'notice' => htmlspecialchars(newsletterT('notice'), ENT_QUOTES, 'UTF-8'),
|
||||
'submitButton' => htmlspecialchars(newsletterT('submit_button'), ENT_QUOTES, 'UTF-8'),
|
||||
'successMessage' => htmlspecialchars(newsletterT('success_message'), ENT_QUOTES, 'UTF-8'),
|
||||
'successConfirm' => htmlspecialchars(newsletterT('success_confirm'), ENT_QUOTES, 'UTF-8'),
|
||||
'errorMessage' => htmlspecialchars(newsletterT('error_message'), ENT_QUOTES, 'UTF-8'),
|
||||
];
|
||||
}
|
||||
|
|
@ -160,6 +162,13 @@ function newsletterGetScript(): string {
|
|||
.then(function(data) {
|
||||
btn.classList.remove('is-loading');
|
||||
if (data.success) {
|
||||
var confirmMsg = form.getAttribute('data-success-confirm');
|
||||
if (confirmMsg) {
|
||||
var notice = document.createElement('p');
|
||||
notice.className = 'newsletter-confirm';
|
||||
notice.textContent = confirmMsg;
|
||||
form.replaceWith(notice);
|
||||
} else {
|
||||
btn.classList.add('is-success');
|
||||
var successTextEl = btn.querySelector('.btn-success-text');
|
||||
var successMsg = form.getAttribute('data-success-message');
|
||||
|
|
@ -168,6 +177,7 @@ function newsletterGetScript(): string {
|
|||
btn.classList.remove('is-success');
|
||||
btn.disabled = false;
|
||||
}, 5000);
|
||||
}
|
||||
} else {
|
||||
btn.classList.add('is-error');
|
||||
var errorTextEl = btn.querySelector('.btn-error-text');
|
||||
|
|
@ -252,18 +262,18 @@ function newsletterRenderSmall(string $introText, string $formId): string {
|
|||
$html = <<<HTML
|
||||
<aside class="newsletter-section newsletter-small" id="{$escapedFormId}">
|
||||
<p class="newsletter-intro">{$escapedIntro}</p>
|
||||
<form class="newsletter-form" method="post" data-newsletter-form data-success-message="{$t['successMessage']}" data-error-message="{$t['errorMessage']}">
|
||||
<form class="newsletter-form" method="post" data-newsletter-form data-success-message="{$t['successMessage']}" data-success-confirm="{$t['successConfirm']}" data-error-message="{$t['errorMessage']}">
|
||||
<input type="hidden" name="newsletter_csrf" value="{$csrfToken}">
|
||||
<input type="hidden" name="newsletter_form_id" value="{$escapedFormId}">
|
||||
<div class="newsletter-fields">
|
||||
<div class="newsletter-field">
|
||||
<label for="newsletter_name_{$nonce}" class="visually-hidden">{$t['nameLabel']}</label>
|
||||
<input type="text" id="newsletter_name_{$nonce}" name="newsletter_name" placeholder="{$t['namePlaceholder']}" required maxlength="100">
|
||||
</div>
|
||||
<div class="newsletter-field">
|
||||
<label for="newsletter_email_{$nonce}" class="visually-hidden">{$t['emailLabel']}</label>
|
||||
<input type="email" id="newsletter_email_{$nonce}" name="newsletter_email" placeholder="{$t['emailPlaceholder']}" required maxlength="100">
|
||||
</div>
|
||||
<div class="newsletter-field">
|
||||
<label for="newsletter_name_{$nonce}" class="visually-hidden">{$t['nameLabel']}</label>
|
||||
<input type="text" id="newsletter_name_{$nonce}" name="newsletter_name" placeholder="{$t['namePlaceholder']}" required maxlength="100">
|
||||
</div>
|
||||
<button type="submit" name="newsletter_submit" class="button">
|
||||
<span class="btn-text">{$t['submitButton']}</span>
|
||||
<span class="btn-spinner" aria-hidden="true"></span>
|
||||
|
|
@ -436,6 +446,12 @@ function newsletterGetStyles(): string {
|
|||
font-size: 0.9rem;
|
||||
margin-top:0;
|
||||
}
|
||||
.newsletter-small .newsletter-confirm {
|
||||
margin: 0.3rem 0 0;
|
||||
font-size: 0.95rem;
|
||||
color: var(--color-green);
|
||||
font-weight: 600;
|
||||
}
|
||||
.newsletter-small .button.is-success { background-color: var(--color-green); color: white; }
|
||||
.newsletter-small .button.is-error { background-color: oklch(0.55 0.2 25); color: white; outline: none; }
|
||||
</style>
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue