diff --git a/addon/chrome/content/overlay.xul b/addon/chrome/content/overlay.xul
index f20f33a..da60e86 100644
--- a/addon/chrome/content/overlay.xul
+++ b/addon/chrome/content/overlay.xul
@@ -66,7 +66,7 @@
-
+
diff --git a/src/export.ts b/src/export.ts
index a752328..4643e61 100644
--- a/src/export.ts
+++ b/src/export.ts
@@ -57,25 +57,28 @@ class AddonExport extends AddonBase {
) as XUL.Checkbox
).checked = exportCopy;
}
+ this.doUpdate();
}
doUpdate(event: XULEvent) {
- if (
- event.target.getAttribute("id") === "Knowledge4Zotero-export-enablesingle"
- ) {
- (
- this._window.document.getElementById(
- "Knowledge4Zotero-export-embedLink"
- ) as XUL.Checkbox
- ).disabled = (event.target as XUL.Checkbox).checked;
- } else if (
- event.target.getAttribute("id") === "Knowledge4Zotero-export-enablefile"
- ) {
- (
- this._window.document.getElementById(
- "Knowledge4Zotero-export-enablesingle"
- ) as XUL.Checkbox
- ).disabled = !(event.target as XUL.Checkbox).checked;
- }
+ (
+ this._window.document.getElementById(
+ "Knowledge4Zotero-export-embedLink"
+ ) as XUL.Checkbox
+ ).disabled = (
+ this._window.document.getElementById(
+ "Knowledge4Zotero-export-enablesingle"
+ ) as XUL.Checkbox
+ ).checked;
+
+ (
+ this._window.document.getElementById(
+ "Knowledge4Zotero-export-enablesingle"
+ ) as XUL.Checkbox
+ ).disabled = !(
+ this._window.document.getElementById(
+ "Knowledge4Zotero-export-enablefile"
+ ) as XUL.Checkbox
+ ).checked;
}
doUnload() {
this.io.deferred && this.io.deferred.resolve();
diff --git a/src/knowledge.ts b/src/knowledge.ts
index 4549886..e55cf36 100644
--- a/src/knowledge.ts
+++ b/src/knowledge.ts
@@ -854,11 +854,9 @@ class Knowledge extends AddonBase {
this._exportNote = newNote;
- let filename = `${Zotero.File.pathToFile(filepath).path}/${
- newNote.getNoteTitle
- ? newNote.getNoteTitle().replace(/[/\\?%*:|"<>]/g, "-") + "-"
- : ""
- }${note.key}.md`;
+ let filename = `${
+ Zotero.File.pathToFile(filepath).path
+ }/${this._getFileName(note)}`;
filename = filename.replace(/\\/g, "/");
this._export(newNote, filename, newNote.id !== note.id);
@@ -888,12 +886,7 @@ class Knowledge extends AddonBase {
link: this.getNoteLink(_note),
id: _note.id,
note: _note,
- filename:
- (_note.getNoteTitle
- ? _note.getNoteTitle().replace(/[/\\?%*:|"<> ]/g, "-") + "-"
- : "") +
- _note.key +
- ".md",
+ filename: this._getFileName(_note),
};
});
this._exportFileDict = noteLinkDict;
@@ -909,7 +902,7 @@ class Knowledge extends AddonBase {
}
}
- async _export(
+ private async _export(
note: ZoteroItem,
filename: string,
deleteAfterExport: boolean
@@ -942,6 +935,27 @@ class Knowledge extends AddonBase {
}
}
+ private _getFileName(noteItem: ZoteroItem) {
+ let _newLine: string = "";
+ const templateText =
+ this._Addon.template.getTemplateText("[ExportMDFileName]");
+ try {
+ _newLine = new Function("noteItem", "return `" + templateText + "`")(
+ noteItem
+ );
+ } catch (e) {
+ alert(e);
+ return (
+ (noteItem.getNoteTitle
+ ? noteItem.getNoteTitle().replace(/[/\\?%*:|"<> ]/g, "-") + "-"
+ : "") +
+ noteItem.key +
+ ".md"
+ );
+ }
+ return _newLine;
+ }
+
async convertNoteLines(
currentNote: ZoteroItem,
rootNoteIds: number[],
diff --git a/src/template.ts b/src/template.ts
index 7193761..dd0e060 100644
--- a/src/template.ts
+++ b/src/template.ts
@@ -21,6 +21,11 @@ class AddonTemplate extends AddonBase {
text: '${annotationItem.annotationComment ? annotationItem.annotationComment : `Annotation`}
',
disabled: false,
},
+ {
+ name: "[ExportMDFileName]",
+ text: '${(noteItem.getNoteTitle ? noteItem.getNoteTitle().replace(/[/\\?%*:|"<> ]/g, "-") + "-" : "")}${noteItem.key}.md',
+ disabled: false,
+ },
{
name: "[Item] item-notes with metadata",
text: '${topItem.getField("title")}
\n💡 Meta Data
\n\n \n | \n Title \n | \n \n ${topItem.getField(\'title\')}\n | \n
\n \n | \n Journal \n | \n \n ${topItem.getField(\'publicationTitle\')}\n | \n
\n \n | \n 1st Author \n | \n \n ${topItem.getField(\'firstCreator\')}\n | \n
\n \n | \n Authors \n | \n \n ${topItem.getCreators().map((v)=>v.firstName+" "+v.lastName).join("; ")}\n | \n
\n \n | \n Pub. date \n | \n \n ${topItem.getField(\'date\')}\n | \n
\n \n | \n DOI \n | \n \n ${topItem.getField(\'DOI\')}\n | \n
\n \n | \n Archive \n | \n \n ${topItem.getField(\'archive\')}\n | \n
\n \n | \n Archive Location \n | \n \n ${topItem.getField(\'archiveLocation\')}\n | \n
\n \n | \n Call No. \n | \n \n ${topItem.getField(\'callNumber\')}\n | \n
\n
\n${itemNotes.map((noteItem)=>{\nconst noteLine = `\n\n ${noteItem.getNote()}\n Merge Date: ${new Date().toISOString().substr(0,10)+" "+ new Date().toTimeString()}
\n
\n📝 Comments
\n\n Make your comments
\n \n
`;\ncopyNoteImage(noteItem);\nreturn noteLine;\n}).join("\\n")}\n',