GNU/skin/board/backup/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);
add_stylesheet('<link rel="stylesheet" href="'.$board_skin_url.'/style.write.css">', 0);
include_once(G5_LIB_PATH.'/thumbnail.lib.php');

$view_content = get_view_thumbnail($view['content']);
$x2_txt_raw = isset($view['x2_txt']) ? $view['x2_txt'] : '';
$code_filename = $bo_table.'-'.$view['wr_id'].'.php';

$content_text = trim(strip_tags($view_content));
$has_images = false;
$has_files = false;
$has_links = false;

if (!empty($view['file']['count'])) {
    for ($i = 0; $i < count($view['file']); $i++) {
        if (!isset($view['file'][$i]['source'])) continue;
        if (isset($view['file'][$i]['view']) && $view['file'][$i]['view']) {
            $has_images = true;
        } else {
            $has_files = true;
        }
    }
}

for ($i = 1; $i <= (int)count($view['link']); $i++) {
    if (!empty($view['link'][$i])) {
        $has_links = true;
        break;
    }
}

$has_content = ($has_images || $content_text !== '');

$memo_text = isset($view['x2_memo']) ? trim($view['x2_memo']) : '';
$memo_clean = isset($view['x2_memo_clean']) && $view['x2_memo_clean'] === '1';

$tag_source = isset($view['wr_1']) ? $view['wr_1'] : '';
$tag_items = array_filter(array_map('trim', explode(',', $tag_source)));

$same_category_href = G5_BBS_URL.'/board.php?bo_table='.$bo_table.'&sca='.urlencode(isset($view['ca_name']) ? $view['ca_name'] : '');
$same_ca2_href = G5_BBS_URL.'/board.php?bo_table='.$bo_table.'&s_ca2='.urlencode(isset($view['x2_ca2']) ? $view['x2_ca2'] : '');
$same_ca3_href = G5_BBS_URL.'/board.php?bo_table='.$bo_table.'&s_ca3='.urlencode(isset($view['x2_ca3']) ? $view['x2_ca3'] : '');

$same_top_href = G5_BBS_URL.'/board.php?bo_table='.$bo_table.'&is_top=y&sfl=x2_top&stx=1';
$same_label_href = G5_BBS_URL.'/board.php?bo_table='.$bo_table.'&is_label=y&sfl=x2_label&stx=1';
$same_ok_href = G5_BBS_URL.'/board.php?bo_table='.$bo_table.'&is_ok=y&sfl=x2_ok&stx=1';
$same_set_href = G5_BBS_URL.'/board.php?bo_table='.$bo_table.'&is_set=y&sfl=x2_set&stx=1';

$recent_ca3_rows = array();
$prev_ca3_rows = array();
if (!empty($view['x2_ca3'])) {
    $x2_ca3_sql = sql_real_escape_string($view['x2_ca3']);
    $wr_id_sql = (int)$view['wr_id'];

    $sql_recent = " SELECT wr_id, wr_subject, wr_datetime
                    FROM {$write_table}
                    WHERE wr_is_comment = '0'
                      AND x2_ca3 = '{$x2_ca3_sql}'
                      AND wr_id > '{$wr_id_sql}'
                    ORDER BY wr_id DESC
                    LIMIT 3 ";
    $rs_recent = sql_query($sql_recent, false);
    if ($rs_recent) {
        while ($row = sql_fetch_array($rs_recent)) {
            $recent_ca3_rows[] = $row;
        }
    }

    $sql_prev = " SELECT wr_id, wr_subject, wr_datetime
                  FROM {$write_table}
                  WHERE wr_is_comment = '0'
                    AND x2_ca3 = '{$x2_ca3_sql}'
                    AND wr_id < '{$wr_id_sql}'
                  ORDER BY wr_id DESC
                  LIMIT 3 ";
    $rs_prev = sql_query($sql_prev, false);
    if ($rs_prev) {
        while ($row = sql_fetch_array($rs_prev)) {
            $prev_ca3_rows[] = $row;
        }
    }
}

$extract_wr_id = function($href) {
    if (!$href) return 0;
    if (preg_match('/[?&]wr_id=(\d+)/', $href, $m)) {
        return (int)$m[1];
    }
    return 0;
};

