Markdown/HTML note export: Switch hard-coded translator ids to constants
This commit is contained in:
parent
ad21d73ad9
commit
a648da8507
6 changed files with 32 additions and 18 deletions
|
@ -72,13 +72,17 @@ Zotero_File_Exporter.prototype.save = async function () {
|
|||
translators.sort((a, b) => a.label.localeCompare(b.label));
|
||||
|
||||
// Remove "Note" prefix from Note Markdown and Note HTML translators
|
||||
let markdownTranslator = translators.find(t => t.translatorID == '154c2785-ec83-4c27-8a8a-d27b3a2eded1');
|
||||
let markdownTranslator = translators.find(
|
||||
t => t.translatorID == Zotero.Translators.TRANSLATOR_ID_NOTE_MARKDOWN
|
||||
);
|
||||
if (markdownTranslator) {
|
||||
markdownTranslator.label = 'Markdown';
|
||||
// Move Note Markdown translator to the top
|
||||
translators.unshift(...translators.splice(translators.indexOf(markdownTranslator), 1));
|
||||
}
|
||||
let htmlTranslator = translators.find(t => t.translatorID == '897a81c2-9f60-4bec-ae6b-85a5030b8be5');
|
||||
let htmlTranslator = translators.find(
|
||||
t => t.translatorID == Zotero.Translators.TRANSLATOR_ID_NOTE_HTML
|
||||
);
|
||||
if (htmlTranslator) {
|
||||
htmlTranslator.label = 'HTML';
|
||||
}
|
||||
|
@ -233,14 +237,14 @@ var Zotero_File_Interface = new function() {
|
|||
|
||||
// If translating with virtual "Markdown + Rich Text" translator, use Note Markdown and
|
||||
// Note HTML instead
|
||||
if (translatorID == 'a45eca67-1ee8-45e5-b4c6-23fb8a852873') {
|
||||
translatorID = '154c2785-ec83-4c27-8a8a-d27b3a2eded1';
|
||||
if (translatorID == Zotero.Translators.TRANSLATOR_ID_MARKDOWN_AND_RICH_TEXT) {
|
||||
translatorID = Zotero.Translators.TRANSLATOR_ID_NOTE_MARKDOWN;
|
||||
_translate(items, translatorID, (obj, worked) => {
|
||||
if (!worked) {
|
||||
Zotero.log(Zotero.getString('fileInterface.exportError'), 'warning');
|
||||
return;
|
||||
}
|
||||
translatorID = '897a81c2-9f60-4bec-ae6b-85a5030b8be5';
|
||||
translatorID = Zotero.Translators.TRANSLATOR_ID_NOTE_HTML;
|
||||
_translate(items, translatorID, (obj2, worked) => {
|
||||
if (!worked) {
|
||||
Zotero.log(Zotero.getString('fileInterface.exportError'), 'warning');
|
||||
|
@ -284,7 +288,7 @@ var Zotero_File_Interface = new function() {
|
|||
}
|
||||
let text = obj.string;
|
||||
// For Note HTML translator use body content only
|
||||
if (translatorID == '897a81c2-9f60-4bec-ae6b-85a5030b8be5') {
|
||||
if (translatorID == Zotero.Translators.TRANSLATOR_ID_NOTE_HTML) {
|
||||
let parser = Components.classes['@mozilla.org/xmlextras/domparser;1']
|
||||
.createInstance(Components.interfaces.nsIDOMParser);
|
||||
let doc = parser.parseFromString(text, 'text/html');
|
||||
|
|
|
@ -1959,9 +1959,9 @@ var ItemTree = class ItemTree extends LibraryTree {
|
|||
if (format.mode == 'export') {
|
||||
// If exporting with virtual "Markdown + Rich Text" translator, call Note Markdown
|
||||
// and Note HTML translators instead
|
||||
if (format.id === 'a45eca67-1ee8-45e5-b4c6-23fb8a852873') {
|
||||
let markdownFormat = { mode: 'export', id: '154c2785-ec83-4c27-8a8a-d27b3a2eded1' };
|
||||
let htmlFormat = { mode: 'export', id: '897a81c2-9f60-4bec-ae6b-85a5030b8be5' };
|
||||
if (format.id === Zotero.Translators.TRANSLATOR_ID_MARKDOWN_AND_RICH_TEXT) {
|
||||
let markdownFormat = { mode: 'export', id: Zotero.Translators.TRANSLATOR_ID_NOTE_MARKDOWN };
|
||||
let htmlFormat = { mode: 'export', id: Zotero.Translators.TRANSLATOR_ID_NOTE_HTML };
|
||||
Zotero.QuickCopy.getContentFromItems(items, markdownFormat, (obj, worked) => {
|
||||
if (!worked) {
|
||||
Zotero.log(Zotero.getString('fileInterface.exportError'), 'warning');
|
||||
|
@ -1985,7 +1985,7 @@ var ItemTree = class ItemTree extends LibraryTree {
|
|||
}
|
||||
var text = obj.string.replace(/\r\n/g, '\n');
|
||||
// For Note HTML translator use body content only
|
||||
if (format.id == '897a81c2-9f60-4bec-ae6b-85a5030b8be5') {
|
||||
if (format.id == Zotero.Translators.TRANSLATOR_ID_NOTE_HTML) {
|
||||
// Use body content only
|
||||
let parser = Cc['@mozilla.org/xmlextras/domparser;1']
|
||||
.createInstance(Ci.nsIDOMParser);
|
||||
|
|
|
@ -114,22 +114,28 @@ Zotero_Preferences.Export = {
|
|||
translators.sort((a, b) => a.label.localeCompare(b.label));
|
||||
|
||||
// Remove "Note" prefix from Note HTML translator
|
||||
let htmlTranslator = translators.find(x => x.translatorID == '897a81c2-9f60-4bec-ae6b-85a5030b8be5');
|
||||
let htmlTranslator = translators.find(
|
||||
x => x.translatorID == Zotero.Translators.TRANSLATOR_ID_NOTE_HTML
|
||||
);
|
||||
if (htmlTranslator) {
|
||||
htmlTranslator.label = 'HTML';
|
||||
}
|
||||
|
||||
// Make sure virtual "Markdown + Rich Text" translator doesn't actually exist
|
||||
translators = translators.filter(x => x.translatorID != 'a45eca67-1ee8-45e5-b4c6-23fb8a852873');
|
||||
translators = translators.filter(
|
||||
x => x.translatorID != Zotero.Translators.TRANSLATOR_ID_MARKDOWN_AND_RICH_TEXT
|
||||
);
|
||||
|
||||
let markdownTranslatorIdx = translators.findIndex(x => x.translatorID == '154c2785-ec83-4c27-8a8a-d27b3a2eded1');
|
||||
let markdownTranslatorIdx = translators.findIndex(
|
||||
x => x.translatorID == Zotero.Translators.TRANSLATOR_ID_NOTE_MARKDOWN
|
||||
);
|
||||
// Make sure we actually have both translators
|
||||
if (markdownTranslatorIdx != -1 && htmlTranslator) {
|
||||
// Exclude standalone Note Markdown translator
|
||||
translators.splice(markdownTranslatorIdx, 1);
|
||||
// Add virtual "Markdown + Rich Text" translator to the top
|
||||
translators.unshift({
|
||||
translatorID: 'a45eca67-1ee8-45e5-b4c6-23fb8a852873',
|
||||
translatorID: Zotero.Translators.TRANSLATOR_ID_MARKDOWN_AND_RICH_TEXT,
|
||||
label: 'Markdown + ' + Zotero.getString('general.richText'),
|
||||
configOptions: {
|
||||
noteTranslator: true
|
||||
|
|
|
@ -321,9 +321,9 @@ Zotero.QuickCopy = new function() {
|
|||
format = Zotero.QuickCopy.unserializeSetting(format);
|
||||
// If virtual "Markdown + Rich Text" translator is selected, preload Note Markdown and
|
||||
// Note HTML translators
|
||||
if (format.id == 'a45eca67-1ee8-45e5-b4c6-23fb8a852873') {
|
||||
await _preloadFormat({ mode: 'export', id: '154c2785-ec83-4c27-8a8a-d27b3a2eded1' });
|
||||
await _preloadFormat({ mode: 'export', id: '897a81c2-9f60-4bec-ae6b-85a5030b8be5' });
|
||||
if (format.id == Zotero.Translators.TRANSLATOR_ID_MARKDOWN_AND_RICH_TEXT) {
|
||||
await _preloadFormat({ mode: 'export', id: Zotero.Translators.TRANSLATOR_ID_NOTE_MARKDOWN });
|
||||
await _preloadFormat({ mode: 'export', id: Zotero.Translators.TRANSLATOR_ID_NOTE_HTML });
|
||||
return;
|
||||
}
|
||||
return _preloadFormat(format);
|
||||
|
|
|
@ -34,6 +34,10 @@ Zotero.Translators = new function() {
|
|||
var _initialized = false;
|
||||
var _initializationDeferred = false;
|
||||
|
||||
this.TRANSLATOR_ID_MARKDOWN_AND_RICH_TEXT = 'a45eca67-1ee8-45e5-b4c6-23fb8a852873';
|
||||
this.TRANSLATOR_ID_NOTE_MARKDOWN = '1412e9e2-51e1-42ec-aa35-e036a895534b';
|
||||
this.TRANSLATOR_ID_NOTE_HTML = '897a81c2-9f60-4bec-ae6b-85a5030b8be5';
|
||||
|
||||
/**
|
||||
* Initializes translator cache, loading all translator metadata into memory
|
||||
*
|
||||
|
|
|
@ -109,7 +109,7 @@ pref("extensions.zotero.report.combineChildItems", true);
|
|||
// Export and citation settings
|
||||
pref("extensions.zotero.export.lastTranslator", "14763d24-8ba0-45df-8f52-b8d1108e7ac9");
|
||||
pref("extensions.zotero.export.translatorSettings", "true,false");
|
||||
pref("extensions.zotero.export.lastNoteTranslator", "154c2785-ec83-4c27-8a8a-d27b3a2eded1");
|
||||
pref("extensions.zotero.export.lastNoteTranslator", "1412e9e2-51e1-42ec-aa35-e036a895534b");
|
||||
pref("extensions.zotero.export.noteTranslatorSettings", "");
|
||||
pref("extensions.zotero.export.lastStyle", "http://www.zotero.org/styles/chicago-note-bibliography");
|
||||
pref("extensions.zotero.export.bibliographySettings", "save-as-rtf");
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue