mirror of
				https://github.com/TriliumNext/Notes.git
				synced 2025-11-04 07:01:31 +08:00 
			
		
		
		
	feat(in-app-help): disable adding child notes
This commit is contained in:
		
							parent
							
								
									989918efe6
								
							
						
					
					
						commit
						aca0588b26
					
				@ -52,7 +52,7 @@ export default class TreeContextMenu implements SelectMenuItemEventListener<Tree
 | 
				
			|||||||
        const noSelectedNotes = selNodes.length === 0 || (selNodes.length === 1 && selNodes[0] === this.node);
 | 
					        const noSelectedNotes = selNodes.length === 0 || (selNodes.length === 1 && selNodes[0] === this.node);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        const notSearch = note?.type !== "search";
 | 
					        const notSearch = note?.type !== "search";
 | 
				
			||||||
        const notOptions = !note?.noteId.startsWith("_options");
 | 
					        const notOptionsOrHelp = !note?.noteId.startsWith("_options") && !note?.noteId.startsWith("_help");
 | 
				
			||||||
        const parentNotSearch = !parentNote || parentNote.type !== "search";
 | 
					        const parentNotSearch = !parentNote || parentNote.type !== "search";
 | 
				
			||||||
        const insertNoteAfterEnabled = isNotRoot && !isHoisted && parentNotSearch;
 | 
					        const insertNoteAfterEnabled = isNotRoot && !isHoisted && parentNotSearch;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -80,7 +80,7 @@ export default class TreeContextMenu implements SelectMenuItemEventListener<Tree
 | 
				
			|||||||
                command: "insertNoteAfter",
 | 
					                command: "insertNoteAfter",
 | 
				
			||||||
                uiIcon: "bx bx-plus",
 | 
					                uiIcon: "bx bx-plus",
 | 
				
			||||||
                items: insertNoteAfterEnabled ? await noteTypesService.getNoteTypeItems("insertNoteAfter") : null,
 | 
					                items: insertNoteAfterEnabled ? await noteTypesService.getNoteTypeItems("insertNoteAfter") : null,
 | 
				
			||||||
                enabled: insertNoteAfterEnabled && noSelectedNotes && notOptions
 | 
					                enabled: insertNoteAfterEnabled && noSelectedNotes && notOptionsOrHelp
 | 
				
			||||||
            },
 | 
					            },
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            {
 | 
					            {
 | 
				
			||||||
@ -88,7 +88,7 @@ export default class TreeContextMenu implements SelectMenuItemEventListener<Tree
 | 
				
			|||||||
                command: "insertChildNote",
 | 
					                command: "insertChildNote",
 | 
				
			||||||
                uiIcon: "bx bx-plus",
 | 
					                uiIcon: "bx bx-plus",
 | 
				
			||||||
                items: notSearch ? await noteTypesService.getNoteTypeItems("insertChildNote") : null,
 | 
					                items: notSearch ? await noteTypesService.getNoteTypeItems("insertChildNote") : null,
 | 
				
			||||||
                enabled: notSearch && noSelectedNotes && notOptions
 | 
					                enabled: notSearch && noSelectedNotes && notOptionsOrHelp
 | 
				
			||||||
            },
 | 
					            },
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            { title: "----" },
 | 
					            { title: "----" },
 | 
				
			||||||
@ -112,14 +112,14 @@ export default class TreeContextMenu implements SelectMenuItemEventListener<Tree
 | 
				
			|||||||
                        title: `${t("tree-context-menu.edit-branch-prefix")} <kbd data-command="editBranchPrefix"></kbd>`,
 | 
					                        title: `${t("tree-context-menu.edit-branch-prefix")} <kbd data-command="editBranchPrefix"></kbd>`,
 | 
				
			||||||
                        command: "editBranchPrefix",
 | 
					                        command: "editBranchPrefix",
 | 
				
			||||||
                        uiIcon: "bx bx-rename",
 | 
					                        uiIcon: "bx bx-rename",
 | 
				
			||||||
                        enabled: isNotRoot && parentNotSearch && noSelectedNotes && notOptions
 | 
					                        enabled: isNotRoot && parentNotSearch && noSelectedNotes && notOptionsOrHelp
 | 
				
			||||||
                    },
 | 
					                    },
 | 
				
			||||||
                    { title: t("tree-context-menu.convert-to-attachment"), command: "convertNoteToAttachment", uiIcon: "bx bx-paperclip", enabled: isNotRoot && !isHoisted && notOptions },
 | 
					                    { title: t("tree-context-menu.convert-to-attachment"), command: "convertNoteToAttachment", uiIcon: "bx bx-paperclip", enabled: isNotRoot && !isHoisted && notOptionsOrHelp },
 | 
				
			||||||
                    {
 | 
					                    {
 | 
				
			||||||
                        title: `${t("tree-context-menu.duplicate-subtree")} <kbd data-command="duplicateSubtree">`,
 | 
					                        title: `${t("tree-context-menu.duplicate-subtree")} <kbd data-command="duplicateSubtree">`,
 | 
				
			||||||
                        command: "duplicateSubtree",
 | 
					                        command: "duplicateSubtree",
 | 
				
			||||||
                        uiIcon: "bx bx-outline",
 | 
					                        uiIcon: "bx bx-outline",
 | 
				
			||||||
                        enabled: parentNotSearch && isNotRoot && !isHoisted && notOptions
 | 
					                        enabled: parentNotSearch && isNotRoot && !isHoisted && notOptionsOrHelp
 | 
				
			||||||
                    },
 | 
					                    },
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                    { title: "----" },
 | 
					                    { title: "----" },
 | 
				
			||||||
