• charcoal-fire
    核弹爆炸级 Word 文档主题风摸鱼神器
    ID office_document_mode版本 1.0.2插件制作者 charcoal-fire免费1429 行 / 191.6 KBHook / 路由
    一键把论坛变成以假乱真的 Word 文档工作区。连续阅读、楼层大纲、原生回复、明暗切换、未读管理、账号同步全部拉满。表面上在认真写方案,实际上正在高强度逛论坛,老板贴脸检查都很难发现。
    app/plugins/office_document_mode/plugin.php
    开发日志已有 3 条

    个人独立维护项目。

    • charcoal-fire
      charcoal-fire
      版本 1.0.2 60919a9d7b06 更新:版本 1.0.2 更新:手机版终于可以直接退出办公文档模式。 - 手机版固定底栏由五等分升级为六等分,在“通知”后新增“退出”按钮 - 退出按钮复用桌面端同一套未保存内容确认、POST + CSRF 状态保存和账号同步逻辑 - 点击退出后立即恢复原生论坛界面,刷新后继续保持退出,不会再次自动进入文档模式 - 375x812 与 320x700 均验证六项等宽,图标和文字完整,无横向溢出或正文遮挡 release
    • charcoal-fire
      charcoal-fire
      版本 1.0.1 3064e56d0412 更新:版本 1.0.1 更新:修复 Chrome 启用后无法进入论坛、动态插件页面假死和退出困难问题。 - 初始化改为 fail-open:文档外壳成功建立后才切换界面,中途异常自动恢复原生顶部、正文和交互,不再留下空白页 - 插件市场、打赏、长内容折叠和引用线程保留原始 DOM 结构,避免观察器循环;bbs1org v8.7.5 实测 mutation 为 0 - 开启/退出确认页恢复独立紧凑样式,并
    • charcoal-fire
      charcoal-fire
      版本 1.0.0 7d1b0aa2acb1 更新:1.0.0 首发:核弹爆炸级 Word 文档主题风摸鱼神器正式上线。 老板突然贴脸?同事从背后路过?别慌。开启插件后,整个论坛瞬间切换成一套以假乱真的办公文档工作区:左边是文档导航,中间是连续正文,上面是标准功能区,长帖、回复、搜索和未读内容全部被塞进一张“认真工作”的脸里。 摸鱼只是表象,实力才是底牌: - 帖子和全部回复合并成连续文档,长讨论从头读到尾不再被卡片割裂 - 左侧自动生成真实楼层大
    主楼
  • 质量报告

    插件质量报告

    插件:office_document_mode

    Hook功能范围循环使用频率文件读写修改系统表读写系统表读写自己的表
    page.head全站页面 head否5---读 plugin_office_document_mode_users
    page.header全站页面页头否5--app_topics读 plugin_office_document_mode_users, plugin_office_document_mode_reads
    top.menu_links顶部版块导航/移动端版块列表,同一请求只执行一次(展示位置:顶部菜单)否5---读 plugin_office_document_mode_users
    topic.index_data.loaded首页/版块/用户主题列表查询后否5--app_topics读 plugin_office_document_mode_users, plugin_office_document_mode_reads
    topic.title_suffix首页/版块主题列表逐条标题是5----
    topic.after_view主题查看页完成加载否4---写 plugin_office_document_mode_reads;读 plugin_office_document_mode_users
    topic.list_columns主题列表列定义否4---读 plugin_office_document_mode_users
    reply.after_save回帖保存后否3--app_topics写 plugin_office_document_mode_reads;读 plugin_office_document_mode_users
    topic.after_save主题保存后否3--app_topics写 plugin_office_document_mode_reads;读 plugin_office_document_mode_users

    颜色说明:黄色表示有数据读写,红色表示 Hook 在系统循环中执行,浅蓝色表示有文件写入。“列表跳过”表示回调在列表路径会提前返回,“回调内”表示操作位于回调自身或其帮助函数的循环体内。“文件批处理”表示逐个处理用户一次提交的文件,属于必要操作,不标记修正。只有操作实际处于需要优化的循环路径时,才会标记“修正❗️”。

    数据字典

    未检测到插件数据表声明。

    #1
  • charcoal-fire

    版本 1.0.0 更新:
    1.0.0 首发:核弹爆炸级 Word 文档主题风摸鱼神器正式上线。

    老板突然贴脸?同事从背后路过?别慌。开启插件后,整个论坛瞬间切换成一套以假乱真的办公文档工作区:左边是文档导航,中间是连续正文,上面是标准功能区,长帖、回复、搜索和未读内容全部被塞进一张“认真工作”的脸里。

    摸鱼只是表象,实力才是底牌:

    • 帖子和全部回复合并成连续文档,长讨论从头读到尾不再被卡片割裂
    • 左侧自动生成真实楼层大纲,一键空降主题正文、任意回复和编辑器
    • 原生搜索、发帖、回复、引用、点赞、Markdown、分页、权限与 CSRF 全部保留
    • 浅色、深色、未读状态和功能区折叠随登录账号同步
    • 功能区收起后,进入帖子、刷新、返回列表都不会偷偷弹回来
    • 动态读取真实论坛版块,不硬编码测试分类,不修改论坛核心文件
    • 桌面端是完整办公文档工作区,移动端保留首页、导航、搜索、发帖和通知五大核心入口
    • 支持打印、紧急恢复,并与 appearance_theme 独立共存,退出后立即恢复原论坛主题

    一句话总结:表面上你在写方案、看文档、做需求评审,实际上社区动态、技术长帖和楼层讨论一个都没落下。它不是给论坛刷一层皮,而是把论坛阅读体验直接重组为一套能长期使用的在线文档系统。

    首发质量不是嘴硬,是硬测:

    • PHP 单元测试 144 项
    • 资产提取测试 8 项
    • SQLite 生命周期测试 51 项
    • MySQL 8.4 测试 45 项
    • PostgreSQL 17 测试 45 项
    • Playwright DOM 测试 532 项
    • bbs1org v8.6.5 真实浏览器测试 456 项
    • 桌面、移动端、深色、未读、编辑器和打印共 9 张最终截图复核
    • 浏览器控制台错误 0

    适合技术社区、长教程、开发记录、项目讨论、需求评审,以及每一位希望在工位上低调掌控论坛动态的专业选手。

    #2
  • charcoal-fire

    paste-20260825-151016.png

    #3
  • x

    人才啊

    #4
  • bbs1org

    为创意点赞

    #5
  • bbs1org

    跟插件有点不兼容。估计是动结构了,不是纯css实现的。不过,挺厉害的创意。

    #6
  • bbs1org

    paste-20260825-160201.png 这个进入的ui改进下,好像丢了样式。

    #7
  • bbs1org

    浏览部分页面,导致浏览器假死。比如 https://bbs1.org/topic/913 肯定是js冲突导致的。

    #8
  • charcoal-fire

    我去优化下康康

    #10
  • george

    66666🤣

    #9
  • li3295

    手机版可以增加一个退出按钮吗 进入手机版无法退出

    #11
  • charcoal-fire

    下个版本支持,稍等哦

    #12
  • charcoal-fire

    版本 1.0.1 更新:
    版本 1.0.1 更新:修复 Chrome 启用后无法进入论坛、动态插件页面假死和退出困难问题。

    • 初始化改为 fail-open:文档外壳成功建立后才切换界面,中途异常自动恢复原生顶部、正文和交互,不再留下空白页
    • 插件市场、打赏、长内容折叠和引用线程保留原始 DOM 结构,避免观察器循环;bbs1org v8.7.5 实测 mutation 为 0
    • 开启/退出确认页恢复独立紧凑样式,并明确提示可用 ?office_document_mode=off 紧急恢复
    • 普通请求不再重复检查数据库结构,主题列表不再逐条读取用户状态
    • 新增官方表单 CRLF 体积门禁,无损压缩源码排版,功能、界面、CSS 和 JavaScript 均保持不变

    验证结果:PHP 153 项、资产 8 项、DOM 548 项、SQLite 51 项、MySQL 47 项、PostgreSQL 47 项、v8.6.5 真实浏览器 456 项全部通过;v8.7.5 动态兼容与强制初始化失败恢复通过。

    #13
  • charcoal-fire

    版本 1.0.2 更新:
    版本 1.0.2 更新:手机版终于可以直接退出办公文档模式。

    • 手机版固定底栏由五等分升级为六等分,在“通知”后新增“退出”按钮
    • 退出按钮复用桌面端同一套未保存内容确认、POST + CSRF 状态保存和账号同步逻辑
    • 点击退出后立即恢复原生论坛界面,刷新后继续保持退出,不会再次自动进入文档模式
    • 375x812 与 320x700 均验证六项等宽,图标和文字完整,无横向溢出或正文遮挡

    验证结果:PHP 155 项、资产 8 项、DOM 553 项、SQLite 51 项、MySQL 47 项、PostgreSQL 47 项、bbs1org v8.6.5 真实浏览器 461 项全部通过;当前官方 v8.7.5 动态兼容 mutation 为 0,强制初始化失败恢复正常。

    #14
  • 399

    🔍 插件审查报告(AI 自动审查,对照《AI 开发规则》与开发者文档;本插件未被 8/18 楼上 350 的报告覆盖,属独立首次审查)

    插件:office_document_mode v1.0.2

    🔒 安全问题

    1. 开放重定向防护到位:office_document_mode_safe_return_url() 对 return_url 做了协议前缀、反斜杠、控制字符、双斜杠开头等校验,仅允许站内相对路径,未见绕过点。
    2. $_SERVER['REQUEST_URI'] 用于生成"返回地址"(plugin.php office_document_mode_current_return_url()),使用前已经过 office_document_mode_safe_return_url() 校验再输出,且输出到 HTML 属性时经过 h() 转义,未见反射型 XSS。
    3. 状态保存路由(office_document_mode_state_route)need_login()+require_post(),字段值经 office_document_mode_bool()/枚举白名单校验后才写入,未见注入风险。

    ⚡ 性能问题
    未发现明显问题。未读状态查询(office_document_mode_unread_statuses)在 topic.index_data.loaded 阶段按当前页全部主题 ID 一次性批量查询(IN (...) + JOIN),随后 topic.title_suffix(红区 Hook)内只读 $GLOBALS 内存映射,未见循环查库。

    🐛 功能/规范缺陷

    1. 大量 !important:CSS 中有约 229 处 !important(含 20+ 处硬编码十六进制色值如 #202124、#185abd 等),用于强制覆盖核心默认样式以实现"伪装成 Word 文档"的视觉效果。规则要求"禁止无理由使用 !important"且"颜色优先使用系统变量";本插件因需要完全接管页面视觉(隐藏 .top/.wrap/.sidebar 等核心区块)用量较大,属功能定位决定的设计选择,但仍建议评估是否可以缩小覆盖范围、减少与核心/其他插件的样式冲突风险。
    2. 描述面向普通用户,未使用技术名词,符合规范;version 常量单独定义(OFFICE_DOCUMENT_MODE_VERSION),manifest 复用该常量,写法可行。
    3. 命名前缀检查:函数、CSS 类、data-* 属性、Hook 均以 office_document_mode_ / office-document-mode- 为前缀,未见冲突。
    4. manifest 注册的 8 个 Hook(top.menu_links、page.head、page.header、topic.list_columns、topic.index_data.loaded、topic.title_suffix、topic.after_view、topic.after_save、reply.after_save)逐一核对均为核心真实存在的 Hook,用法正确。

    ✅ 修复优先级
    无安全或性能类问题;唯一规范项(!important 与写死颜色用量较大)为低优先级,属该插件"完全接管页面视觉"这一功能定位下的设计取舍,建议后续版本评估收窄影响范围即可,不影响当前使用安全性。

    #15

发表回复

登录后回复