$load_nav_meta = function($target_wr_id) use ($write_table) {
    $meta = array();
    if (!$target_wr_id) return $meta;
    $sql = " SELECT ca_name, x2_ca2, x2_ca3, x2_ca4, x2_top, x2_label, x2_ok, x2_set
             FROM {$write_table}
             WHERE wr_id = '{$target_wr_id}' ";
    $row = sql_fetch($sql, false);
    if (is_array($row)) $meta = $row;
    return $meta;
};

$prev_meta = $load_nav_meta($extract_wr_id($prev_href));
$next_meta = $load_nav_meta($extract_wr_id($next_href));

$render_nav_meta = function($meta) {
    if (empty($meta)) return '';
    $parts = array();

    if (!empty($meta['ca_name'])) $parts[] = '<span class="nav-meta-chip">분류: '.get_text($meta['ca_name']).'</span>';
    if (!empty($meta['x2_ca2'])) $parts[] = '<span class="nav-meta-chip">구분: '.get_text($meta['x2_ca2']).'</span>';
    if (!empty($meta['x2_ca3'])) $parts[] = '<span class="nav-meta-chip">형태: '.get_text($meta['x2_ca3']).'</span>';
    if (!empty($meta['x2_ca4'])) $parts[] = '<span class="nav-meta-chip">종류: '.get_text($meta['x2_ca4']).'</span>';

    $extra = array();
    if (!empty($meta['x2_top']) && $meta['x2_top'] == '1') $extra[] = '우선';
    if (!empty($meta['x2_label']) && $meta['x2_label'] == '1') $extra[] = '라벨';
    if (!empty($meta['x2_ok']) && $meta['x2_ok'] == '1') $extra[] = '완성';
    if (!empty($meta['x2_set']) && $meta['x2_set'] == '1') $extra[] = '세트';
    if (!empty($extra)) $parts[] = '<span class="nav-meta-chip">옵션: '.implode(', ', $extra).'</span>';

    return implode('', $parts);
};
?>