@ -136,7 +136,7 @@ export default class TreeContextMenu implements SelectMenuItemEventListener<Tree
 | 
				
			|||||||
                    { title: "----" },
 | 
					                    { title: "----" },
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                    { title: t("tree-context-menu.copy-note-path-to-clipboard"), command: "copyNotePathToClipboard", uiIcon: "bx bx-directions", enabled: true },
 | 
					                    { title: t("tree-context-menu.copy-note-path-to-clipboard"), command: "copyNotePathToClipboard", uiIcon: "bx bx-directions", enabled: true },
 | 
				
			||||||
                    { title: t("tree-context-menu.recent-changes-in-subtree"), command: "recentChangesInSubtree", uiIcon: "bx bx-history", enabled: noSelectedNotes && notOptions }
 | 
					                    { title: t("tree-context-menu.recent-changes-in-subtree"), command: "recentChangesInSubtree", uiIcon: "bx bx-history", enabled: noSelectedNotes && notOptionsOrHelp }
 | 
				
			||||||
                ]
 | 
					                ]
 | 
				
			||||||
            },
 | 
					            },
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -178,14 +178,14 @@ export default class TreeContextMenu implements SelectMenuItemEventListener<Tree
 | 
				
			|||||||
                title: `${t("tree-context-menu.delete")} <kbd data-command="deleteNotes"></kbd>`,
 | 
					                title: `${t("tree-context-menu.delete")} <kbd data-command="deleteNotes"></kbd>`,
 | 
				
			||||||
                command: "deleteNotes",
 | 
					                command: "deleteNotes",
 | 
				
			||||||
                uiIcon: "bx bx-trash destructive-action-icon",
 | 
					                uiIcon: "bx bx-trash destructive-action-icon",
 | 
				
			||||||
                enabled: isNotRoot && !isHoisted && parentNotSearch && notOptions
 | 
					                enabled: isNotRoot && !isHoisted && parentNotSearch && notOptionsOrHelp
 | 
				
			||||||
            },
 | 
					            },
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            { title: "----" },
 | 
					            { title: "----" },
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            { title: t("tree-context-menu.import-into-note"), command: "importIntoNote", uiIcon: "bx bx-import", enabled: notSearch && noSelectedNotes && notOptions },
 | 
					            { title: t("tree-context-menu.import-into-note"), command: "importIntoNote", uiIcon: "bx bx-import", enabled: notSearch && noSelectedNotes && notOptionsOrHelp },
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            { title: t("tree-context-menu.export"), command: "exportNote", uiIcon: "bx bx-export", enabled: notSearch && noSelectedNotes && notOptions },
 | 
					            { title: t("tree-context-menu.export"), command: "exportNote", uiIcon: "bx bx-export", enabled: notSearch && noSelectedNotes && notOptionsOrHelp },
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            { title: "----" },
 | 
					            { title: "----" },
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
@ -550,7 +550,12 @@ export default class NoteTreeWidget extends NoteContextAwareWidget {
 | 
				
			|||||||
                    $span.append($refreshSearchButton);
 | 
					                    $span.append($refreshSearchButton);
 | 
				
			||||||
                }
 | 
					                }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                if (!["search", "launcher"].includes(note.type) && !note.isOptions() && !note.isLaunchBarConfig()) {
 | 
					                // TODO: Deduplicate with server's notes.ts#getAndValidateParent
 | 
				
			||||||
 | 
					                if (!["search", "launcher"].includes(note.type)
 | 
				
			||||||
 | 
					                        && !note.isOptions()
 | 
				
			||||||
 | 
					                        && !note.isLaunchBarConfig()
 | 
				
			||||||
 | 
					                        && !note.noteId.startsWith("_help")
 | 
				
			||||||
 | 
					                    ) {
 | 
				
			||||||
                    const $createChildNoteButton = $(`<span class="tree-item-button add-note-button bx bx-plus" title="${t("note_tree.create-child-note")}"></span>`).on(
 | 
					                    const $createChildNoteButton = $(`<span class="tree-item-button add-note-button bx bx-plus" title="${t("note_tree.create-child-note")}"></span>`).on(
 | 
				
			||||||
                        "click",
 | 
					                        "click",
 | 
				
			||||||
                        cancelClickPropagation
 | 
					                        cancelClickPropagation
 | 
				
			||||||
 | 
				
			|||||||
@ -146,7 +146,10 @@ function getAndValidateParent(params: GetValidateParams) {
 | 
				
			|||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    if (!params.ignoreForbiddenParents) {
 | 
					    if (!params.ignoreForbiddenParents) {
 | 
				
			||||||
        if (["_lbRoot", "_hidden"].includes(parentNote.noteId) || parentNote.noteId.startsWith("_lbTpl") || parentNote.isOptions()) {
 | 
					        if (["_lbRoot", "_hidden"].includes(parentNote.noteId)
 | 
				
			||||||
 | 
					                || parentNote.noteId.startsWith("_lbTpl")
 | 
				
			||||||
 | 
					                || parentNote.noteId.startsWith("_help")
 | 
				
			||||||
 | 
					                || parentNote.isOptions()) {
 | 
				
			||||||
            throw new ValidationError(`Creating child notes into '${parentNote.noteId}' is not allowed.`);
 | 
					            throw new ValidationError(`Creating child notes into '${parentNote.noteId}' is not allowed.`);
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user