mirror of
https://github.com/siyuan-note/siyuan.git
synced 2025-12-23 18:10:12 +01:00
🎨 The database template field supports using other template fields https://github.com/siyuan-note/siyuan/issues/15517
This commit is contained in:
parent
dd3f5cfacf
commit
699afec920
2 changed files with 91 additions and 52 deletions
|
|
@ -1551,33 +1551,34 @@ func GetBlockAttributeViewKeys(nodeID string) (ret []*BlockAttributeViewKeys) {
|
|||
}
|
||||
|
||||
// 再处理模板字段
|
||||
|
||||
// 渲染模板
|
||||
templateKeys, _ := sql.GetTemplateKeysByResolutionOrder(attrView)
|
||||
var renderTemplateErr error
|
||||
for _, kv := range keyValues {
|
||||
switch kv.Key.Type {
|
||||
case av.KeyTypeTemplate:
|
||||
if 0 < len(kv.Values) {
|
||||
var ial map[string]string
|
||||
block := av.GetKeyBlockValue(keyValues)
|
||||
if nil != block && !block.IsDetached {
|
||||
ial = sql.GetBlockAttrs(block.BlockID)
|
||||
}
|
||||
if nil == ial {
|
||||
ial = map[string]string{}
|
||||
}
|
||||
if nil == kv.Values[0].Template {
|
||||
kv.Values[0] = av.GetAttributeViewDefaultValue(kv.Values[0].ID, kv.Key.ID, nodeID, kv.Key.Type)
|
||||
}
|
||||
for _, templateKey := range templateKeys {
|
||||
for _, kv := range keyValues {
|
||||
if kv.Key.ID != templateKey.ID || 1 > len(kv.Values) {
|
||||
continue
|
||||
}
|
||||
|
||||
var renderErr error
|
||||
kv.Values[0].Template.Content, renderErr = sql.RenderTemplateField(ial, keyValues, kv.Key.Template)
|
||||
if nil != renderErr {
|
||||
renderTemplateErr = fmt.Errorf("database [%s] template field [%s] rendering failed: %s", getAttrViewName(attrView), kv.Key.Name, renderErr)
|
||||
}
|
||||
var ial map[string]string
|
||||
block := av.GetKeyBlockValue(keyValues)
|
||||
if nil != block && !block.IsDetached {
|
||||
ial = sql.GetBlockAttrs(block.BlockID)
|
||||
}
|
||||
if nil == ial {
|
||||
ial = map[string]string{}
|
||||
}
|
||||
if nil == kv.Values[0].Template {
|
||||
kv.Values[0] = av.GetAttributeViewDefaultValue(kv.Values[0].ID, kv.Key.ID, nodeID, kv.Key.Type)
|
||||
}
|
||||
|
||||
var renderErr error
|
||||
kv.Values[0].Template.Content, renderErr = sql.RenderTemplateField(ial, keyValues, kv.Key.Template)
|
||||
if nil != renderErr {
|
||||
renderTemplateErr = fmt.Errorf("database [%s] template field [%s] rendering failed: %s", getAttrViewName(attrView), kv.Key.Name, renderErr)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if nil != renderTemplateErr {
|
||||
util.PushErrMsg(fmt.Sprintf(Conf.Language(44), util.EscapeHTML(renderTemplateErr.Error())), 30000)
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue