diff --git a/app/Controllers/NewsletterController.php b/app/Controllers/NewsletterController.php index 244062d..f0e5610 100644 --- a/app/Controllers/NewsletterController.php +++ b/app/Controllers/NewsletterController.php @@ -13,7 +13,7 @@ class NewsletterController extends Controller { $email = $input['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; } @@ -21,13 +21,13 @@ class NewsletterController extends Controller { try { $stmt = $db->prepare("INSERT INTO newsletter_subscribers (email) VALUES (?)"); $stmt->execute([$email]); - echo json_encode(['success' => 'Thank you for subscribing!']); + echo json_encode(['success' => __('newsletter_success', 'Thank you for subscribing!')]); } catch (\PDOException $e) { 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 { - echo json_encode(['error' => 'An error occurred. Please try again.']); + echo json_encode(['error' => __('newsletter_error', 'An error occurred. Please try again.')]); } } } -} +} \ No newline at end of file diff --git a/assets/js/main.js b/assets/js/main.js index 5515d1a..63532c7 100644 --- a/assets/js/main.js +++ b/assets/js/main.js @@ -137,15 +137,18 @@ document.addEventListener('DOMContentLoaded', () => { // Newsletter AJAX const initNewsletterAjax = () => { - const btn = document.getElementById('newsletter-btn'); - const emailInput = document.getElementById('newsletter-email'); - const msg = document.getElementById('newsletter-msg'); + document.addEventListener('click', (e) => { + const btn = e.target.closest('.newsletter-submit-btn'); + 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; - if (!email) return; + if (!email || !email.includes('@')) return; btn.disabled = true; const originalText = btn.innerHTML; @@ -161,18 +164,29 @@ document.addEventListener('DOMContentLoaded', () => { btn.disabled = false; btn.innerHTML = originalText; if (data.success) { - msg.innerHTML = `${data.success}`; + if (msg) msg.innerHTML = `${data.success}`; + else alert(data.success); emailInput.value = ''; } else { - msg.innerHTML = `${data.error}`; + if (msg) msg.innerHTML = `${data.error}`; + else alert(data.error); } }) .catch(err => { btn.disabled = false; btn.innerHTML = originalText; - msg.innerHTML = 'An error occurred.'; + if (msg) msg.innerHTML = 'An error occurred.'; }); }); + + // 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 @@ -309,4 +323,4 @@ document.addEventListener('DOMContentLoaded', () => { }); console.log('ApkNusa AJAX Engine active.'); -}); \ No newline at end of file +}); diff --git a/lang/en.php b/lang/en.php index 2840e67..4eb14fb 100644 --- a/lang/en.php +++ b/lang/en.php @@ -145,4 +145,8 @@ return array ( '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.', '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.', +); \ No newline at end of file diff --git a/lang/id.php b/lang/id.php index ae943e8..b415e83 100644 --- a/lang/id.php +++ b/lang/id.php @@ -145,4 +145,8 @@ return array ( '404_title' => 'Halaman Tidak Ditemukan', '404_text' => 'Halaman yang Anda cari mungkin telah dihapus, namanya diubah, atau sementara tidak tersedia.', '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.', +); \ No newline at end of file diff --git a/views/footer.php b/views/footer.php index 3108c00..b0b2c35 100644 --- a/views/footer.php +++ b/views/footer.php @@ -36,11 +36,13 @@
Get notified about the latest APKs and updates directly in your inbox.