- assets/vendor 全量迁移: fontawesome5→assets/fontawesome5, css→assets/css, js→assets/js/runtime(避开 14 个同名自有文件), img 合并去重→assets/img, fonts→assets/fonts; 删除 assets/vendor - libs 五个与 widgets/third-party 字节相同的库不重复入库, loader paths 改指向 - 运行时切换: _win.uri=assets 根, loader baseUrl=/js/runtime, enlighter 注入 路径同步; PHP 7 个引用文件切换并改名 $zibll_*→$runtime_* - 去品牌: Qinver 头注释/品牌 console.log/演示链接清除, 默认文案中性化 - 功能标识符改名: zib__→aksrt__, zib_ajax→aksrt_ajax, window.zib→ window.aksrtLegacy, zibllblock/*→aksrtblock/*, .zib-widget→.aksrt-panel, .zib-slider→.aksrt-slider, zib_menu_options meta 键等 - 自有 CSS 改名: legacy-utilities/compat-vars/footer shell - admin SPA 重建; 契约测试同步(路径/断言/文件更名) - 例外保留: tests/visual 对照环境与 fixtures 前缀(外部 Zibll 产品引用) 验证: php -l 133 个改动文件通过; runtime 86 个 JS node --check 通过; 契约测试 68/70(2 个失败经 stash 对照确认为存量问题)
74 lines
2.8 KiB
JavaScript
74 lines
2.8 KiB
JavaScript
/**
|
|
* User level + integral XP (legacy user_level_s / user_level_opt / user_integral_opt).
|
|
*/
|
|
|
|
export const INTEGRAL_CATALOG = [
|
|
{ key: 'sign_up', label: '首次注册', default: 20, group: '用户' },
|
|
{ key: 'sign_in', label: '每日登录', default: 5, group: '用户' },
|
|
{ key: 'followed', label: '被关注', default: 5, group: '用户' },
|
|
{ key: 'post_new', label: '发布文章', default: 5, group: '文章' },
|
|
{ key: 'post_like', label: '文章获赞', default: 1, group: '文章' },
|
|
{ key: 'post_favorite', label: '文章被收藏', default: 2, group: '文章' },
|
|
{ key: 'comment_new', label: '发表评论', default: 2, group: '文章' },
|
|
{ key: 'comment_like', label: '评论获赞', default: 1, group: '文章' },
|
|
]
|
|
|
|
export function defaultLevelOpt(max = 10) {
|
|
const opt = {}
|
|
for (let i = 1; i <= max; i++) {
|
|
opt['upgrade_integral_' + i] = i === 1 ? 0 : (i - 1) * 500 * i
|
|
opt['name_' + i] = 'LV' + i
|
|
opt['icon_img_' + i] = ''
|
|
}
|
|
return opt
|
|
}
|
|
|
|
export function defaultIntegralOpt() {
|
|
const opt = { day_max: 100 }
|
|
for (const row of INTEGRAL_CATALOG) {
|
|
opt[row.key] = row.default
|
|
}
|
|
return opt
|
|
}
|
|
|
|
export const levelSchema = {
|
|
key: 'users.level',
|
|
title: '用户等级',
|
|
icon: 'fa fas fa-level-up-alt',
|
|
description: '等级与经验值:最高等级、升级阈值、经验获取矩阵(对齐 legacy user_level / user_integral)。',
|
|
defaults: {
|
|
user_level_s: true,
|
|
user_level_public_display: true,
|
|
user_level_max: 10,
|
|
user_level_opt: defaultLevelOpt(10),
|
|
user_integral_opt: defaultIntegralOpt(),
|
|
user_level_notify: true,
|
|
},
|
|
groups: [
|
|
{
|
|
key: 'display',
|
|
title: '等级显示',
|
|
fields: [
|
|
{ key: 'user_level_s', label: '启用用户等级', type: 'switch', default: true },
|
|
{ key: 'user_level_public_display', label: '公开页显示等级', type: 'switch', default: true, dependsOn: { key: 'user_level_s', value: true } },
|
|
{ key: 'user_level_max', label: '最高等级', type: 'number', default: 10, min: 3, max: 30, dependsOn: { key: 'user_level_s', value: true } },
|
|
{ key: 'user_level_notify', label: '升级通知', type: 'switch', default: true, dependsOn: { key: 'user_level_s', value: true } },
|
|
],
|
|
},
|
|
{
|
|
key: 'level_opt',
|
|
title: '等级升级阈值',
|
|
fields: [
|
|
{ key: 'user_level_opt', label: '升级经验配置', type: 'json', sanitizeType: 'array', default: defaultLevelOpt(10), help: 'upgrade_integral_N 为升到 N 级所需累计经验' },
|
|
],
|
|
},
|
|
{
|
|
key: 'integral',
|
|
title: '经验值得分',
|
|
fields: [
|
|
{ key: 'user_integral_opt', label: '经验值获取', type: 'json', sanitizeType: 'array', default: defaultIntegralOpt(), help: 'day_max + 各行为得分;对应功能未开则将分值设 0' },
|
|
],
|
|
},
|
|
],
|
|
}
|