diff --git a/kernel/api/filetree.go b/kernel/api/filetree.go index 93b3ebd7d..8159d614c 100644 --- a/kernel/api/filetree.go +++ b/kernel/api/filetree.go @@ -481,6 +481,12 @@ func createDocWithMd(c *gin.Context) { parentID = parentIDArg.(string) } + showInDocTree := true + showInDocTreeArg := arg["showInDocTree"] + if nil != showInDocTreeArg { + showInDocTree = showInDocTreeArg.(bool) + } + hPath := arg["path"].(string) markdown := arg["markdown"].(string) @@ -496,7 +502,7 @@ func createDocWithMd(c *gin.Context) { hPath = "/" + hPath } - id, err := model.CreateWithMarkdown(notebook, hPath, markdown, parentID) + id, err := model.CreateWithMarkdown(notebook, hPath, markdown, parentID, showInDocTree) if nil != err { ret.Code = -1 ret.Msg = err.Error() diff --git a/kernel/model/file.go b/kernel/model/file.go index 7d30f9179..1d63ebbbd 100644 --- a/kernel/model/file.go +++ b/kernel/model/file.go @@ -285,12 +285,12 @@ func ListDocTree(boxID, path string, sortMode int, flashcard bool, maxListCount } parentDocPath := strings.TrimSuffix(file.path, "/") + ".sy" - subDocFile := box.Stat(parentDocPath) - if nil == subDocFile { + parentDocFile := box.Stat(parentDocPath) + if nil == parentDocFile { continue } if ial := box.docIAL(parentDocPath); nil != ial { - doc := box.docFromFileInfo(subDocFile, ial) + doc := box.docFromFileInfo(parentDocFile, ial) subFiles, err := os.ReadDir(filepath.Join(boxLocalPath, file.path)) if nil == err { for _, subFile := range subFiles { @@ -313,6 +313,7 @@ func ListDocTree(boxID, path string, sortMode int, flashcard bool, maxListCount docs = append(docs, doc) } } + continue } @@ -992,7 +993,7 @@ func CreateDocByMd(boxID, p, title, md string, sorts []string) (tree *parse.Tree luteEngine := util.NewLute() dom := luteEngine.Md2BlockDOM(md, false) - tree, err = createDoc(box.ID, p, title, dom) + tree, err = createDoc(box.ID, p, title, dom, true) if nil != err { return } @@ -1001,7 +1002,7 @@ func CreateDocByMd(boxID, p, title, md string, sorts []string) (tree *parse.Tree return } -func CreateWithMarkdown(boxID, hPath, md, parentID string) (id string, err error) { +func CreateWithMarkdown(boxID, hPath, md, parentID string, showInDocTree bool) (id string, err error) { box := Conf.Box(boxID) if nil == box { err = errors.New(Conf.Language(0)) @@ -1011,7 +1012,7 @@ func CreateWithMarkdown(boxID, hPath, md, parentID string) (id string, err error WaitForWritingFiles() luteEngine := util.NewLute() dom := luteEngine.Md2BlockDOM(md, false) - id, _, err = createDocsByHPath(box.ID, hPath, dom, parentID) + id, _, err = createDocsByHPath(box.ID, hPath, dom, parentID, showInDocTree) return } @@ -1414,7 +1415,7 @@ func CreateDailyNote(boxID string) (p string, existed bool, err error) { return } - id, existed, err := createDocsByHPath(box.ID, hPath, "", "") + id, existed, err := createDocsByHPath(box.ID, hPath, "", "", true) if nil != err { return } @@ -1459,7 +1460,7 @@ func CreateDailyNote(boxID string) (p string, existed bool, err error) { return } -func createDoc(boxID, p, title, dom string) (tree *parse.Tree, err error) { +func createDoc(boxID, p, title, dom string, showInDocTree bool) (tree *parse.Tree, err error) { title = gulu.Str.RemoveInvisible(title) if 512 < utf8.RuneCountInString(title) { // 限制笔记本名和文档名最大长度为 `512` https://github.com/siyuan-note/siyuan/issues/6299 @@ -1531,6 +1532,10 @@ func createDoc(boxID, p, title, dom string) (tree *parse.Tree, err error) { tree.Root.AppendChild(treenode.NewParagraph()) } + if !showInDocTree { + tree.Root.SetIALAttr("custom-hidden", "true") + } + transaction := &Transaction{DoOperations: []*Operation{{Action: "create", Data: tree}}} PerformTransactions(&[]*Transaction{transaction}) WaitForWritingFiles() diff --git a/kernel/model/path.go b/kernel/model/path.go index ee9fe774b..5e23996c3 100644 --- a/kernel/model/path.go +++ b/kernel/model/path.go @@ -33,7 +33,7 @@ import ( "github.com/siyuan-note/siyuan/kernel/util" ) -func createDocsByHPath(boxID, hPath, content, parentID string) (id string, existed bool, err error) { +func createDocsByHPath(boxID, hPath, content, parentID string, showInDocTree bool) (id string, existed bool, err error) { hPath = strings.TrimSuffix(hPath, ".sy") pathBuilder := bytes.Buffer{} pathBuilder.WriteString("/") @@ -51,7 +51,7 @@ func createDocsByHPath(boxID, hPath, content, parentID string) (id string, exist // 如果父文档存在且 ID 一致,则直接在父文档下创建 id = ast.NewNodeID() p := strings.TrimSuffix(preferredParent.Path, ".sy") + "/" + id + ".sy" - if _, err = createDoc(boxID, p, name, content); nil != err { + if _, err = createDoc(boxID, p, name, content, showInDocTree); nil != err { return } } @@ -68,11 +68,11 @@ func createDocsByHPath(boxID, hPath, content, parentID string) (id string, exist pathBuilder.WriteString(id) docP := pathBuilder.String() + ".sy" if isNotLast { - if _, err = createDoc(boxID, docP, part, ""); nil != err { + if _, err = createDoc(boxID, docP, part, "", showInDocTree); nil != err { return } } else { - if _, err = createDoc(boxID, docP, part, content); nil != err { + if _, err = createDoc(boxID, docP, part, content, showInDocTree); nil != err { return } }