From 40f2774ece6de942fe9dc0c4da2d0db172140e2e Mon Sep 17 00:00:00 2001 From: windingwind <33902321+windingwind@users.noreply.github.com> Date: Thu, 21 Sep 2023 16:32:38 +0800 Subject: [PATCH] resolve: #702 --- addon/locale/en-US/addon.ftl | 1 + addon/locale/ru-RU/addon.ftl | 1 + addon/locale/zh-CN/addon.ftl | 1 + addon/prefs.js | 1 + src/modules/export/api.ts | 19 ++++++++++++++++++- src/modules/export/exportWindow.ts | 19 ++++++++++--------- 6 files changed, 32 insertions(+), 10 deletions(-) diff --git a/addon/locale/en-US/addon.ftl b/addon/locale/en-US/addon.ftl index 10b3c22..69c0920 100644 --- a/addon/locale/en-US/addon.ftl +++ b/addon/locale/en-US/addon.ftl @@ -46,6 +46,7 @@ export-keepLink = Keep Zotero Links(zotero://note/) export-exportMD = Export MD File(s) export-setAutoSync = Set Auto-Sync export-withYAMLHeader = With YAML Header +export-autoMDFileName = Auto Generate MD File Name export-exportDocx = Export Docx File export-exportPDF = Export PDF File export-exportFreeMind = Export FreeMind File diff --git a/addon/locale/ru-RU/addon.ftl b/addon/locale/ru-RU/addon.ftl index d8edb99..30e87fc 100644 --- a/addon/locale/ru-RU/addon.ftl +++ b/addon/locale/ru-RU/addon.ftl @@ -46,6 +46,7 @@ export-keepLink=Сохранять Zotero ссылки(zotero://note/) export-exportMD=Экспорт MD файл(-ов) export-setAutoSync=Установить Авто-синк export-withYAMLHeader=С YAML заголовком +export-autoMDFileName = Авто-имя MD файла export-exportDocx=Экспорт Docx файл export-exportPDF=Экспорт PDF файл export-exportFreeMind=Экспорт FreeMind файл diff --git a/addon/locale/zh-CN/addon.ftl b/addon/locale/zh-CN/addon.ftl index 8231687..a6c8e85 100644 --- a/addon/locale/zh-CN/addon.ftl +++ b/addon/locale/zh-CN/addon.ftl @@ -46,6 +46,7 @@ export-keepLink=保留Zotero链接(zotero://note/) export-exportMD=导出MD文件 export-setAutoSync=设置自动同步 export-withYAMLHeader=带有YAML头 +export-autoMDFileName=自动生成MD文件名 export-exportDocx=导出Word文件 export-exportPDF=导出PDF文件 export-exportFreeMind=导出FreeMind文件 diff --git a/addon/prefs.js b/addon/prefs.js index 84cfb51..5aec9c2 100644 --- a/addon/prefs.js +++ b/addon/prefs.js @@ -11,6 +11,7 @@ pref("__prefsPrefix__.keepLink", true); pref("__prefsPrefix__.exportMD", true); pref("__prefsPrefix__.setAutoSync", false); pref("__prefsPrefix__.withYAMLHeader", false); +pref("__prefsPrefix__.autoMDFileName", false); pref("__prefsPrefix__.exportDocx", false); pref("__prefsPrefix__.exportPDF", false); pref("__prefsPrefix__.exportFreeMind", false); diff --git a/src/modules/export/api.ts b/src/modules/export/api.ts index 34573a1..6e1ce76 100644 --- a/src/modules/export/api.ts +++ b/src/modules/export/api.ts @@ -5,7 +5,7 @@ import { } from "../../utils/link"; import { getString } from "../../utils/locale"; import { getLinesInNote } from "../../utils/note"; -import { formatPath } from "../../utils/str"; +import { formatPath, jointPath } from "../../utils/str"; export { exportNotes }; @@ -17,6 +17,7 @@ async function exportNotes( exportNote?: boolean; exportMD?: boolean; setAutoSync?: boolean; + autoMDFileName?: boolean; syncDir?: string; withYAMLHeader?: boolean; exportDocx?: boolean; @@ -91,8 +92,24 @@ async function exportNotes( }); } } else { + let exportDir: string | false = false; + if (options.autoMDFileName) { + const raw = await new ztoolkit.FilePicker( + `${getString("fileInterface.export")} MarkDown File`, + "folder", + ).open(); + exportDir = raw && formatPath(raw); + } + for (const noteItem of allNoteItems) { await toMD(noteItem, { + filename: + (exportDir && + jointPath( + exportDir, + await addon.api.sync.getMDFileName(noteItem.id, exportDir), + )) || + undefined, withYAMLHeader: options.withYAMLHeader, keepNoteLink: true, }); diff --git a/src/modules/export/exportWindow.ts b/src/modules/export/exportWindow.ts index e8cfbb6..7d5a38f 100644 --- a/src/modules/export/exportWindow.ts +++ b/src/modules/export/exportWindow.ts @@ -64,7 +64,7 @@ export async function showExportNoteOptions( updateSyncCheckbox(); }; - const dialog = new ztoolkit.Dialog(17, 1) + const dialog = new ztoolkit.Dialog(18, 1) .setDialogData(data) .addCell(0, 0, { tag: "div", @@ -96,14 +96,15 @@ export async function showExportNoteOptions( .addCell(6, 0, makeCheckboxLine("exportMD")) .addCell(7, 0, makeCheckboxLine("setAutoSync")) .addCell(8, 0, makeCheckboxLine("withYAMLHeader")) - .addCell(9, 0, makeHeadingLine(getString("export.options.Docx"))) - .addCell(10, 0, makeCheckboxLine("exportDocx")) - .addCell(11, 0, makeHeadingLine(getString("export.options.PDF"))) - .addCell(12, 0, makeCheckboxLine("exportPDF")) - .addCell(13, 0, makeHeadingLine(getString("export.options.mm"))) - .addCell(14, 0, makeCheckboxLine("exportFreeMind")) - .addCell(15, 0, makeHeadingLine(getString("export.options.note"))) - .addCell(16, 0, makeCheckboxLine("exportNote")) + .addCell(9, 0, makeCheckboxLine("autoMDFileName")) + .addCell(10, 0, makeHeadingLine(getString("export.options.Docx"))) + .addCell(11, 0, makeCheckboxLine("exportDocx")) + .addCell(12, 0, makeHeadingLine(getString("export.options.PDF"))) + .addCell(13, 0, makeCheckboxLine("exportPDF")) + .addCell(14, 0, makeHeadingLine(getString("export.options.mm"))) + .addCell(15, 0, makeCheckboxLine("exportFreeMind")) + .addCell(16, 0, makeHeadingLine(getString("export.options.note"))) + .addCell(17, 0, makeCheckboxLine("exportNote")) .addButton(getString("export.confirm"), "confirm") .addButton(getString("export.cancel"), "cancel") .open(getString("export.title"), {