浏览代码

:art: 文档树支持 `Ctrl+Click` 和 `Shift+↑/↓` 进行多选 https://github.com/siyuan-note/siyuan/issues/1359

Liang Ding 2 年之前
父节点
当前提交
e9d15ade00
共有 3 个文件被更改,包括 10 次插入75 次删除
  1. 0 33
      kernel/api/filetree.go
  2. 0 1
      kernel/api/router.go
  3. 10 41
      kernel/model/file.go

+ 0 - 33
kernel/api/filetree.go

@@ -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)

+ 0 - 1
kernel/api/router.go

@@ -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)

+ 10 - 41
kernel/model/file.go

@@ -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))