GNU/skin/board/outline_bybit/write.skin.php
<?php
if (!defined('_GNUBOARD_')) exit;

include_once("{$board_skin_path}/db_update.php");
add_stylesheet('<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css">', 0);

// 5. 마진 및 버전 기본값 설정 로직
if (!$write['x2_ver']) {
    // 새 글 작성 시: 가장 최근 게시물의 x2_ver 값을 가져옴
    $row_ver = sql_fetch(" select x2_ver, x2_account from {$write_table} order by wr_id desc limit 1 ");
    // 이전 값이 있으면 그걸 쓰고, 없으면 빈 값
    $default_ver = $row_ver['x2_ver'] ? $row_ver['x2_ver'] : "";
    $default_account = $row_ver['x2_account'] ? $row_ver['x2_account'] : "";
} else {
    // 수정 모드이거나 값이 있을 때
    $default_ver = $write['x2_ver'];
    $default_account = $write['x2_account'];
}

$file_count = (isset($board['bo_upload_count']) && $board['bo_upload_count']) ? $board['bo_upload_count'] : 0;
?>

<style>
    @import url('https://fonts.googleapis.com/css2?family=Orbitron:wght@400;700;900&family=JetBrains+Mono:wght@400;700&display=swap');

    :root {
        --neon-cyan: #00d4ff; --neon-pink: #ff2d55; --bg-black: #0d1117;
        --panel-bg: #161b22; --input-bg: #0d1117; --border-color: #30363d;
        --text-dim: #8b949e; color-scheme: dark;
    }

    .toggle-switch { position: relative; display: inline-block; width: 44px; height: 20px; vertical-align: middle; margin: 0 5px; }
    .toggle-switch input { opacity: 0; width: 0; height: 0; }
    .slider { position: absolute; cursor: pointer; top: 0; left: 0; right: 0; bottom: 0; background-color: var(--input-bg); border: 1px solid var(--border-color); transition: .3s; border-radius: 20px; }
    .slider:before { position: absolute; content: ""; height: 12px; width: 12px; left: 3px; bottom: 3px; background-color: var(--text-dim); transition: .3s; border-radius: 50%; }
    input:checked + .slider { background-color: rgba(255, 45, 85, 0.2); border-color: var(--neon-pink); }
    input:checked + .slider:before { transform: translateX(24px); background-color: var(--neon-pink); box-shadow: 0 0 8px var(--neon-pink); }
    .toggle-label { font-family: 'Orbitron'; font-size: 0.6rem; color: var(--text-dim); letter-spacing: 1px; }

    #CYBER_LOADER { position: fixed; top: 0; left: 0; width: 100%; height: 100%; background: var(--bg-black); z-index: 10000; display: flex; flex-direction: column; align-items: center; justify-content: center; transition: opacity 0.5s ease; }
    .load-text { font-family: 'Orbitron'; color: var(--neon-cyan); letter-spacing: 3px; margin-bottom: 20px; font-size: 0.9rem; }
    .load-bar-wrap { width: 200px; height: 1px; background: rgba(255,255,255,0.1); position: relative; }
    .load-bar { width: 0%; height: 100%; background: var(--neon-cyan); animation: loadingProgress 1.5s forwards; }
    @keyframes loadingProgress { to { width: 100%; } }

    #WRITE_WRAP { position: relative; min-height: 100vh; background: var(--bg-black); padding: 40px 0; font-family: 'Pretendard', sans-serif; color: #c9d1d9; overflow-x: hidden; }
    #space-canvas { position: fixed; top: 0; left: 0; width: 100%; height: 100%; pointer-events: none; z-index: 1; opacity: 0.2; }
    #WRITE { position: relative; z-index: 2; width: calc(100% - 100px); margin: 0 50px; max-width: none !important; animation: fadeIn 0.6s ease-out; }
    @keyframes fadeIn { from { opacity: 0; transform: translateY(10px); } to { opacity: 1; transform: translateY(0); } }

    #fwrite { background: var(--panel-bg); border: 1px solid var(--border-color); border-radius: 8px; box-shadow: 0 8px 24px rgba(0,0,0,0.5); overflow: hidden; position: relative; }
    #fwrite::before, #fwrite::after { content: ''; position: absolute; width: 30px; height: 30px; border: 2px solid var(--neon-cyan); z-index: 10; pointer-events: none; }
    #fwrite::before { top: -1px; left: -1px; border-right: 0; border-bottom: 0; border-radius: 8px 0 0 0; }
    #fwrite::after { bottom: -1px; right: -1px; border-left: 0; border-top: 0; border-radius: 0 0 8px 0; }

    .form-header { padding: 20px 30px; border-bottom: 1px solid var(--border-color); display: flex; justify-content: space-between; align-items: center; background: linear-gradient(90deg, rgba(0, 212, 255, 0.05), transparent); }
    .form-header h2 { margin:0; font-family: 'Orbitron'; font-size: 1rem; color: var(--neon-cyan); font-weight: 700; letter-spacing: 1px; }

    .write-table { width: 100%; border-collapse: collapse; }
    .write-table tr { border-bottom: 1px solid var(--border-color); }
    .td-label { width: 160px; padding: 15px 25px; color: var(--text-dim); font-size: 0.7rem; font-family: 'Orbitron'; font-weight: 600; background: rgba(0, 0, 0, 0.15); border-right: 1px solid var(--border-color); text-transform: uppercase; }
    .td-label i { margin-right: 8px; color: var(--neon-cyan); font-size: 0.8rem; }

    input[type="text"], input[type="date"], input[type="time"], select, textarea { background: var(--input-bg) !important; border: 1px solid var(--border-color) !important; color: #c9d1d9 !important; padding: 8px 12px !important; border-radius: 4px !important; font-size: 0.8rem; transition: 0.2s; font-family: 'JetBrains Mono', monospace; }
    select[name="x2_coin"] { width: 200px !important; }
    
    /* [버튼 스타일 & 호버 효과 수정] */
    .btn-action { 
        border: 1px solid var(--border-color); background: transparent; color: var(--text-dim); padding: 7px 15px; border-radius: 4px; font-family: 'Orbitron'; font-weight: 600; cursor: pointer; font-size: 0.65rem; 
        transition: all 0.3s cubic-bezier(0.25, 0.8, 0.25, 1); /* 부드러운 움직임 */
    }
    
    /* 상단 ABORT, SAVE_DATA, ADD_SLOT 버튼 호버 */
    .btn-action:hover {
        background: rgba(0, 212, 255, 0.15);
        border-color: var(--neon-cyan);
        color: #fff;
        box-shadow: 0 0 15px rgba(0, 212, 255, 0.4);
        transform: translateY(-2px);
    }

    .btn-save-main { 
        background: var(--neon-cyan); color: #000; padding: 15px 60px; font-size: 0.9rem; font-weight: 800; margin-top: 30px; border: none; border-radius: 6px; cursor: pointer; font-family: 'Orbitron'; letter-spacing: 2px; 
        transition: all 0.3s cubic-bezier(0.25, 0.8, 0.25, 1); 
    }

    /* 하단 메인 저장 버튼 호버: 핑크빛 흥분 모드 */
    .btn-save-main:hover {
        background: var(--neon-pink);
        color: #fff;
        box-shadow: 0 0 20px var(--neon-pink);
        transform: translateY(-3px) scale(1.02);
    }

    /* [비력(Disabled) 버튼 효과] */
    button:disabled, .btn-disabled {
        cursor: not-allowed !important;
        opacity: 0.4 !important;
        filter: grayscale(100%) !important;
        background: #222 !important;
        color: #555 !important;
        border: 1px solid #333 !important;
        transform: none !important;
        box-shadow: none !important;
    }
    
    /* 비력 버튼은 마우스를 올려도 반응 없음 */
    button:disabled:hover, .btn-disabled:hover {
        background: #222 !important;
        color: #555 !important;
        border-color: #333 !important;
        transform: none !important;
        box-shadow: none !important;
    }

    .tag-input-wrap { margin-top: 10px; display: flex; align-items: center; gap: 10px; background: rgba(0,0,0,0.2); padding: 6px 12px; border: 1px solid var(--border-color); border-radius: 4px; border-left: 3px solid var(--neon-pink); }
    .file-row { display: none; align-items: center; gap: 10px; margin-bottom: 8px; padding: 10px; background: rgba(255,255,255,0.02); border: 1px solid var(--border-color); border-radius: 4px; border-left: 2px solid var(--neon-cyan); }
    .file-row.active { display: flex; }
    #Editor-Area { border-top: 1px solid var(--border-color); padding: 20px; background: rgba(0,0,0,0.1); }
</style>

<div id="CYBER_LOADER">
    <div class="load-text">READY_SYSTEM</div>
    <div class="load-bar-wrap"><div class="load-bar"></div></div>
</div>

<div id="WRITE_WRAP">
    <canvas id="space-canvas"></canvas>
    <article id="WRITE">
        <form name="fwrite" id="fwrite" action="<?php echo $action_url; ?>" onsubmit="return fwrite_submit(this);" method="post" enctype="multipart/form-data" autocomplete="off">
            <input type="hidden" name="w" value="<?php echo $w; ?>">
            <input type="hidden" name="bo_table" value="<?php echo $bo_table; ?>">
            <input type="hidden" name="wr_id" value="<?php echo $wr_id; ?>">
            <input type="hidden" name="sca" value="<?php echo $sca; ?>">
            <input type="hidden" name="uid" value="<?php echo get_uniqid(); ?>">

            <div class="form-header">
                <h2><i class="fa-solid fa-database"></i> DATA_INPUT_MODULE</h2>
                <div style="display:flex; gap:8px;">
                    <button type="button" class="btn-action" onclick="window.history.back();">ABORT</button>
                    <button type="submit" class="btn-action">SAVE_DATA</button>
                </div>
            </div>

            <table class="write-table">
                <tr>
                    <td class="td-label"><i class="fa-solid fa-sliders"></i> 옵션 세팅</td>
                    <td style="padding:15px 30px;">
                        <div style="display:flex; flex-wrap:wrap; gap:10px; align-items:center;">
                            <?php if ($is_category) { ?>
                            <span style="color:var(--neon-pink); font-family:'Orbitron'; font-size:0.6rem; font-weight:bold;">분류</span>
                            <select name="ca_name" required><option value="">CATEGORY</option><?php echo $category_option; ?></select>
                            <?php } ?>

                            <span style="color:var(--neon-pink); font-family:'Orbitron'; font-size:0.6rem; font-weight:bold;">타입</span>
                            <select name="x2_ca2">
                                <option value=''>SELECT</option>
                                <?php
                                $bo_1_opts = explode("|", $board['bo_1']);
                                foreach($bo_1_opts as $val) {
                                    $val = trim($val); if(!$val) continue;
                                    $selected = ($write['x2_ca2'] == $val) ? "selected" : "";
                                    echo "<option value='{$val}' {$selected}>{$val}</option>";
                                }
                                ?>
                            </select>

                            <span style="color:var(--neon-pink); font-family:'Orbitron'; font-size:0.6rem; font-weight:bold;">코인</span>
                            <input type="text" name="x2_coin" value="<?php echo $write['x2_coin']; ?>" required
                                           style="width:180px; font-size:0.7rem; font-weight:700; text-transform:uppercase;"
                                           placeholder="예: BTCUSDT"
                                           oninput="this.value=this.value.toUpperCase().replace(/\s+/g,'');">

                            <span style="color:var(--neon-pink); font-family:'Orbitron'; font-size:0.6rem; font-weight:bold;">포지션</span>
                            <select name="x2_ca4" required>
                                <option value=''>SELECT</option>
                                <?php
                                $bo_3_opts = explode("|", $board['bo_3']);
                                foreach($bo_3_opts as $val) {
                                    $val = trim($val); if (!$val) continue;
                                    $selected = ($write['x2_ca4'] == $val) ? "selected" : "";
                                    echo "<option value='{$val}' {$selected}>{$val}</option>";
                                }
                                ?>
                            </select>

                            <span style="color:var(--neon-pink); font-family:'Orbitron'; font-size:0.6rem; font-weight:bold;">가동</span>
                            <label class="toggle-switch">
                                <input type="checkbox" name="x2_ca3" value="1" <?php echo ($write['x2_ca3'] == "1") ? "checked" : ""; ?>>
                                <span class="slider"></span>
                            </label>
                            <span class="toggle-label">OFF/ON</span>

                            <span style="color:var(--neon-pink); font-family:'Orbitron'; font-size:0.6rem; font-weight:bold; margin-left:10px;">마진</span>
                            <input type="text" name="x2_margin" value="<?php echo $write['x2_margin']; ?>" style="width:60px; text-align:center; font-weight:700;" placeholder="배율">
                            
                            <span style="color:var(--neon-pink); font-family:'Orbitron'; font-size:0.6rem; font-weight:bold; margin-left:10px;">계정</span>
                            <select name="x2_account" style="width:110px;">
                                <option value="">ACCOUNT</option>
                                <?php
                                // 계정#01 ~ 계정#20 생성 루프
                                for($j=1; $j<=20; $j++) {
                                    $acc_val = "계정#".sprintf("%02d", $j);
                                    $acc_sel = ($write['x2_account'] == $acc_val || (!$write['x2_account'] && $default_account == $acc_val)) ? "selected" : "";
                                    echo "<option value='{$acc_val}' {$acc_sel}>{$acc_val}</option>";
                                }
                                ?>
                            </select>

                            <span style="color:var(--neon-pink); font-family:'Orbitron'; font-size:0.6rem; font-weight:bold; margin-left:10px;">버전</span>
                            <input type="text" name="x2_ver" value="<?php echo $default_ver; ?>" style="width:90px; text-align:center; font-weight:700;" placeholder="버전">
                        </div>
                    </td>
                </tr>

                <tr>
                    <td class="td-label" style="border-bottom:none;"><i class="fa-solid fa-pen"></i> 아웃라인 설정</td>
                    <td style="padding:15px 30px; border-bottom: none;">
                        <div style="display:flex; align-items:center; gap:20px; flex-wrap:wrap;">
                            <div>
                                <span style="color:var(--neon-pink); font-family:'Orbitron'; font-size:0.6rem; font-weight:bold;">감시금</span>
                                <input type="text" name="wr_subject" value="<?php echo $subject; ?>" required style="font-size:0.7rem; font-weight:600; width:120px;" placeholder="감시 금액">
                            </div>

                            <div>
                                <span style="color:var(--neon-pink); font-family:'Orbitron'; font-size:0.6rem; font-weight:bold;">수량</span>
                                <input type="text" name="x2_qty" value="<?php echo $write['x2_qty']; ?>" style="font-size:0.7rem; font-weight:600; width:80px;" placeholder="QTY">
                            </div>
                            
                            <div>
                                <span style="color:var(--neon-pink); font-family:'Orbitron'; font-size:0.6rem; font-weight:bold;">목표선택</span>
                                <select name="x2_target_type" id="x2_target_type" onchange="toggleTargetInput(this.value)" style="width:100px;">
                                    <option value="amount" <?php echo ($write['x2_target_type'] != 'rate') ? 'selected' : ''; ?>>목표금</option>
                                    <option value="rate" <?php echo ($write['x2_target_type'] == 'rate') ? 'selected' : ''; ?>>목표율</option>
                                </select>
                            </div>

                            <div id="target_amount_wrap">
                                <span style="color:var(--neon-cyan); font-family:'Orbitron'; font-size:0.6rem; font-weight:bold;">목표금</span>
                                <input type="text" name="x2_target" value="<?php echo $write['x2_target']; ?>" style="font-size:0.7rem; font-weight:600; width:120px;" placeholder="수익 금액">
                            </div>

                            <div id="target_rate_wrap" style="display:none;">
                                <span style="color:var(--neon-cyan); font-family:'Orbitron'; font-size:0.6rem; font-weight:bold;">목표율(%)</span>
                                <input type="text" name="x2_rate" value="<?php echo $write['x2_rate']; ?>" style="font-size:0.7rem; font-weight:600; width:120px;" placeholder="목표 수익률">
                            </div>
                        </div>
                        <div class="tag-input-wrap">
                            <span style="color:var(--neon-pink); font-size:0.7rem; font-weight:bold;"># 태그</span>
                            <input type="text" name="x2_tag" value="<?php echo $write['x2_tag']; ?>" style="flex:1; border:none !important; background:transparent !important; font-size:0.75rem;">
                        </div>
                    </td>
                </tr>
            </table>

            <div id="Editor-Area" style="<?php echo $editor_display; ?>">
                <div style="margin-bottom:20px;"><?php echo $editor_html; ?></div>
                <div style="padding-top:20px; border-top:1px solid var(--border-color);">
                    <h3 style="font-family:'Orbitron'; font-size:0.75rem; color:var(--text-dim); margin-bottom:12px;"><i class="fa-solid fa-file-export"></i> PAYLOAD_FILES</h3>
                    <div id="variableFiles">
                        <?php for ($i=0; $is_file && $i<$file_count; $i++) { 
                            $is_active = ($i == 0 || (isset($file[$i]['file']) && $file[$i]['file'])) ? "active" : "";
                        ?>
                        <div class="file-row <?php echo $is_active; ?>" id="file_row_<?php echo $i; ?>">
                            <label for="bf_file_<?php echo $i; ?>" style="cursor:pointer; color:var(--neon-cyan); font-size:0.65rem;">[SLOT_0<?php echo $i+1; ?>]</label>
                            <input type="file" name="bf_file[<?php echo $i; ?>]" id="bf_file_<?php echo $i; ?>" style="display:none;" onchange="updateFileName(this, <?php echo $i; ?>)">
                            <span id="file_name_<?php echo $i; ?>" style="color:#6e7681; font-size:0.7rem; flex:1; margin-left:10px;">
                                <?php if($w == 'u' && isset($file[$i]['file']) && $file[$i]['file']) { echo $file[$i]['source']; } else { echo "READY_TO_ATTACH"; } ?>
                            </span>
                        </div>
                        <?php } ?>
                    </div>
                    <button type="button" class="btn-action" onclick="file_add();">+ ADD_SLOT</button>
                </div>
            </div>
            <div style="padding:30px 0; text-align:center;"><button type="submit" class="btn-save-main">COMMIT_TO_DATABASE</button></div>
        </form>
    </article>
</div>

<script>
// 5. 목표선택에 따른 폼 제어 로직
function toggleTargetInput(type) {
    const amountWrap = document.getElementById('target_amount_wrap');
    const rateWrap = document.getElementById('target_rate_wrap');
    
    if (type === 'amount') {
        amountWrap.style.display = 'block';
        rateWrap.style.display = 'none';
    } else {
        amountWrap.style.display = 'none';
        rateWrap.style.display = 'block';
    }
}

window.addEventListener('load', function() {
    // 초기 로드시 설정값에 따른 폼 노출 결정
    const initialType = document.getElementById('x2_target_type').value;
    toggleTargetInput(initialType);

    setTimeout(() => { document.getElementById('CYBER_LOADER').style.opacity = '0'; setTimeout(() => document.getElementById('CYBER_LOADER').style.visibility = 'hidden', 500); }, 800);
});

const canvas = document.getElementById('space-canvas'); const ctx = canvas.getContext('2d'); let stars = [];
function initSpace() { canvas.width = window.innerWidth; canvas.height = window.innerHeight; stars = []; for(let i=0; i<80; i++) stars.push({ x: Math.random() * canvas.width, y: Math.random() * canvas.height, size: Math.random() * 1.1, speed: Math.random() * 0.15 }); }
function animateSpace() { ctx.clearRect(0, 0, canvas.width, canvas.height); ctx.fillStyle = "rgba(201, 209, 217, 0.3)"; stars.forEach(star => { ctx.beginPath(); ctx.arc(star.x, star.y, star.size, 0, Math.PI*2); ctx.fill(); star.y += star.speed; if(star.y > canvas.height) star.y = 0; }); requestAnimationFrame(animateSpace); }
initSpace(); animateSpace(); window.addEventListener('resize', initSpace);

function updateFileName(input, index) { document.getElementById('file_name_' + index).innerText = input.files[0] ? input.files[0].name : "READY_TO_ATTACH"; document.getElementById('file_name_' + index).style.color = "var(--neon-cyan)"; }
function file_add() { var rows = document.querySelectorAll('.file-row:not(.active)'); if (rows.length > 0) rows[0].classList.add('active'); }
function fwrite_submit(f) { <?php echo $editor_js; ?> return true; }
</script>