OLDBOY/skin/board/help/view.skin.php
<?php
if (!defined('_GNUBOARD_')) exit;

add_stylesheet('<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css">', 0);
// Orbitron 폰트 추가 (상단 CORE TERMINAL용)
add_stylesheet('<link href="https://fonts.googleapis.com/css2?family=Orbitron:wght@400;700&display=swap" rel="stylesheet">', 0);
include_once(G5_LIB_PATH.'/thumbnail.lib.php');

// 스타일시트 유지
add_stylesheet('<link rel="stylesheet" href="'.$board_skin_url.'/style.view.css">', 0);
add_stylesheet('<link rel="stylesheet" href="'.$board_skin_url.'/style.css">', 0);

$view_content = get_view_thumbnail($view['content']);
?>

<article id="VIEW">
    <div class="Board-Info-Header">
        <div>
            <span style="font-family:'Orbitron'; font-size:0.8rem; color:var(--accent-blue); font-weight:700; letter-spacing:2px;">CORE TERMINAL</span>
            <div style="font-size:1.6rem; font-weight:800; color:#fff; margin-top:5px;">
                <i class="fa-solid fa-database" style="color:var(--accent-blue); margin-right:10px;"></i><?php echo $board['bo_subject']; ?>
            </div>
        </div>
        <div class="Btns-Right">
            <button onclick="location.href='<?php echo $list_href; ?>'"><i class="fa-solid fa-list"></i> LIST</button>
            <?php if ($update_href) { ?><button onclick="location.href='<?php echo $update_href; ?>'"><i class="fa-solid fa-pen-to-square"></i> EDIT</button><?php } ?>
            <?php if ($write_href) { ?><button onclick="location.href='<?php echo $write_href; ?>'" class="Write-Btn"><i class="fa-solid fa-pen"></i> WRITE</button><?php } ?>
        </div>
    </div>

    <header class="Header-Main-Section">
        <h1><?php echo get_text($view['wr_subject']); ?></h1>
        <div class="wr-datetime">
            <i class="fa-regular fa-clock" style="margin-right:8px; color:var(--accent-blue);"></i>
            DATE: <?php echo date("Y-m-d H:i", strtotime($view['wr_datetime'])); ?>
        </div>
    </header>

    <div class="Extra-Category-Area">
        <?php if($view['x2_ca2']) { ?><a href="<?php echo G5_BBS_URL; ?>/board.php?bo_table=<?php echo $bo_table; ?>&amp;sfl=x2_ca2&amp;stx=<?php echo urlencode($view['x2_ca2']); ?>" class="ca-tag-item"><?php echo $view['x2_ca2']; ?></a><?php } ?>
        <?php if($view['x2_ca3']) { ?><a href="<?php echo G5_BBS_URL; ?>/board.php?bo_table=<?php echo $bo_table; ?>&amp;sfl=x2_ca3&amp;stx=<?php echo urlencode($view['x2_ca3']); ?>" class="ca-tag-item"><?php echo $view['x2_ca3']; ?></a><?php } ?>
    </div>

    <div class="View-Content">
        <div class="View-Body-Inner">
            <div id="bo_v_atc">
                <div id="bo_v_img">
                    <?php
                    if ($view['file']['count']) {
                        for ($i=0; $i<count($view['file']); $i++) {
                            if (isset($view['file'][$i]['view']) && $view['file'][$i]['view']) {
                                echo get_view_thumbnail($view['file'][$i]['view']);
                            }
                        }
                    }
                    ?>
                </div>
                <div id="bo_v_con">
                    <?php echo $view_content; ?>
                </div>
            </div>
        </div>
    </div>

    <?php
    if ($view['file']['count']) {
        for ($i=0; $i<count($view['file']); $i++) {
            // 파일이 존재할 경우 확장자 추출을 통한 진실(검증) 작업 진행
            if (isset($view['file'][$i]['source']) && $view['file'][$i]['source']) {
                $file_ext = strtolower(pathinfo($view['file'][$i]['source'], PATHINFO_EXTENSION));
                
                if ($file_ext === 'pdf') {
                    // 데이터베이스 기반 실제 저장 경로 연결
                    $pdf_direct_url = G5_DATA_URL . '/file/' . $bo_table . '/' . $view['file'][$i]['file'];
    ?>
    <div class="PDF-Viewer-Section">
        <div class="PDF-Viewer-Header">
            <i class="fa-solid fa-file-pdf" style="margin-right: 10px;"></i> PDF VIEWER : <?php echo $view['file'][$i]['source']; ?>
        </div>
        <div class="PDF-Viewer-Body">
            <iframe src="<?php echo $pdf_direct_url; ?>" width="100%" height="100%" style="border: none; display: block;"></iframe>
        </div>
    </div>
    <?php
                }
            }
        }
    }
    ?>
    <?php if ($view['x2_txt']) { ?>
    <div class="Extra-Code-Section">
        <div class="Extra-Code-Header">
            <span><i class="fa-solid fa-code"></i> EXTRA CODE SNIPPET</span>
            <button type="button" class="copy-btn" onclick="copyExtraCode();">
                <i class="fa-regular fa-copy"></i> COPY
            </button>
        </div>
        <div class="Extra-Code-Body" id="extraCodeBody"><?php echo get_text($view['x2_txt'], 0); ?></div>
    </div>
    <?php } ?>

    <div class="View-Attached-Data">
        <?php
        for ($i=1; $i<=count($view['link']); $i++) {
            if ($view['link'][$i]) {
                $link = cut_str($view['link'][$i], 70);
        ?>
            <a href="<?php echo $view['link_href'][$i] ?>" target="_blank" class="data-item">
                <div class="data-info">
                    <i class="fa-solid fa-link"></i>
                    <span class="data-name"><?php echo $link ?></span>
                </div>
                <div class="data-meta">
                    <span class="meta-badge">LINK</span>
                    <i class="fa-solid fa-arrow-up-right-from-square" style="font-size:10px;"></i>
                </div>
            </a>
        <?php
            }
        }
        ?>

        <?php
        if ($view['file']['count']) {
            for ($i=0; $i<count($view['file']); $i++) {
                if (isset($view['file'][$i]['source']) && !isset($view['file'][$i]['view'])) {
        ?>
            <a href="<?php echo $view['file'][$i]['href']; ?>" class="data-item">
                <div class="data-info">
                    <i class="fa-solid fa-download"></i>
                    <div>
                        <span class="data-name"><?php echo $view['file'][$i]['source']; ?></span>
                        <?php if($view['file'][$i]['bf_content']) { ?>
                        <span class="data-description"><?php echo $view['file'][$i]['bf_content']; ?></span>
                        <?php } ?>
                    </div>
                </div>
                <div class="data-meta">
                    <span class="meta-badge"><?php echo $view['file'][$i]['size']; ?></span>
                    <span><i class="fa-solid fa-eye" style="margin-right:5px; opacity:0.5;"></i><?php echo $view['file'][$i]['download']; ?></span>
                </div>
            </a>
        <?php
                }
            }
        }
        ?>
    </div>

    <?php if ($view['wr_1']) { ?>
    <div class="Custom-Tag-Area">
        <?php
        $x2_tags = explode(',', $view['wr_1']); 
        foreach($x2_tags as $tag_val) {
            $tag_val = trim($tag_val);
            if($tag_val) {
                echo '<a href="'.G5_BBS_URL.'/board.php?bo_table='.$bo_table.'&amp;stx='.urlencode($tag_val).'&amp;sfl=wr_1" class="x2-tag-item">'.$tag_val.'</a>';
            }
        }
        ?>
    </div>
    <?php } ?>

    <nav class="Post-Navigation">
        <?php if ($prev_href) { ?>
            <a href="<?php echo $prev_href; ?>" style="border-right:1px solid var(--border-color);">
                <span class="nav-label"><i class="fa-solid fa-chevron-left"></i> PREVIOUS POST</span>
                <p class="nav-subject"><?php echo $prev_wr_subject; ?></p>
            </a>
        <?php } else { ?>
            <div style="padding:40px; color:#334155; border-right:1px solid var(--border-color); font-size:0.9rem; font-weight:700;">FIRST POST</div>
        <?php } ?>

        <?php if ($next_href) { ?>
            <a href="<?php echo $next_href; ?>" style="text-align:right;">
                <span class="nav-label">NEXT POST <i class="fa-solid fa-chevron-right"></i></span>
                <p class="nav-subject"><?php echo $next_wr_subject; ?></p>
            </a>
        <?php } else { ?>
            <div style="padding:40px; color:#334155; text-align:right; font-size:0.9rem; font-weight:700;">LAST POST</div>
        <?php } ?>
    </nav>

    <footer class="View-Bottom-Control">
        <div class="Admin-Control">
            <?php if ($delete_href) { ?><button onclick="if(confirm('정말 삭제하시겠습니까?')) location.href='<?php echo $delete_href; ?>';">DELETE</button><?php } ?>
            <?php if ($copy_href) { ?><button onclick="window.open('<?php echo $copy_href; ?>', 'copy_win', 'width=600,height=500');">COPY</button><?php } ?>
            <?php if ($move_href) { ?><button onclick="window.open('<?php echo $move_href; ?>', 'move_win', 'width=600,height=500');">MOVE</button><?php } ?>
        </div>
        <button onclick="location.href='<?php echo $list_href; ?>'" class="List-Btn-Footer">
            <i class="fa-solid fa-list-ul" style="margin-right:8px;"></i> BACK TO LIST
        </button>
    </footer>
</article>

<script src="<?php echo G5_JS_URL; ?>/viewimageresize.js"></script>

<script>
$(function() {
    $(".View-Body-Inner img").viewimageresize();
});
function copyExtraCode() {
    const codeArea = document.getElementById('extraCodeBody');
    const range = document.createRange();
    range.selectNode(codeArea);
    window.getSelection().removeAllRanges();
    window.getSelection().addRange(range);
    try {
        const successful = document.execCommand('copy');
        const btn = document.querySelector('.copy-btn');
        const originalText = btn.innerHTML;
        if (successful) {
            btn.innerHTML = '<i class="fa-solid fa-check"></i> COPIED!';
            btn.style.borderColor = '#00f2ff';
            btn.style.color = '#00f2ff';
        }
        setTimeout(() => {
            btn.innerHTML = originalText;
            btn.style.borderColor = '';
            btn.style.color = '';
        }, 2000);
    } catch (err) { alert('복사에 실패했습니다.'); }
    window.getSelection().removeAllRanges();
}
</script>