Baru lagi ommm
This commit is contained in:
parent
b7baac6c0c
commit
afb01a6973
@ -13,7 +13,7 @@ class NewsletterController extends Controller {
|
|||||||
$email = $input['email'] ?? '';
|
$email = $input['email'] ?? '';
|
||||||
|
|
||||||
if (empty($email) || !filter_var($email, FILTER_VALIDATE_EMAIL)) {
|
if (empty($email) || !filter_var($email, FILTER_VALIDATE_EMAIL)) {
|
||||||
echo json_encode(['error' => 'Please provide a valid email address.']);
|
echo json_encode(['error' => __('newsletter_invalid_email', 'Please provide a valid email address.')]);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -21,12 +21,12 @@ class NewsletterController extends Controller {
|
|||||||
try {
|
try {
|
||||||
$stmt = $db->prepare("INSERT INTO newsletter_subscribers (email) VALUES (?)");
|
$stmt = $db->prepare("INSERT INTO newsletter_subscribers (email) VALUES (?)");
|
||||||
$stmt->execute([$email]);
|
$stmt->execute([$email]);
|
||||||
echo json_encode(['success' => 'Thank you for subscribing!']);
|
echo json_encode(['success' => __('newsletter_success', 'Thank you for subscribing!')]);
|
||||||
} catch (\PDOException $e) {
|
} catch (\PDOException $e) {
|
||||||
if ($e->getCode() == 23000) { // Duplicate entry
|
if ($e->getCode() == 23000) { // Duplicate entry
|
||||||
echo json_encode(['success' => 'You are already subscribed!']);
|
echo json_encode(['success' => __('newsletter_already_subscribed', 'You are already subscribed!')]);
|
||||||
} else {
|
} else {
|
||||||
echo json_encode(['error' => 'An error occurred. Please try again.']);
|
echo json_encode(['error' => __('newsletter_error', 'An error occurred. Please try again.')]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -137,15 +137,18 @@ document.addEventListener('DOMContentLoaded', () => {
|
|||||||
|
|
||||||
// Newsletter AJAX
|
// Newsletter AJAX
|
||||||
const initNewsletterAjax = () => {
|
const initNewsletterAjax = () => {
|
||||||
const btn = document.getElementById('newsletter-btn');
|
document.addEventListener('click', (e) => {
|
||||||
const emailInput = document.getElementById('newsletter-email');
|
const btn = e.target.closest('.newsletter-submit-btn');
|
||||||
const msg = document.getElementById('newsletter-msg');
|
if (!btn) return;
|
||||||
|
|
||||||
if (!btn || !emailInput) return;
|
const form = btn.closest('.newsletter-form') || btn.parentElement;
|
||||||
|
const emailInput = form.querySelector('.newsletter-email');
|
||||||
|
const msg = form.querySelector('.newsletter-msg') || form.nextElementSibling;
|
||||||
|
|
||||||
|
if (!emailInput) return;
|
||||||
|
|
||||||
btn.addEventListener('click', () => {
|
|
||||||
const email = emailInput.value;
|
const email = emailInput.value;
|
||||||
if (!email) return;
|
if (!email || !email.includes('@')) return;
|
||||||
|
|
||||||
btn.disabled = true;
|
btn.disabled = true;
|
||||||
const originalText = btn.innerHTML;
|
const originalText = btn.innerHTML;
|
||||||
@ -161,18 +164,29 @@ document.addEventListener('DOMContentLoaded', () => {
|
|||||||
btn.disabled = false;
|
btn.disabled = false;
|
||||||
btn.innerHTML = originalText;
|
btn.innerHTML = originalText;
|
||||||
if (data.success) {
|
if (data.success) {
|
||||||
msg.innerHTML = `<span class="text-success">${data.success}</span>`;
|
if (msg) msg.innerHTML = `<span class="text-success">${data.success}</span>`;
|
||||||
|
else alert(data.success);
|
||||||
emailInput.value = '';
|
emailInput.value = '';
|
||||||
} else {
|
} else {
|
||||||
msg.innerHTML = `<span class="text-danger">${data.error}</span>`;
|
if (msg) msg.innerHTML = `<span class="text-danger">${data.error}</span>`;
|
||||||
|
else alert(data.error);
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
.catch(err => {
|
.catch(err => {
|
||||||
btn.disabled = false;
|
btn.disabled = false;
|
||||||
btn.innerHTML = originalText;
|
btn.innerHTML = originalText;
|
||||||
msg.innerHTML = '<span class="text-danger">An error occurred.</span>';
|
if (msg) msg.innerHTML = '<span class="text-danger">An error occurred.</span>';
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
// Also handle form submit for the one in home.php
|
||||||
|
document.addEventListener('submit', (e) => {
|
||||||
|
if (e.target.classList.contains('newsletter-form')) {
|
||||||
|
e.preventDefault();
|
||||||
|
const btn = e.target.querySelector('.newsletter-submit-btn');
|
||||||
|
if (btn) btn.click();
|
||||||
|
}
|
||||||
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
// AI Chat Assistant Logic
|
// AI Chat Assistant Logic
|
||||||
|
|||||||
@ -145,4 +145,8 @@ return array (
|
|||||||
'404_title' => 'Page Not Found',
|
'404_title' => 'Page Not Found',
|
||||||
'404_text' => 'The page you are looking for might have been removed, had its name changed, or is temporarily unavailable.',
|
'404_text' => 'The page you are looking for might have been removed, had its name changed, or is temporarily unavailable.',
|
||||||
'back_to_home' => 'Back to Home',
|
'back_to_home' => 'Back to Home',
|
||||||
|
'newsletter_invalid_email' => 'Please provide a valid email address.',
|
||||||
|
'newsletter_success' => 'Thank you for subscribing!',
|
||||||
|
'newsletter_already_subscribed' => 'You are already subscribed!',
|
||||||
|
'newsletter_error' => 'An error occurred. Please try again.',
|
||||||
);
|
);
|
||||||
@ -145,4 +145,8 @@ return array (
|
|||||||
'404_title' => 'Halaman Tidak Ditemukan',
|
'404_title' => 'Halaman Tidak Ditemukan',
|
||||||
'404_text' => 'Halaman yang Anda cari mungkin telah dihapus, namanya diubah, atau sementara tidak tersedia.',
|
'404_text' => 'Halaman yang Anda cari mungkin telah dihapus, namanya diubah, atau sementara tidak tersedia.',
|
||||||
'back_to_home' => 'Kembali ke Beranda',
|
'back_to_home' => 'Kembali ke Beranda',
|
||||||
|
'newsletter_invalid_email' => 'Harap berikan alamat email yang valid.',
|
||||||
|
'newsletter_success' => 'Terima kasih telah berlangganan!',
|
||||||
|
'newsletter_already_subscribed' => 'Anda sudah berlangganan!',
|
||||||
|
'newsletter_error' => 'Terjadi kesalahan. Silakan coba lagi.',
|
||||||
);
|
);
|
||||||
@ -36,11 +36,13 @@
|
|||||||
<div class="col-lg-4">
|
<div class="col-lg-4">
|
||||||
<h6 class="fw-bold mb-3"><?php echo __('subscribe'); ?></h6>
|
<h6 class="fw-bold mb-3"><?php echo __('subscribe'); ?></h6>
|
||||||
<p class="text-muted small"><?php echo __('subscribe_text'); ?></p>
|
<p class="text-muted small"><?php echo __('subscribe_text'); ?></p>
|
||||||
|
<form class="newsletter-form">
|
||||||
<div class="input-group">
|
<div class="input-group">
|
||||||
<input type="email" id="newsletter-email" class="form-control border-light-subtle" placeholder="<?php echo __('email_placeholder'); ?>">
|
<input type="email" class="form-control border-light-subtle newsletter-email" placeholder="<?php echo __('email_placeholder'); ?>">
|
||||||
<button class="btn btn-success px-3" id="newsletter-btn" type="button"><?php echo __('subscribe'); ?></button>
|
<button class="btn btn-success px-3 newsletter-submit-btn" type="button"><?php echo __('subscribe'); ?></button>
|
||||||
</div>
|
</div>
|
||||||
<div id="newsletter-msg" class="mt-2 small"></div>
|
<div class="newsletter-msg mt-2 small"></div>
|
||||||
|
</form>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<hr class="my-5 text-black-50 opacity-25">
|
<hr class="my-5 text-black-50 opacity-25">
|
||||||
|
|||||||
@ -109,10 +109,11 @@
|
|||||||
<p class="text-muted mb-0">Get notified about the latest APKs and updates directly in your inbox.</p>
|
<p class="text-muted mb-0">Get notified about the latest APKs and updates directly in your inbox.</p>
|
||||||
</div>
|
</div>
|
||||||
<div class="col-lg-6">
|
<div class="col-lg-6">
|
||||||
<form action="/newsletter/subscribe" method="POST" class="d-flex gap-2 p-1 bg-light rounded-pill border shadow-sm">
|
<form action="/api/newsletter/subscribe" method="POST" class="d-flex gap-2 p-1 bg-light rounded-pill border shadow-sm newsletter-form">
|
||||||
<input type="email" name="email" class="form-control border-0 bg-transparent px-4 py-2" placeholder="Enter your email" required>
|
<input type="email" name="email" class="form-control border-0 bg-transparent px-4 py-2 newsletter-email" placeholder="Enter your email" required>
|
||||||
<button type="submit" class="btn btn-success rounded-pill px-4">Subscribe</button>
|
<button type="submit" class="btn btn-success rounded-pill px-4 newsletter-submit-btn">Subscribe</button>
|
||||||
</form>
|
</form>
|
||||||
|
<div class="newsletter-msg mt-3 ps-3 small"></div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user