- 服务端草稿箱ID draft_box版本 1.1.0插件制作者 cxk123售价 30 积分1711 行 / 98.5 KBHook / 路由 / 后台页1.1.0:修「草稿箱里的回帖草稿泄露受限版块主题标题」——标题回显与核心主题页同一把尺子收费插件安装说明购买后点击“授权码”获取一次性授权码;在后台 > 插件广场点击在线安装或更新,并填写该授权码。已购买用户更新免费:每次在线安装或更新前,重新点击“授权码”获取新的一次性授权码即可,无需再次购买;也可直接下载新版后用后台“插件上传”更新。尊重并感谢他人劳动,请勿传播代码。app/plugins/draft_box/plugin.php插件预览6 张开发日志已有 2 条
此项目接受所有登录用户协助维护和提交更新。
主楼 版本 1.0.0 更新:
1.0.0(首次上架)· 服务端草稿箱:把「写了半天全丢了」这件事从根上解决【为什么值得装】
· 市场里唯一同类的draft_autosave是纯浏览器本机存储(localStorage):换台电脑、换个浏览器、
清一次缓存,草稿就没了,也没有草稿列表与配额管理。这一款把草稿存到服务端:
换设备、换浏览器、换会话都还在,发帖前还能在「草稿箱」里统一看与管理。【能力一 · 服务端自动保存】
· 发帖页与回帖框都会自动保存:默认 20 秒一拍,而且内容真的变了才写库
(哈希比对,重复提交一万次也只有一行、一次时间戳)。
· 同一用户 × 同一目标恒定只有一行:双开标签、连点保存、断线重连都不会长出重复草稿。
· 自动保存与「保存草稿」按钮并存;关掉自动保存后按钮仍然可用。
· 在浏览器里额外留一份本机副本:刷新、崩溃、断网都不会丢,pagehide时还会补一次提交。【能力二 · 草稿箱与一键续写】
·草稿箱页列出自己的全部草稿:标题摘要、目标(版块 / 回复的是哪篇主题)、字数、更新时间。
· 可按「全部 / 主题草稿 / 回帖草稿」筛选;顶部一条用量条显示已用与上限、保留期。
· 点「恢复」跳到对应的发帖页或回复框并预填标题与正文接着写;没有点恢复之前,
绝不会自动往编辑框里塞任何东西(不打断你正在写的内容)。
· 草稿只在你自己名下:别人拿到草稿编号也只会看到「草稿不存在」。【能力三 · 不会静默覆盖你的东西】
· 每条草稿都带内容哈希与版本号。如果同一份草稿在别处(另一台设备、另一个标签页)改过,
保存会被拒绝,页面上给出「服务端版本 / 本机版本」两边的时间与哈希,让你明确选择以哪一份为准。
· 提交成功后对应的草稿自动删除;编辑已经发布的帖子时不会误删你正在写的草稿。【能力四 · 配额与过期,明明白白】
· 每人默认最多 20 条、保留 30 天,站长可改;满了会给明确提示(「草稿箱已满:请先删除一些」),
不会悄悄失败。
· 计划任务每天自动清理过期草稿,后台能看到清理记录与占用。【能力五 · 站长侧】
· 后台一个「服务端草稿箱」页:开关、自动保存间隔、每人上限、保留天数、单条字数上限、
按版块开关;总条数、总字数、参与人数、超期待清理;按用户占用 Top10;最近草稿流;
清理记录与被拒记录;一键立即清理。
· 后台看不到任何人的草稿正文与标题,只有类型、目标、字数、时间这些元数据。【匿名区口径(请务必看一眼)】
· 草稿是存在服务器上、绑定真实账号的正文。匿名版块的草稿会变成一条长期存在的解匿线索,
所以本站装了匿名区时,草稿默认在所有版块关闭,需要站长在后台逐个版块确认
「本版没有开启匿名」之后才开放;回帖草稿还会额外复核目标主题是否已是匿名内容,命中一律拒写。
· 判断只用核心的插件清单与匿名区公开的遮蔽契约,不读对方的数据表、不调对方的函数。【参数】
· 新增 2 张自有表、3 枚索引,不动核心任何表结构;卸载时一并清干净(可选保留数据卸载)。
· 首页、版块列表、主题页零额外查询;发帖页 +1;草稿箱列表 ≤4;后台 ≤6。
· 兼容 SQLite / MySQL / PostgreSQL(时间戳全为整数秒,无窗口函数、无单库方言)。插件质量报告
插件:
draft_boxHook 功能范围 循环 使用频率 文件读写 修改系统表 读写系统表 读写自己的表 sidebar.feature_links 首页/侧栏快捷功能 否 5 - - - - top.bar.actions 顶部栏插件入口,同一请求只执行一次(展示位置:版块导航与搜索框前后) 否 5 - - - - reply.after_save 回帖保存后 否 3 - - - 写 plugin_draft_box_drafts topic.after_save 主题保存后 否 3 - - - 写 plugin_draft_box_drafts reply.form_extra 回帖编辑表单 否 2 - - - - topic.form_extra 主题发布/编辑表单 否 2 - - - 读 plugin_draft_box_drafts 颜色说明:黄色表示有数据读写,红色表示 Hook 在系统循环中执行,浅蓝色表示有文件写入。“列表跳过”表示回调在列表路径会提前返回,“回调内”表示操作位于回调自身或其帮助函数的循环体内。“文件批处理”表示逐个处理用户一次提交的文件,属于必要操作,不标记修正。只有操作实际处于需要优化的循环路径时,才会标记“修正❗️”。
数据字典
plugin_draft_box_drafts字段 类型 可空 默认值 约束 - 动态定义 - - 无法静态解析 plugin_draft_box_events字段 类型 可空 默认值 约束 - 动态定义 - - 无法静态解析 版本 1.1.0 更新:
1.1.0 · 草稿标题不再越权- 修复(越权):草稿箱里「回复:《…》」显示的目标主题标题此前没有版块可见性判定,而保存草稿时又采信客户端传来的版块标记 ⇒ 任何登录用户都能对连续的主题 id 造草稿、再从草稿箱读到「仅指定用户组可见」版块主题的标题与存在性。现在:读侧按核心同一口径过滤(无权限时显示占位,不暴露标题也不暴露 id),写侧不再把客户端传值当授权依据。
- 另修:后台事件表「草稿」列恒为 0(读错列名)、事件表用户名退化成
#uid。
升级:覆盖文件即生效,无数据结构变更。