<?php require_once __DIR__.'/_layout.php'; web_require_perm('keyboards');
if(!function_exists('bot_home_slot_keys')){
    web_header('مدیریت کیبوردها');
    echo '<div class="alert error">ماژول کیبورد لود نشد. فایل app/Services/HomeKeyboardService.php را بررسی کن.</div>';
    web_footer(); exit;
}
$buttonMap = [
    'DOK1'=>['title'=>'جمع‌آوری الماس','path'=>'lib/Button/dok1.txt'],
    'DOK2'=>['title'=>'حساب کاربری','path'=>'lib/Button/dok2.txt'],
    'DOK3'=>['title'=>'سفارش ممبر','path'=>'lib/Button/dok3.txt'],
    'DOK4'=>['title'=>'رفرال‌گیری','path'=>'lib/Button/dok4.txt'],
    'DOK6'=>['title'=>'پیگیری‌ها','path'=>'lib/Button/dok6.txt'],
    'DOK9'=>['title'=>'فروشگاه','path'=>'lib/Button/dok9.txt'],
    'DOK0'=>['title'=>'کد هدیه','path'=>'lib/Button/dok0.txt'],
    'DUQ1'=>['title'=>'راهنما','path'=>'lib/Button/dok11.txt'],
    'TICKET'=>['title'=>'پشتیبانی','path'=>'lib/Button/dokticket.txt','default'=>'🎫 پشتیبانی'],
];
$channelButtonMap = function_exists('bot_channel_button_map') ? bot_channel_button_map() : [
    'DOKC0'=>['title'=>'دکمه عنوان سفارش / تعداد ممبر','path'=>'lib/Button/dokc0.txt','default'=>'👤 سفارش /ozv/ ممبر 👤'],
    'DOKC1'=>['title'=>'دکمه عضویت در کانال','path'=>'lib/Button/dokc1.txt','default'=>'👥عضویت👥'],
    'DOKC2'=>['title'=>'دکمه جمع‌آوری / دریافت الماس','path'=>'lib/Button/dokc2.txt','default'=>'💎 دریافت الماس 💎'],
    'DOKC3'=>['title'=>'دکمه گزارش تخلف','path'=>'lib/Button/dokc3.txt','default'=>'تخلف🚫'],
    'DOKC4'=>['title'=>'دکمه ورود به ربات','path'=>'lib/Button/dokc4.txt','default'=>'🔙 ربات'],
];
function web_kbd_label($token, $buttonMap){
    $token = strtoupper((string)$token);
    if(isset($buttonMap[$token])){
        $p = $buttonMap[$token]['path'];
        $d = $buttonMap[$token]['default'] ?? $buttonMap[$token]['title'];
        return trim((string)web_setting_get($p, $d));
    }
    return $token;
}
function web_channel_kbd_label($token, $channelButtonMap){
    $token = strtoupper((string)$token);
    if(function_exists('bot_channel_button_label')) return bot_channel_button_label($token);
    if(isset($channelButtonMap[$token])){
        $p = $channelButtonMap[$token]['path'];
        $d = $channelButtonMap[$token]['default'] ?? $channelButtonMap[$token]['title'];
        return trim((string)web_setting_get($p, $d));
    }
    return $token;
}
if($_SERVER['REQUEST_METHOD']==='POST'){
    $action = (string)($_POST['action'] ?? '');
    if($action === 'save_join_gift'){
        $amount = $_POST['join_gift_diamonds'] ?? 0;
        if(function_exists('bot_join_gift_save_amount')){
            bot_join_gift_save_amount($amount);
        }else{
            web_setting_put('lib/kodam/join_gift_diamonds.txt', (string)web_int($amount, 0));
        }
        web_admin_log('web_join_gift_update','setting','join_gift_diamonds','تغییر الماس هدیه عضویت از پنل وب',['amount'=>web_int($amount, 0)]);
        web_flash('success','مقدار الماس هدیه عضویت ذخیره شد.');
    } elseif($action === 'save_claim_rewards'){
        $normal = $_POST['claim_reward_normal'] ?? 1;
        $pro = $_POST['claim_reward_pro'] ?? 2;
        $vip = $_POST['claim_reward_vip'] ?? 3;
        if(function_exists('bot_channel_claim_reward_save_all')){
            bot_channel_claim_reward_save_all($normal, $pro, $vip);
        }else{
            web_setting_put('lib/Button/coinamount1.txt', (string)web_int($normal, 0));
            web_setting_put('lib/Button/coinamount2.txt', (string)web_int($pro, 0));
            web_setting_put('lib/Button/coinamount3.txt', (string)web_int($vip, 0));
        }
        web_admin_log('web_claim_reward_update','setting','coinamount','تغییر پاداش جمع‌آوری الماس از پنل وب',['normal'=>web_int($normal,0),'pro'=>web_int($pro,0),'vip'=>web_int($vip,0)]);
        web_flash('success','مقدار پاداش جمع‌آوری الماس ذخیره شد.');
    } elseif($action === 'save_button_styles'){
        $styles = [];
        foreach((array)($_POST['style'] ?? []) as $token=>$style){
            $token = strtoupper((string)$token);
            if(isset($buttonMap[$token])) $styles[$token] = (string)$style;
        }
        if(function_exists('bot_home_save_button_styles')) bot_home_save_button_styles($styles);
        web_admin_log('web_keyboard_styles','keyboard','home','تغییر رنگ دکمه‌های منوی کاربر از پنل وب',['styles'=>$styles]);
        web_flash('success','رنگ دکمه‌ها ذخیره شد. برای مشاهده نتیجه /start بزنید.');
    } elseif($action === 'save_labels'){
        foreach($buttonMap as $token=>$meta){
            $val = trim((string)($_POST['label'][$token] ?? ''));
            if($val === '') $val = (string)($meta['default'] ?? $meta['title']);
            web_setting_put($meta['path'], $val);
        }
        web_admin_log('web_keyboard_labels','keyboard','home','تغییر نام دکمه‌های پنل وب');
        web_flash('success','نام دکمه‌ها ذخیره شد.');
    } elseif($action === 'save_channel_labels'){
        foreach($channelButtonMap as $token=>$meta){
            $val = trim((string)($_POST['channel_label'][$token] ?? ''));
            if($val === '') $val = (string)($meta['default'] ?? $meta['title']);
            if(function_exists('bot_channel_button_save_label')) bot_channel_button_save_label($token, $val);
            else web_setting_put($meta['path'], $val);
        }
        web_admin_log('web_channel_keyboard_labels','keyboard','channel','تغییر نام دکمه‌های پست کانال از پنل وب');
        web_flash('success','نام دکمه‌های داخل پست کانال ذخیره شد. روی سفارش‌های جدید اعمال می‌شود.');
    } elseif($action === 'save_channel_button_styles'){
        $styles = [];
        foreach((array)($_POST['channel_style'] ?? []) as $token=>$style){
            $token = strtoupper((string)$token);
            if(isset($channelButtonMap[$token])) $styles[$token] = (string)$style;
        }
        if(function_exists('bot_channel_button_save_styles')) bot_channel_button_save_styles($styles);
        else web_setting_put('lib/keyboard/channel/styles.json', json_encode($styles, JSON_UNESCAPED_UNICODE|JSON_PRETTY_PRINT));
        web_admin_log('web_channel_keyboard_styles','keyboard','channel','تغییر رنگ دکمه‌های پست کانال از پنل وب',['styles'=>$styles]);
        web_flash('success','رنگ دکمه‌های داخل پست کانال ذخیره شد. روی سفارش‌های جدید اعمال می‌شود.');
    } elseif($action === 'save_layout'){
        $valid = bot_home_button_tokens();
        $slots = bot_home_slot_keys();
        $rawLayout = [];
        $lastSlotByToken = [];
        $dups = [];

        // If the admin chooses the same token in a new/later slot, keep the later slot
        // and clear the previous one. This turns "move to bottom" into a real move,
        // not a duplicate or a failed save.
        foreach($slots as $slot){
            $token = strtoupper(trim((string)($_POST['slot'][$slot] ?? '')));
            if($token !== '' && !in_array($token, $valid, true)) $token = '';
            $rawLayout[$slot] = $token;
            if($token !== ''){
                if(isset($lastSlotByToken[$token])) $dups[] = $token;
                $lastSlotByToken[$token] = $slot;
            }
        }
        foreach($slots as $slot){
            $token = $rawLayout[$slot] ?? '';
            if($token !== '' && ($lastSlotByToken[$token] ?? '') !== $slot) $token = '';
            bot_home_set_slot_token($slot, $token, false);
        }

        $enabled = [];
        foreach((array)($_POST['enabled'] ?? []) as $t){
            $t = strtoupper((string)$t);
            if(in_array($t, $valid, true)) $enabled[] = $t;
        }
        $enabled = array_values(array_unique($enabled));
        $disabled = array_values(array_diff($valid, $enabled));

        // Do not auto-restore DOK1/DOK6/TICKET here. The admin's explicit layout/toggle choice must stay saved.
        bot_home_save_disabled_tokens($disabled);
        if(function_exists('bot_home_cleanup_removed_tokens')) bot_home_cleanup_removed_tokens();
        web_admin_log('web_keyboard_layout','keyboard','home','تغییر چینش کیبورد از پنل وب',['duplicates'=>array_values(array_unique($dups)),'disabled'=>$disabled,'enabled'=>$enabled]);
        web_flash('success', empty($dups) ? 'چینش کیبورد ذخیره شد.' : 'چینش ذخیره شد؛ دکمه‌های تکراری از جای قبلی پاک شدند.');
    } elseif($action === 'reset'){
        if(function_exists('bot_seed_button_defaults')) bot_seed_button_defaults(true);
        $layout = bot_home_default_layout(); foreach($layout as $slot=>$token){ bot_home_set_slot_token($slot,$token,false); }
        if(function_exists('bot_home_save_disabled_tokens')) bot_home_save_disabled_tokens(['DOK5','DOK7','DOK8']);
        if(function_exists('bot_home_restore_daily_reward_button')) bot_home_restore_daily_reward_button();
        if(function_exists('bot_home_restore_orders_tracking_button')) bot_home_restore_orders_tracking_button();
        if(function_exists('bot_home_restore_ticket_button')) bot_home_restore_ticket_button();
        web_admin_log('web_keyboard_reset','keyboard','home','ریست کیبورد از پنل وب');
        web_flash('success','کیبورد پیش‌فرض بازسازی شد.');
    }
    web_redirect('keyboards.php');
}
web_header('مدیریت کیبوردها');
$tokens = bot_home_button_tokens();
$disabled = bot_home_disabled_tokens();
$joinGiftDiamonds = function_exists('bot_join_gift_amount') ? bot_join_gift_amount() : (int)web_setting_get('lib/kodam/join_gift_diamonds.txt', '10');
$claimRewardNormal = function_exists('bot_channel_claim_reward_amount') ? bot_channel_claim_reward_amount('normal') : (int)web_setting_get('lib/Button/coinamount1.txt', '1');
$claimRewardPro = function_exists('bot_channel_claim_reward_amount') ? bot_channel_claim_reward_amount('pro') : (int)web_setting_get('lib/Button/coinamount2.txt', '2');
$claimRewardVip = function_exists('bot_channel_claim_reward_amount') ? bot_channel_claim_reward_amount('vip') : (int)web_setting_get('lib/Button/coinamount3.txt', '3');
?>
<div class="panel">
  <h3>موجودی اولیه / هدیه استارت کاربر جدید</h3>
  <p class="muted">این مقدار همان موجودی اولیه است که کاربر فقط در اولین /start دریافت می‌کند. برای غیرفعال کردن هدیه، عدد ۰ بگذار. کاربران قبلی با تغییر این عدد خودکار شارژ نمی‌شوند.</p>
  <form method="post" class="row"><?php web_csrf_input(); ?><input type="hidden" name="action" value="save_join_gift">
    <input name="join_gift_diamonds" type="number" min="0" value="<?=web_h($joinGiftDiamonds)?>" style="max-width:220px" placeholder="مثلاً 10">
    <button>ذخیره موجودی اولیه استارت</button>
  </form>
