<?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);
include_once(G5_LIB_PATH.'/thumbnail.lib.php');
// 스타일시트 유지
add_stylesheet('<link rel="stylesheet" href="'.$board_skin_url.'/style.view.css">', 0);
$view_content = get_view_thumbnail($view['content']);
$x2_txt_raw = isset($view['x2_txt']) ? $view['x2_txt'] : '';
$code_filename = $board['bo_subject'].'-'.date("Y-m-d", strtotime($view['wr_datetime'])).'.txt';
$tag_items = array_filter(array_map('trim', explode(',', isset($view['wr_1']) ? $view['wr_1'] : '')));
$show_line_time_only = isset($view['x2_ds']) && $view['x2_ds'] === '1';
$explode_pipe_values = function($raw_text) {
$result = array();
if (trim($raw_text) === '') return $result;
$tokens = explode('|', $raw_text);
foreach ($tokens as $token) {
$token = trim($token);
if ($token === '') continue;
$result[] = $token;
}
return $result;
};
$style_values = $explode_pipe_values(isset($view['x2_style']) ? $view['x2_style'] : '');
$shadow_values = $explode_pipe_values(isset($view['x2_shadow']) ? $view['x2_shadow'] : '');
$line_items = array();
if (!empty($view['x2_line'])) {
$line_tokens = explode('@', $view['x2_line']);
foreach ($line_tokens as $line_token) {
if (trim($line_token) === '') continue;
$line_date = date('Y-m-d');
$line_time = date('H:i:s');
$line_content = '';
$line_title = '';
if (strpos($line_token, '#') !== false) {
$line_parts = explode('#', $line_token, 4);
$line_date = isset($line_parts[0]) && trim($line_parts[0]) !== '' ? trim($line_parts[0]) : date('Y-m-d');
$line_content = isset($line_parts[1]) ? trim($line_parts[1]) : '';
$line_title = isset($line_parts[2]) ? trim($line_parts[2]) : '';
$line_time = isset($line_parts[3]) && trim($line_parts[3]) !== '' ? trim($line_parts[3]) : date('H:i:s');
} else {
$line_parts = explode('^', $line_token, 2);
$line_content = isset($line_parts[0]) ? trim($line_parts[0]) : '';
if (isset($line_parts[1]) && trim($line_parts[1]) !== '') {
$legacy_datetime = trim($line_parts[1]);
$line_date = preg_match('/^\d{4}-\d{2}-\d{2}/', $legacy_datetime) ? substr($legacy_datetime, 0, 10) : date('Y-m-d');
$line_time = preg_match('/\d{2}:\d{2}:\d{2}$/', $legacy_datetime) ? substr($legacy_datetime, 11, 8) : date('H:i:s');
}
}
if ($line_content === '' && $line_title === '') continue;
$line_items[] = array(
'date' => $line_date,
'time' => $line_time,
'content' => $line_content,
'title' => $line_title
);
}
}
$memo_text = isset($view['x2_memo']) ? trim($view['x2_memo']) : '';
$memo_clean = isset($view['x2_memo_clean']) && $view['x2_memo_clean'] === '1';
$has_meta_section = (!empty($view['x2_ca4']) || !empty($view['x2_top']) || !empty($view['x2_label']) || !empty($view['x2_ca2']) || !empty($view['x2_ca3']));
?>
<article id="VIEW">
<canvas id="starCanvas"></canvas>
<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> 목록</button>
<?php if ($update_href) { ?><button onclick="location.href='<?php echo $update_href; ?>'"><i class="fa-solid fa-pen-to-square"></i> 수정</button><?php } ?>
<?php if ($write_href) { ?><button onclick="location.href='<?php echo $write_href; ?>'" class="Write-Btn"><i class="fa-solid fa-pen"></i> 루트 작성</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>
<?php if (!empty($view['x2_project'])) { ?>
<div class="wr-project">PROJECT: <?php echo get_text($view['x2_project']); ?></div>
<?php } ?>
</header>
<?php if (!empty($line_items)) { ?>
<div class="Work-Line-View-Area">
<div class="work-line-title"><i class="fa-solid fa-list-check"></i> ROUTINE LINE</div>
<ul class="work-line-list">
<?php foreach ($line_items as $line_item) { ?>
<li class="work-line-item">
<div class="work-line-top-row">
<div class="work-line-subject"><i class="fa-solid fa-sort"></i> <?php echo trim($line_item['title']) !== '' ? get_text($line_item['title']) : '제목 없음'; ?></div>
<div class="work-line-time"><i class="fa-regular fa-clock"></i> <?php echo get_text($show_line_time_only ? $line_item['time'] : ($line_item['date'].' '.$line_item['time'])); ?></div>
</div>
<div class="work-line-content-wrap">
<div class="work-line-content"><?php echo nl2br(get_text($line_item['content'])); ?></div>
</div>
</li>
<?php } ?>
</ul>
</div>
<?php } ?>
<div id="bo_v_atc" class="View-Content">
<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>
<?php if ($has_meta_section) { ?>
<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($view['x2_ca4']) { ?>
<a href="<?php echo G5_BBS_URL; ?>/board.php?bo_table=<?php echo $bo_table; ?>&s_ca4=<?php echo urlencode($view['x2_ca4']); ?>" class="meta-item ca-link status-tag">
<span class="item-label">상태</span>
<span class="item-value"><?php echo get_text($view['x2_ca4']); ?></span>
</a>
<?php } ?>
<?php if($view['x2_top']) { ?>
<span class="meta-item top-badge">
<span class="item-label">우선</span>
<span class="item-value"><i class="fa-solid fa-thumbtack"></i> TOP</span>
</span>
<?php } ?>
<?php if($view['x2_label']) { ?>
<a href="<?php echo G5_BBS_URL; ?>/board.php?bo_table=<?php echo $bo_table; ?>&is_label=y" class="meta-item ca-link label-badge" title="LABEL">
<span class="item-label">라벨</span>
<span class="item-value"><i class="fa-solid fa-star"></i> LABEL</span>
</a>
<?php } ?>
<?php if($view['x2_ca2']) { ?>
<a href="<?php echo G5_BBS_URL; ?>/board.php?bo_table=<?php echo $bo_table; ?>&s_ca2=<?php echo urlencode($view['x2_ca2']); ?>" class="meta-item ca-link">
<span class="item-label">종류</span>
<span class="item-value"><?php echo get_text($view['x2_ca2']); ?></span>
</a>
<?php } ?>
<?php if($view['x2_ca3']) { ?>
<a href="<?php echo G5_BBS_URL; ?>/board.php?bo_table=<?php echo $bo_table; ?>&s_ca2=<?php echo urlencode($view['x2_ca2']); ?>&s_ca3=<?php echo urlencode($view['x2_ca3']); ?>" class="meta-item ca-link">
<span class="item-label">형태</span>
<span class="item-value"><?php echo get_text($view['x2_ca3']); ?></span>
</a>
<?php } ?>
</div>
</section>
<?php } ?>
<?php if (!empty($style_values) || !empty($shadow_values)) { ?>
<section class="View-Option-Area option-primary-area">
<div class="section-title-row"><i class="fa-solid fa-bullseye"></i> 포인트 항목</div>
<div class="point-item-grid">
<?php if (!empty($style_values)) { ?>
<?php foreach ($style_values as $style_value) { ?>
<a href="<?php echo G5_BBS_URL; ?>/board.php?bo_table=<?php echo $bo_table; ?>&stx=<?php echo urlencode($style_value); ?>" class="point-item-card ca-link">
<i class="fa-solid fa-palette point-item-icon"></i>
<span class="point-item-label">스타일</span>
<span class="point-item-value"><?php echo get_text($style_value); ?></span>
</a>
<?php } ?>
<?php } ?>
<?php if (!empty($shadow_values)) { ?>
<?php foreach ($shadow_values as $shadow_value) { ?>
<a href="<?php echo G5_BBS_URL; ?>/board.php?bo_table=<?php echo $bo_table; ?>&stx=<?php echo urlencode($shadow_value); ?>" class="point-item-card ca-link">
<i class="fa-solid fa-moon point-item-icon"></i>
<span class="point-item-label">그림자</span>
<span class="point-item-value"><?php echo get_text($shadow_value); ?></span>
</a>
<?php } ?>
<?php } ?>
</div>
</section>
<?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> ADDITIONAL SOURCE CODE</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 } ?>
<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>
<span class="data-meta">LINK <i class="fa-solid fa-arrow-up-right-from-square link-arrow-icon"></i></span>
</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-size"><?php echo $view['file'][$i]['size']; ?></span>
<span><i class="fa-solid fa-eye meta-eye-icon"></i> <?php echo $view['file'][$i]['download']; ?></span>
</div>
</a>
<?php
}
}
}
?>
</div>
<?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 } ?>
<div class="View-Tag-Area Ver">
버전: <?php echo get_text($view['x2_ver']); ?>
</div>
<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>
</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>
</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"); ?>