dsh/go_blog:feat/article-upload-ui
main
围绕文章新建/编辑页的写作体验做一组改进(不依赖 #5 的 files 表重构,业务接口不变)。
管理员与作者两套新建/编辑页的 EasyMDE image 按钮改为本地上传:选择本地图片 → 走既有附件接口(session_token/article_id)→ 在正文光标处插入 ;非图片给出提示。templates/layouts/base.html 新增共享 blogUploadImage 助手;i18n 新增两个 key(中英)。
session_token
article_id

templates/layouts/base.html
blogUploadImage
作者新建/编辑页补齐与管理端一致的附件区:上传按钮 + 已上传列表,支持一键加入正文(图片 ![]()/其他 []())、图片一键设为封面、删除。附件区标记抽为共享 partial(templates/partials/article_attachments.html),逻辑抽为共享 static/js/article-attachments.js(接口 URL/编辑器/i18n 文案由页面注入)。顺带修复管理页表单提交引用未声明 articleID 导致保存静默失败的作用域 bug。
![]()
[]()
templates/partials/article_attachments.html
static/js/article-attachments.js
articleID
文章详情页的编辑按钮从「仅管理员」放开为:管理员(/admin/articles/:id/edit)或登录用户且为文章作者(/my/articles/:id/edit);他人与匿名不可见。my 编辑页/API 本身有 author_id 所有权约束。新增 TestArticleDetailEditButton 四场景断言。
author_id
TestArticleDetailEditButton
admin/article_create.html + my_article_form.html(约 360 行)收敛为单一 templates/partials/article_form.html(~230 行),按 .FormIsMy 分支渲染两工作区差异(标签/置顶/草稿发布双按钮 vs 状态下拉/保存取消;/api/admin/articles vs /api/my/articles)。入口路由不变。新增 TestArticleFormTemplateVariants 断言两变体渲染差异。
admin/article_create.html
my_article_form.html
templates/partials/article_form.html
.FormIsMy
/api/admin/articles
/api/my/articles
TestArticleFormTemplateVariants
go build ./...
go vet ./...
go test ./...
node --check
- 两套页面(admin + 普通用户)EasyMDE 的 image 按钮改为“上传图片”: 选择本地图片 → 走既有附件接口(files 表 type=attachments,新建页 session_token / 编辑页 article_id)→ 在正文光标处插入  - templates/layouts/base.html:新增共享 window.blogUploadImage 上传助手 - templates/user/my_article_form.html:新建页 session_token 输入框加 id (编辑器上传需要读取);补齐原本缺失的上传能力 - i18n:新增 article_image_upload / article_image_not_image(中英) - 服务端依既有上传策略校验(扩展名/MIME/魔数/大小),客户端限 image/*
- 新增共享部分模板 templates/partials/article_attachments.html (附件区标记:文件名/大小/操作列 + 上传按钮) - 新增共享 static/js/article-attachments.js:上传(multipart→files 表 type=attachments)、编辑页回填、插入正文、图片一键设封面、删除; uploadURL/listURL/editor/i18n 文案均由页面注入 - 管理员页改用共享 partial+JS(行为不变);同时修复既有 bug: 表单提交闭包引用未声明的 articleID(作用域错误导致保存静默失败) - 普通用户页加入附件区,走 /api/my/articles/attachments(新建页 session_token / 编辑页 article_id),支持一键设封面/插入正文
- renderArticleDetail 计算 CanEdit/EditURL:管理员(/admin/articles/:id/edit) 或登录用户且为文章作者(/my/articles/:id/edit)可见 - templates/pages/article.html 改用 .CanEdit/.EditURL 渲染 - my 编辑页/接口本身有 author_id 所有权约束,暴露链接无越权风险 - 新增 TestArticleDetailEditButton:作者/管理员可见、他人/匿名不可见
- 新增 templates/partials/article_form.html(define article_form): 按 .FormIsMy 分支渲染——管理员变体(标签/置顶勾选/草稿发布双按钮/ /api/admin/articles)与作者变体(状态下拉/保存取消//api/my/articles) - renderArticleForm / renderMyArticleForm 均渲染 article_form,各自 设置 FormIsMy=false/true;JS 统一(API_BASE/redirectBase/editor/ 错误提示均单份) - 删除 templates/admin/article_create.html 与 templates/user/my_article_form.html(约 360 行 → 一份 ~230 行) - 新增 TestArticleFormTemplateVariants 断言两个变体渲染差异; 测试环境注册两个工作区的新建页路由
81e3b325e2
d78ed8e2fe
No dependencies set.
The note is not visible to the blocked user.
变更概述
围绕文章新建/编辑页的写作体验做一组改进(不依赖 #5 的 files 表重构,业务接口不变)。
1) 编辑器图片上传(84756e0)
管理员与作者两套新建/编辑页的 EasyMDE image 按钮改为本地上传:选择本地图片 → 走既有附件接口(
session_token/article_id)→ 在正文光标处插入;非图片给出提示。templates/layouts/base.html新增共享blogUploadImage助手;i18n 新增两个 key(中英)。2) 普通用户附件区(5c55a76)
作者新建/编辑页补齐与管理端一致的附件区:上传按钮 + 已上传列表,支持一键加入正文(图片
![]()/其他[]())、图片一键设为封面、删除。附件区标记抽为共享 partial(templates/partials/article_attachments.html),逻辑抽为共享static/js/article-attachments.js(接口 URL/编辑器/i18n 文案由页面注入)。顺带修复管理页表单提交引用未声明articleID导致保存静默失败的作用域 bug。3) 作者可编辑自己的文章(523de28)
文章详情页的编辑按钮从「仅管理员」放开为:管理员(/admin/articles/:id/edit)或登录用户且为文章作者(/my/articles/:id/edit);他人与匿名不可见。my 编辑页/API 本身有
author_id所有权约束。新增TestArticleDetailEditButton四场景断言。4) 文章表单模板二合一(81e3b32)
admin/article_create.html+my_article_form.html(约 360 行)收敛为单一templates/partials/article_form.html(~230 行),按.FormIsMy分支渲染两工作区差异(标签/置顶/草稿发布双按钮 vs 状态下拉/保存取消;/api/admin/articlesvs/api/my/articles)。入口路由不变。新增TestArticleFormTemplateVariants断言两变体渲染差异。验证
go build ./.../go vet ./.../go test ./...全部通过(含新增两个测试)node --check81e3b325e2tod78ed8e2fe