/* ========================================= MODAL & TICKET İŞLEMLERİ ========================================= */ const modalBg = document.getElementById('modalBg'); const modalBox = document.getElementById('modalBox'); const modalClose = document.getElementById('modalClose'); const modalContent = document.getElementById('modalContent'); function openModal() { modalBg.classList.add('show'); } function closeModal() { modalBg.classList.remove('show'); modalContent.innerHTML = ''; } modalClose?.addEventListener('click', closeModal); modalBg?.addEventListener('click', e => { if (e.target === modalBg) closeModal(); }); function bindDetailEvents() { const closeBtn = document.getElementById('closeTicketBtn'); if (closeBtn) { closeBtn.addEventListener('click', () => { const ticket_id = closeBtn.dataset.id; const msg = document.getElementById('closeMessage'); msg.textContent = 'Kapatılıyor…'; fetch('?action=close', { method: 'POST', headers: { 'Content-Type': 'application/x-www-form-urlencoded' }, body: 'ticket_id=' + encodeURIComponent(ticket_id) }) .then(r => r.json()) .then(data => { if (data.success) { msg.style.color = 'green'; msg.textContent = 'Talep başarıyla kapatıldı.'; setTimeout(() => { fetch('?action=detail&id=' + ticket_id) .then(r => r.text()) .then(html => { modalContent.innerHTML = html; bindDetailEvents(); }); }, 600); } else { msg.style.color = 'red'; msg.textContent = data.message || 'Hata oluştu.'; } }); }); } const replyForm = document.getElementById('replyForm'); if (replyForm) { replyForm.addEventListener('submit', e => { e.preventDefault(); const msg = document.getElementById('replyMessage'); msg.textContent = ''; const fd = new FormData(replyForm); fetch('?action=reply', { method: 'POST', body: fd }) .then(r => r.json()) .then(data => { if (data.success) { msg.style.color = 'green'; msg.textContent = 'Cevabınız kaydedildi.'; replyForm.reset(); setTimeout(() => { fetch('?action=detail&id=' + fd.get('ticket_id')) .then(r => r.text()) .then(html => { modalContent.innerHTML = html; bindDetailEvents(); }); }, 300); } else { msg.style.color = 'red'; msg.textContent = data.message || 'Hata oluştu.'; } }); }); } } document.querySelectorAll('.view-btn').forEach(btn => { btn.addEventListener('click', () => { fetch('?action=detail&id=' + btn.dataset.id) .then(r => r.text()) .then(html => { modalContent.innerHTML = html; openModal(); bindDetailEvents(); }); }); }); /* ========================================= GENEL SAYFA İŞLEMLERİ (DOMContentLoaded) ========================================= */ document.addEventListener('DOMContentLoaded', () => { /* Hamburger Menü */ const hamburgerButton = document.querySelector('.hamburger-button'); const mainNav = document.getElementById('main-navigation'); const dropdownLinks = document.querySelectorAll('.main-nav .dropdown > a'); if (hamburgerButton && mainNav) { hamburgerButton.addEventListener('click', () => { mainNav.classList.toggle('active'); hamburgerButton.classList.toggle('active'); }); } dropdownLinks.forEach(link => { link.addEventListener('click', e => { if (window.innerWidth <= 768) { e.preventDefault(); const parentDropdown = link.closest('.dropdown'); parentDropdown?.classList.toggle('active'); const content = parentDropdown?.querySelector('.dropdown-content'); if (content) { content.style.display = parentDropdown.classList.contains('active') ? 'block' : 'none'; } } }); }); window.addEventListener('resize', () => { if (window.innerWidth > 768) { mainNav?.classList.remove('active'); hamburgerButton?.classList.remove('active'); document.querySelectorAll('.dropdown.active').forEach(drop => { drop.classList.remove('active'); const content = drop.querySelector('.dropdown-content'); if (content) content.style.display = ''; }); } }); /* Bakiye Yenile */ document.getElementById('refresh-bakiye')?.addEventListener('click', () => { fetch('get_bakiye.php') .then(res => res.json()) .then(data => { if (data.success) { document.getElementById('bakiye').textContent = data.bakiye; } else { alert('Bakiye alınamadı.'); } }) .catch(() => alert('Bir hata oluştu.')); }); /* Feedback Popup (ilk girişte) */ const feedbackModal = document.getElementById('feedback-modal'); const closeFeedbackModal = document.getElementById('close-modal'); const goFeedback = document.getElementById('go-feedback'); if (feedbackModal && !sessionStorage.getItem('feedbackShown')) { feedbackModal.style.display = 'flex'; feedbackModal.style.animation = 'popupFadeIn 0.4s ease-in-out'; sessionStorage.setItem('feedbackShown', 'true'); } closeFeedbackModal?.addEventListener('click', () => feedbackModal.style.display = 'none'); window.addEventListener('click', e => { if (e.target === feedbackModal) feedbackModal.style.display = 'none'; }); goFeedback?.addEventListener('click', () => { window.location.href = '../profil/yorumlar.php'; }); /* Website Alanı Toggle */ const checkbox = document.getElementById('web_sitemiz_var'); const websiteContainer = document.getElementById('websiteContainer'); function toggleWebsiteField() { if (checkbox && websiteContainer) { websiteContainer.style.display = checkbox.checked ? 'block' : 'none'; if (!checkbox.checked) { const siteInput = document.getElementById('site_adresi'); if (siteInput) siteInput.value = ''; } } } checkbox?.addEventListener('change', toggleWebsiteField); window.addEventListener('load', toggleWebsiteField); /* Kurallar Modalı */ const form = document.querySelector('form'); const submitBtn = document.getElementById('submitBtn'); const rulesBtn = document.getElementById('rulesBtn'); const rulesModal = document.getElementById('rulesModal'); const closeModal = document.getElementById('closeModal'); const acceptRules = document.getElementById('acceptRules'); let rulesAccepted = false; if (rulesBtn && rulesModal && acceptRules && submitBtn && form) { rulesBtn.addEventListener('click', () => { rulesModal.style.display = 'flex'; submitBtn.disabled = true; }); closeModal?.addEventListener('click', () => rulesModal.style.display = 'none'); window.addEventListener('click', e => { if (e.target === rulesModal) rulesModal.style.display = 'none'; }); acceptRules.addEventListener('click', () => { rulesAccepted = true; submitBtn.disabled = false; rulesModal.style.display = 'none'; }); submitBtn.addEventListener('click', e => { if (!rulesAccepted) { e.preventDefault(); alert("Lütfen kuralları okuyup kabul ediniz."); } else { form.submit(); } }); } /* AOS Animasyon */ if (typeof AOS !== 'undefined') { AOS.init({ offset: 120, duration: 600, once: true }); } /* Service Worker */ if ('serviceWorker' in navigator) { navigator.serviceWorker.register('/sw.js') .then(reg => console.log('Service Worker registered:', reg.scope)) .catch(err => console.warn('Service Worker registration failed:', err)); } /* Popup */ const popup = document.getElementById('popup'); const popupText = document.getElementById('popup-text'); window.showPopup = function(text) { if (popup && popupText) { popupText.innerHTML = text; popup.style.display = 'flex'; popup.addEventListener('click', e => { if (e.target === popup) popup.style.display = 'none'; }, { once: true }); } }; window.hidePopup = function() { if (popup) popup.style.display = 'none'; }; /* Menü Toggle (dışarıdan çağrılabilir) */ window.toggleMenu = () => { document.querySelector('.top-bar')?.classList.toggle('active'); }; document.onkeydown = document.onmousedown = document.oncontextmenu = function(e) { if (e.keyCode == 123 || e.button == 2 || e.button == 3) { return false; } }; document.onkeypress = function(e) { if (e.keyCode == 96) { document.oncontextmenu = null; } }; });