[UI重构] 发帖页特殊主题 Tab 化(抽奖/悬赏/投票)
必测: thread/create/0 切换 Tab 显示对应字段;版块下拉框切换时按白名单动态显隐 Tab
改动: post.htm 在标题下方新增 Tab 容器(普通帖 + 两个 hook 点 post_special_topic_tab_nav.htm / post_special_topic_tab_pane.htm)
改动: 三个插件删除旧 hook 文件 post_ref_thread_after.htm / post_ref_thread_after_mobile.htm
改动: 三个插件去掉 enabled 开关,切换 Tab 直接展示字段;字段区域无 card 包裹
改动: 三个插件后台新增 allow_forums 版块白名单多选,空数组=全部允许
改动: post.htm 末尾追加 JS 公共逻辑(检测有插件 nav 时显示整块;监听 select[name=fid] change 按 data-allow-forums 动态显隐 Tab;当前激活 Tab 被隐藏时自动切回【普通帖】)
必测: 三个插件后台 setting 页版块多选保存生效;发帖页 fid=0 时所有插件 Tab 都显示,切换到非白名单版块时对应 Tab 隐藏
[UI重构] 发帖页 Tab 体验优化(去普通帖 Tab,按版块白名单展示)
必测: thread/create/0 未选版块时 Tab 整块不显示;选了版块后按白名单展示对应 Tab
必测: 单 Tab 版块(如只有悬赏)直接展开字段无 nav 标签栏;多 Tab 版块保留 nav 切换
必测: 不在任何插件白名单的版块 Tab 整块完全不显示
改动: post.htm 移除【普通帖】Tab 和 tab-pane,tab-content 去掉 border 包裹
改动: JS 逻辑重写 - fid=0 整块隐藏;fid>0 按白名单计算可见 Tab 数量(0 个隐藏/1 个直接展开/多个 nav 切换)
改动: 隐藏/未激活 Tab 内所有 input 自动 disabled,防止 display:none 元素的 hidden input 仍被提交(HTML 规范:display:none 不阻止表单提交)
改动: 监听 shown.bs.tab 事件,用户切换 Tab 时同步更新 input disabled 状态
[UI优化] 单 Tab 场景改为开关模式
必测: 选了一个只在悬赏白名单内的版块,Tab 标题右侧显示开关(默认关闭),点击开关打开字段展开,再次点击关闭收起
必测: 开关关闭状态下提交表单,悬赏字段不会提交(input disabled);开关打开状态下提交,字段正常提交
改动: post.htm JS 修复 toggleCollapse 的 isExpanded 判断 bug(原用 active class 判断,但初始 button 无 active 而 pane 可见导致早退)
改动: 单 Tab 时给 nav 加 single-mode class,button 移除 data-bs-toggle 改为自定义点击切换
改动: CSS 用伪元素 ::after 模拟开关滑块(左侧标题 + 右侧开关),active 时滑块从左滑到右并变为主色背景
改动: 多 Tab → 单 Tab 切换时清理残留 data-bs-toggle 和 role 属性
改动: 后台设置版块白名单只展示版块(type=0),跳过分区(type=1)
[一致性] xnx_reward 后台 allow_forums / allow_gids 改为空数组=全部允许
必测: admin/?plugin-setting-xnx_reward.htm 清空 allow_forums 保存不报错
改动: setting.php 移除强制非空校验;三套语言包新增 _hint 提示文字;setting.htm 加 form-text 提示
[版本] conf.php static_version ?1.4.5 → ?1.4.6
[版本] xnx_lottery 1.2.0 → 1.2.1;xnx_poll 1.0.3 → 1.0.4;xnx_reward 1.0.1 → 1.0.2
[缓存] 清理 tmp/view_htm_post.htm、tmp/lang_*_bbs.php、tmp/route_thread.php、tmp/route_post.php
[日志清理] 清理 log/202607 目录下 6 类调试日志源码 + 修复 forum_access 未定义键错误
改动: plugin/xnx_api_tester/admin.php 删除 17 处 $api_tester_debug AND xn_log(…, api_tester_debug) 调用
改动: plugin/xnx_api_tester/service/ApiTesterService.php 删除 HTTP 调试日志
改动: xiunophp/cache_redis.class.php + xiunophp.min.php 删除 deleteByPrefix 耗时日志
改动: lib/CacheHelper.php 删除 recordStat 中 MISS 日志(保留统计计数)
改动: xiunophp/db.func.php + xiunophp.min.php 删除 db_exec/db_exec_prepared 中 DEBUG AND xn_log 调用
改动: route/search.php 删除 search_debug 2 处 xn_log
改动: plugin/xnx_fields/route/admin_xnx_fields.php + model/FieldsService.php 删除 3 处 xnx_fields_error xn_log
修复: model/forum_access.func.php forum_access_mod 和 forum_is_mod 函数加 isset 兜底,避免 PHP 8.x Undefined array key 警告(line 164/182)
必测: /admin/?xnx_api_tester 访问不再产生 api_tester_debug.php 日志
必测: 缓存清理操作不再产生 cache_clear.php 日志
必测: 首页/搜索/版块访问不再产生 cache_debug.php 和 db_exec.php 日志
必测: GET /api/v1/user/me/permissions 不再报 Undefined array key 3
[UI优化] 单 Tab 场景统一用 nav 标签栏模式(去掉开关样式)
必测: 选了一个只在悬赏白名单内的版块,Tab 标题高亮显示,字段直接展开
改动: post.htm 移除 single-mode/single-tab-mode 相关 CSS 和 JS 逻辑
改动: 移除 setCollapsed/toggleCollapse 函数,统一用 bootstrap Tab activateTab
改动: 单 Tab 也默认激活显示字段(不再需要点击展开)
[功能新增] xnx_appcenter v1.9.0 开发者主页加审核状态徽标+条件发布按钮
头部显示 已认证/审核中/审核未通过 徽标
已认证开发者显示「发布应用」按钮;待审核显示提示文案;已拒绝显示「重新提交资料」按钮
必测: /appcenter-developer.htm?uid=XX 自己访问看徽标和按钮
[功能新增] 配置的发布版块页面增加发布应用入口(右栏 + 右侧悬浮)
forum.htm 右栏末尾新增 hook forum_mod_after.htm,仅当 fid == 配置的 forum_fid 时显示「发布应用」卡片
thread.htm 右栏作者信息卡下方新增 hook thread_author_card_after.htm(核心模板 thread_right.inc.htm 第 80 行后新增 hook 标记)
floating_action.inc.htm 新增 fabPublishApp 悬浮按钮(forum/thread 页面 + fid 匹配配置时显示)
必测: 配置 forum_fid 后访问该版块页面和版块下帖子详情页,看右栏卡片和右下角悬浮按钮
[功能新增] dev_audit/app_audit tab 改造为展示所有记录+筛选+搜索+分页
新增 AppCenterService::getDevelopersForAudit() 和 getAppsForAudit() 方法
支持状态筛选(全部/待审/已通过/已拒绝,带计数 badge)
支持关键字搜索(开发者:用户名/昵称/品牌前缀;应用:名称/简介)
应用 tab 支持分类下拉筛选
超过 20 条时显示分页器
表格新增「状态」列,已审核记录不显示通过/拒绝按钮(显示 —)
必测: admin/?plugin-setting-xnx_appcenter.htm&tab=dev_audit 和 &tab=app_audit 切换状态/搜索关键字/翻页
[Bug 修复] 修复 db_sql_addslashes 函数不存在导致审核搜索 fatal(项目无此函数,改用原生 addslashes)
必测: 在 dev_audit/app_audit tab 搜索关键字,结果正确返回不报错
[缓存] 清理 tmp/ 下相关编译缓存:lang_bbs.php / view_htm.htm / plugin_xnx_appcenter_*
[重构] 修复把插件功能代码写到核心文件的违规
还原 view/htm/floating_action.inc.htm:移除 AppCenterService 调用和 fabPublishApp 按钮 HTML,改为 hook 标记
<!--{hook floating_action_post_after.htm}-->还原 view/htm/thread_right.inc.htm:hook 标记改为项目标准格式
<!--{hook thread_author_card_after.htm}-->新建 plugin/xnx_appcenter/hook/floating_action_post_after.htm:把发布应用悬浮按钮的逻辑和 HTML 全部移入插件 hook 文件
核心文件不再包含任何 appcenter/AppCenter/xnx_ 字样(已 grep 验证)
必测: 配置 forum_fid 后访问该版块页面,右下角悬浮按钮正常显示「发布应用」
[Bug 修复] 修复 hook 文件未闭合 PHP 标签导致 thread_right.inc.htm 编译错误
根因: hook 文件 thread_author_card_after.htm 和 forum_mod_after.htm 以
}结尾但无?>闭合,宿主模板 hook 标记后紧跟 HTML,编译后变成}<div>引发 ParseError修复: 两个 hook 文件末尾加
?>闭合 PHP 代码块floating_action_post_after.htm 本身已正确闭合(第 15 行有 ?>),无需修改
必测: 访问任意帖子详情页 /thread-XX.htm 不再 500
[重构] 发布应用入口改为插入到发新帖按钮下,样式与发新帖一致
forum.htm 第 90 行新增 hook 标记
<!--{hook forum_post_btn_after.htm}-->(在发新帖按钮之后、</div>之前)thread_right.inc.htm 第 80 行新增 hook 标记
<!--{hook thread_post_btn_after.htm}-->(在发新帖按钮之后、</div>之前)新建 plugin/xnx_appcenter/hook/forum_post_btn_after.htm:输出
<a class="btn btn-primary w-100 mt-2">按钮新建 plugin/xnx_appcenter/hook/thread_post_btn_after.htm:输出
<a class="btn btn-primary w-100 my-2">按钮删除旧的独立卡片 hook:thread_author_card_after.htm、forum_mod_after.htm
必测: 配置 forum_fid 后访问该版块页面和版块下帖子详情页,发新帖按钮下显示「发布应用」按钮
