<?php
if (!defined('__TYPECHO_ROOT_DIR__')) exit;

$cls = function (string $tab): string {
    return 'typecho-option mirai-option mirai-tab-' . $tab;
};

$levelEnable = new \Typecho\Widget\Helper\Form\Element\Select(
    'levelEnable',
    ['1' => '启用', '0' => '禁用'],
    '0',
    _t('启用用户等级'),
    _t('开启后用户可通过获取经验值自动升级，等级可影响权限和展示')
);
$levelEnable->setAttribute('class', $cls('level'));
$levelEnable->input->setAttribute('data-toggle-targets', 'levelMax,expDailyLimit,expTask_sign_up,expTask_sign_in,expTask_post_new,expTask_post_like,expTask_post_collect,expTask_comment_new');
$levelEnable->input->setAttribute('data-toggle-value', '1');
$form->addInput($levelEnable);

$levelMax = new \Typecho\Widget\Helper\Form\Element\Text(
    'levelMax',
    null,
    '10',
    _t('最高等级'),
    _t('用户可达到的最高等级，范围3-30')
);
$levelMax->setAttribute('class', $cls('level'));
$levelMax->input->setAttribute('type', 'number');
$levelMax->input->setAttribute('min', '3');
$levelMax->input->setAttribute('max', '30');
$form->addInput($levelMax);

$levelNamePrefix = new \Typecho\Widget\Helper\Form\Element\Text(
    'levelNamePrefix',
    null,
    'LV',
    _t('等级名称前缀'),
    _t('等级显示名称的前缀，如"LV"则显示为LV1、LV2等')
);
$levelNamePrefix->setAttribute('class', $cls('level'));
$form->addInput($levelNamePrefix);

$expDailyLimit = new \Typecho\Widget\Helper\Form\Element\Text(
    'expDailyLimit',
    null,
    '100',
    _t('每日经验值上限'),
    _t('用户每日通过免费任务最多可获取的经验值数量')
);
$expDailyLimit->setAttribute('class', $cls('level'));
$expDailyLimit->input->setAttribute('type', 'number');
$expDailyLimit->input->setAttribute('min', '0');
$form->addInput($expDailyLimit);

$expTaskSignUp = new \Typecho\Widget\Helper\Form\Element\Text(
    'expTask_sign_up',
    null,
    '20',
    _t('注册经验值'),
    _t('新用户注册时奖励的经验值')
);
$expTaskSignUp->setAttribute('class', $cls('level'));
$expTaskSignUp->input->setAttribute('type', 'number');
$expTaskSignUp->input->setAttribute('min', '0');
$form->addInput($expTaskSignUp);

$expTaskSignIn = new \Typecho\Widget\Helper\Form\Element\Text(
    'expTask_sign_in',
    null,
    '5',
    _t('每日登录经验值'),
    _t('每日首次登录奖励的经验值')
);
$expTaskSignIn->setAttribute('class', $cls('level'));
$expTaskSignIn->input->setAttribute('type', 'number');
$expTaskSignIn->input->setAttribute('min', '0');
$form->addInput($expTaskSignIn);

$expTaskPostNew = new \Typecho\Widget\Helper\Form\Element\Text(
    'expTask_post_new',
    null,
    '5',
    _t('发布文章经验值'),
    _t('发布文章奖励的经验值')
);
$expTaskPostNew->setAttribute('class', $cls('level'));
$expTaskPostNew->input->setAttribute('type', 'number');
$expTaskPostNew->input->setAttribute('min', '0');
$form->addInput($expTaskPostNew);

$expTaskPostLike = new \Typecho\Widget\Helper\Form\Element\Text(
    'expTask_post_like',
    null,
    '1',
    _t('文章获赞经验值'),
    _t('文章被点赞时作者获得的经验值')
);
$expTaskPostLike->setAttribute('class', $cls('level'));
$expTaskPostLike->input->setAttribute('type', 'number');
$expTaskPostLike->input->setAttribute('min', '0');
$form->addInput($expTaskPostLike);

$expTaskPostCollect = new \Typecho\Widget\Helper\Form\Element\Text(
    'expTask_post_collect',
    null,
    '2',
    _t('文章被收藏经验值'),
    _t('文章被收藏时作者获得的经验值')
);
$expTaskPostCollect->setAttribute('class', $cls('level'));
$expTaskPostCollect->input->setAttribute('type', 'number');
$expTaskPostCollect->input->setAttribute('min', '0');
$form->addInput($expTaskPostCollect);

$expTaskCommentNew = new \Typecho\Widget\Helper\Form\Element\Text(
    'expTask_comment_new',
    null,
    '2',
    _t('发表评论经验值'),
    _t('发表评论奖励的经验值')
);
$expTaskCommentNew->setAttribute('class', $cls('level'));
$expTaskCommentNew->input->setAttribute('type', 'number');
$expTaskCommentNew->input->setAttribute('min', '0');
$form->addInput($expTaskCommentNew);

echo '<div class="typecho-option mirai-option mirai-tab-level">';
echo '<label class="typecho-label">等级经验值阈值</label>';
echo '<p class="typecho-description">升级到各等级所需的经验值。默认公式：(等级-1)×500×等级。留空则使用默认值。</p>';
$maxLevel = (int)(Mirai_opt()->levelMax ?: 10);
for ($i = 2; $i <= min($maxLevel, 30); $i++) {
    $defaultExp = ($i - 1) * 500 * $i;
    $levelExpField = new \Typecho\Widget\Helper\Form\Element\Text(
        'levelExp_' . $i,
        null,
        (string)$defaultExp,
        _t('升级到LV' . $i . '所需经验值'),
        _t('达到此经验值后自动升级到LV' . $i)
    );
    $levelExpField->setAttribute('class', $cls('level'));
    $levelExpField->input->setAttribute('type', 'number');
    $levelExpField->input->setAttribute('min', '0');
    $form->addInput($levelExpField);
}
echo '</div>';
