Procházet zdrojové kódy

Merge remote-tracking branch 'origin/dev' into dev

Vanessa před 8 měsíci
rodič
revize
cca0ef4e37
4 změnil soubory, kde provedl 27 přidání a 13 odebrání
  1. 12 4
      kernel/api/ref.go
  2. 6 6
      kernel/model/backlink.go
  3. 1 1
      kernel/model/block.go
  4. 8 2
      kernel/model/blockinfo.go

+ 12 - 4
kernel/api/ref.go

@@ -51,7 +51,7 @@ func getBackmentionDoc(c *gin.Context) {
 	defID := arg["defID"].(string)
 	refTreeID := arg["refTreeID"].(string)
 	keyword := arg["keyword"].(string)
-	containChildren := true
+	containChildren := false
 	if val, ok := arg["containChildren"]; ok {
 		containChildren = val.(bool)
 	}
@@ -73,7 +73,7 @@ func getBacklinkDoc(c *gin.Context) {
 	defID := arg["defID"].(string)
 	refTreeID := arg["refTreeID"].(string)
 	keyword := arg["keyword"].(string)
-	containChildren := true
+	containChildren := false
 	if val, ok := arg["containChildren"]; ok {
 		containChildren = val.(bool)
 	}
@@ -109,7 +109,11 @@ func getBacklink2(c *gin.Context) {
 	if nil != mentionSortArg {
 		mentionSort, _ = strconv.Atoi(mentionSortArg.(string))
 	}
-	boxID, backlinks, backmentions, linkRefsCount, mentionsCount := model.GetBacklink2(id, keyword, mentionKeyword, sort, mentionSort)
+	containChildren := false
+	if val, ok := arg["containChildren"]; ok {
+		containChildren = val.(bool)
+	}
+	boxID, backlinks, backmentions, linkRefsCount, mentionsCount := model.GetBacklink2(id, keyword, mentionKeyword, sort, mentionSort, containChildren)
 	ret.Data = map[string]interface{}{
 		"backlinks":     backlinks,
 		"linkRefsCount": linkRefsCount,
@@ -141,7 +145,11 @@ func getBacklink(c *gin.Context) {
 	if nil != arg["beforeLen"] {
 		beforeLen = int(arg["beforeLen"].(float64))
 	}
-	boxID, backlinks, backmentions, linkRefsCount, mentionsCount := model.GetBacklink(id, keyword, mentionKeyword, beforeLen)
+	containChildren := false
+	if val, ok := arg["containChildren"]; ok {
+		containChildren = val.(bool)
+	}
+	boxID, backlinks, backmentions, linkRefsCount, mentionsCount := model.GetBacklink(id, keyword, mentionKeyword, beforeLen, containChildren)
 	ret.Data = map[string]interface{}{
 		"backlinks":     backlinks,
 		"linkRefsCount": linkRefsCount,

+ 6 - 6
kernel/model/backlink.go

@@ -171,10 +171,10 @@ func buildBacklink(refID string, refTree *parse.Tree, keywords []string, luteEng
 
 	dom := renderBlockDOMByNodes(renderNodes, luteEngine)
 	blockPaths := []*BlockPath{}
-	if nil != n.Parent && nil != n.Parent.Parent {
+	if nil != n.Parent && ast.NodeDocument != n.Parent.Type && nil != n.Parent.Parent && ast.NodeDocument != n.Parent.Parent.Type {
 		// 仅在多余一层时才显示面包屑,这样界面展示更加简洁
 		// The backlink panel no longer displays breadcrumbs of the first-level blocks https://github.com/siyuan-note/siyuan/issues/12862
-		blockPaths = buildBlockBreadcrumb(n, nil)
+		blockPaths = buildBlockBreadcrumb(n, nil, false)
 	}
 	ret = &Backlink{DOM: dom, BlockPaths: blockPaths, Expand: expand}
 	return
@@ -230,7 +230,7 @@ func getBacklinkRenderNodes(n *ast.Node) (ret []*ast.Node, expand bool) {
 	return
 }
 
-func GetBacklink2(id, keyword, mentionKeyword string, sortMode, mentionSortMode int) (boxID string, backlinks, backmentions []*Path, linkRefsCount, mentionsCount int) {
+func GetBacklink2(id, keyword, mentionKeyword string, sortMode, mentionSortMode int, containChildren bool) (boxID string, backlinks, backmentions []*Path, linkRefsCount, mentionsCount int) {
 	keyword = strings.TrimSpace(keyword)
 	mentionKeyword = strings.TrimSpace(mentionKeyword)
 	backlinks, backmentions = []*Path{}, []*Path{}
@@ -242,7 +242,7 @@ func GetBacklink2(id, keyword, mentionKeyword string, sortMode, mentionSortMode
 	rootID := sqlBlock.RootID
 	boxID = sqlBlock.Box
 
-	refs := sql.QueryRefsByDefID(id, false)
+	refs := sql.QueryRefsByDefID(id, containChildren)
 	refs = removeDuplicatedRefs(refs)
 
 	linkRefs, linkRefsCount, excludeBacklinkIDs := buildLinkRefs(rootID, refs, keyword)
@@ -328,7 +328,7 @@ func GetBacklink2(id, keyword, mentionKeyword string, sortMode, mentionSortMode
 	return
 }
 
-func GetBacklink(id, keyword, mentionKeyword string, beforeLen int) (boxID string, linkPaths, mentionPaths []*Path, linkRefsCount, mentionsCount int) {
+func GetBacklink(id, keyword, mentionKeyword string, beforeLen int, containChildren bool) (boxID string, linkPaths, mentionPaths []*Path, linkRefsCount, mentionsCount int) {
 	linkPaths = []*Path{}
 	mentionPaths = []*Path{}
 
@@ -340,7 +340,7 @@ func GetBacklink(id, keyword, mentionKeyword string, beforeLen int) (boxID strin
 	boxID = sqlBlock.Box
 
 	var links []*Block
-	refs := sql.QueryRefsByDefID(id, false)
+	refs := sql.QueryRefsByDefID(id, containChildren)
 	refs = removeDuplicatedRefs(refs)
 
 	// 为了减少查询,组装好 IDs 后一次查出

+ 1 - 1
kernel/model/block.go

@@ -887,7 +887,7 @@ func getEmbeddedBlock(trees map[string]*parse.Tree, sqlBlock *sql.Block, heading
 	}
 
 	if breadcrumb {
-		blockPaths = buildBlockBreadcrumb(def, nil)
+		blockPaths = buildBlockBreadcrumb(def, nil, true)
 	}
 	if 1 > len(blockPaths) {
 		blockPaths = []*BlockPath{}

+ 8 - 2
kernel/model/blockinfo.go

@@ -416,11 +416,11 @@ func BuildBlockBreadcrumb(id string, excludeTypes []string) (ret []*BlockPath, e
 		return
 	}
 
-	ret = buildBlockBreadcrumb(node, excludeTypes)
+	ret = buildBlockBreadcrumb(node, excludeTypes, true)
 	return
 }
 
-func buildBlockBreadcrumb(node *ast.Node, excludeTypes []string) (ret []*BlockPath) {
+func buildBlockBreadcrumb(node *ast.Node, excludeTypes []string, displayCurrentNodeContent bool) (ret []*BlockPath) {
 	ret = []*BlockPath{}
 	if nil == node {
 		return
@@ -480,6 +480,12 @@ func buildBlockBreadcrumb(node *ast.Node, excludeTypes []string) (ret []*BlockPa
 
 		name = strings.ReplaceAll(name, editor.Caret, "")
 		name = util.EscapeHTML(name)
+
+		if parent == node && !displayCurrentNodeContent {
+			// 反链中不显示当前块内容 https://github.com/siyuan-note/siyuan/issues/12862#issuecomment-2426406327
+			name = ""
+		}
+
 		if add {
 			ret = append([]*BlockPath{{
 				ID:      id,