mirror of
https://github.com/siyuan-note/siyuan.git
synced 2026-03-04 11:50:15 +01:00
🎨 Support exporting .sy.zip after selecting multiple documents https://github.com/siyuan-note/siyuan/issues/14484
Signed-off-by: Daniel <845765@qq.com>
This commit is contained in:
parent
315618a77c
commit
65532aec99
4 changed files with 51 additions and 20 deletions
|
|
@ -406,6 +406,27 @@ func exportNotebookSY(c *gin.Context) {
|
|||
}
|
||||
}
|
||||
|
||||
func exportSYs(c *gin.Context) {
|
||||
ret := gulu.Ret.NewResult()
|
||||
defer c.JSON(http.StatusOK, ret)
|
||||
|
||||
arg, ok := util.JsonArg(c, ret)
|
||||
if !ok {
|
||||
return
|
||||
}
|
||||
|
||||
idsArg := arg["ids"].([]interface{})
|
||||
var ids []string
|
||||
for _, id := range idsArg {
|
||||
ids = append(ids, id.(string))
|
||||
}
|
||||
|
||||
zipPath := model.ExportSYs(ids)
|
||||
ret.Data = map[string]interface{}{
|
||||
"zip": zipPath,
|
||||
}
|
||||
}
|
||||
|
||||
func exportSY(c *gin.Context) {
|
||||
ret := gulu.Ret.NewResult()
|
||||
defer c.JSON(http.StatusOK, ret)
|
||||
|
|
@ -416,10 +437,9 @@ func exportSY(c *gin.Context) {
|
|||
}
|
||||
|
||||
id := arg["id"].(string)
|
||||
name, zipPath := model.ExportSY(id)
|
||||
zipPath := model.ExportSYs([]string{id})
|
||||
ret.Data = map[string]interface{}{
|
||||
"name": name,
|
||||
"zip": zipPath,
|
||||
"zip": zipPath,
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -315,6 +315,7 @@ func ServeAPI(ginServer *gin.Engine) {
|
|||
ginServer.Handle("POST", "/api/export/exportNotebookMd", model.CheckAuth, model.CheckAdminRole, exportNotebookMd)
|
||||
ginServer.Handle("POST", "/api/export/exportMds", model.CheckAuth, model.CheckAdminRole, exportMds)
|
||||
ginServer.Handle("POST", "/api/export/exportMd", model.CheckAuth, model.CheckAdminRole, exportMd)
|
||||
ginServer.Handle("POST", "/api/export/exportSYs", model.CheckAuth, model.CheckAdminRole, exportSYs)
|
||||
ginServer.Handle("POST", "/api/export/exportSY", model.CheckAuth, model.CheckAdminRole, exportSY)
|
||||
ginServer.Handle("POST", "/api/export/exportNotebookSY", model.CheckAuth, model.CheckAdminRole, exportNotebookSY)
|
||||
ginServer.Handle("POST", "/api/export/exportMdContent", model.CheckAuth, model.CheckAdminRole, exportMdContent)
|
||||
|
|
|
|||
|
|
@ -451,27 +451,24 @@ func ExportNotebookSY(id string) (zipPath string) {
|
|||
return
|
||||
}
|
||||
|
||||
func ExportSY(id string) (name, zipPath string) {
|
||||
block := treenode.GetBlockTree(id)
|
||||
if nil == block {
|
||||
logging.LogErrorf("not found block [%s]", id)
|
||||
return
|
||||
}
|
||||
|
||||
boxID := block.BoxID
|
||||
box := Conf.Box(boxID)
|
||||
func ExportSYs(ids []string) (zipPath string) {
|
||||
block := treenode.GetBlockTree(ids[0])
|
||||
box := Conf.Box(block.BoxID)
|
||||
baseFolderName := path.Base(block.HPath)
|
||||
if "." == baseFolderName {
|
||||
baseFolderName = path.Base(block.Path)
|
||||
}
|
||||
rootPath := block.Path
|
||||
docPaths := []string{rootPath}
|
||||
docFiles := box.ListFiles(strings.TrimSuffix(block.Path, ".sy"))
|
||||
for _, docFile := range docFiles {
|
||||
docPaths = append(docPaths, docFile.path)
|
||||
|
||||
var docPaths []string
|
||||
bts := treenode.GetBlockTrees(ids)
|
||||
for _, bt := range bts {
|
||||
docPaths = append(docPaths, bt.Path)
|
||||
docFiles := box.ListFiles(strings.TrimSuffix(bt.Path, ".sy"))
|
||||
for _, docFile := range docFiles {
|
||||
docPaths = append(docPaths, docFile.path)
|
||||
}
|
||||
}
|
||||
zipPath = exportSYZip(boxID, path.Dir(rootPath), baseFolderName, docPaths)
|
||||
name = util.GetTreeID(block.Path)
|
||||
zipPath = exportSYZip(block.BoxID, path.Dir(block.Path), baseFolderName, docPaths)
|
||||
return
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue