瀏覽代碼

:art: 块引用与所引用的内容块进行交换 https://github.com/siyuan-note/siyuan/issues/4981

Liang Ding 2 年之前
父節點
當前提交
a0988df153
共有 2 個文件被更改,包括 7 次插入4 次删除
  1. 2 1
      kernel/api/block.go
  2. 5 3
      kernel/model/block.go

+ 2 - 1
kernel/api/block.go

@@ -42,7 +42,8 @@ func swapBlockRef(c *gin.Context) {
 
 	refID := arg["refID"].(string)
 	defID := arg["defID"].(string)
-	err := model.SwapBlockRef(refID, defID)
+	includeChildren := arg["includeChildren"].(bool)
+	err := model.SwapBlockRef(refID, defID, includeChildren)
 	if nil != err {
 		ret.Code = -1
 		ret.Msg = err.Error()

+ 5 - 3
kernel/model/block.go

@@ -90,7 +90,7 @@ func RecentUpdatedBlocks() (ret []*Block) {
 	return
 }
 
-func SwapBlockRef(refID, defID string) (err error) {
+func SwapBlockRef(refID, defID string, includeChildren bool) (err error) {
 	refTree, err := loadTreeByBlockID(refID)
 	if nil != err {
 		return
@@ -112,6 +112,8 @@ func SwapBlockRef(refID, defID string) (err error) {
 	}
 	if ast.NodeListItem == defNode.Parent.Type {
 		defNode = defNode.Parent
+	} else if ast.NodeHeading == defNode.Type && includeChildren {
+
 	}
 
 	refPivot := parse.NewParagraph()
@@ -142,14 +144,14 @@ func SwapBlockRef(refID, defID string) (err error) {
 			li := &ast.Node{ID: newID, Type: ast.NodeListItem, ListData: &ast.ListData{Typ: refNode.Parent.ListData.Typ}}
 			li.SetIALAttr("id", newID)
 			li.SetIALAttr("updated", newID[:14])
-			li.AppendChild(refNode)
+			li.AppendChild(defNode)
 			refPivot.InsertAfter(li)
 
 			newID = ast.NewNodeID()
 			list := &ast.Node{ID: newID, Type: ast.NodeList, ListData: &ast.ListData{Typ: refNode.Parent.ListData.Typ}}
 			list.SetIALAttr("id", newID)
 			list.SetIALAttr("updated", newID[:14])
-			list.AppendChild(defNode)
+			list.AppendChild(refNode)
 			defNode.InsertAfter(list)
 		} else {
 			defNode.InsertAfter(refNode)