</div>
<div class="panel">
  <h3>پاداش دکمه جمع‌آوری الماس</h3>
  <p class="muted">این همان مقدار الماسی است که کاربر بعد از عضویت در کانال سفارش/تبلیغاتی و زدن دکمه دریافت الماس می‌گیرد. برای عادی اگر ۲ بگذاری، به جای ۱، دو الماس می‌گیرد.</p>
  <form method="post" class="grid"><?php web_csrf_input(); ?><input type="hidden" name="action" value="save_claim_rewards">
    <div class="field"><label>کاربر عادی</label><input name="claim_reward_normal" type="number" min="0" value="<?=web_h($claimRewardNormal)?>"></div>
    <div class="field"><label>کاربر حرفه‌ای</label><input name="claim_reward_pro" type="number" min="0" value="<?=web_h($claimRewardPro)?>"></div>
    <div class="field"><label>کاربر ویژه</label><input name="claim_reward_vip" type="number" min="0" value="<?=web_h($claimRewardVip)?>"></div>
    <div><button>ذخیره پاداش جمع‌آوری</button></div>
  </form>
</div>
<div class="panel">
  <h3>نام دکمه‌های پنل کاربر</h3>
  <form method="post" class="grid"><?php web_csrf_input(); ?><input type="hidden" name="action" value="save_labels">
    <?php foreach($buttonMap as $token=>$meta): ?>
      <div class="field"><label><?=web_h($meta['title'])?> <span class="muted">/ <?=web_h($token)?></span></label><input name="label[<?=web_h($token)?>]" value="<?=web_h(web_kbd_label($token,$buttonMap))?>"></div>
    <?php endforeach; ?>
    <div><button>ذخیره نام دکمه‌ها</button></div>
  </form>
