diff --git a/kernel/av/value.go b/kernel/av/value.go index b50d133ef..f7c3b3289 100644 --- a/kernel/av/value.go +++ b/kernel/av/value.go @@ -371,6 +371,7 @@ func (value *Value) GetValByType(typ KeyType) (ret interface{}) { type ValueBlock struct { ID string `json:"id"` + Icon string `json:"icon"` Content string `json:"content"` Created int64 `json:"created"` Updated int64 `json:"updated"` diff --git a/kernel/model/attribute_view.go b/kernel/model/attribute_view.go index 32acba973..c821a70eb 100644 --- a/kernel/model/attribute_view.go +++ b/kernel/model/attribute_view.go @@ -1980,8 +1980,9 @@ func addAttributeViewBlock(now int64, avID, blockID, previousBlockID, addingBloc return } + var blockIcon string if !isDetached { - addingBlockContent = getNodeAvBlockText(node) + blockIcon, addingBlockContent = getNodeAvBlockText(node) } // 检查是否重复添加相同的块 @@ -1992,6 +1993,7 @@ func addAttributeViewBlock(now int64, avID, blockID, previousBlockID, addingBloc // 重复绑定一下,比如剪切数据库块、取消绑定块后再次添加的场景需要 bindBlockAv0(tx, avID, node, tree) blockValue.IsDetached = isDetached + blockValue.Block.Icon = blockIcon blockValue.Block.Content = addingBlockContent blockValue.UpdatedAt = now err = av.SaveAttributeView(attrView) @@ -2936,7 +2938,7 @@ func replaceAttributeViewBlock(operation *Operation, tx *Transaction) (err error if !operation.IsDetached { bindBlockAv0(tx, operation.AvID, node, tree) value.IsDetached = false - value.Block.Content = getNodeAvBlockText(node) + value.Block.Icon, value.Block.Content = getNodeAvBlockText(node) value.UpdatedAt = now err = av.SaveAttributeView(attrView) } @@ -2973,7 +2975,7 @@ func replaceAttributeViewBlock(operation *Operation, tx *Transaction) (err error value.Block.ID = operation.NextID value.IsDetached = operation.IsDetached if !operation.IsDetached { - value.Block.Content = getNodeAvBlockText(node) + value.Block.Icon, value.Block.Content = getNodeAvBlockText(node) } } diff --git a/kernel/model/blockinfo.go b/kernel/model/blockinfo.go index 7b844d6d9..760d74b9e 100644 --- a/kernel/model/blockinfo.go +++ b/kernel/model/blockinfo.go @@ -268,22 +268,19 @@ func getNodeRefText(node *ast.Node) string { return getNodeRefText0(node, Conf.Editor.BlockRefDynamicAnchorTextMaxLen) } -func getNodeAvBlockText(node *ast.Node) (ret string) { +func getNodeAvBlockText(node *ast.Node) (icon, content string) { if nil == node { - return "" + return } + icon = node.IALAttr("icon") if name := node.IALAttr("name"); "" != name { name = strings.TrimSpace(name) name = util.EscapeHTML(name) - ret = name + content = name } else { - ret = getNodeRefText0(node, 1024) + content = getNodeRefText0(node, 1024) } - - //if icon := node.IALAttr("icon"); "" != icon { - // ret = icon + " " + ret - //} return } diff --git a/kernel/model/push_reload.go b/kernel/model/push_reload.go index bc54bc0b3..5c58b66a5 100644 --- a/kernel/model/push_reload.go +++ b/kernel/model/push_reload.go @@ -269,7 +269,11 @@ func refreshDynamicRefTexts(updatedDefNodes map[string]*ast.Node, updatedTrees m for _, blockValue := range blockValues.Values { if blockValue.Block.ID == updatedDefNode.ID { - newContent := getNodeAvBlockText(updatedDefNode) + newIcon, newContent := getNodeAvBlockText(updatedDefNode) + if newIcon != blockValue.Block.Icon { + blockValue.Block.Icon = newIcon + changedAv = true + } if newContent != blockValue.Block.Content { blockValue.Block.Content = newContent changedAv = true