GNU/skin/board/memo/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>
jQuery(function($){
    var memoOpenKey = 'daemon_kind_bybit_memo_open';
    var memoViewKey = 'daemon_kind_bybit_memo_view';
    var $listRoot = $('#LIST');
    var $memoLayer = $('#MemoLayer');
    var $memoButton = $('#btnOpenMemo');
    var $memoViewButtons = $('.memo-view-btn');

    function getMemoView() {
        var value = localStorage.getItem(memoViewKey);
        return (value === '1x1' || value === '1x2') ? value : '1x2';
    }

    function setMemoView(view) {
        $memoLayer.removeClass('view-1x1 view-1x2').addClass('view-' + view);
        $memoViewButtons.removeClass('is-active');
        $memoViewButtons.filter('[data-view="' + view + '"]').addClass('is-active');
        localStorage.setItem(memoViewKey, view);
    }

    function openMemoLayer() {
        $memoLayer.addClass('is-open');
        $memoButton.addClass('is-active');
        $listRoot.addClass('memo-open');
        localStorage.setItem(memoOpenKey, '1');
    }

    function closeMemoLayer() {
        $memoLayer.removeClass('is-open');
        $memoButton.removeClass('is-active');
        $listRoot.removeClass('memo-open');
        localStorage.setItem(memoOpenKey, '0');
    }

    setMemoView(getMemoView());
    if (localStorage.getItem(memoOpenKey) === '1') {
        openMemoLayer();
    } else {
        closeMemoLayer();
    }

    $memoViewButtons.on('click', function(){
        var view = $(this).data('view');
        if (view === '1x1' || view === '1x2') {
            setMemoView(view);
        }
    });

    $('#btnOpenMemo').on('click', function(){
        if ($memoLayer.hasClass('is-open')) {
            closeMemoLayer();
        } else {
            openMemoLayer();
        }
    });

    $('#btnCloseMemoTop, #btnCloseMemoBottom').on('click', function(){
        closeMemoLayer();
    });

    $('#btnOpenNotice').on('click', function(){
        $('#NoticeLayer').fadeIn(120);
    });

    $('#btnCloseNoticeTop, #btnCloseNoticeBottom').on('click', function(){
        $('#NoticeLayer').fadeOut(120);
    });

    $('#btnOpenSearch').on('click', function(){
        $('#SCH').css('display', 'flex').hide().fadeIn(120);
    });

    $('#btnCloseSearch').on('click', function(){
        $('#SCH').fadeOut(120);
    });

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

    var $rows = $('.list-row');
    var $noResult = $('#RealtimeNoResult');

    function normalizeText(value) {
        return (value || '').toString().toLowerCase().replace(/\s+/g, ' ').trim();
    }

    $('#realtimeSearch').on('input', function(){
        var keyword = normalizeText($(this).val());
        var visibleCount = 0;

        $rows.each(function(){
            var symbol = normalizeText($(this).data('symbol'));
            var korean = normalizeText($(this).data('korean'));
            var matched = (keyword === '') || (symbol.indexOf(keyword) > -1) || (korean.indexOf(keyword) > -1);

            $(this).toggle(matched);
            if (matched) visibleCount++;
        });

        if (keyword !== '' && visibleCount === 0) {
            $noResult.show();
        } else {
            $noResult.hide();
        }
    });
});
</script>

<script>
    // 팝업 열기: URL만 갈아끼우고 보여줌
    function open_memo_popup(url) {
        var iframe = document.getElementById('memo_iframe');
        iframe.src = url;
        document.getElementById('memo_layer_popup').style.display = 'block';
        document.body.style.overflow = 'hidden'; // 팝업 시 본문 스크롤 방지
    }

    // 팝업 닫기: 주소 비우고 창만 닫음 (오류 방지)
    function close_memo_popup() {
        var iframe = document.getElementById('memo_iframe');
        iframe.src = ''; // 아이프레임 주소 초기화 (잔상 및 오류 방지)
        document.getElementById('memo_layer_popup').style.display = 'none';
        document.body.style.overflow = 'auto'; // 본문 스크롤 복구
    }
</script>




<script>
$(document).ready(function() {
    // [에이스급 스무스 필터 함수]
    function filterMemosElite(type) {
        var $items = $('.memo-card-item');
        var $btnAll = $('#btnFilterAll');

        // 1. '전체' 버튼 노출 조교 (미완료/완료 클릭 시만 슥~ 등장!)
        if (type === 'all') {
            $btnAll.fadeOut(300); // 전체 누르면 다시 숨기기
        } else {
            $btnAll.fadeIn(400);  // 필터링 시작하면 빳빳하게 등장!
        }

        // 2. 리스트 개별 조교 (깜빡임 없이 슥~ 슥~ 접고 펴기)
        $('.memo-card-body').each(function() {
            var $item = $(this).closest('.memo-card-item');
            // 완료 조건: opacity 0.3 이나 취소선이 있는 경우 (x2_end 필드 기반)
            var isEnd = ($(this).css('opacity') == '0.3' || $(this).css('text-decoration-line') === 'line-through');

            if (type === 'all') {
                $item.show(400); // 0.4초 동안 빳빳하게 등장!
            } else if (type === 'pending') {
                if (isEnd) $item.hide(400); else $item.show(400); // 미완료만 남기고 슥~
            } else if (type === 'completed') {
                if (!isEnd) $item.hide(400); else $item.show(400); // 완료만 남기고 슥~
            }
        });

        // 메이슨리 레이아웃 재배치 (쓰고 있다면 주석 해제!)
        // if ($('.memo-masonry-wrapper').data('masonry')) {
        //     $('.memo-masonry-wrapper').masonry('layout');
        // }
    }

    // [버튼 클릭 이벤트들]
    // 미완료 클릭
    $('#btnFilterPending').on('click', function() {
        filterMemosElite('pending');
        $('.btn-filter').css('opacity', '0.6').css('color', '');
        $(this).css('opacity', '1').css('color', '#ff4444');
    });

    // 완료만 클릭 (반대)
    $('#btnFilterCompleted').on('click', function() {
        filterMemosElite('completed');
        $('.btn-filter').css('opacity', '0.6').css('color', '');
        $(this).css('opacity', '1').css('color', '#00ff00');
    });

    // 전체보기 클릭
    $('#btnFilterAll').on('click', function() {
        filterMemosElite('all');
        $('.btn-filter').css('opacity', '1').css('color', '');
    });
});
</script>