</div>
<div class="panel">
  <h3>رنگ دکمه‌های پنل کاربر</h3>
  <p class="muted">رنگ رسمی تلگرام برای دکمه‌ها: آبی/primary، سبز/success، قرمز/danger یا پیش‌فرض. ممکن است در نسخه‌های خیلی قدیمی تلگرام مثل پیش‌فرض نمایش داده شود.</p>
  <form method="post" class="grid"><?php web_csrf_input(); ?><input type="hidden" name="action" value="save_button_styles">
    <?php $styleOptions = function_exists('bot_home_style_options') ? bot_home_style_options() : [''=>'پیش‌فرض','primary'=>'آبی','success'=>'سبز','danger'=>'قرمز']; ?>
    <?php foreach($buttonMap as $token=>$meta): $curStyle = function_exists('bot_home_button_style') ? bot_home_button_style($token) : ''; ?>
      <div class="field"><label><?=web_h($meta['title'])?> <span class="muted">/ <?=web_h($token)?></span></label>
        <select name="style[<?=web_h($token)?>]">
          <?php foreach($styleOptions as $styleKey=>$styleTitle): ?>
            <option value="<?=web_h($styleKey)?>" <?=$curStyle===$styleKey?'selected':''?>><?=web_h($styleTitle)?></option>
          <?php endforeach; ?>
        </select>
      </div>
    <?php endforeach; ?>
    <div><button>ذخیره رنگ دکمه‌ها</button></div>
  </form>
