From 81ef00845e4ef92c3521f574edf399546f2ea6e8 Mon Sep 17 00:00:00 2001 From: EndarValuk Date: Thu, 4 May 2023 14:23:07 +0000 Subject: [PATCH 01/11] [+] Added option to configure sort order. --- main.ts | 98 ++++++++++++++++++++++++++++++++++++++++++++++----------- 1 file changed, 79 insertions(+), 19 deletions(-) diff --git a/main.ts b/main.ts index b799001..e9bb24e 100644 --- a/main.ts +++ b/main.ts @@ -1,7 +1,19 @@ -import { Plugin, TFolder } from "obsidian"; +import { App, Plugin, PluginSettingTab, Setting, TFolder } from "obsidian"; + +interface AdvancedMergePluginSettings { + sortAlphabetically: boolean; +} + +const DEFAULT_SETTINGS: AdvancedMergePluginSettings = { + sortAlphabetically: false +} export default class AdvancedMerge extends Plugin { - onload() { + settings: AdvancedMergePluginSettings; + + async onload() { + await this.loadSettings(); + this.registerEvent( this.app.workspace.on("file-menu", (menu, file) => { if (file instanceof TFolder) { @@ -18,23 +30,31 @@ export default class AdvancedMerge extends Plugin { ); const files = await Promise.all( - vault - .getMarkdownFiles() - .filter( - (file) => - file.parent?.path == folder.path - ) - .sort((a, b) => { - const x = a.path.toLowerCase(); - const y = b.path.toLowerCase(); - if (x < y) { - return -1; - } - if (x > y) { - return 1; - } - return 0; - }) + this.settings.sortAlphabetically ? + vault + .getMarkdownFiles() + .filter( + (file) => + file.parent?.path == folder.path + ) + .sort((a, b) => { + const x = a.path.toLowerCase(); + const y = b.path.toLowerCase(); + if (x < y) { + return -1; + } + if (x > y) { + return 1; + } + return 0; + }) + : vault + .getMarkdownFiles() + .filter( + (file) => + file.parent?.path == folder.path + ) + .reverse() ); files.forEach(async (file) => { @@ -50,5 +70,45 @@ export default class AdvancedMerge extends Plugin { } }) ); + + // This adds a settings tab so the user can configure various aspects of the plugin + this.addSettingTab(new AdvancedMergeSettingTab(this.app, this)); + } + + async loadSettings() { + this.settings = Object.assign({}, DEFAULT_SETTINGS, await this.loadData()); + } + + async saveSettings() { + await this.saveData(this.settings); } } + +class AdvancedMergeSettingTab extends PluginSettingTab { + plugin: AdvancedMerge; + + constructor(app: App, plugin: AdvancedMerge) { + super(app, plugin); + this.plugin = plugin; + } + + display(): void { + const {containerEl} = this; + + containerEl.empty(); + + containerEl.createEl('h2', {text: 'Advanced Merger - Settings'}); + + new Setting(containerEl) + .setName('Sort files alphabetically') + .setDesc('If enabled, files in slected folder will be sorted alphabetically, according to its full path. Otherwise, files will be sorted by creation date (default behaviour).') + .addToggle(toggle => toggle + .setTooltip('Sort files alphabetically') + .setValue(this.plugin.settings.sortAlphabetically) + .onChange(async (value) => { + console.log('sort alphabetically: ' + value); + this.plugin.settings.sortAlphabetically = value; + await this.plugin.saveSettings(); + })); + } +} \ No newline at end of file From 880cd4350d1685cd2d97ff8d0828acbe99f71dee Mon Sep 17 00:00:00 2001 From: EndarValuk Date: Thu, 4 May 2023 14:49:23 +0000 Subject: [PATCH 02/11] [*] Nested folders merge settings. --- main.ts | 79 ++++++++++++++++++++++++++++++++++----------------------- 1 file changed, 47 insertions(+), 32 deletions(-) diff --git a/main.ts b/main.ts index e9bb24e..214c8a9 100644 --- a/main.ts +++ b/main.ts @@ -1,17 +1,19 @@ -import { App, Plugin, PluginSettingTab, Setting, TFolder } from "obsidian"; +import { App, Plugin, PluginSettingTab, Setting, TFile, TFolder } from "obsidian"; interface AdvancedMergePluginSettings { sortAlphabetically: boolean; + includeNestedFolders: boolean } const DEFAULT_SETTINGS: AdvancedMergePluginSettings = { - sortAlphabetically: false + sortAlphabetically: false, + includeNestedFolders: false } export default class AdvancedMerge extends Plugin { - settings: AdvancedMergePluginSettings; + public settings: AdvancedMergePluginSettings; - async onload() { + public async onload(): Promise { await this.loadSettings(); this.registerEvent( @@ -30,31 +32,10 @@ export default class AdvancedMerge extends Plugin { ); const files = await Promise.all( - this.settings.sortAlphabetically ? + this.fileSort( vault .getMarkdownFiles() - .filter( - (file) => - file.parent?.path == folder.path - ) - .sort((a, b) => { - const x = a.path.toLowerCase(); - const y = b.path.toLowerCase(); - if (x < y) { - return -1; - } - if (x > y) { - return 1; - } - return 0; - }) - : vault - .getMarkdownFiles() - .filter( - (file) => - file.parent?.path == folder.path - ) - .reverse() + .filter((file) => this.fileFilter(folder, file))) ); files.forEach(async (file) => { @@ -75,24 +56,46 @@ export default class AdvancedMerge extends Plugin { this.addSettingTab(new AdvancedMergeSettingTab(this.app, this)); } - async loadSettings() { + private fileFilter(folder: TFolder, file: TFile): boolean { + return this.settings.includeNestedFolders ? + !!file.parent?.path.startsWith(folder.path) + : file.parent?.path == folder.path; + } + + private fileSort(files: Array): Array { + return this.settings.sortAlphabetically ? + files.sort((a, b) => { + const x = a.path.toLowerCase(); + const y = b.path.toLowerCase(); + if (x < y) { + return -1; + } + if (x > y) { + return 1; + } + return 0; + }) + : files.reverse(); + } + + private async loadSettings(): Promise { this.settings = Object.assign({}, DEFAULT_SETTINGS, await this.loadData()); } - async saveSettings() { + public async saveSettings(): Promise { await this.saveData(this.settings); } } class AdvancedMergeSettingTab extends PluginSettingTab { - plugin: AdvancedMerge; + private plugin: AdvancedMerge; constructor(app: App, plugin: AdvancedMerge) { super(app, plugin); this.plugin = plugin; } - display(): void { + public display(): void { const {containerEl} = this; containerEl.empty(); @@ -101,7 +104,7 @@ class AdvancedMergeSettingTab extends PluginSettingTab { new Setting(containerEl) .setName('Sort files alphabetically') - .setDesc('If enabled, files in slected folder will be sorted alphabetically, according to its full path. Otherwise, files will be sorted by creation date (default behaviour).') + .setDesc('If enabled, files in selected folder will be sorted alphabetically, according to its full path. Otherwise, files will be sorted by creation date (default behaviour).') .addToggle(toggle => toggle .setTooltip('Sort files alphabetically') .setValue(this.plugin.settings.sortAlphabetically) @@ -110,5 +113,17 @@ class AdvancedMergeSettingTab extends PluginSettingTab { this.plugin.settings.sortAlphabetically = value; await this.plugin.saveSettings(); })); + + new Setting(containerEl) + .setName('Include files in nested folders') + .setDesc('If enabled, files in nested folders will be included in merge. Otherwise, only files in selected folder will be merged (default behaviour).') + .addToggle(toggle => toggle + .setTooltip('Merge files in nested folders') + .setValue(this.plugin.settings.sortAlphabetically) + .onChange(async (value) => { + console.log('sort alphabetically: ' + value); + this.plugin.settings.sortAlphabetically = value; + await this.plugin.saveSettings(); + })); } } \ No newline at end of file From 4f4123bcd46c963689797b6b3b903d34f4101a1c Mon Sep 17 00:00:00 2001 From: EndarValuk Date: Thu, 4 May 2023 14:52:52 +0000 Subject: [PATCH 03/11] [*] Typo fixed. --- main.ts | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/main.ts b/main.ts index 214c8a9..55e2c47 100644 --- a/main.ts +++ b/main.ts @@ -119,10 +119,10 @@ class AdvancedMergeSettingTab extends PluginSettingTab { .setDesc('If enabled, files in nested folders will be included in merge. Otherwise, only files in selected folder will be merged (default behaviour).') .addToggle(toggle => toggle .setTooltip('Merge files in nested folders') - .setValue(this.plugin.settings.sortAlphabetically) + .setValue(this.plugin.settings.includeNestedFolders) .onChange(async (value) => { - console.log('sort alphabetically: ' + value); - this.plugin.settings.sortAlphabetically = value; + console.log('includeNestedFolders: ' + value); + this.plugin.settings.includeNestedFolders = value; await this.plugin.saveSettings(); })); } From 46a5ce6ec1a418022ed34cd845b74b08ac530205 Mon Sep 17 00:00:00 2001 From: EndarValuk Date: Fri, 5 May 2023 11:16:33 +0000 Subject: [PATCH 04/11] [*] Utilizy esbuild minification. --- esbuild.config.mjs | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/esbuild.config.mjs b/esbuild.config.mjs index b13282b..b6f3904 100644 --- a/esbuild.config.mjs +++ b/esbuild.config.mjs @@ -37,6 +37,7 @@ const context = await esbuild.context({ logLevel: "info", sourcemap: prod ? false : "inline", treeShaking: true, + minify: true, outfile: "main.js", }); @@ -45,4 +46,4 @@ if (prod) { process.exit(0); } else { await context.watch(); -} \ No newline at end of file +} From 8b830bb24352cd2429d51577a04a4baf82f00711 Mon Sep 17 00:00:00 2001 From: EndarValuk Date: Fri, 5 May 2023 11:16:49 +0000 Subject: [PATCH 05/11] [*] Bump version. --- manifest.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/manifest.json b/manifest.json index f9c2033..250ffa2 100644 --- a/manifest.json +++ b/manifest.json @@ -1,7 +1,7 @@ { "id": "advanced-merger", "name": "Advanced Merger", - "version": "1.0.2", + "version": "1.0.3", "minAppVersion": "0.15.0", "description": "Merge a folder of notes for easier export.", "author": "Anto Keinänen", From 3daa874182b447cc1099cf98d330a312265b7ad7 Mon Sep 17 00:00:00 2001 From: EndarValuk Date: Fri, 5 May 2023 11:34:16 +0000 Subject: [PATCH 06/11] [*] Decreased code nesting. --- main.ts | 68 ++++++++++++++++++++++++++++++--------------------------- 1 file changed, 36 insertions(+), 32 deletions(-) diff --git a/main.ts b/main.ts index 55e2c47..323e193 100644 --- a/main.ts +++ b/main.ts @@ -18,37 +18,16 @@ export default class AdvancedMerge extends Plugin { this.registerEvent( this.app.workspace.on("file-menu", (menu, file) => { - if (file instanceof TFolder) { - const folder = file; - menu.addItem((item) => { - item.setTitle("Merge folder") - .setIcon("git-merge") - .onClick(async () => { - const { vault } = this.app; - - const destination = await vault.create( - `${folder.path}-merged.md`, - "" - ); - - const files = await Promise.all( - this.fileSort( - vault - .getMarkdownFiles() - .filter((file) => this.fileFilter(folder, file))) - ); - - files.forEach(async (file) => { - let contents = await vault.read(file); - contents = `\n# ${file.name.replace( - /\.md$/, - "" - )}\n${contents}\n`; - vault.append(destination, contents); - }); - }); - }); + if (!(file instanceof TFolder)) { + return; } + + const folder = file; + menu.addItem((item) => { + item.setTitle("Merge folder") + .setIcon("git-merge") + .onClick(async(evt) => await this.onClickCallback(folder, evt)); + }); }) ); @@ -56,6 +35,31 @@ export default class AdvancedMerge extends Plugin { this.addSettingTab(new AdvancedMergeSettingTab(this.app, this)); } + private async onClickCallback(folder: TFolder, _evt: MouseEvent | KeyboardEvent): Promise { + const { vault } = this.app; + + const destination = await vault.create( + `${folder.path}-merged.md`, + "" + ); + + const files = await Promise.all( + this.fileSort( + vault + .getMarkdownFiles() + .filter((file) => this.fileFilter(folder, file))) + ); + + files.forEach(async (file) => { + let contents = await vault.read(file); + contents = `\n# ${file.name.replace( + /\.md$/, + "" + )}\n${contents}\n`; + vault.append(destination, contents); + }); + } + private fileFilter(folder: TFolder, file: TFile): boolean { return this.settings.includeNestedFolders ? !!file.parent?.path.startsWith(folder.path) @@ -66,7 +70,7 @@ export default class AdvancedMerge extends Plugin { return this.settings.sortAlphabetically ? files.sort((a, b) => { const x = a.path.toLowerCase(); - const y = b.path.toLowerCase(); + const y = b.path.toLowerCase(); if (x < y) { return -1; } @@ -126,4 +130,4 @@ class AdvancedMergeSettingTab extends PluginSettingTab { await this.plugin.saveSettings(); })); } -} \ No newline at end of file +} From f2e78c13cc0e8ad7f635e049521ee639db768804 Mon Sep 17 00:00:00 2001 From: EndarValuk Date: Tue, 9 May 2023 05:40:07 +0000 Subject: [PATCH 07/11] [+] Add ru/en translation. --- main.ts | 24 +++++++++++++++++++++--- 1 file changed, 21 insertions(+), 3 deletions(-) diff --git a/main.ts b/main.ts index 323e193..175b810 100644 --- a/main.ts +++ b/main.ts @@ -1,5 +1,16 @@ import { App, Plugin, PluginSettingTab, Setting, TFile, TFolder } from "obsidian"; +const TRANSLATIONS: { [name: string]: { [name: string]: string } } = { + en: { + MergeFolder: "Merge folder", + MergedFilesuffix: "merged" + }, + ru: { + MergeFolder: "Совместить заметки", + MergedFilesuffix: "совмещенный" + } +} + interface AdvancedMergePluginSettings { sortAlphabetically: boolean; includeNestedFolders: boolean @@ -10,21 +21,28 @@ const DEFAULT_SETTINGS: AdvancedMergePluginSettings = { includeNestedFolders: false } +const DEFAULT_LANGUAGE = "en"; +const HANDLER_LOCATION = "file-menu"; + export default class AdvancedMerge extends Plugin { + private language: string; + public settings: AdvancedMergePluginSettings; public async onload(): Promise { + this.language = TRANSLATIONS[navigator.language] === null ? DEFAULT_LANGUAGE : navigator.language; + await this.loadSettings(); this.registerEvent( - this.app.workspace.on("file-menu", (menu, file) => { + this.app.workspace.on(HANDLER_LOCATION, (menu, file) => { if (!(file instanceof TFolder)) { return; } const folder = file; menu.addItem((item) => { - item.setTitle("Merge folder") + item.setTitle(TRANSLATIONS[this.language].MergeFolder) .setIcon("git-merge") .onClick(async(evt) => await this.onClickCallback(folder, evt)); }); @@ -39,7 +57,7 @@ export default class AdvancedMerge extends Plugin { const { vault } = this.app; const destination = await vault.create( - `${folder.path}-merged.md`, + `${folder.path}-${TRANSLATIONS[this.language].MergedFilesuffix}.md`, "" ); From f15e92beddb020178107ea44f36d84205de5593d Mon Sep 17 00:00:00 2001 From: EndarValuk Date: Tue, 9 May 2023 06:21:07 +0000 Subject: [PATCH 08/11] [+] German, Finnish, French, Ukranian translation. --- main.ts | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/main.ts b/main.ts index 175b810..e6095e3 100644 --- a/main.ts +++ b/main.ts @@ -1,13 +1,29 @@ import { App, Plugin, PluginSettingTab, Setting, TFile, TFolder } from "obsidian"; const TRANSLATIONS: { [name: string]: { [name: string]: string } } = { + de: { + MergeFolder: "Ordner zusammenführen", + MergedFilesuffix: "zusammengeführt" + }, en: { MergeFolder: "Merge folder", MergedFilesuffix: "merged" }, + fi: { + MergeFolder: "Yhdistä kansio", + MergedFilesuffix: "yhdistetty" + }, + fr: { + MergeFolder: "Fusionner le dossier", + MergedFilesuffix: "fusionné" + }, ru: { - MergeFolder: "Совместить заметки", + MergeFolder: "Объединить папку", MergedFilesuffix: "совмещенный" + }, + ua: { + MergeFolder: "Об'єднати папку", + MergedFilesuffix: "об'єднані" } } From 60f87e56e4e0e55c8bac199d27eacba7cf2b0666 Mon Sep 17 00:00:00 2001 From: EndarValuk Date: Tue, 9 May 2023 06:28:25 +0000 Subject: [PATCH 09/11] [*] Sync with upstream. --- main.ts | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/main.ts b/main.ts index e6095e3..874af3f 100644 --- a/main.ts +++ b/main.ts @@ -72,18 +72,16 @@ export default class AdvancedMerge extends Plugin { private async onClickCallback(folder: TFolder, _evt: MouseEvent | KeyboardEvent): Promise { const { vault } = this.app; + const files = this.fileSort( + vault + .getMarkdownFiles() + .filter((file) => this.fileFilter(folder, file))); + const destination = await vault.create( `${folder.path}-${TRANSLATIONS[this.language].MergedFilesuffix}.md`, "" ); - const files = await Promise.all( - this.fileSort( - vault - .getMarkdownFiles() - .filter((file) => this.fileFilter(folder, file))) - ); - files.forEach(async (file) => { let contents = await vault.read(file); contents = `\n# ${file.name.replace( From 88196cf83d6f05781aa15c4e443e3869337d2a57 Mon Sep 17 00:00:00 2001 From: EndarValuk Date: Tue, 9 May 2023 06:34:38 +0000 Subject: [PATCH 10/11] [*] Version bump. --- manifest.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/manifest.json b/manifest.json index f9700c8..aae4841 100644 --- a/manifest.json +++ b/manifest.json @@ -1,7 +1,7 @@ { "id": "advanced-merger", "name": "Advanced Merger", - "version": "1.1.0", + "version": "1.2.0", "minAppVersion": "0.15.0", "description": "Merge a folder of notes for easier export.", "author": "Anto Keinänen", From 686346fad2bad19e017a5ea312abad5d0673923d Mon Sep 17 00:00:00 2001 From: EndarValuk Date: Tue, 9 May 2023 07:06:17 +0000 Subject: [PATCH 11/11] [*] Extend translation usage. --- main.ts | 59 +++++++++++++++++++++++++++++++++++++++++---------------- 1 file changed, 43 insertions(+), 16 deletions(-) diff --git a/main.ts b/main.ts index 874af3f..a96d35d 100644 --- a/main.ts +++ b/main.ts @@ -3,27 +3,57 @@ import { App, Plugin, PluginSettingTab, Setting, TFile, TFolder } from "obsidian const TRANSLATIONS: { [name: string]: { [name: string]: string } } = { de: { MergeFolder: "Ordner zusammenführen", - MergedFilesuffix: "zusammengeführt" + MergedFilesuffix: "zusammengeführt", + Settings: "Einstellungen", + SettingSortAlphabetically: "Dateien alphabetisch sortieren", + SettingSortAlphabeticallyDescription: "Wenn aktiviert, werden die Dateien im ausgewählten Ordner alphabetisch nach ihrem vollständigen Pfad sortiert. Andernfalls werden die Dateien nach dem Erstellungsdatum sortiert (Standardverhalten).", + SettingIncludeNestedFolders: "Verschachtelte Ordner einbeziehen", + SettingIncludeNestedFoldersDescription: "Wenn aktiviert, werden Dateien in verschachtelten Ordnern zusammengeführt. Andernfalls werden nur Dateien im ausgewählten Ordner zusammengeführt (Standardverhalten)." }, en: { MergeFolder: "Merge folder", - MergedFilesuffix: "merged" + MergedFilesuffix: "merged", + Settings: "Settings", + SettingSortAlphabetically: "Sort files alphabetically", + SettingSortAlphabeticallyDescription: "If enabled, files in selected folder will be sorted alphabetically, according to its full path. Otherwise, files will be sorted by creation date (default behaviour).", + SettingIncludeNestedFolders: "Include nested folders", + SettingIncludeNestedFoldersDescription: "If enabled, files in nested folders will be included in merge. Otherwise, only files in selected folder will be merged (default behaviour)." }, fi: { MergeFolder: "Yhdistä kansio", - MergedFilesuffix: "yhdistetty" + MergedFilesuffix: "yhdistetty", + Settings: "Asetukset", + SettingSortAlphabetically: "Lajittele tiedostot aakkosjärjestykseen", + SettingSortAlphabeticallyDescription: "Jos tämä on käytössä, valitun kansion tiedostot lajitellaan aakkosjärjestyksessä sen täyden polun mukaan. Muussa tapauksessa tiedostot lajitellaan luomispäivämäärän mukaan (oletuskäyttäytyminen).", + SettingIncludeNestedFolders: "Sisällytä sisäkkäiset kansiot", + SettingIncludeNestedFoldersDescription: "Jos tämä on käytössä, sisäkkäisten kansioiden tiedostot sisällytetään yhdistämiseen. Muussa tapauksessa vain valitun kansion tiedostot yhdistetään (oletustoiminto)." }, fr: { MergeFolder: "Fusionner le dossier", - MergedFilesuffix: "fusionné" + MergedFilesuffix: "fusionné", + Settings: "Paramètres", + SettingSortAlphabetically: "Trier les fichiers par ordre alphabétique", + SettingSortAlphabeticallyDescription: "Si activé, les fichiers du dossier sélectionné seront triés par ordre alphabétique, en fonction de son chemin complet. Sinon, les fichiers seront triés par date de création (comportement par défaut).", + SettingIncludeNestedFolders: "Inclure les dossiers imbriqués", + SettingIncludeNestedFoldersDescription: "Si activé, les fichiers des dossiers imbriqués seront inclus dans la fusion. Sinon, seuls les fichiers du dossier sélectionné seront fusionnés (comportement par défaut)." }, ru: { MergeFolder: "Объединить папку", - MergedFilesuffix: "совмещенный" + MergedFilesuffix: "совмещенный", + Settings: "Настройки", + SettingSortAlphabetically: "Сортировать файлы по алфавиту", + SettingSortAlphabeticallyDescription: "Если включено, файлы в выбранной папке будут отсортированы в алфавитном порядке в соответствии с полным путем. В противном случае, файлы будут отсортированы по дате создания (поведение по умолчанию)", + SettingIncludeNestedFolders: "Влючать вложенные папки", + SettingIncludeNestedFoldersDescription: "Если включено, файлы во вложенных папках будут включены в слияние. В противном случае будут объединены только файлы в выбранной папке (поведение по умолчанию)." }, ua: { MergeFolder: "Об'єднати папку", - MergedFilesuffix: "об'єднані" + MergedFilesuffix: "об'єднані", + Settings: "Налаштування", + SettingSortAlphabetically: "Сортувати файли за алфавітом", + SettingSortAlphabeticallyDescription: "Якщо ввімкнено, файли у вибраній папці будуть відсортовані в алфавітному порядку відповідно до повного шляху. В іншому випадку файли будуть відсортовані за датою створення (поведінка за замовчуванням).", + SettingIncludeNestedFolders: "Включити вкладені папки", + SettingIncludeNestedFoldersDescription: "Якщо ввімкнено, файли у вкладених папках будуть включені в об’єднання. В іншому випадку буде об’єднано лише файли у вибраній папці (поведінка за замовчуванням)." } } @@ -37,11 +67,12 @@ const DEFAULT_SETTINGS: AdvancedMergePluginSettings = { includeNestedFolders: false } +const PLUGIN_NAME = "Advanced Merger"; const DEFAULT_LANGUAGE = "en"; const HANDLER_LOCATION = "file-menu"; export default class AdvancedMerge extends Plugin { - private language: string; + public language: string; public settings: AdvancedMergePluginSettings; @@ -136,28 +167,24 @@ class AdvancedMergeSettingTab extends PluginSettingTab { containerEl.empty(); - containerEl.createEl('h2', {text: 'Advanced Merger - Settings'}); + containerEl.createEl('h2', {text: `${PLUGIN_NAME} - ${TRANSLATIONS[this.plugin.language].Settings}`}); new Setting(containerEl) - .setName('Sort files alphabetically') - .setDesc('If enabled, files in selected folder will be sorted alphabetically, according to its full path. Otherwise, files will be sorted by creation date (default behaviour).') + .setName(TRANSLATIONS[this.plugin.language].SettingSortAlphabetically) + .setDesc(TRANSLATIONS[this.plugin.language].SettingSortAlphabeticallyDescription) .addToggle(toggle => toggle - .setTooltip('Sort files alphabetically') .setValue(this.plugin.settings.sortAlphabetically) .onChange(async (value) => { - console.log('sort alphabetically: ' + value); this.plugin.settings.sortAlphabetically = value; await this.plugin.saveSettings(); })); new Setting(containerEl) - .setName('Include files in nested folders') - .setDesc('If enabled, files in nested folders will be included in merge. Otherwise, only files in selected folder will be merged (default behaviour).') + .setName(TRANSLATIONS[this.plugin.language].SettingIncludeNestedFolders) + .setDesc(TRANSLATIONS[this.plugin.language].SettingIncludeNestedFoldersDescription) .addToggle(toggle => toggle - .setTooltip('Merge files in nested folders') .setValue(this.plugin.settings.includeNestedFolders) .onChange(async (value) => { - console.log('includeNestedFolders: ' + value); this.plugin.settings.includeNestedFolders = value; await this.plugin.saveSettings(); }));