diff --git a/chrome/content/zotero/charsetMenu.js b/chrome/content/zotero/charsetMenu.js index bd30fea32..8de8954df 100644 --- a/chrome/content/zotero/charsetMenu.js +++ b/chrome/content/zotero/charsetMenu.js @@ -39,65 +39,76 @@ var Zotero_Charset_Menu = new function() { // get charset popup and charset RDF var charsetPopup = document.createElement("menupopup"); charsetMenu.appendChild(charsetPopup); - var charsetSeparator = document.createElement("menuseparator"); - charsetPopup.appendChild(charsetSeparator); var charsets = []; - - Components.utils.import("resource://gre/modules/CharsetMenu.jsm"); - var cmData = CharsetMenu.getData(); - for (let charsetList of [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 - }); - } - } - } - 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"} - ]); - - for(var i=0; i= 7 && - label.substr(0, 7) == "Western")) { - charsetPopup.insertBefore(itemNode, charsetSeparator); - } else if(charset == "UTF-8") { - var oldFirst = (charsetPopup.firstChild ? charsetPopup.firstChild : null); - charsetPopup.insertBefore(itemNode, oldFirst); - // also add (without BOM) if requested - if(exportMenu) { - var itemNode = document.createElement("menuitem"); - itemNode.setAttribute("label", Zotero.getString("charset.UTF8withoutBOM")); - itemNode.setAttribute("value", charset+"xBOM"); - charsetMap[charset+"xBOM"] = itemNode; - charsetPopup.insertBefore(itemNode, oldFirst); - } - } else { + for (let charset of charsets) { + let { label, value } = charset; + + let itemNode = document.createElement("menuitem"); + itemNode.setAttribute("label", label); + itemNode.setAttribute("value", value); + + charsetMap[value] = itemNode; charsetPopup.appendChild(itemNode); } } + else { + var charsetSeparator = document.createElement("menuseparator"); + charsetPopup.appendChild(charsetSeparator); + + Components.utils.import("resource://gre/modules/CharsetMenu.jsm"); + var cmData = CharsetMenu.getData(); + for (let charsetList of [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 + }); + } + } + } + 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"} + ]); - if(!exportMenu) { + for(var i=0; i= 7 && label.substr(0, 7) == "Western") { + charsetPopup.insertBefore(itemNode, charsetSeparator); + } else if(charset == "UTF-8") { + var oldFirst = (charsetPopup.firstChild ? charsetPopup.firstChild : null); + charsetPopup.insertBefore(itemNode, oldFirst); + } else { + charsetPopup.appendChild(itemNode); + } + } + var itemNode = document.createElement("menuitem"); itemNode.setAttribute("label", Zotero.getString("charset.autoDetect")); itemNode.setAttribute("value", "auto");