</div>
<div class="panel">
  <h3>نام دکمه‌های داخل پست کانال</h3>
  <p class="muted">این‌ها دکمه‌هایی هستند که زیر پست تبلیغاتی/سفارش داخل چنل می‌آیند؛ مثل جمع‌آوری الماس، عضویت، گزارش تخلف و ورود به ربات. تغییرات روی پست‌های جدید اعمال می‌شود.</p>
  <form method="post" class="grid"><?php web_csrf_input(); ?><input type="hidden" name="action" value="save_channel_labels">
    <?php foreach($channelButtonMap as $token=>$meta): ?>
      <div class="field"><label><?=web_h($meta['title'])?> <span class="muted">/ <?=web_h($token)?></span></label><input name="channel_label[<?=web_h($token)?>]" value="<?=web_h(web_channel_kbd_label($token,$channelButtonMap))?>"></div>
    <?php endforeach; ?>
    <div><button>ذخیره نام دکمه‌های کانال</button></div>
  </form>
</div>
<div class="panel">
  <h3>رنگ دکمه‌های داخل پست کانال</h3>
  <p class="muted">رنگ رسمی تلگرام برای دکمه‌های شیشه‌ای: آبی/primary، سبز/success، قرمز/danger یا پیش‌فرض. برای اینکه روی همه کلاینت‌ها دیده شود، علاوه‌بر فیلد رسمی style، یک نشانگر رنگی کوچک مثل 🔵 🟢 🔴 هم روی متن دکمه‌های پست جدید اضافه می‌شود.</p>
  <form method="post" class="grid"><?php web_csrf_input(); ?><input type="hidden" name="action" value="save_channel_button_styles">
    <?php $channelStyleOptions = function_exists('bot_channel_button_style_options') ? bot_channel_button_style_options() : [''=>'پیش‌فرض','primary'=>'آبی','success'=>'سبز','danger'=>'قرمز']; ?>
    <?php foreach($channelButtonMap as $token=>$meta): $curStyle = function_exists('bot_channel_button_style') ? bot_channel_button_style($token) : ''; ?>
      <div class="field"><label><?=web_h($meta['title'])?> <span class="muted">/ <?=web_h($token)?></span></label>
        <select name="channel_style[<?=web_h($token)?>]">
          <?php foreach($channelStyleOptions as $styleKey=>$styleTitle): ?>
            <option value="<?=web_h($styleKey)?>" <?=$curStyle===$styleKey?'selected':''?>><?=web_h($styleTitle)?></option>
          <?php endforeach; ?>
        </select>
      </div>
    <?php endforeach; ?>
    <div><button>ذخیره رنگ دکمه‌های کانال</button></div>
  </form>
