<?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; ?>&sfl=x2_ca2&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; ?>&sfl=x2_ca3&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.'&stx='.urlencode($tag_val).'&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>