新增功能
1. 评论用户名后显示用户组
一级评论和二级回复的用户名后均显示用户组 badge(
bg-primary bg-opacity-10 text-primary样式)帖子详情页标题下方的用户名后也显示用户组 badge
post_format()新增group_name字段,从用户缓存中读取用户组名称thread_format()新增group_name字段
2. 管理员后台编辑用户增加字段
头像:显示当前头像预览 + 重置为默认头像复选框
积分:可编辑 credits、golds、rmbs 三个积分字段
个性签名:可编辑 signature 字段(兼容数据库无此字段的情况)
修改文件:
admin/route/user.php、admin/view/htm/user_update.htm
3. 帖子详情页管理按钮增加审核功能
正文下方管理按钮区域新增"审核通过"按钮(绿色,仅待审/已驳回帖子显示)
新增
mod-audit路由,支持审核通过和审核驳回两种操作新增
view/htm/mod_audit.htm模板,提供通过/驳回单选使用
AuditService::approve()/AuditService::reject()处理审核逻辑新增语言键:
audit_approve、audit_reject
Bug 修复
4. 修复标题下方删除按钮无效
标题下方的删除按钮缺少
data-confirm-text属性和_confirmclass,导致点击无反应添加
data-confirm-text和_confirmclass在
bbs.js中新增a._confirm事件委托(使用$(document).on动态绑定),支持确认弹窗 + POST 删除
新增功能(第二批)
5. 固定链接设置页面添加 Nginx 404 配置说明
后台固定链接设置页面的 Nginx 伪静态规则中增加
error_page 404 =404 /index.php;解决宝塔面板 Nginx 默认拦截 404 响应导致自定义 404 页面不显示的问题
6. 编辑器增加引用帖子功能
AIEditor 工具栏新增引用帖子按钮(书本图标)
点击后弹出搜索弹窗,输入关键词搜索帖子
选择帖子后自动插入引用链接,包含原帖标题和跳转链接
搜索 API 复用
route/search.php,新增ref_suggest参数返回 JSON 格式结果新增语言键:
ref_thread_tip
7. 评论置顶功能
数据库
bbs_post表新增is_top字段(TINYINT,默认0)新增
mod-top_post路由,管理员和帖子作者可置顶/取消置顶评论置顶评论优先展示(usort 排序),并显示绿色"置顶"标识
评论列表中显示置顶/取消置顶按钮
新增语言键:
post_top_success、post_untop_success、post_top_label、untop数据库升级脚本已添加
is_top字段的 ALTER TABLE
8. 帖子状态扩展 hook 点
thread.htm新增两个 hook 点:thread_status_alert_after.htm:帖子状态提示之后thread_subject_badge_after.htm:标题 badge 之后
插件可通过 hook 在帖子状态区域扩展自定义内容
9. 快速评论验证码错误后保留用户输入文本
移除快速评论表单的
this.reset()自动重置新增智能重置逻辑:提交成功清空表单,提交失败(验证码错误等)保留用户输入
失败时在表单内显示错误提示信息
10. 评论验证码开关与发帖分开
CaptchaService 新增
reply场景,与post(发帖)场景独立控制后台验证码设置页面新增"回帖验证码"开关
后端
route/post.php回帖验证码改用CaptchaService::is_enabled('reply')前端快速评论表单验证码改用
reply场景发帖验证码仍使用
post场景,互不影响新增语言键:
admin_captcha_reply
11. 修复评论置顶后内容变空
post_update()调用post_message_fmt()时,仅传is_top字段导致message被清空修复:
post_message_fmt()在$arr无message字段时直接跳过
12. 修复删除评论 CSRF token verification failed
$.xpost未携带 CSRF token,后端验证失败修复:
_confirm事件中获取 CSRF token 并传入$.xpost,优先使用XN.csrfToken
13. 引用帖子功能改为右侧高级功能区块
从 AIEditor 工具栏移除引用帖子按钮,改为帖子发布页右侧"高级功能"区块
搜索帖子后点击插入引用链接到编辑器
右侧区块有
post_sidebar_top.htm和post_sidebar_bottom.htmhook 点,插件可扩展AIEditor 实例暴露到
window.aiEditorInstance,供外部调用
14. 修复 emoji 表情变 ? 问题
数据库连接 charset 从
utf8(3字节)改为utf8mb4(4字节,支持 emoji)UpgradeService 新增
utf8mb4升级步骤,自动将旧表从 utf8 转换为 utf8mb4adjustConfig()自动升级 conf.php 中的 charset 配置注意:已损坏的 emoji(显示为?)无法恢复,新写入的 emoji 将正常显示
15. 快速回复框增加表情输入
快速回复区域新增表情选择器按钮(笑脸图标)
点击弹出常用 emoji 面板,选择后插入到光标位置
点击外部自动关闭面板
16. 合并升级系统
删除 Phase 1 独立升级入口(路由、模板、文件)
所有数据库变更统一到 UpgradeService 一键升级流程
新增
utf8mb4升级步骤
修改文件清单
model/post.func.php— post_format 新增 group_name + post_message_fmt 跳过无 message 字段model/thread.func.php— thread_format 新增 group_nameview/htm/post_list.inc.htm— 评论用户名后增加用户组 badge + 置顶标识 + 置顶按钮view/htm/thread.htm— 用户组 badge + 删除按钮修复 + 审核按钮 + hook 点 + 快速评论保留输入 + 验证码场景分离 + 表情选择器admin/route/user.php— 编辑用户增加头像/积分/签名处理admin/view/htm/user_update.htm— 编辑用户表单增加字段route/mod.php— 新增 audit action + top_post actionview/htm/mod_audit.htm— 新增审核弹窗模板view/js/bbs.js— _confirm 事件携带 CSRF token + 置顶按钮事件lang/zh-cn/bbs_common.php— 新增语言键lang/zh-cn/bbs_admin.php— 验证码场景标签分离lib/security/CaptchaService.php— 新增 reply 场景admin/view/htm/security_captcha.htm— 新增回帖验证码开关lib/EditorService.php— 移除工具栏引用帖子按钮 + 暴露 aiEditorInstance 到全局route/search.php— 新增 ref_suggest JSON APIroute/post.php— 回帖验证码改用 reply 场景route/thread.php— 评论列表置顶排序admin/route/setting.php— Nginx 规则增加 404 配置install/install.sql— bbs_post 表新增 is_top 字段lib/UpgradeService.php— 新增 utf8mb4 升级步骤 + adjustConfig 自动升级 charsetconf/conf.php— charset 改为 utf8mb4conf/conf.default.php— charset 改为 utf8mb4view/htm/post.htm— 右侧高级功能区块 + 引用帖子搜索
17. 外部 CDN 引用改本地
Prism autoloader 语言包路径从 CDN 改为本地
view/vendor/prismjs/components/(下载 41 个常用语言包)QRCode.js 从 CDN 改为本地
view/vendor/qrcodejs/qrcode.min.js消除外部 CDN 依赖,提升国内访问稳定性
18. 积分扣减操作增加用户提醒
后端:
CreditsRuleService::applyRule()余额不足时返回失败(不再静默跳过),新增checkOnly模式用于前端预检查发帖页面:右侧显示积分消耗提示卡片,余额不足时禁用提交按钮,提交时弹窗确认扣减
点赞/收藏:通过 htmx:confirm 事件拦截,扣积分时弹窗确认,余额不足时 toast 提示
后端拦截:发帖/点赞/收藏操作前先检查积分余额,不足则拒绝操作
新增
my-credits_checkAPI,前端查询操作的积分消耗新增语言键:
credits_deduct_title、credits_deduct_warn、credits_deduct_confirm
19. 修复手机端搜索 URL 多了 .htm
url('search.htm')导致 Xiuno 的url()函数自动追加.htm,生成search.htm.htm修复:
header_nav.inc.htm和search.htm中url('search.htm')改为url('search')
20. 手机端发帖页高级功能区块响应式布局
桌面端:保持右侧并排布局(280px 侧边栏)
手机端:高级功能区块(积分消耗提示 + 引用帖子)移到编辑器下方、验证码上方
使用
row+col-lg响应式布局替代d-flex手机端使用更紧凑的卡片样式(
py-2 px-3)引用搜索和积分检查 JS 同时支持桌面端和手机端元素
21. 排行榜固定10条数据,去掉加载更多
排行榜三个 tab(热门帖子/活跃用户/积分排行)均改为固定10条,不分页
去掉"加载更多"按钮和分页参数
修改文件:
route/rank.php、view/htm/rank.htm
22. 发帖编辑器自适应高度 + 工具栏吸顶
编辑器高度从固定 450px 改为自适应(min-height: 300px),内容增长时自动变高
工具栏(
.aie-header)使用position: sticky; top: 0吸顶,长文编辑时无需滚到顶部操作textarea fallback 也改为自适应高度
修改文件:
lib/EditorService.php、view/htm/post.htm
23. 发帖版块分类默认空 + 提示文字
多版块时下拉框默认显示「请选择版块」占位符,不预选任何版块
单版块时自动选中唯一版块,无需用户手动选择
下拉框添加
required属性(多版块时)新增语言键:
please_select_forum修改文件:
view/htm/post.htm、lang/zh-cn/bbs_common.php
24. 发帖报错信息移到提交按钮附近
#post-msg从表单顶部移到验证码下方、提交按钮上方长文发帖时错误信息可见,无需滚动到页面顶部
修改文件:
view/htm/post.htm
25. 帖子详情页左侧导航换成帖子目录(如有标题)
自动扫描帖子正文中的 h1-h6 标签生成目录
有2个以上标题时显示目录,隐藏全局导航;否则保持全局导航
目录支持层级缩进、平滑滚动、滚动时高亮当前项(IntersectionObserver)
修改文件:
view/htm/thread.htm
26. 昵称与用户名分离
数据库:user 表新增
nickname字段(VARCHAR(32),唯一索引),新增nickname_change_log表记录修改历史后端:
注册时
nickname默认等于usernameuser_format()新增display_name字段(nickname 优先,为空时 fallback 到 username)全站显示统一使用
display_name:帖子/评论/通知/排行榜/在线用户/搜索结果个人设置页用户名不可修改,改为修改昵称
昵称修改频率限制:每30天最多修改1次
昵称修改时记录日志(旧昵称、新昵称、时间、IP)
昵称全局唯一性检查 + 敏感词检查
后台管理:用户列表增加昵称列,编辑用户增加昵称字段,支持按昵称搜索
搜索用户时同时搜索 username 和 nickname
前端:
个人设置页:用户名 disabled 显示 + 昵称可编辑
所有前台显示用户名的地方改为 display_name
后台用户列表增加昵称列和搜索选项
UpgradeService:新增
nickname_field升级步骤(复制 username → nickname + 添加唯一索引)新增语言键:
username_cannot_modify、nickname_is_in_use、nickname_contains_sensitive_word、nickname_length_too_long、nickname_change_too_frequent修改文件:
lib/UpgradeService.php、route/my.php、route/user.php、route/search.php、model/user.func.php、model/thread.func.php、model/post.func.php、model/notify.func.php、model/notice.func.php、model/session.func.php、model/user_profile_audit.func.php、service/RankService.php、view/htm/my.common.template.htm、view/htm/my.layout.inc.htm、view/htm/header_nav.inc.htm、view/htm/sidebar_right.inc.htm、view/htm/thread.htm、view/htm/user.*.htm、admin/route/user.php、admin/view/htm/user_list.htm、admin/view/htm/user_update.htm、lang/zh-cn/bbs_common.php
27. 积分防刷限制改为每个规则独立设置
数据库:
credits_rule_global和credits_rule_forum表新增daily_limit字段(INT,默认0=使用全局设置,-1=不限制)后端:
CreditsService::add/sub新增$dailyLimit参数,checkDailyLimit优先使用规则级限制CreditsRuleService::getRule返回daily_limit字段,applyRule传递给add/subCreditsRuleService::saveGlobalRules/saveForumRules保存daily_limit字段规则级
daily_limit:0=使用全局设置,-1=不限制,>0=具体次数
前端:
后台积分规则页面增加「每日限制」列
版块规则页面增加「每日限制」列和输入框
语言包:新增
admin_credits_daily_limit、admin_credits_daily_limit_default修改文件:
lib/UpgradeService.php、lib/CreditsService.php、service/CreditsRuleService.php、admin/route/credits_rule.php、admin/view/htm/credits_rule.htm、admin/view/htm/credits_rule_forum.htm、lang/zh-cn/bbs_admin.php
