diff --git a/chrome/content/zotero/bindings/styled-textbox.xml b/chrome/content/zotero/bindings/styled-textbox.xml index 9cb967fa8..6b23deecb 100644 --- a/chrome/content/zotero/bindings/styled-textbox.xml +++ b/chrome/content/zotero/bindings/styled-textbox.xml @@ -123,6 +123,11 @@ var self = this; this._eventHandler = function (event) { + // Necessary in Fx32+ + if (event.wrappedJSObject) { + event = event.wrappedJSObject; + } + //Zotero.debug(event.type); switch (event.type) { case 'keydown': @@ -418,7 +423,13 @@ if (!SJOW.zoteroInit) { SJOW.zoteroInit = function(editor) { - self._editor = editor; + // Necessary in Fx32+ + if (editor.wrappedJSObject) { + self._editor = editor.wrappedJSObject; + } + else { + self._editor = editor; + } if (self._value) { self.value = self._value; } @@ -430,13 +441,17 @@ // Add CSS rules to notes if (self.mode == 'note') { + let fontSize = Zotero.Prefs.get('note.fontSize'); + // Fix empty old font prefs before a value was enforced + if (fontSize < 6) { + fontSize = 11; + } var css = "body#zotero-tinymce-note.mceContentBody, " + "body#zotero-tinymce-note.mceContentBody p, " + "body#zotero-tinymce-note.mceContentBody th, " + "body#zotero-tinymce-note.mceContentBody td, " + "body#zotero-tinymce-note.mceContentBody pre { " - + "font-size: " - + Zotero.Prefs.get('note.fontSize') + "px; " + + "font-size: " + fontSize + "px; " + "} " + "body#zotero-tinymce-note.mceContentBody, " + "body#zotero-tinymce-note.mceContentBody p { " diff --git a/chrome/content/zotero/browser.js b/chrome/content/zotero/browser.js index 5e6ae997e..af9fcecf2 100644 --- a/chrome/content/zotero/browser.js +++ b/chrome/content/zotero/browser.js @@ -102,15 +102,45 @@ var Zotero_Browser = new function() { * Initialize some variables and prepare event listeners for when chrome is done loading */ function init() { - if (!Zotero || Zotero.skipLoading || !window.hasOwnProperty("gBrowser")) { + if (!window.hasOwnProperty("gBrowser")) { return; } - window.addEventListener("load", - function(e) { Zotero_Browser.chromeLoad(e) }, false); + var zoteroInitDone; + if (!Zotero || Zotero.skipLoading) { + // Zotero either failed to load or is reloading in Connector mode + // In case of the latter, listen for the 'zotero-loaded' event (once) and retry + var zoteroInitDone_deferred = Q.defer(); + var obs = Components.classes["@mozilla.org/observer-service;1"] + .getService(Components.interfaces.nsIObserverService); + var observer = { + "observe":function() { + obs.removeObserver(observer, 'zotero-loaded') + zoteroInitDone_deferred.resolve(); + } + }; + obs.addObserver(observer, 'zotero-loaded', false); + + zoteroInitDone = zoteroInitDone_deferred.promise; + } else { + zoteroInitDone = Q(); + } - ZoteroPane_Local.addReloadListener(reload); - reload(); + var chromeLoaded = Q.defer(); + window.addEventListener("load", function(e) { chromeLoaded.resolve() }, false); + + // Wait for Zotero to init and chrome to load before proceeding + Q.all([ + zoteroInitDone.then(function() { + ZoteroPane_Local.addReloadListener(reload); + reload(); + }), + chromeLoaded.promise + ]) + .then(function() { + Zotero_Browser.chromeLoad() + }) + .done(); } /** @@ -542,8 +572,8 @@ var Zotero_Browser = new function() { if(!returnValue) { Zotero_Browser.progress.show(); Zotero_Browser.progress.changeHeadline(Zotero.getString("ingester.scrapeError")); - // Include link to Known Translator Issues page - var url = "http://www.zotero.org/documentation/known_translator_issues"; + // Include link to translator troubleshooting page + var url = "https://www.zotero.org/support/troubleshooting_translator_issues"; var linkText = '' + Zotero.getString('ingester.scrapeErrorDescription.linkText') + ''; Zotero_Browser.progress.addDescription(Zotero.getString("ingester.scrapeErrorDescription", linkText)); diff --git a/chrome/content/zotero/charsetMenu.js b/chrome/content/zotero/charsetMenu.js index 0296e4430..29ced2678 100644 --- a/chrome/content/zotero/charsetMenu.js +++ b/chrome/content/zotero/charsetMenu.js @@ -42,40 +42,76 @@ var Zotero_Charset_Menu = new function() { var charsetSeparator = document.createElement("menuseparator"); charsetPopup.appendChild(charsetSeparator); - var charsetConverter = Components.classes["@mozilla.org/charset-converter-manager;1"]. - getService(Components.interfaces.nsICharsetConverterManager); - var charsets = charsetConverter.getEncoderList(); - - // add charsets to popup in order - while(charsets.hasMore()) { - var charset = charsets.getNext(); - try { - var label = charsetConverter.getCharsetTitle(charset); - } catch(e) { - continue; + var charsets = []; + + if(Zotero.platformMajorVersion >= 32) { + Components.utils.import("resource://gre/modules/CharsetMenu.jsm"); + var cmData = CharsetMenu.getData(); + for each(var charsetList in [cmData.pinnedCharsets, cmData.otherCharsets]) { + for each(var charsetInfo in charsetList) { + if(charsetInfo.value == "UTF-8") { + charsets.push({ + "label":"Unicode (UTF-8)", + "value":"UTF-8" + }); + } else { + charsets.push({ + "label":charsetInfo.label, + "value":charsetInfo.value + }); + } + } } - - var isUTF16 = charset.length >= 6 && charset.substr(0, 6) == "UTF-16"; - - // Show UTF-16 element appropriately depending on exportMenu - if(isUTF16 && exportMenu == (charset == "UTF-16") || - (!exportMenu && charset == "UTF-32LE")) { - continue; - } else if(charset == "x-mac-roman") { - // use the IANA name - charset = "macintosh"; - } else if(!exportMenu && charset == "UTF-32BE") { - label = "Unicode (UTF-32)"; - charset = "UTF-32"; + charsets = charsets.concat([ + {"label":"UTF-16LE", "value":"UTF-16LE"}, + {"label":"UTF-16BE", "value":"UTF-16BE"}, + {"label":"Western (IBM-850)", "value":"IBM850"}, + {"label":"Western (MacRoman)", "value":"macintosh"} + ]); + } else { + var charsetConverter = Components.classes["@mozilla.org/charset-converter-manager;1"]. + getService(Components.interfaces.nsICharsetConverterManager); + var ccCharsets = charsetConverter.getEncoderList(); + // add charsets to popup in order + while(ccCharsets.hasMore()) { + var charset = ccCharsets.getNext(); + try { + var label = charsetConverter.getCharsetTitle(charset); + } catch(e) { + continue; + } + + var isUTF16 = charset.length >= 6 && charset.substr(0, 6) == "UTF-16"; + + // Show UTF-16 element appropriately depending on exportMenu + if(isUTF16 && exportMenu == (charset == "UTF-16") || + (!exportMenu && charset == "UTF-32LE")) { + continue; + } else if(charset == "x-mac-roman") { + // use the IANA name + charset = "macintosh"; + } else if(!exportMenu && charset == "UTF-32BE") { + label = "Unicode (UTF-32)"; + charset = "UTF-32"; + } + charsets.push({ + "label":label, + "value":charset + }); } - + } + + for(var i=0; i 7 && + if(isUTF16 || (label.length >= 7 && label.substr(0, 7) == "Western")) { charsetPopup.insertBefore(itemNode, charsetSeparator); } else if(charset == "UTF-8") { diff --git a/chrome/content/zotero/errorReport.xul b/chrome/content/zotero/errorReport.xul index eff8c9196..82e65158f 100644 --- a/chrome/content/zotero/errorReport.xul +++ b/chrome/content/zotero/errorReport.xul @@ -6,7 +6,8 @@ + id="zotero-error-report" title="&zotero.errorReport.title;" + width="550" height="450">