diff --git a/kernel/api/export.go b/kernel/api/export.go index c5195d58e..e4e25680c 100644 --- a/kernel/api/export.go +++ b/kernel/api/export.go @@ -17,6 +17,7 @@ package api import ( + "io" "net/http" "os" "path" @@ -25,6 +26,7 @@ import ( "github.com/88250/gulu" "github.com/gin-gonic/gin" + "github.com/siyuan-note/logging" "github.com/siyuan-note/siyuan/kernel/model" "github.com/siyuan-note/siyuan/kernel/util" ) @@ -296,3 +298,37 @@ func exportPreview(c *gin.Context) { "html": stdHTML, } } + +func exportAsFile(c *gin.Context) { + ret := gulu.Ret.NewResult() + defer c.JSON(http.StatusOK, ret) + + form, err := c.MultipartForm() + if nil != err { + logging.LogErrorf("export as file failed: %s", err) + ret.Code = -1 + ret.Msg = err.Error() + return + } + + typ := form.Value["type"][0] + file := form.File["file"][0] + reader, err := file.Open() + if nil != err { + logging.LogErrorf("export as file failed: %s", err) + ret.Code = -1 + ret.Msg = err.Error() + return + } + defer reader.Close() + + data, err := io.ReadAll(reader) + if nil != err { + logging.LogErrorf("export as file failed: %s", err) + ret.Code = -1 + ret.Msg = err.Error() + return + } + + c.Data(http.StatusOK, typ, data) +} diff --git a/kernel/api/router.go b/kernel/api/router.go index 7b3effde4..89dc57a22 100644 --- a/kernel/api/router.go +++ b/kernel/api/router.go @@ -226,6 +226,7 @@ func ServeAPI(ginServer *gin.Engine) { ginServer.Handle("POST", "/api/export/exportDocx", model.CheckAuth, exportDocx) ginServer.Handle("POST", "/api/export/addPDFOutline", model.CheckAuth, addPDFOutline) ginServer.Handle("POST", "/api/export/preview", model.CheckAuth, exportPreview) + ginServer.Handle("POST", "/api/export/exportAsFile", model.CheckAuth, exportAsFile) ginServer.Handle("POST", "/api/export/exportData", model.CheckAuth, exportData) ginServer.Handle("POST", "/api/export/exportDataInFolder", model.CheckAuth, exportDataInFolder) ginServer.Handle("POST", "/api/export/exportTempContent", model.CheckAuth, exportTempContent) diff --git a/kernel/conf/export.go b/kernel/conf/export.go index 9cc5b9240..5876fe99b 100644 --- a/kernel/conf/export.go +++ b/kernel/conf/export.go @@ -33,7 +33,7 @@ func NewExport() *Export { return &Export{ ParagraphBeginningSpace: false, AddTitle: true, - BlockRefMode: 4, + BlockRefMode: 3, BlockEmbedMode: 1, BlockRefTextLeft: "", BlockRefTextRight: "", diff --git a/kernel/model/history.go b/kernel/model/history.go index 7d800b2eb..15c1bd060 100644 --- a/kernel/model/history.go +++ b/kernel/model/history.go @@ -202,6 +202,8 @@ func GetDocHistoryContent(historyPath, keyword string) (id, rootID, content stri historyTree = renderTree } + // 禁止文档历史内容可编辑 https://github.com/siyuan-note/siyuan/issues/6580 + luteEngine.RenderOptions.ProtyleContenteditable = false if isLargeDoc { util.PushMsg(Conf.Language(36), 5000) formatRenderer := render.NewFormatRenderer(historyTree, luteEngine.RenderOptions)