GNU/skin/board/backup/list/list.script.php
<?php if($is_checkbox) { ?>
<noscript>
<p>자바스크립트를 사용하지 않는 경우 별도의 확인 절차 없이 바로 선택삭제 처리됩니다.</p>
</noscript>
<?php } ?>

<?php if ($is_checkbox) { ?>
<script>
function all_checked(sw) {
    var f = document.fboardlist;
    for (var i=0; i<f.length; i++) {
        if (f.elements[i].name == 'chk_wr_id[]') f.elements[i].checked = sw;
    }
}

function fboardlist_submit(f) {
    var chk_count = 0;
    for (var i=0; i<f.length; i++) {
        if (f.elements[i].name == 'chk_wr_id[]' && f.elements[i].checked) chk_count++;
    }

    if (!chk_count) {
        alert(document.pressed + '할 게시물을 하나 이상 선택하세요.');
        return false;
    }

    if (document.pressed == '선택복사') { select_copy('copy'); return false; }
    if (document.pressed == '선택이동') { select_copy('move'); return false; }

    if (document.pressed == '선택삭제') {
        if (!confirm('선택한 게시물을 정말 삭제하시겠습니까?\n\n한번 삭제한 자료는 복구할 수 없습니다.')) return false;
        f.removeAttribute('target');
        f.action = g5_bbs_url + '/board_list_update.php';
    }

    return true;
}

function select_copy(sw) {
    var f = document.fboardlist;
    window.open('', 'move', 'left=50, top=50, width=500, height=550, scrollbars=1');
    f.sw.value = sw;
    f.target = 'move';
    f.action = g5_bbs_url + '/move.php';
    f.submit();
}
</script>
<?php } ?>

<script>
(function(){
    function toUrl(base, key, value) {
        if (!base) return '';
        return base + '&' + key + '=' + encodeURIComponent(value || '');
    }

    $(function(){
        $('#filter_ca2').on('change', function(){ location.href = toUrl($(this).data('base'), 's_ca2', $(this).val()); });
        $('#filter_ca3').on('change', function(){ location.href = toUrl($(this).data('base'), 's_ca3', $(this).val()); });
        $('#filter_ca4').on('change', function(){ location.href = toUrl($(this).data('base'), 's_ca4', $(this).val()); });

        $('[data-href]').on('click', function(){
            var href = $(this).attr('data-href');
            if (href) location.href = href;
        });

        $('.backup-card').on('click', function(e){
            if ($(e.target).closest('a,button,input,select,label').length) return;
            var href = $(this).attr('data-href');
            if (href) location.href = href;
        });

        $('#openNoticeBtn').on('click', function(){ $('#NoticeLayer').fadeIn(120); });
        $('#closeNoticeBtn').on('click', function(){ $('#NoticeLayer').fadeOut(120); });
        $('#NoticeLayer').on('click', function(e){ if (e.target === this) $(this).fadeOut(120); });

        $('#openNoticeWriteBtn').on('click', function(){
            var url = $(this).data('url');
            if (!url) return;
            var w = 980, h = 860;
            var left = Math.max(0, (screen.availWidth - w) / 2);
            var top = Math.max(0, (screen.availHeight - h) / 2);
            window.open(url, 'notice_write_win', 'width='+w+',height='+h+',left='+left+',top='+top+',scrollbars=yes,resizable=yes');
        });

        $('#openSearchBtn').on('click', function(){ $('#SCH').css('display','flex').hide().fadeIn(120); });
        $('#closeSearchBtn').on('click', function(){ $('#SCH').fadeOut(120); });
        $('#SCH').on('click', function(e){ if (e.target === this) $(this).fadeOut(120); });

        var liveTimer;
        $('#live_search').on('input', function(){
            clearTimeout(liveTimer);
            var keyword = ($(this).val() || '').toLowerCase().trim();
            liveTimer = setTimeout(function(){
                var visibleCount = 0;
                $('#board-list-body .backup-card').each(function(){
                    var subject = ($(this).data('subject') || '').toString().toLowerCase();
                    var show = keyword === '' || subject.indexOf(keyword) > -1;
                    $(this).toggle(show);
                    if (show) visibleCount++;
                });

                $('#board-list-body .live-empty-card').remove();
                if (visibleCount === 0) {
                    $('#board-list-body').append('<div class="no-signal live-empty-card">실시간 검색 결과가 없습니다.</div>');
                }
            }, 120);
        });

        var panelStateKey = 'backupMemoPanelOpen';
        var panelLayoutKey = 'backupMemoPanelLayout';
        var $memoPanel = $('#memo_side_panel');
        var $memoToggleBtn = $('#memoPanelToggleBtn');
        var $memoCardList = $('#memoCardList');
        var $memoLayoutToggle = $('#memoLayoutToggle');

        function setMemoPanelState(isOpen) {
            $memoPanel.toggleClass('open', isOpen).attr('aria-hidden', isOpen ? 'false' : 'true');
            $memoToggleBtn.toggleClass('active', isOpen);
            try { localStorage.setItem(panelStateKey, isOpen ? '1' : '0'); } catch(e) {}
        }

        function setMemoLayout(layout) {
            if (!$memoCardList.length) return;
            var nextLayout = (layout === '2') ? '2' : '1';
            $memoCardList.removeClass('layout-1 layout-2').addClass('layout-' + nextLayout);
            $memoLayoutToggle.toggleClass('is-layout-2', nextLayout === '2').attr('aria-pressed', nextLayout === '2' ? 'true' : 'false');
            try { localStorage.setItem(panelLayoutKey, nextLayout); } catch(e) {}
        }

        if ($memoPanel.length) {
            var savedOpen = false;
            var savedLayout = '1';
            try { savedOpen = localStorage.getItem(panelStateKey) === '1'; } catch(e) {}
            try { savedLayout = localStorage.getItem(panelLayoutKey) || '1'; } catch(e) {}
            setMemoPanelState(savedOpen);
            setMemoLayout(savedLayout);

            $memoToggleBtn.on('click', function(){ setMemoPanelState(!$memoPanel.hasClass('open')); });
            $('#memoPanelCloseBtn').on('click', function(){ setMemoPanelState(false); });
            $memoLayoutToggle.on('click', function(){ setMemoLayout($memoCardList.hasClass('layout-2') ? '1' : '2'); });
        }
    });
})();
</script>