- 编辑器:Tiptap 替换为 Vditor 3.11.2(wysiwyg 模式,本地托管 5.8MB,去 CDN) - 存储:Body 字段从 HTML 改为 Markdown,去除 BodyHTML,新增 Excerpt 列表摘要 - 安全:去除 bluemonday 依赖(MD 纯文本无 XSS 风险),go.mod 已清理 - Shortcode:新增 [zone:type:params] 扩展语法,支持活动/游戏/投票/资源卡片 - 图片上传:POST /api/posts/upload-image 直接返回 Vditor 原生响应格式 - 草稿:localStorage 键名改为 draft_post_body_md,与旧 HTML 草稿隔离 - 详情页:Vditor.method.min.js 客户端 MD → HTML 渲染,去 highlight.js CDN - 样式:去 Tiptap 样式 ~190 行,精简工具栏 CSS,新增卡片样式 - 文档:vditor-migration-plan.md 完整记录迁移决策、架构、用法
38 lines
891 B
Go
38 lines
891 B
Go
package common
|
|
|
|
import (
|
|
"github.com/gin-gonic/gin"
|
|
"net/http"
|
|
)
|
|
|
|
// 统一 JSON 响应
|
|
|
|
func Ok(c *gin.Context, data interface{}) {
|
|
c.JSON(http.StatusOK, gin.H{"success": true, "data": data})
|
|
}
|
|
|
|
func OkMessage(c *gin.Context, message string) {
|
|
c.JSON(http.StatusOK, gin.H{"success": true, "message": message})
|
|
}
|
|
|
|
func OkWithMessage(c *gin.Context, data interface{}, message string) {
|
|
c.JSON(http.StatusOK, gin.H{"success": true, "data": data, "message": message})
|
|
}
|
|
|
|
func Error(c *gin.Context, code int, message string) {
|
|
c.JSON(code, gin.H{"success": false, "message": message})
|
|
}
|
|
|
|
// VditorUploadOk Vditor 图片上传成功响应
|
|
// succMap: key=原始文件名, value=文件 URL
|
|
func VditorUploadOk(c *gin.Context, succMap map[string]string) {
|
|
c.JSON(http.StatusOK, gin.H{
|
|
"code": 0,
|
|
"msg": "",
|
|
"data": gin.H{
|
|
"errFiles": []string{},
|
|
"succMap": succMap,
|
|
},
|
|
})
|
|
}
|