Skip to content

Commit 7fc01b5

Browse files
committed
Fix getFolder to handle <select XXX> and to honor folder attribute in quick-note templates
1 parent 3ddf51a commit 7fc01b5

File tree

3 files changed

+33
-8
lines changed

3 files changed

+33
-8
lines changed

np.Templating/CHANGELOG.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,9 @@
44

55
See Plugin [Documentation](https://noteplan.co/templates/docs) for details on available commands and use case.
66

7+
## [2.0.11] 2025-07-31 @dwertheimer
8+
- Fix getFolder to handle <select XXX> and to honor folder attribute in quick-note templates
9+
710
## [2.0.10] 2025-07-30 @dwertheimer
811
- Fix quick-note with frontmatter
912

np.Templating/lib/core/templateManager.js

Lines changed: 28 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
* -----------------------------------------------------------------------------------------*/
88

99
import { log, logError, logDebug, logWarn } from '@helpers/dev'
10-
import { chooseOption, chooseFolder } from '@helpers/userInput'
10+
import { chooseOption, chooseFolder, showMessageYesNo } from '@helpers/userInput'
1111
import pluginJson from '../../plugin.json'
1212
import FrontmatterModule from '../support/modules/FrontmatterModule'
1313
import { normalizeToNotePlanFilename } from '../utils'
@@ -519,10 +519,32 @@ export async function templateExists(title: string = ''): Promise<boolean> {
519519
export async function getFolder(folder: string = '', promptMessage: string = 'Select folder'): Promise<string> {
520520
let selectedFolder = folder
521521
const folders = DataStore.folders
522-
if (/select|choose/i.test(folder) || Editor?.type === 'Calendar' || selectedFolder.length === 0) {
523-
selectedFolder = await chooseFolder(promptMessage, false, true)
524-
} else if (folder == '<current>') {
525-
const currentFilename = Editor.note?.filename
522+
const isSelectFolder = /<select|<choose/i.test(folder)
523+
const startFolder =
524+
(folder.startsWith('<select ') || folder.startsWith('<SELECT ') || folder.startsWith('<choose ') || folder.startsWith('<CHOOSE ')) && folder.endsWith('>')
525+
? folder.slice(7, -1).trim()
526+
: ''
527+
const isCurrentFolder = /<current>/i.test(folder)
528+
let folderExists = (!isSelectFolder && folders.includes(folder)) || (isSelectFolder && startFolder && folders.includes(startFolder))
529+
logDebug(
530+
pluginJson,
531+
`getFolder: folder="${folder}" promptMessage="${promptMessage}" selectedFolder="${selectedFolder}" isSelectFolder="${String(isSelectFolder)}" folderExists="${String(
532+
folderExists,
533+
)}"`,
534+
)
535+
let createFolder = false
536+
if (selectedFolder && !isSelectFolder && !folderExists && !isCurrentFolder) {
537+
const wantToCreateFolder = await showMessageYesNo(`Folder "${folder}" does not exist. Create it?`, ['Yes', 'No'], 'Create Folder?')
538+
if (wantToCreateFolder === 'No') {
539+
selectedFolder = ''
540+
} else {
541+
folderExists = true // let it through and the note will be created in the new folder
542+
}
543+
}
544+
if ((isSelectFolder && !startFolder) || (!isCurrentFolder && !folderExists) || (isCurrentFolder && Editor.type === 'Calendar')) {
545+
const startFolder = (selectedFolder = await chooseFolder(promptMessage, false, true))
546+
} else if (isCurrentFolder) {
547+
const currentFilename = Editor?.filename
526548

527549
if (typeof currentFilename === 'undefined') {
528550
selectedFolder = await chooseFolder(promptMessage, false, true)
@@ -533,7 +555,7 @@ export async function getFolder(folder: string = '', promptMessage: string = 'Se
533555
selectedFolder = parts.join('/')
534556
}
535557
}
536-
} else if ((folder.startsWith('<select ') || folder.startsWith('<SELECT ') || folder.startsWith('<choose ') || folder.startsWith('<CHOOSE ')) && folder.endsWith('>')) {
558+
} else if (startFolder) {
537559
// find the value inside the <select> tag
538560
// get everything after <select and before > including spaces
539561
const f = folder.slice(7, -1).trim()

np.Templating/plugin.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,8 @@
33
"noteplan.minAppVersion": "3.9.10",
44
"plugin.id": "np.Templating",
55
"plugin.name": "📒 Templating",
6-
"plugin.version": "2.0.10",
7-
"plugin.lastUpdateInfo": "2.0.10: fix quick-note with frontmatter",
6+
"plugin.version": "2.0.11",
7+
"plugin.lastUpdateInfo": "2.0.11: fix getFolder to handle <select XXX> and to honor folder attribute in quick-note templates",
88
"plugin.description": "Templating Plugin for NotePlan",
99
"plugin.author": "Mike Erickson ( codedungeon)",
1010
"plugin.dependencies": [],

0 commit comments

Comments
 (0)