<article id="VIEW">
    <div class="Board-Info-Header">
        <div>
            <span class="terminal-label">CORE TERMINAL</span>
            <div class="board-title"><i class="fa-solid fa-database board-title-icon"></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 datetime-icon"></i> DATE: <?php echo date('Y-m-d H:i', strtotime($view['wr_datetime'])); ?></div>
    </header>



        <?php if ($has_files || $has_links) { ?>
        <div class="View-Attached-Data">
            <?php if ($has_files) { ?>
            <div class="section-title-row"><i class="fa-solid fa-paperclip"></i> 첨부파일</div>
            <?php
            if ($view['file']['count']) {
                for ($i=0; $i<count($view['file']); $i++) {
                    if (!isset($view['file'][$i]['source']) || isset($view['file'][$i]['view'])) continue;
            ?>
            <a href="<?php echo $view['file'][$i]['href']; ?>" class="data-item file-item view_file_download">
                <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(!empty($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><?php echo $view['file'][$i]['size']; ?></span></div>
            </a>
            <?php
                }
            }
            ?>
            <?php } ?>

            <?php if ($has_links) { ?>
            <div class="section-title-row links-under-files"><i class="fa-solid fa-link"></i> 링크</div>
            <?php
            for ($i=1; $i<=count($view['link']); $i++) {
                if (empty($view['link'][$i])) continue;
                $link = cut_str($view['link'][$i], 120);
            ?>
            <a href="<?php echo $view['link_href'][$i] ?>" target="_blank" class="data-item link-item-card">
                <div class="data-info"><i class="fa-solid fa-link"></i><span class="data-name"><?php echo $link ?></span></div>
                <span class="data-meta">OPEN</span>
            </a>
            <?php } ?>
            <?php } ?>
        </div>
        <?php } ?>

    <section class="Extra-Category-Area meta-section">
        <div class="section-title-row"><i class="fa-solid fa-table-list"></i> 분류 정보</div>
        <div class="meta-item-grid">
            <?php if(!empty($view['ca_name'])) { ?><a href="<?php echo $same_category_href; ?>" class="meta-item info-link"><span class="item-label">분류</span><span class="item-value"><?php echo get_text($view['ca_name']); ?></span></a><?php } ?>
            <?php if(!empty($view['x2_ca2'])) { ?><a href="<?php echo $same_ca2_href; ?>" class="meta-item info-link"><span class="item-label">구분</span><span class="item-value"><?php echo get_text($view['x2_ca2']); ?></span></a><?php } ?>
            <?php if(!empty($view['x2_ca3'])) { ?><a href="<?php echo $same_ca3_href; ?>" class="meta-item info-link"><span class="item-label">형태</span><span class="item-value"><?php echo get_text($view['x2_ca3']); ?></span></a><?php } ?>
            <?php if(!empty($view['x2_ca4'])) { ?><span class="meta-item"><span class="item-label">종류</span><span class="item-value"><?php echo get_text($view['x2_ca4']); ?></span></span><?php } ?>
        </div>
    </section>

    <section class="View-Option-Area option-primary-area">
        <div class="section-title-row"><i class="fa-solid fa-circle-info"></i> 핵심 항목</div>
        <div class="option-item-grid">
            <?php if(!empty($view['x2_top']) && $view['x2_top'] == '1') { ?><a href="<?php echo $same_top_href; ?>" class="ca-tag-item option-chip info-link"><i class="fa-solid fa-thumbtack"></i><span class="option-chip-label">우선</span><span class="option-chip-value">TOP</span></a><?php } ?>
            <?php if(!empty($view['x2_label']) && $view['x2_label'] == '1') { ?><a href="<?php echo $same_label_href; ?>" class="ca-tag-item option-chip info-link"><i class="fa-solid fa-star"></i><span class="option-chip-label">라벨</span><span class="option-chip-value">LABEL</span></a><?php } ?>
            <?php if(!empty($view['x2_ok']) && $view['x2_ok'] == '1') { ?><a href="<?php echo $same_ok_href; ?>" class="ca-tag-item option-chip info-link"><i class="fa-solid fa-check"></i><span class="option-chip-label">완성</span><span class="option-chip-value">DONE</span></a><?php } ?>
            <?php if(!empty($view['x2_set']) && $view['x2_set'] == '1') { ?><a href="<?php echo $same_set_href; ?>" class="ca-tag-item option-chip info-link"><i class="fa-solid fa-boxes-stacked"></i><span class="option-chip-label">세트</span><span class="option-chip-value">SET</span></a><?php } ?>
            <?php if(!empty($view['x2_ver'])) { ?><div class="ca-tag-item option-chip theme-chip"><i class="fa-solid fa-code-branch"></i><span class="option-chip-label">테마</span><span class="option-chip-value"><?php echo get_text($view['x2_ver']); ?></span></div><?php } ?>
        </div>
    </section>

    <?php if ($has_content) { ?>
    <div class="View-Content">
        <div class="section-title-row"><i class="fa-solid fa-file-lines"></i> 내용</div>
        <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 } ?>

    <?php if($view['x2_txt']) { ?>
    <div class="Additional-Code-Area">
        <div class="code-header">
            <span class="code-title"><i class="fa-solid fa-code"></i> 추가 내용</span>
            <div class="code-actions">
                <button type="button" class="code-action-btn" id="copyX2TxtBtn"><i class="fa-regular fa-copy"></i> COPY</button>
                <button type="button" class="code-action-btn" id="downloadX2TxtBtn"><i class="fa-solid fa-download"></i> DOWNLOAD</button>
            </div>
        </div>
        <pre class="code-body"><code><?php echo htmlspecialchars($view['x2_txt']); ?></code></pre>
    </div>
    <?php } ?>

    <?php if ($memo_text !== '') { ?>
    <div class="Work-Memo-View-Area <?php echo $memo_clean ? 'is-cleaned' : ''; ?>">
        <div class="work-memo-title"><i class="fa-solid fa-note-sticky"></i> MEMO</div>
        <?php if ($memo_clean) { ?><div class="memo-clean-badge"><i class="fa-solid fa-trash-can"></i> 메모 삭제 상태</div><?php } ?>
        <div class="work-memo-content"><?php echo nl2br(get_text($memo_text)); ?></div>
    </div>
    <?php } ?>

    <?php if (!empty($view['x2_ca3']) && (!empty($recent_ca3_rows) || !empty($prev_ca3_rows))) { ?>
    <section class="View-Option-Area option-secondary-area">
        <?php if (!empty($recent_ca3_rows)) { ?>
        <div class="section-title-row"><i class="fa-solid fa-clock-rotate-left"></i> 최근 "<?php echo get_text($view['x2_ca3']); ?>" 데이터</div>
        <ul class="related-list">
            <?php foreach ($recent_ca3_rows as $row) { ?>
            <li>
                <a href="<?php echo G5_BBS_URL; ?>/board.php?bo_table=<?php echo $bo_table; ?>&wr_id=<?php echo (int)$row['wr_id']; ?>">
                    <span class="related-subject"><?php echo get_text($row['wr_subject']); ?></span>
                    <span class="related-date"><?php echo date('Y-m-d H:i', strtotime($row['wr_datetime'])); ?></span>
                </a>
            </li>
            <?php } ?>
        </ul>
        <?php } ?>

        <?php if (!empty($prev_ca3_rows)) { ?>
        <div class="section-title-row related-prev-title"><i class="fa-solid fa-clock"></i> 이전 "<?php echo get_text($view['x2_ca3']); ?>" 데이터</div>
        <ul class="related-list">
            <?php foreach ($prev_ca3_rows as $row) { ?>
            <li>
                <a href="<?php echo G5_BBS_URL; ?>/board.php?bo_table=<?php echo $bo_table; ?>&wr_id=<?php echo (int)$row['wr_id']; ?>">
                    <span class="related-subject"><?php echo get_text($row['wr_subject']); ?></span>
                    <span class="related-date"><?php echo date('Y-m-d H:i', strtotime($row['wr_datetime'])); ?></span>
                </a>
            </li>
            <?php } ?>
        </ul>
        <?php } ?>
    </section>
    <?php } ?>

    <?php if (!empty($tag_items)) { ?>
    <div class="View-Tag-Area">
        <?php foreach ($tag_items as $tag) { ?>
            <a href="<?php echo G5_BBS_URL; ?>/board.php?bo_table=<?php echo $bo_table; ?>&sfl=wr_1&stx=<?php echo urlencode($tag); ?>" class="tag-item"># <?php echo get_text($tag); ?></a>
        <?php } ?>
    </div>
    <?php } ?>

    <nav class="Post-Navigation">
        <?php if ($prev_href) { ?>
            <a href="<?php echo $prev_href; ?>" class="prev-link">
                <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>
                <div class="nav-meta-wrap"><?php echo $render_nav_meta($prev_meta); ?></div>
            </a>
        <?php } else { ?>
            <div class="nav-empty prev-empty">FIRST POST</div>
        <?php } ?>

        <?php if ($next_href) { ?>
            <a href="<?php echo $next_href; ?>" class="next-link">
                <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>
                <div class="nav-meta-wrap"><?php echo $render_nav_meta($next_meta); ?></div>
            </a>
        <?php } else { ?>
            <div class="nav-empty next-empty">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; ?>';"><i class="fa-solid fa-trash-can"></i> DELETE</button><?php } ?>
            <?php if ($copy_href) { ?><button onclick="window.open('<?php echo $copy_href; ?>', 'copy_win', 'width=600,height=500');"><i class="fa-solid fa-copy"></i> COPY</button><?php } ?>
            <?php if ($move_href) { ?><button onclick="window.open('<?php echo $move_href; ?>', 'move_win', 'width=600,height=500');"><i class="fa-solid fa-truck-moving"></i> MOVE</button><?php } ?>
        </div>
        <button onclick="location.href='<?php echo $list_href; ?>'" class="List-Btn-Footer"><i class="fa-solid fa-list-ul"></i> BACK TO LIST</button>
    </footer>
</article>

<script src="<?php echo G5_JS_URL; ?>/viewimageresize.js"></script>
<?php include_once("{$board_skin_path}/view/view.script.php"); ?>