</div>
<div class="panel">
  <h3>چینش دکمه‌های پنل کاربر</h3>
  <p class="muted">هر دکمه فقط یک‌بار در کیبورد قرار بگیرد. اگر تکراری انتخاب شود، خانه‌های تکراری خالی می‌شوند.</p>
  <form method="post"><?php web_csrf_input(); ?><input type="hidden" name="action" value="save_layout">
    <?php for($r=1;$r<=8;$r++): ?>
      <div class="kbd-row"><b>ردیف <?=web_h($r)?></b><div class="kbd-grid">
        <?php for($c=1;$c<=4;$c++): $slot='line'.$r.$c; $cur=bot_home_get_slot_token($slot); ?>
          <div class="field"><label>خانه <?=web_h($c)?></label><select name="slot[<?=web_h($slot)?>]"><option value="">خالی</option><?php foreach($tokens as $t){ $label=web_kbd_label($t,$buttonMap); echo '<option value="'.web_h($t).'" '.($cur===$t?'selected':'').'>'.web_h($label.' - '.$t).'</option>'; } ?></select></div>
        <?php endfor; ?>
      </div></div>
    <?php endfor; ?>
    <h4>روشن / خاموش کردن دکمه‌ها</h4>
    <p class="muted">تیک روشن یعنی دکمه در منوی کاربر نمایش داده می‌شود. اگر تیک را برداری، بعد از ذخیره و /start دیگر نمایش داده نمی‌شود.</p>
    <div class="perm-grid"><?php foreach($tokens as $t): ?><label class="check"><input type="checkbox" name="enabled[]" value="<?=web_h($t)?>" <?=!in_array($t,$disabled,true)?'checked':''?>> روشن: <?=web_h(web_kbd_label($t,$buttonMap))?></label><?php endforeach; ?></div>
    <button>ذخیره چینش</button>
  </form>
</div>
<div class="panel">
  <h3>تعمیر سریع</h3>
  <form method="post" onsubmit="return confirm('کیبورد پیش‌فرض بازسازی شود؟')"><?php web_csrf_input(); ?><input type="hidden" name="action" value="reset"><button class="danger">ریست و بازسازی کیبورد</button></form>
</div>
<?php web_footer();
