feat: Markdown 工具栏编辑器与服务端预览

共用 md_editor 于发帖/改帖/评论,扩展 ComposeBodyToHTML,并提供 /compose/preview。

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
2026-08-30 04:50:07 +08:00
parent 7f048bd9b5
commit 1f777eebb1
17 changed files with 1056 additions and 232 deletions

View File

@@ -55,8 +55,8 @@
- [x] 发帖:选板块、标题、标签、正文 — SSR `/compose`normal
- [x] 正文图片上传 — `/compose/upload` + Markdown 插入
- [ ] TipTap 富文本能力(见 [06-pages-ux.md](06-pages-ux.md) 编辑器节)— 本分支改用 Markdown textarea 渐进增强
- [ ] Markdown 编辑模式(与富文本互转/双模
- [ ] TipTap 富文本能力(见 [06-pages-ux.md](06-pages-ux.md) 编辑器节)— **本分支不做 TipTap**改用 Markdown 工具栏渐进增强
- [x] Markdown 编辑(工具栏 + `/compose/preview`;发帖/改帖/评论共用 `shared/md_editor`)— 非 TipTap 双模
- [x] 编辑帖子(时限、锁帖约束)— SSR `/post/:id/edit`
- [x] 删除帖子 → 软删进回收站 — SSR Admin帖详情 + `/admin/trash`
- [x] 修订历史列表与单条详情(可做 diff— SSR `/post/:id/revisions`(作者/管理员;无 diff

View File

@@ -28,7 +28,7 @@
| `/board/:id` | 板块 Feed | 已迁 |
| `/boards` | 板块索引 | 已迁 |
| `/post/:id` | 帖详情 + 评论(回复/赞/私密)/赞/藏 | 已迁 |
| `/compose` | 发帖(normal / question / poll / bounty / lotterytextarea + 图片 + 门控插入 | 已迁 |
| `/compose` | 发帖(类型字段 + Markdown 工具栏/预览/图片/门控 | 已迁 |
| `/post/:id/edit` | 编辑帖 | 已迁 |
| `/profile` | 个人中心(资料/密码/头像/积分钱包) | 已迁 |
| `/user/:id` | 公开用户页 | 已迁 |
@@ -123,22 +123,24 @@
| 悬赏 | 积分输入(显示余额)— SSR compose发帖托管 |
| 抽奖 | 中奖人数 120 — SSR compose |
### 3.2 编辑器能力(应对齐
### 3.2 编辑器能力(本分支Markdown 渐进增强
源:[`ArticleEditor.tsx`]((仅 mainfrontend/src/components/ArticleEditor.tsx)`editor/` 扩展
对照[`ArticleEditor.tsx`]((仅 mainfrontend/src/components/ArticleEditor.tsx)TipTap**不迁**
- 标题 h2h6无 h1避免与帖标题冲突
- 粗体/斜体/删除线等基础标记
- 链接对话框
- 代码块(语言、选项对话框)
- 表格插入/编辑
- 图片上传 + 图片组布局 + 浮动/清除浮动
- 表情 / 贴纸选择器多套bilibili/douyin/tieba/weibo 等静态资源)
- **登录可见** / **回复可见** / **积分可见**(价格 19999节点
- 富文本 ↔ Markdown 双模(门控块有 markdown 约定,见 [`utils/markdownContent.ts`]((仅 mainfrontend/src/utils/markdownContent.ts)
- Tab 缩进
| 能力 | SSR 状态 |
|------|----------|
| 标题 h2h6`#` 映射为 h2 | Markdown 工具栏 + `ComposeBodyToHTML` |
| 粗体/斜体/删除线/行内代码 | 已迁 |
| 链接 | prompt 插入 |
| 围栏代码块 | 已迁(语言 class |
| 列表 / 引用 | 已迁 |
| 图片上传 | `/compose/upload` |
| 登录/回复/积分可见门控 | compose 工具栏 |
| 预览 | `POST /compose/preview`(同消毒管线) |
| Tab 缩进 / 未保存离开 | `beforeunload` |
| 表格 / 图片组 / 表情贴纸 / TipTap 双模 | **未做**(后置) |
未保存离开:`UnsavedChangesDialog`
共用片段:`templates/shared/md_editor.tmpl`(发帖、改帖、评论、改评)
---

View File

@@ -10,15 +10,15 @@
| 项 | 值 |
|----|-----|
| **上一刀** | 嵌套评论树(全局楼层 + 缩进 |
| **下一刀** | 需点名OIDC / S3 / 编辑器 / Gitea / 主题…) |
| **上一刀** | Markdown 编辑器(工具栏 + 预览,共用 md_editor |
| **下一刀** | 需点名OIDC / S3 / Gitea / 主题 / 表格表情…) |
| **工作区** | 应干净 |
---
## 一句话状态
核心论坛、Admin、Limits/伪静态、**嵌套评论**已齐。余量多为后置与体验打磨
核心论坛、Admin、Limits/伪静态、嵌套评论、**Markdown 编辑器**已齐。TipTap / 表格 / 表情贴纸仍后置
---
@@ -29,12 +29,14 @@
| 五种帖 + Admin P1 + §H | 已迁 |
| Limits / 伪静态 / 品牌图 | 已迁 |
| 评论嵌套树 UI | 已迁 |
| Markdown 工具栏 + preview | 已迁 |
---
## 未完成
- P3主题、TipTip、游客评论、修订 diff
- 编辑器后置TipTap、表格、图片组、表情贴纸
- 后置OIDC、S3 热切换、Gitea `/projects`
---