<?php
$sub_menu = '650110';
include_once('./_common.php');
auth_check($auth[$sub_menu], 'r');

define('SPLASH_TABLE', 'app_splash_config');

$g5['title'] = '앱 스플래시 화면 관리';
include_once(G5_ADMIN_PATH . '/admin.head.php');
include_once('./_vpn_help_card.php');
vpn_help_card(array(
    'title'     => '앱 스플래시 화면 관리',
    'purpose'   => '앱 실행 시 LoginActivity 진입 전 표시되는 스플래시 화면의 콘텐츠와 방식을 설정합니다.',
    'functions' => array('기본 애니메이션: 로고+슬로건 scale·fade (내장 리소스)', '이미지 광고: URL 이미지 전체화면 표시', 'WebView 광고: 이벤트·프로모션 페이지 WebView 표시', '표시 시간(ms) 및 건너뛰기 버튼 ON/OFF 설정', '이력 관리 — 언제든지 다른 설정으로 전환 가능'),
    'results'   => array('앱 실행 후 스플래시가 설정 시간만큼 표시된 뒤 메인 화면으로 자동 전환', '서버 응답 실패 시 기본 애니메이션(로고+슬로건)으로 폴백'),
    'target'    => '앱을 실행하는 모든 사용자 (매 실행마다 노출)',
    'warnings'  => array('이미지 URL은 HTTPS 권장 — HTTP는 앱 보안 정책에 따라 차단 가능', 'is_active=1 레코드 없으면 기본 애니메이션 자동 적용', 'WebView 광고는 모바일 뷰포트 최적화 URL 권장'),
));


// 현재 활성 설정
$active = sql_fetch("SELECT * FROM " . SPLASH_TABLE . " WHERE is_active=1 ORDER BY updated_at DESC LIMIT 1", false);

// 전체 목록
$list_res = sql_query("SELECT * FROM " . SPLASH_TABLE . " ORDER BY id DESC LIMIT 50", false);
$list = array();
while ($r = sql_fetch_array($list_res)) { $list[] = $r; }

