mirror of
https://github.com/siyuan-note/siyuan.git
synced 2025-12-23 01:50:12 +01:00
This commit is contained in:
parent
2f8d75075e
commit
4bdc3536a3
3 changed files with 58 additions and 0 deletions
|
|
@ -30,6 +30,26 @@ import (
|
||||||
"github.com/siyuan-note/siyuan/kernel/util"
|
"github.com/siyuan-note/siyuan/kernel/util"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
func transferBlockRef(c *gin.Context) {
|
||||||
|
ret := gulu.Ret.NewResult()
|
||||||
|
defer c.JSON(http.StatusOK, ret)
|
||||||
|
|
||||||
|
arg, ok := util.JsonArg(c, ret)
|
||||||
|
if !ok {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
fromID := arg["fromID"].(string)
|
||||||
|
toID := arg["toID"].(string)
|
||||||
|
err := model.TransferBlockRef(fromID, toID)
|
||||||
|
if nil != err {
|
||||||
|
ret.Code = -1
|
||||||
|
ret.Msg = err.Error()
|
||||||
|
ret.Data = map[string]interface{}{"closeTimeout": 7000}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
func swapBlockRef(c *gin.Context) {
|
func swapBlockRef(c *gin.Context) {
|
||||||
ret := gulu.Ret.NewResult()
|
ret := gulu.Ret.NewResult()
|
||||||
defer c.JSON(http.StatusOK, ret)
|
defer c.JSON(http.StatusOK, ret)
|
||||||
|
|
|
||||||
|
|
@ -170,6 +170,7 @@ func ServeAPI(ginServer *gin.Engine) {
|
||||||
ginServer.Handle("POST", "/api/block/getHeadingChildrenIDs", model.CheckAuth, getHeadingChildrenIDs)
|
ginServer.Handle("POST", "/api/block/getHeadingChildrenIDs", model.CheckAuth, getHeadingChildrenIDs)
|
||||||
ginServer.Handle("POST", "/api/block/getHeadingChildrenDOM", model.CheckAuth, getHeadingChildrenDOM)
|
ginServer.Handle("POST", "/api/block/getHeadingChildrenDOM", model.CheckAuth, getHeadingChildrenDOM)
|
||||||
ginServer.Handle("POST", "/api/block/swapBlockRef", model.CheckAuth, swapBlockRef)
|
ginServer.Handle("POST", "/api/block/swapBlockRef", model.CheckAuth, swapBlockRef)
|
||||||
|
ginServer.Handle("POST", "/api/block/transferBlockRef", model.CheckAuth, transferBlockRef)
|
||||||
|
|
||||||
ginServer.Handle("POST", "/api/file/getFile", model.CheckAuth, getFile)
|
ginServer.Handle("POST", "/api/file/getFile", model.CheckAuth, getFile)
|
||||||
ginServer.Handle("POST", "/api/file/putFile", model.CheckAuth, putFile)
|
ginServer.Handle("POST", "/api/file/putFile", model.CheckAuth, putFile)
|
||||||
|
|
|
||||||
|
|
@ -115,6 +115,43 @@ func RecentUpdatedBlocks() (ret []*Block) {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TransferBlockRef(fromID, toID string) (err error) {
|
||||||
|
toTree, _ := loadTreeByBlockID(toID)
|
||||||
|
if nil == toTree {
|
||||||
|
err = ErrBlockNotFound
|
||||||
|
return
|
||||||
|
}
|
||||||
|
toNode := treenode.GetNodeInTree(toTree, toID)
|
||||||
|
if nil == toNode {
|
||||||
|
err = ErrBlockNotFound
|
||||||
|
return
|
||||||
|
}
|
||||||
|
toRefText := getNodeRefText(toNode)
|
||||||
|
|
||||||
|
refIDs, _ := sql.QueryRefIDsByDefID(fromID, false)
|
||||||
|
for _, refID := range refIDs {
|
||||||
|
tree, _ := loadTreeByBlockID(refID)
|
||||||
|
if nil == tree {
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
node := treenode.GetNodeInTree(tree, refID)
|
||||||
|
textMarks := node.ChildrenByType(ast.NodeTextMark)
|
||||||
|
for _, textMark := range textMarks {
|
||||||
|
if textMark.IsTextMarkType("block-ref") && textMark.TextMarkBlockRefID == fromID {
|
||||||
|
textMark.TextMarkBlockRefID = toID
|
||||||
|
if "s" == textMark.TextMarkBlockRefSubtype {
|
||||||
|
textMark.TextMarkTextContent = toRefText
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if err = indexWriteJSONQueue(tree); nil != err {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
func SwapBlockRef(refID, defID string, includeChildren bool) (err error) {
|
func SwapBlockRef(refID, defID string, includeChildren bool) (err error) {
|
||||||
refTree, err := loadTreeByBlockID(refID)
|
refTree, err := loadTreeByBlockID(refID)
|
||||||
if nil != err {
|
if nil != err {
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue