diff --git a/kernel/api/extension.go b/kernel/api/extension.go index 51be0800a..ca0547aea 100644 --- a/kernel/api/extension.go +++ b/kernel/api/extension.go @@ -238,6 +238,26 @@ func extensionCopy(c *gin.Context) { if "" != assetPath { dest.Tokens = []byte(assetPath) } + + // 检测 alt 和 title 格式,如果不是文本的话转换为文本 https://github.com/siyuan-note/siyuan/issues/14233 + if linkText := n.ChildByType(ast.NodeLinkText); nil != linkText { + if inlineTree := parse.Inline("", linkText.Tokens, luteEngine.ParseOptions); nil != inlineTree && nil != inlineTree.Root && nil != inlineTree.Root.FirstChild { + if fc := inlineTree.Root.FirstChild.FirstChild; nil != fc { + if ast.NodeText != fc.Type { + linkText.Tokens = []byte(fc.Text()) + } + } + } + } + if title := n.ChildByType(ast.NodeLinkTitle); nil != title { + if inlineTree := parse.Inline("", title.Tokens, luteEngine.ParseOptions); nil != inlineTree && nil != inlineTree.Root && nil != inlineTree.Root.FirstChild { + if fc := inlineTree.Root.FirstChild.FirstChild; nil != fc { + if ast.NodeText != fc.Type { + title.Tokens = []byte(fc.Text()) + } + } + } + } } } return ast.WalkContinue diff --git a/kernel/model/history.go b/kernel/model/history.go index cd98a0913..5ece95aee 100644 --- a/kernel/model/history.go +++ b/kernel/model/history.go @@ -245,7 +245,7 @@ func RollbackDocHistory(boxID, historyPath string) (err error) { } } - destPath, parentHPath, err = getRollbackDockPath(boxID, workingDoc) + destPath, parentHPath, err = getRollbackDockPath(boxID, historyPath, workingDoc) if err != nil { return } @@ -338,13 +338,16 @@ func RollbackDocHistory(boxID, historyPath string) (err error) { return nil } -func getRollbackDockPath(boxID string, workingDoc *treenode.BlockTree) (destPath, parentHPath string, err error) { - var parentID, baseName string +func getRollbackDockPath(boxID, historyPath string, workingDoc *treenode.BlockTree) (destPath, parentHPath string, err error) { + var parentID string + baseName := filepath.Base(historyPath) var parentWorkingDoc *treenode.BlockTree if nil != workingDoc { - baseName = path.Base(workingDoc.Path) parentID = path.Base(path.Dir(workingDoc.Path)) parentWorkingDoc = treenode.GetBlockTree(parentID) + } else { + parentID = filepath.Base(filepath.Dir(historyPath)) + parentWorkingDoc = treenode.GetBlockTree(parentID) } if nil != parentWorkingDoc {