152 lines
6.8 KiB
JavaScript
152 lines
6.8 KiB
JavaScript
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}`;
|
|
}
|
|
});
|
|
});
|
|
}
|
|
}); |