107 lines
4.8 KiB
JavaScript
107 lines
4.8 KiB
JavaScript
function initContactModule(moduleId) {
|
|
// 💡 [수정] ID 선택자 수정 (module.php에서 생성한 ID 사용)
|
|
// module.php에서 $module_id = 'contact_module_'.uniqid(); 로 생성된 ID가 넘어옴
|
|
// 하지만 HTML 구조상 최상위 ID는 'laser-contact-module'로 고정되어 있음 (module.php 확인)
|
|
// 따라서 moduleId 인자를 무시하고 고정 ID를 사용하거나, module.php를 수정해야 함.
|
|
// 여기서는 module.php의 구조에 맞춰 #laser-contact-module을 기준으로 동작하도록 수정.
|
|
|
|
const moduleElement = document.getElementById('laser-contact-module');
|
|
if (!moduleElement || moduleElement.classList.contains('initialized')) return;
|
|
|
|
const modal = moduleElement; // 모달 전체 컨테이너
|
|
const closeBtn = moduleElement.querySelector('.modal-close'); // 닫기 버튼 (현재 HTML엔 없음, 추가 필요 시)
|
|
const form = moduleElement.querySelector('.contact-form');
|
|
const formMessages = moduleElement.querySelector('.form-message-area');
|
|
|
|
// 💡 [추가] 모달 열기/닫기 기능 (필요한 경우 주석 해제 및 HTML 수정)
|
|
/*
|
|
const openModal = (e) => {
|
|
if (e) e.preventDefault();
|
|
modal.classList.add('active');
|
|
document.body.style.overflow = 'hidden';
|
|
};
|
|
|
|
const closeModal = () => {
|
|
modal.classList.remove('active');
|
|
document.body.style.overflow = '';
|
|
};
|
|
|
|
// 외부 트리거 버튼 연결 (예: .btn-open-contact-modal 클래스를 가진 버튼)
|
|
document.addEventListener('click', function(e) {
|
|
const targetBtn = e.target.closest('.btn-open-contact-modal');
|
|
if (targetBtn) {
|
|
openModal(e);
|
|
}
|
|
});
|
|
|
|
if (closeBtn) closeBtn.addEventListener('click', closeModal);
|
|
|
|
// 오버레이 클릭 시 닫기
|
|
modal.addEventListener('click', (e) => {
|
|
if (e.target === modal) closeModal();
|
|
});
|
|
|
|
document.addEventListener('keydown', (e) => {
|
|
if (e.key === 'Escape' && modal.classList.contains('active')) {
|
|
closeModal();
|
|
}
|
|
});
|
|
*/
|
|
|
|
// universalMailer를 사용한 폼 제출 로직
|
|
if (form) {
|
|
form.addEventListener('submit', function(e) {
|
|
e.preventDefault();
|
|
const submitBtn = this.querySelector('button[type="submit"]');
|
|
const originalBtnText = submitBtn.textContent;
|
|
|
|
submitBtn.disabled = true;
|
|
submitBtn.textContent = '전송 중...';
|
|
formMessages.innerHTML = ''; // 이전 메시지 초기화
|
|
formMessages.className = 'form-message-area'; // 클래스 초기화
|
|
|
|
const formData = new FormData(form);
|
|
const variables = {
|
|
contact_subject: formData.get('contact_subject'), // 💡 [추가] 문의 항목
|
|
contact_name: formData.get('contact_name'),
|
|
contact_hp: formData.get('contact_hp'),
|
|
contact_email: formData.get('contact_email'),
|
|
contact_message: formData.get('contact_message').replace(/\n/g, '<br>')
|
|
};
|
|
|
|
// universalMailer 객체가 있는지 확인
|
|
if (window.universalMailer && typeof window.universalMailer.send === 'function') {
|
|
window.universalMailer.send({
|
|
template_code: 'contact_inquiry', // 관리자에서 생성한 템플릿 코드
|
|
// to_email: variables.contact_email, //수신자임 문의 하기 같은경우 관리자가 받아야 해서 비워둔다
|
|
variables: variables,
|
|
onSuccess: function(response) {
|
|
alert(response.message || '상담 신청이 성공적으로 접수되었습니다.');
|
|
form.reset();
|
|
formMessages.innerHTML = '성공적으로 접수되었습니다.';
|
|
formMessages.classList.add('success');
|
|
// closeModal(); // 모달 닫기 (필요시)
|
|
},
|
|
onError: function(errorMessage) {
|
|
formMessages.innerHTML = errorMessage || '오류가 발생했습니다.';
|
|
formMessages.classList.add('error');
|
|
},
|
|
onComplete: function() {
|
|
submitBtn.disabled = false;
|
|
submitBtn.textContent = originalBtnText;
|
|
}
|
|
});
|
|
} else {
|
|
alert('메일 발송 기능에 오류가 발생했습니다. 관리자에게 문의해주세요.');
|
|
submitBtn.disabled = false;
|
|
submitBtn.textContent = originalBtnText;
|
|
}
|
|
});
|
|
}
|
|
|
|
moduleElement.classList.add('initialized');
|
|
}
|
|
|
|
// 전역 함수로 노출
|
|
window.initContactModule = initContactModule;
|