function esc($s) { return htmlspecialchars((string)$s, ENT_QUOTES, 'UTF-8'); }
function get_admin_token_input() {
    return function_exists('get_admin_token') ? '<input type="hidden" name="token" value="'.get_admin_token().'">' : '';
}
function type_label($type) {
    $map = array('default'=>'기본 애니메이션','image'=>'이미지 광고','webview'=>'이벤트/광고 페이지');
    return isset($map[$type]) ? $map[$type] : $type;
}
function type_badge($type) {
    $colors = array('default'=>'#1a7f37','image'=>'#1a73e8','webview'=>'#b45309');
    $c = isset($colors[$type]) ? $colors[$type] : '#888';
    return '<span style="background:'.$c.';color:#fff;font-size:11px;padding:2px 8px;border-radius:3px">'.type_label($type).'</span>';
}
?>
<style>
.sp-section { margin-bottom:28px; }
.sp-section > h3 { font-size:15px;font-weight:bold;border-left:4px solid #1a73e8;padding-left:9px;margin-bottom:12px;line-height:1.4; }
.sp-hint { font-size:11px;color:#888;margin-left:6px; }
.sp-url-row { display:none; }
.btn-act-on  { background:#1a7f37!important;border-color:#1a7f37!important;color:#fff!important; }
.btn-act-off { background:#777!important;border-color:#777!important;color:#fff!important; }
.btn-act-del { background:#c0392b!important;border-color:#c0392b!important;color:#fff!important; }
</style>

<!-- ── 현재 적용 중인 설정 ── -->
<div class="sp-section">
  <h3>현재 적용 중인 스플래시</h3>
  <?php if ($active && !empty($active['id'])): ?>
  <div class="tbl_frm01 tbl_wrap">
    <table><colgroup><col style="width:150px"><col></colgroup><tbody>
      <tr><th>타입</th><td><?= type_badge($active['type']) ?></td></tr>
      <?php if ($active['url']): ?>
      <tr><th>URL</th><td><a href="<?= esc($active['url']) ?>" target="_blank"><?= esc($active['url']) ?></a></td></tr>
      <?php endif; ?>
      <tr><th>표시 시간</th><td><?= (int)$active['duration_ms'] ?> ms (<?= round($active['duration_ms']/1000,1) ?>초)</td></tr>
      <tr><th>건너뛰기 버튼</th><td><?= $active['skippable'] ? '✅ 표시' : '표시 안 함' ?></td></tr>
      <?php if ($active['memo']): ?><tr><th>메모</th><td><?= esc($active['memo']) ?></td></tr><?php endif; ?>
      <tr><th>최종 수정</th><td><?= esc($active['updated_at']) ?> <?= esc($active['updated_by'] ? '('.$active['updated_by'].')' : '') ?></td></tr>
    </tbody></table>
  </div>
  <?php else: ?>
  <p style="color:#888;font-size:13px">현재 활성화된 설정이 없습니다. 아래에서 등록 후 활성화하세요.</p>
  <?php endif; ?>
</div>

<!-- ── 새 설정 등록 ── -->
<div class="sp-section">
  <h3>새 설정 등록</h3>
  <form method="post" action="./splash_config_update.php">
    <?= get_admin_token_input() ?>
    <div class="tbl_frm01 tbl_wrap">
      <table><colgroup><col class="grid_4"><col></colgroup><tbody>

        <tr>
          <th>스플래시 타입 <span class="req">*</span></th>
          <td>
            <select name="type" id="sel_type" class="frm_input" onchange="onTypeChange(this.value)" style="width:200px">
              <option value="default">기본 애니메이션 (로고+슬로건)</option>
              <option value="image">이미지 광고</option>
              <option value="webview">이벤트/광고 페이지 (WebView)</option>
            </select>
          </td>
        </tr>

        <tr id="tr_url" class="sp-url-row">
          <th><label for="inp_url">URL <span class="req">*</span></label></th>
          <td>
            <input type="url" name="url" id="inp_url" class="frm_input" style="width:460px"
                   placeholder="https://">
            <p id="url_hint_image" style="display:none;font-size:11px;color:#888;margin-top:4px">
              JPG · PNG · WebP 이미지 URL. 앱이 직접 다운로드하므로 HTTPS 권장.
            </p>
            <p id="url_hint_webview" style="display:none;font-size:11px;color:#888;margin-top:4px">
              광고·이벤트 페이지 URL. 앱 내 WebView로 표시됩니다.
            </p>
          </td>
        </tr>

        <tr>
          <th><label for="inp_dur">표시 시간 <span class="req">*</span></label></th>
          <td>
            <input type="number" name="duration_ms" id="inp_dur" class="frm_input"
                   min="0" max="30000" value="2000" style="width:120px"> ms
            <span class="sp-hint">앱이 최소 이 시간만큼 스플래시를 표시합니다 (1000 = 1초)</span>
          </td>
        </tr>

        <tr>
          <th>건너뛰기 버튼</th>
          <td>
            <label>
              <input type="checkbox" name="skippable" value="1" id="chk_skip">
              우상단에 카운트다운 + '건너뛰기' 버튼 표시
              <span class="sp-hint">(image/webview 타입은 항상 표시됨)</span>
            </label>
          </td>
        </tr>

        <tr>
          <th><label for="inp_memo">메모</label></th>
          <td>
            <input type="text" name="memo" id="inp_memo" class="frm_input" style="width:320px"
                   placeholder="내부 관리용 메모 (선택)">
          </td>
        </tr>

        <tr>
          <th>등록 후 바로 적용</th>
          <td>
            <label>
              <input type="checkbox" name="activate_now" value="1" id="chk_activate" checked>
              등록 즉시 활성화 (기존 활성 설정은 비활성화됨)
            </label>
          </td>
        </tr>

      </tbody></table>
    </div>
    <div class="btn_confirm w_100" style="margin-top:10px">
      <input type="submit" value="등록" class="btn_submit btn">
    </div>
  </form>
</div>

<!-- ── 설정 이력 ── -->
<div class="sp-section">
  <h3>설정 이력</h3>
  <div class="tbl_head01 adm_list_table">
    <table>
      <thead>
        <tr>
          <th>ID</th><th>타입</th><th>URL</th><th>표시시간</th>
          <th>건너뛰기</th><th>메모</th><th>수정일시</th><th>수정자</th><th>상태</th><th>관리</th>
        </tr>
      </thead>
      <tbody>
      <?php if (empty($list)): ?>
        <tr><td colspan="10" class="empty_table">등록된 설정이 없습니다.</td></tr>
      <?php else: foreach ($list as $r): ?>
        <tr>
          <td><?= (int)$r['id'] ?></td>
          <td><?= type_badge($r['type']) ?></td>
          <td style="font-size:12px;max-width:220px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap">
            <?php if ($r['url']): ?>
              <a href="<?= esc($r['url']) ?>" target="_blank" title="<?= esc($r['url']) ?>"><?= esc($r['url']) ?></a>
            <?php else: ?>-<?php endif; ?>
          </td>
          <td><?= (int)$r['duration_ms'] ?>ms</td>
          <td><?= $r['skippable'] ? '✅' : '' ?></td>
          <td><?= esc($r['memo']) ?></td>
          <td><?= esc($r['updated_at']) ?></td>
          <td><?= esc($r['updated_by']) ?></td>
          <td>
            <?php if ($r['is_active']): ?>
              <span style="color:#1a7f37;font-weight:bold">● 적용중</span>
            <?php else: ?>
              <span style="color:#aaa">대기</span>
            <?php endif; ?>
          </td>
          <td>
            <?php if (!$r['is_active']): ?>
              <form method="post" action="./splash_config_update.php" style="display:inline"
                    onsubmit="return confirm('이 설정을 지금 적용하시겠습니까?')">
                <?= get_admin_token_input() ?>
                <input type="hidden" name="act" value="activate">
                <input type="hidden" name="id" value="<?= (int)$r['id'] ?>">
                <button type="submit" class="btn btn-act-on">적용</button>
              </form>
            <?php else: ?>
              <span style="font-size:11px;color:#aaa">현재 적용중</span>
            <?php endif; ?>
            <form method="post" action="./splash_config_update.php" style="display:inline;margin-left:3px"
                  onsubmit="return confirm('삭제하시겠습니까?')">
              <?= get_admin_token_input() ?>
              <input type="hidden" name="act" value="delete">
              <input type="hidden" name="id" value="<?= (int)$r['id'] ?>">
              <button type="submit" class="btn btn-act-del">삭제</button>
            </form>
          </td>
        </tr>
      <?php endforeach; endif; ?>
      </tbody>
    </table>
  </div>
</div>

<script>
function onTypeChange(val) {
    var trUrl    = document.getElementById('tr_url');
    var hintImg  = document.getElementById('url_hint_image');
    var hintWeb  = document.getElementById('url_hint_webview');
    var inpUrl   = document.getElementById('inp_url');

    if (val === 'default') {
        trUrl.style.display = 'none';
        inpUrl.required = false;
    } else {
        trUrl.style.display = '';
        inpUrl.required = true;
    }
    hintImg.style.display  = (val === 'image')   ? '' : 'none';
    hintWeb.style.display  = (val === 'webview') ? '' : 'none';

    // 타입별 기본 표시 시간 자동 설정
    var durMap = {default: 2000, image: 3000, webview: 5000};
    document.getElementById('inp_dur').value = durMap[val] || 2000;
}
document.addEventListener('DOMContentLoaded', function() {
    onTypeChange(document.getElementById('sel_type').value);
});
</script>

<?php include_once(G5_ADMIN_PATH . '/admin.tail.php'); ?>
