feat(编辑交互): 优化文档配置与编辑交互
build.yaml / build (push) Successful in 50s

This commit is contained in:
xiaoqidun committed 2026-10-13 18:29:21 +08:00
1 parent 0afb368829
commit 6d782de471
6 files changed
+606 -76

No files matched your search

+46
View File
@@ -21,6 +21,14 @@ import (
"path"
)
// TemplateReference 普通页面的模板引用,保留原始模板标识及绑定层次。
// PageIndex为当前文档的零基页面索引,PageID为页面标识;ZOrder为空表示沿用模板默认层次。
type TemplateReference struct {
PageIndex int
PageID string
Template
}
// Templates 返回当前文档及所选版本的模板定义副本,省略的ZOrder返回Background。
// 返回: []TemplatePage 独立模板清单, error 文档读取错误
func (e *Editor) Templates() ([]TemplatePage, error) {
@@ -59,6 +67,44 @@ func (e *Editor) PageTemplates(page int) ([]Template, error) {
return append([]Template{}, p.Template...), nil
}
// TemplateReferences 返回当前文档及所选版本全部普通页面的模板引用副本,不包含模板页自身引用。
// 清单按页面索引及页内引用文件顺序排列,无引用时返回空切片,读取失败时不返回部分结果。
// 返回: []TemplateReference 引用定位及绑定层次清单, error 页面读取错误
func (e *Editor) TemplateReferences() ([]TemplateReference, error) {
result := []TemplateReference{}
for i := range e.pages {
refs, err := e.PageTemplates(i)
if err != nil {
return nil, err
}
for _, ref := range refs {
result = append(result, TemplateReference{PageIndex: i, PageID: e.pages[i].ID, Template: ref})
}
}
return result, nil
}
// TemplateReferences 只读枚举当前文档及所选版本全部普通页面的模板引用,不创建编辑器或遍历其他文档、版本。
// 返回独立副本,按页面索引及页内引用文件顺序排列;无引用时返回空切片,读取失败时不返回部分结果。
// 返回: []TemplateReference 引用定位及绑定层次清单, error 文档或页面读取错误
func (r *Reader) TemplateReferences() ([]TemplateReference, error) {
doc, err := r.Doc()
if err != nil {
return nil, err
}
result := []TemplateReference{}
for i, item := range doc.Pages.Page {
page, err := r.PageContentByIndex(i)
if err != nil {
return nil, err
}
for _, ref := range page.Template {
result = append(result, TemplateReference{PageIndex: i, PageID: item.ID, Template: ref})
}
}
return result, nil
}
// BindTemplate 在页面末尾绑定模板,空ZOrder沿用模板默认层次,重复绑定拒绝。
// 入参: page 页面索引, id 模板标识, zOrder 页面覆盖层次
// 返回: error 标识、层次或重复绑定错误