// ===== modals.js 맨 첫줄에 추가 ===== function updateDomainSectionVisibility() { const section = document.getElementById('domainSection'); if (!section) return; const hasFolder = typeof folderPath !== 'undefined' && folderPath && folderPath.trim() !== ''; const hasLinks = typeof referenceLinks !== 'undefined' && referenceLinks && referenceLinks.length > 0; section.style.display = (hasFolder || hasLinks) ? 'block' : 'none'; } // ===== 폴더 모달 ===== function openFolderModal() { document.getElementById('folderModal').classList.add('active'); document.getElementById('folderPath').focus(); } function closeFolderModal() { document.getElementById('folderModal').classList.remove('active'); } function submitFolder() { const path = document.getElementById('folderPath').value.trim(); if (!path) { alert('폴더 경로를 입력해주세요.'); return; } folderPath = document.getElementById('folderPath').value; closeFolderModal(); updateInputStatus(); setStatus('폴더 경로 설정됨', true); // 서버에 폴더 검토 요청 fetch('/api/check-folder', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ folder_path: folderPath }) }) .then(r => r.json()) .then(data => { if (data.success) { document.getElementById('totalCount').textContent = data.total + '개'; document.getElementById('okCount').textContent = data.ok + '개 ✓'; document.getElementById('unknownCount').textContent = data.unknown + '개'; // 미확인 파일 목록 const listEl = document.getElementById('unknownFilesList'); if (listEl && data.unknown_list) { listEl.innerHTML = data.unknown_list .map(name => `
${name}
`) .join(''); } } else { document.getElementById('totalCount').textContent = '오류'; alert('폴더 검토 실패: ' + (data.error || '')); } }) .catch(err => { document.getElementById('totalCount').textContent = '오류'; console.error('[Folder]', err); }); updateDomainSectionVisibility(); if (typeof onFolderSetComplete === 'function') { onFolderSetComplete(); } } function toggleUnknownFiles() { document.getElementById('unknownFilesBox').classList.toggle('show'); } function openFolder() { alert('폴더 열기는 Engine이 실행 중일 때만 가능합니다.'); } // ===== 링크 모달 ===== function openLinkModal() { document.getElementById('linkModal').classList.add('active'); } function closeLinkModal() { document.getElementById('linkModal').classList.remove('active'); } function addLinkInput() { const container = document.getElementById('linkInputList'); const input = document.createElement('input'); input.type = 'text'; input.className = 'link-input'; input.placeholder = 'https://...'; input.style = 'width:100%; padding:10px; border-radius:6px; border:1px solid var(--ui-border); background:var(--ui-bg); color:var(--ui-text); font-size:12px; margin-bottom:8px;'; container.appendChild(input); } function submitLinks() { const inputs = document.querySelectorAll('#linkInputList .link-input'); referenceLinks = []; inputs.forEach(input => { const val = input.value.trim(); if (val) referenceLinks.push(val); }); closeLinkModal(); updateInputStatus(); if (referenceLinks.length > 0) { setStatus(`참고 링크 ${referenceLinks.length}개 설정됨`, true); } updateDomainSectionVisibility(); if (typeof onFolderSetComplete === 'function') { onFolderSetComplete(); } } // ===== HTML 모달 ===== function openHtmlModal() { document.getElementById('htmlModal').classList.add('active'); document.getElementById('htmlContent').focus(); } function closeHtmlModal() { document.getElementById('htmlModal').classList.remove('active'); } function submitHtml() { const html = document.getElementById('htmlContent').value.trim(); if (!html) { alert('HTML을 입력해주세요.'); return; } inputContent = html; closeHtmlModal(); updateInputStatus(); setStatus('HTML 입력 완료', true); updateDomainSectionVisibility(); }