Markdown/HTML note export: Switch hard-coded translator ids to constants

This commit is contained in:
Dan Stillman 2021-12-15 05:43:09 -05:00
parent ad21d73ad9
commit a648da8507
6 changed files with 32 additions and 18 deletions

View file

@ -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');

View file

@ -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);

View file

@ -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

View file

@ -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);

View file

@ -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
*

View file

@ -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");