document.addEventListener('DOMContentLoaded', function() { // ================================================================= // 1. UI 리소스 목록 페이지 (ui_manager_list.php) // ================================================================= const addResourceButton = document.getElementById('add-resource-btn'); const resourceFormContainer = document.getElementById('resource-form-container'); const cancelResourceButton = document.getElementById('cancel-resource-btn'); const resourceTypeRadios = document.querySelectorAll('input[name="resource_type"]'); const labelField = document.getElementById('label-field'); const accordionItems = document.querySelectorAll('.accordion-item'); const searchForm = document.getElementById('fsearch'); const pageRowsSelect = document.getElementById('page_rows'); if (addResourceButton) { addResourceButton.addEventListener('click', function() { if (resourceFormContainer) resourceFormContainer.style.display = 'block'; this.style.display = 'none'; }); } if (cancelResourceButton) { cancelResourceButton.addEventListener('click', function() { if (resourceFormContainer) resourceFormContainer.style.display = 'none'; if (addResourceButton) addResourceButton.style.display = 'inline-block'; }); } function toggleResourceTypeFields() { if (!document.querySelector('input[name="resource_type"]:checked')) return; const selectedType = document.querySelector('input[name="resource_type"]:checked').value; if (labelField) { labelField.style.display = (selectedType === 'LABEL') ? '' : 'none'; } } if (resourceTypeRadios.length > 0) { resourceTypeRadios.forEach(radio => radio.addEventListener('change', toggleResourceTypeFields)); toggleResourceTypeFields(); } if (accordionItems.length > 0) { accordionItems.forEach(item => { const header = item.querySelector('.accordion-header'); const content = item.querySelector('.accordion-content'); if (header && content) { header.addEventListener('click', () => { item.classList.toggle('active'); content.style.display = item.classList.contains('active') ? 'block' : 'none'; }); } }); } if (searchForm) { searchForm.addEventListener('keydown', function(event) { if (event.key === 'Enter') { // 엔터키 입력 시 기본 동작(폼 제출)을 막지 않음 } }); } if (pageRowsSelect) { pageRowsSelect.addEventListener('change', function() { if (searchForm) { searchForm.submit(); } }); } // ================================================================= // 💡 [핵심] 옵션/카테고리 관리 페이지 (category_list.php) 로직 추가 // ================================================================= const addCategoryButton = document.getElementById('add-category-btn'); const categoryFormContainer = document.getElementById('category-form-container'); const cancelCategoryButton = document.getElementById('cancel-category-btn'); const categoryForm = document.getElementById('fcategoryform'); const editCategoryButtons = document.querySelectorAll('.btn_edit_category'); // "새 옵션 추가" 버튼 클릭 if (addCategoryButton && categoryFormContainer) { addCategoryButton.addEventListener('click', function() { if (categoryForm) { categoryForm.reset(); categoryForm.w.value = ''; // 신규 등록 모드 categoryForm.fc_id.value = ''; const submitButton = categoryForm.querySelector('input[type="submit"]'); if (submitButton) submitButton.value = '저장'; } categoryFormContainer.style.display = 'block'; this.style.display = 'none'; }); } // "취소" 버튼 클릭 if (cancelCategoryButton && categoryFormContainer && addCategoryButton) { cancelCategoryButton.addEventListener('click', function() { categoryFormContainer.style.display = 'none'; addCategoryButton.style.display = 'inline-block'; }); } // "수정" 버튼 클릭 if (editCategoryButtons.length > 0 && categoryForm) { editCategoryButtons.forEach(button => { button.addEventListener('click', function() { const data = this.dataset; // 폼에 데이터 채우기 categoryForm.w.value = 'u'; // 수정 모드 categoryForm.fc_id.value = data.fc_id; categoryForm.parent_id.value = data.parent_id; categoryForm.fc_key.value = data.fc_key; categoryForm.cl_name.value = data.cl_name; categoryForm.fc_order.value = data.fc_order; const isUsedRadio = categoryForm.querySelector(`input[name="is_used"][value="${data.is_used}"]`); if (isUsedRadio) isUsedRadio.checked = true; const submitButton = categoryForm.querySelector('input[type="submit"]'); if (submitButton) submitButton.value = '수정'; if (categoryFormContainer) categoryFormContainer.style.display = 'block'; if (addCategoryButton) addCategoryButton.style.display = 'none'; categoryFormContainer.scrollIntoView({ behavior: 'smooth' }); }); }); } // ================================================================= // 3. 리소스 삭제 기능 // ================================================================= const deleteResourceButtons = document.querySelectorAll('.btn_delete_resource'); if (deleteResourceButtons.length > 0) { deleteResourceButtons.forEach(button => { button.addEventListener('click', function(event) { event.preventDefault(); const um_id = this.dataset.um_id; const resource_desc_element = this.closest('tr').querySelector('.td_left'); const resource_desc = resource_desc_element ? resource_desc_element.textContent.trim() : `ID: ${um_id}`; if (confirm(`'${resource_desc}' 리소스를 정말 삭제하시겠습니까?\n\n이 리소스와 관련된 모든 하위 옵션(카테고리) 및 언어 데이터가 함께 영구적으로 삭제됩니다.`)) { const qstr = new URLSearchParams(window.location.search).toString(); location.href = `./ui_manager_list.php?mode=delete&um_id=${um_id}&token=${g5_admin_token}&${qstr}`; } }); }); } });