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 \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n

Title

\n
\n ${topItem.getField(\'title\')}\n
\n

Journal

\n
\n ${topItem.getField(\'publicationTitle\')}\n
\n

1st Author

\n
\n ${topItem.getField(\'firstCreator\')}\n
\n

Authors

\n
\n ${topItem.getCreators().map((v)=>v.firstName+" "+v.lastName).join("; ")}\n
\n

Pub. date

\n
\n ${topItem.getField(\'date\')}\n
\n

DOI

\n
\n ${topItem.getField(\'DOI\')}\n
\n

Archive

\n
\n ${topItem.getField(\'archive\')}\n
\n

Archive Location

\n
\n ${topItem.getField(\'archiveLocation\')}\n
\n

Call No.

\n
\n ${topItem.getField(\'callNumber\')}\n
\n${itemNotes.map((noteItem)=>{\nconst noteLine = `

📜 Note: ${noteItem.key}

\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',