🎨 文档树支持 Ctrl+ClickShift+↑/↓ 进行多选 https://github.com/siyuan-note/siyuan/issues/1359

This commit is contained in:
Liang Ding 2022-11-04 21:44:09 +08:00
parent e3a6bb2251
commit e9d15ade00
No known key found for this signature in database
GPG key ID: 136F30F901A2231D
3 changed files with 10 additions and 75 deletions

View file

@ -257,39 +257,6 @@ func getFullHPathByID(c *gin.Context) {
ret.Data = hPath
}
func moveDoc(c *gin.Context) {
ret := gulu.Ret.NewResult()
defer c.JSON(http.StatusOK, ret)
arg, ok := util.JsonArg(c, ret)
if !ok {
return
}
fromNotebook := arg["fromNotebook"].(string)
toNotebook := arg["toNotebook"].(string)
fromPath := arg["fromPath"].(string)
toPath := arg["toPath"].(string)
newPath, err := model.MoveDoc(fromNotebook, fromPath, toNotebook, toPath)
if nil != err {
ret.Code = -1
ret.Msg = err.Error()
ret.Data = map[string]interface{}{"closeTimeout": 7000}
return
}
evt := util.NewCmdResult("moveDoc", 0, util.PushModeBroadcast, util.PushModeNone)
evt.Data = map[string]interface{}{
"fromNotebook": fromNotebook,
"toNotebook": toNotebook,
"fromPath": fromPath,
"toPath": toPath,
"newPath": newPath,
}
util.PushEvent(evt)
}
func moveDocs(c *gin.Context) {
ret := gulu.Ret.NewResult()
defer c.JSON(http.StatusOK, ret)

View file

@ -88,7 +88,6 @@ func ServeAPI(ginServer *gin.Engine) {
ginServer.Handle("POST", "/api/filetree/renameDoc", model.CheckAuth, model.CheckReadonly, renameDoc)
ginServer.Handle("POST", "/api/filetree/removeDoc", model.CheckAuth, model.CheckReadonly, removeDoc)
ginServer.Handle("POST", "/api/filetree/removeDocs", model.CheckAuth, model.CheckReadonly, removeDocs)
ginServer.Handle("POST", "/api/filetree/moveDoc", model.CheckAuth, model.CheckReadonly, moveDoc)
ginServer.Handle("POST", "/api/filetree/moveDocs", model.CheckAuth, model.CheckReadonly, moveDocs)
ginServer.Handle("POST", "/api/filetree/duplicateDoc", model.CheckAuth, model.CheckReadonly, duplicateDoc)
ginServer.Handle("POST", "/api/filetree/getHPathByPath", model.CheckAuth, getHPathByPath)

View file

@ -1005,47 +1005,6 @@ func GetFullHPathByID(id string) (hPath string, err error) {
return
}
func MoveDoc(fromBoxID, fromPath, toBoxID, toPath string) (newPath string, err error) {
WaitForWritingFiles()
if fromBoxID == toBoxID && fromPath == toPath {
return
}
fromDir := strings.TrimSuffix(fromPath, ".sy")
if strings.HasPrefix(toPath, fromDir) {
err = errors.New(Conf.Language(87))
return
}
fromBox := Conf.Box(fromBoxID)
if nil == fromBox {
err = errors.New(Conf.Language(0))
return
}
childDepth := util.GetChildDocDepth(filepath.Join(util.DataDir, fromBoxID, fromPath))
if depth := strings.Count(toPath, "/") + childDepth; 6 < depth && !Conf.FileTree.AllowCreateDeeper {
err = errors.New(Conf.Language(118))
return
}
toBox := Conf.Box(toBoxID)
if nil == toBox {
err = errors.New(Conf.Language(0))
return
}
newPath, err = moveDoc(fromBox, fromPath, toBox, toPath)
if nil != err {
return
}
cache.ClearDocsIAL()
IncSync()
return
}
func MoveDocs(fromPaths []string, toBoxID, toPath string) (err error) {
toBox := Conf.Box(toBoxID)
if nil == toBox {
@ -1060,6 +1019,16 @@ func MoveDocs(fromPaths []string, toBoxID, toPath string) (err error) {
fromPaths = util.FilterMoveDocFromPaths(fromPaths, toPath)
}
pathsBoxes := getBoxesByPaths(fromPaths)
// 检查路径深度是否超过限制
for fromPath, fromBox := range pathsBoxes {
childDepth := util.GetChildDocDepth(filepath.Join(util.DataDir, fromBox.ID, fromPath))
if depth := strings.Count(toPath, "/") + childDepth; 6 < depth && !Conf.FileTree.AllowCreateDeeper {
err = errors.New(Conf.Language(118))
return
}
}
needShowProgress := 32 < len(fromPaths)
if needShowProgress {
util.PushEndlessProgress(Conf.Language(116))