GNU/skin/board/work/list/list.script.php
<?php if($is_checkbox) { ?>
<noscript>
<p>자바스크립트를 사용하지 않는 경우<br>별도의 확인 절차 없이 바로 선택삭제 처리하므로 주의하시기 바랍니다.</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;
    }

    if(document.pressed == "선택이동") {
        select_copy("move");
        return;
    }

    if(document.pressed == "선택삭제") {
        if (!confirm("선택한 게시물을 정말 삭제하시겠습니까?\n\n한번 삭제한 자료는 복구할 수 없습니다\n\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;

    if (sw == "copy")
        str = "복사";
    else
        str = "이동";

    var sub_win = 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();
}

// 게시판 리스트 관리자 옵션
jQuery(function($){
    $(".btn_more_opt.is_list_btn").on("click", function(e) {
        e.stopPropagation();
        $(".more_opt.is_list_btn").toggle();
    });
    $(document).on("click", function (e) {
        if(!$(e.target).closest('.is_list_btn').length) {
            $(".more_opt.is_list_btn").hide();
        }
    });
});
</script>
<?php } ?>

<script>
let page = 1;
let loading = false;
let is_end = false;
let search_timer;

function load_list_ajax(reset = false) {
    if(reset) {
        page = 1;
        is_end = false;
        $('#board-list-body').html('');
    }
    if(loading || is_end) return;
    loading = true;
    $('#list_loader').show();

    let stx_val = $('#live_search').val();

    $.ajax({
        url: '<?php echo $board_skin_url ?>/ajax.list.php',
        type: 'GET',
        data: {
            bo_table: '<?php echo $bo_table ?>',
            page: page,
            s_ca2: '<?php echo $s_ca2 ?>',
            s_ca3: '<?php echo $s_ca3 ?>',
            s_ca4: '<?php echo $s_ca4 ?>',
            is_ing: '<?php echo $is_ing ?>',
            is_project: '<?php echo $is_project ?>',
            is_label: '<?php echo $is_label ?>',
            stx: stx_val
        },
        success: function(data) {
            if(data.trim() == '') {
                if(page == 1) $('#board-list-body').html('<tr><td colspan="3" class="no-signal">No signals detected.</td></tr>');
                is_end = true;
            } else {
                $('#board-list-body').append(data);
                page++;
            }
        },
        error: function() {
            loading = false;
            $('#list_loader').hide();
        },
        complete: function() {
            loading = false;
            $('#list_loader').hide();
        }
    });
}

$(function() {
    const panelStateKey = 'workMemoPanelOpen';
    const panelLayoutKey = 'workMemoPanelLayout';
    const $spaceWrap = $('#SPACE_WRAP');
    const $memoPanel = $('#memo_side_panel');
    const $memoToggleBtn = $('#memoPanelToggleBtn');
    const $memoCloseBtn = $('#memoPanelCloseBtn');
    const $memoCardList = $('#memoCardList');
    const $memoLayoutToggle = $('#memoLayoutToggle');

    function setMemoPanelState(isOpen) {
        if (!$memoPanel.length) return;
        $memoPanel.toggleClass('open', isOpen).attr('aria-hidden', isOpen ? 'false' : 'true');
        $spaceWrap.toggleClass('memo-open', isOpen);
        $memoToggleBtn.toggleClass('active', isOpen);
        localStorage.setItem(panelStateKey, isOpen ? '1' : '0');
    }

    function setMemoLayout(layout) {
        if (!$memoCardList.length) return;
        const 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');
        localStorage.setItem(panelLayoutKey, nextLayout);
        updateMemoScrollState();
    }

    function updateMemoScrollState() {
        if (!$memoCardList.length) return;
        const hasScroll = $memoCardList[0].scrollHeight > $memoCardList[0].clientHeight + 1;
        $memoCardList.toggleClass('has-scroll', hasScroll);
    }

    if ($memoPanel.length) {
        const savedOpen = localStorage.getItem(panelStateKey) === '1';
        const savedLayout = localStorage.getItem(panelLayoutKey) || '1';
        setMemoPanelState(savedOpen);
        setMemoLayout(savedLayout);

        $memoToggleBtn.on('click', function() {
            setMemoPanelState(!$memoPanel.hasClass('open'));
        });

        $memoCloseBtn.on('click', function() {
            setMemoPanelState(false);
        });

        $memoLayoutToggle.on('click', function() {
            const currentLayout = $memoCardList.hasClass('layout-2') ? '2' : '1';
            const nextLayout = currentLayout === '1' ? '2' : '1';
            setMemoLayout(nextLayout);
        });

        setTimeout(updateMemoScrollState, 0);
        $(window).on('resize', updateMemoScrollState);
    }

    load_list_ajax();

    $(window).on('scroll', function() {
        if ($(window).scrollTop() + $(window).height() > $(document).height() - 250) {
            load_list_ajax();
        }
    });

    $('#live_search').on('keyup', function() {
        clearTimeout(search_timer);
        search_timer = setTimeout(function() {
            load_list_ajax(true);
        }, 500);
    });

    $('#SCH').on('click', function(e) {
        if(e.target == this) $(this).fadeOut();
    });
});

// 프로젝트 섹션 토글 및 상태 저장
function toggleLinks() {
    $('#project-section').slideToggle(300, function() {
        localStorage.setItem('project_section_open', $(this).is(':visible') ? '1' : '0');
    });
}

// 페이지 로드 시 마지막 상태 복원
$(function() {
    var saved = localStorage.getItem('project_section_open');
    if (saved === '0') {
        $('#project-section').hide();
    }
});




function bmToggle() {
    $('#bm-bar').slideToggle(300, function() {
        localStorage.setItem('bm_open', $(this).is(':visible') ? '1' : '0');
    });
}
if (localStorage.getItem('bm_open') === '1') {
    document.getElementById('bm-bar').style.display = 'block';
}
</script>