и она сохраняет с текстом и ище код какой то
Этот код - адрес страницы. Да и поскольку еще и заголовка у страницы блокнота нет - заметка "false" называться будет. Замените в коде кнопки "Save+":
// создать название файла из заголовка страницы и текущего времени и сохранить текст .... var fileTitle = (getDocTitle() ? getDocTitle() : self.label) + ' ' + (new Date()).toLocaleFormat("%H·%M·%S"); saveURL("data:text/plain," + encodeURIComponent((content.location.href.startsWith('data:') ? "" : (content.location.href + "\r\n\r\n")) + getSelect()), fileTitle + ".txt", null, false, false, null, content.document);
Отредактировано turbot (20-08-2016 23:02:56)
Отсутствует
Уважаемый turbot, спасибо за Вашу "Раскукоживатель коротких ссылок(Firefox 24+), от 26.07.2016." - работает, как доктор прописал.
Но у меня есть несколько маленьких предложений.
1. Если сокращённая ссылка текст, а не линк (не кликабельна), то её надо выделять. Нельзя ли сделать, чтобы просто по клику - без выделения?
2. Нельзя ли добавить обратный сервис, т.е. скукоживатель с выбором скукоживателя (сократителя) в каскадном контекстном меню?
Спасибо
Хорошо, когда у человека есть выбор, но плохо, когда он перед ним стоит ©
Отсутствует
difabor
1. Наверное, нет. Если никто не подскажет, как сделать с минимальным ущербом для производительности. Там и так сомнительная конструкция, которая дергается на выделенном тексте, а если оно еще и вообще при каждом открытии меню будет...
(Кстати, Dumby, если не лень будет, не посмотрите, что более щадяще будет: текущая конструкция или такая:
((cntxtMenu, elm, mItem) => { mItem.id = "cb-unshorten-url"; mItem.setAttribute("label", "Раскукожить ссылку"); mItem.setAttribute("class", "menuitem-iconic"); mItem.setAttribute("image", self.image); elm.parentNode.insertBefore(mItem, elm); const alertsService = Cc["@mozilla.org/alerts-service;1"].getService(Ci.nsIAlertsService); var url, link, isUnshortened, // Сервисы сокращения ссылок. Можно добавлять свои. Работать, в теории, должно с любыми shortenerServices = [ "tinyurl.com", "po.st", "img.ly", "bit.ly", "goo.gl", "youtu.be", "t.co", "db.tt", "u.to", "shortlinks.de" ], // Опции: options = { replaceShortenedLinks: true, // Заменять адрес ссылки на странице раскукоженной showAlert: true, // Показывать всплывающие уведомления clickAlertToOpen: true, // Клик по уведомлению с раскукоженной ссылкой - откроет ее в новой вкладке showOnShortenedTextLinks: true, // Показывать пункт контекстного меню на выделенных текстовых ссылках promptDialogForTextLinks: true, // Показывать диалог с результатом для текстовых ссылок copyToClipboard: true, // Копировать раскукоженную ссылку в буфер обмена changeColorForUnshortenedLinks: true, // Индикация цветом ссылки ожидания ответа и результата changeColorBackAfterTimeout: false, // Возвращать цвет ссылок к исходному, после паузы unshortenedLinksColor: "lightgreen" // Цвет раскукоженных ссылок }, isFF32 = (parseFloat(Services.appinfo.platformVersion) >= 32); function isShortenedURL(aURL) { if (aURL && (gContextMenu && (gContextMenu.onLink && !gContextMenu.isTextSelected || gContextMenu.onPlainTextLink) || !aURL.match(/\s/) && !!aURL.match(/\//))) { if (!aURL.startsWith('http')) aURL = 'http://' + aURL.split(/^((\w+)?:\/\/)?(.+)/)[3]; var host = aURL.split(/http(s)?:\/\/([\w\.-]+)/)[2]; if (shortenerServices.indexOf(host) !== -1) { url = aURL; return true; } } return false; }; function promptDialog(aURL) { var input = {value: aURL}; var prompt = Services.prompt.prompt(null, options.copyToClipboard ? "Раскукоженная ссылка скопирована!" : "Ссылка раскукожена!", "Отредактировать и открыть в новой вкладке?", input, null, {value: false}); if (prompt) gBrowser.selectedTab = gBrowser.addTab(input.value); }; function xhr(aURL, cb) { let reURL = null; let xhr = Cc["@mozilla.org/xmlextras/xmlhttprequest;1"].createInstance(Ci.nsIXMLHttpRequest); let alertListener = { observe: function(aSubject, aTopic, aData) { if (aTopic != 'alertclickcallback') return; gBrowser.selectedTab = gBrowser.addTab(aData); } } let handler = ev => { evf(m => xhr.removeEventListener(m, handler, !1)); switch (ev.type) { case 'load': if (xhr.status == 200 || (isFF32 ? xhr.responseURL : xhr.channel.URI.spec) != aURL) { reURL = isFF32 ? xhr.responseURL : xhr.channel.URI.spec; cb(reURL); options.showAlert && (options.clickAlertToOpen ? alertsService.showAlertNotification(self.image, self.label, 'Ссылка раскукожена!\nНажмите, чтобы открыть в новой вкладке:\n' + (reURL.length > 100 ? ([reURL.slice(0,45), reURL.slice(-45)]).join('...') : reURL), true, reURL, alertListener, "") : alertsService.showAlertNotification(self.image, self.label, 'Ссылка раскукожена:\n' + (reURL.length > 100 ? ([reURL.slice(0,45), reURL.slice(-45)]).join('...') : reURL), false, "", null, "")); break; } default: cb(reURL); options.showAlert && alertsService.showAlertNotification(self.image, self.label, 'Ошибка при попытке получить ссылку: ' + xhr.statusText + ' [' + ev.type + ':' + xhr.status + ']', false, "", null, ""); break; } }; let evf = f => ['load', 'error', 'abort'].forEach(f); evf(m => xhr.addEventListener(m, handler, false)); try { xhr.mozBackgroundRequest = true; xhr.open('HEAD', aURL, true); xhr.channel.loadFlags |= Ci.nsIRequest.LOAD_ANONYMOUS | Ci.nsIRequest.LOAD_BYPASS_CACHE | Ci.nsIRequest.INHIBIT_CACHING; xhr.setRequestHeader("User-Agent", "Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)", false); xhr.setRequestHeader("Accept", "text/html,text/xml", false); xhr.send(null); } catch (ex) { cb(reURL); options.showAlert && alertsService.showAlertNotification(self.image, self.label, 'Неправильная ссылка: ' + (ex.toString().length > 100 ? ([ex.toString().slice(0,45), ex.toString().slice(-45)]).join('...') : ex.toString()), false, "", null, ""); } }; function shouldDisplay() { mItem.label = "Раскукожить ссылку"; if (gContextMenu.onLink && !gContextMenu.isTextSelected) { url = gContextMenu.getLinkURL(); link = gContextMenu.link; isUnshortened = link.getAttribute("cb-short-url"); if (isUnshortened) mItem.label = "Скукожить ссылку"; } if (gContextMenu.onPlainTextLink) { url = gContextMenu.linkURL; } if (!gContextMenu.onPlainTextLink && gContextMenu.isTextSelected) { url = document.commandDispatcher.focusedWindow.content.document.getSelection().toString().trim(); } mItem.hidden = !((gContextMenu.onLink || (gContextMenu.onPlainTextLink || gContextMenu.isTextSelected) && options.showOnShortenedTextLinks) && isShortenedURL(url) || gContextMenu.onLink && isUnshortened); }; cntxtMenu.addEventListener("popupshowing", shouldDisplay, false); addDestructor(()=> { cntxtMenu.removeEventListener("popupshowing", shouldDisplay, false); cntxtMenu.removeChild(mItem); }); mItem.onclick =()=> { if (gContextMenu.onLink && !gContextMenu.isTextSelected) { if (!isUnshortened) { if (options.changeColorForUnshortenedLinks) { var linkClr = link.style.getPropertyValue('color'); linkClr && link.style.setProperty('-cb-old-color', linkClr, link.style.getPropertyPriority('color')); var oldClr = link.style.getPropertyValue('-cb-old-color'); var oldClrPrrt = link.style.getPropertyPriority('-cb-old-color'); link.style.setProperty("color", "orangered", "important"); } xhr(url, reURL => { if (!reURL) { options.changeColorForUnshortenedLinks && (oldClr ? (link.style.setProperty("color", oldClr, oldClrPrrt), link.removeProperty('-cb-old-color')) : link.style.removeProperty("color")); return; } if (options.changeColorForUnshortenedLinks) { link.style.setProperty("color", options.unshortenedLinksColor, "important"); options.changeColorBackAfterTimeout && setTimeout(()=> oldClr ? (link.style.setProperty("color", oldClr, oldClrPrrt), link.removeProperty('-cb-old-color')) : link.style.removeProperty("color"), 1000); } options.copyToClipboard && gClipboard.write(reURL); options.replaceShortenedLinks && (link.setAttribute("cb-short-url", link.href), link.setAttribute("href", reURL)); }) } else { oldClr ? (link.style.setProperty("color", oldClr, oldClrPrrt), link.removeProperty('-cb-old-color')) : link.style.removeProperty("color"); link.setAttribute("href", isUnshortened); link.removeAttribute("cb-short-url"); } } else { xhr(url, reURL => { if (!reURL) return; options.copyToClipboard && gClipboard.write(reURL); options.promptDialogForTextLinks && promptDialog(reURL); }) } }; this._handleClick =()=> { url = gClipboard.read(); if (!url || !isShortenedURL(url)) { options.showAlert && alertsService.showAlertNotification(self.image, self.label, 'Неправильная ссылка!', false, "", null, ""); return; } xhr(url, reURL => { if (!reURL) return; options.copyToClipboard && gClipboard.write(reURL); promptDialog(reURL); }) }; this.tooltipText = "ПКМ: Раскукожить ссылку в буфере обмена"; })(document.getElementById("contentAreaContextMenu"), document.getElementById("context-sep-open"), document.createElement("menuitem"));
2. Нет. Во-первых, не желаю. Я противник использования коротких ссылок. А во-вторых, лень. Универсально не выйдет. Для каждого нужно использовать их API, получать левый ключ (либо вам регистрироваться, получать свой и прописывать в код) и т.д.
Отредактировано turbot (27-08-2016 15:33:12)
Отсутствует
что более щадяще будет
Не, не знаю. Но предположу, что косвенно об этом можно судить
по разнице во времени исполнения. Вот, попробуй понажимать
что-нибудь простое, или напиши какой-нибудь более надёжный тест.
Потом расскажешь.
var count = 4000; var links = [...content.document.links].map(link => link.href); if (!links.length) return; var url, shortenerServices = "tinyurl.com po.st img.ly bit.ly goo.gl youtu.be t.co db.tt u.to".split(" "); function test(func, start = Cu.now(), short = 0) { for(var ind = 0, stop = count/links.length; ind < stop; ind++) for(var url of links) short += func(url); return [func.name, short, Cu.now() - start].join("\t"); } alert(test(isShortenedURL_OLD) + "\n" + test(isShortenedURL_NEW)); function isShortenedURL_OLD(aURL) { if (aURL && !aURL.match(/\s/)) { var uri; try { uri = makeURI(aURL); } catch(ex) { aURL = 'http://' + aURL; uri = makeURI(aURL); } finally { if (uri && (uri.scheme == "http" || uri.scheme == "https") && shortenerServices.indexOf(uri.host) !== -1) { url = aURL; return true; } } } return false; }; function isShortenedURL_NEW(aURL) { if (aURL && (gContextMenu && (gContextMenu.onLink && !gContextMenu.isTextSelected || gContextMenu.onPlainTextLink) || !aURL.match(/\s/) && !!aURL.match(/\//))) { if (!aURL.startsWith('http')) aURL = 'http://' + aURL.split(/^((\w+)?:\/\/)?(.+)/)[3]; var host = aURL.split(/http(s)?:\/\/([\w\.-]+)/)[2]; if (shortenerServices.indexOf(host) !== -1) { url = aURL; return true; } } return false; };
Отсутствует
В 48 не работает сохранение изображения без запроса в указанную папку. Поправьте плз.
// Сохранять изображение без запроса в указанную папку .............. ((contextMenu, viewimage) => { var path = 'C:\\qwerty'; var arr = path.split("\\"); var menuItem = contextMenu.insertBefore(document.createElement("menuitem"), viewimage); menuItem.setAttribute("label", "Сохранить в указанную папку: " + arr[arr.length-1]); addDestructor(()=> menuItem.remove() ); addEventListener("popupshowing", e=> menuItem.hidden = viewimage.hidden, false, contextMenu); menuItem.onclick =()=> { var {get} = Application.prefs, run = get("browser.download.folderList"), dwnPath = get("browser.download.dir"), p, r; if ( dwnPath ) p = dwnPath.value, dwnPath.value = path; else Application.prefs.setValue("browser.download.dir", path); r = run.value, run.value = 2; saveImageURL(gContextMenu.imageURL, 0, 0, 0, 1, null, content.document); run.value = r; if (dwnPath) dwnPath.value = p; } })(document.getElementById("contentAreaContextMenu"), document.getElementById("context-viewimageinfo"));
Отредактировано Uxapb (28-08-2016 14:07:15)
Отсутствует
В 48 не работает сохранение изображения без запроса в указанную папку. Поправьте плз.
// Сохранять изображение без запроса в указанную папку, из контекстного меню, от 28.08.2016. ................ ((contextMenu, viewimage) => { var path = 'C:\\qwerty'; var menuItem = contextMenu.insertBefore(document.createElement("menuitem"), viewimage); menuItem.setAttribute("label", "Сохранить в указанную папку: " + path.split("\\").pop()); addDestructor(()=> menuItem.remove()); addEventListener("popupshowing", e=> menuItem.hidden = viewimage.hidden, false, contextMenu); menuItem.onclick =()=> { var run = cbu.getPrefs("browser.download.folderList"); var use = cbu.getPrefs("browser.download.useDownloadDir"); try { var dir = Services.prefs.getComplexValue("browser.download.dir", Ci.nsISupportsString).data } catch(e) { var dir = Services.downloads.defaultDownloadsDirectory.path }; cbu.setPrefs("browser.download.folderList", 2); cbu.setPrefs("browser.download.useDownloadDir", true); cbu.setPrefs("browser.download.dir", convertFromUnicode("UTF-8", path)); saveImageURL(gContextMenu.imageURL, 0, 0, 0, 1, null, content.document); cbu.setPrefs("browser.download.folderList", run); cbu.setPrefs("browser.download.useDownloadDir", use); cbu.setPrefs("browser.download.dir", convertFromUnicode("UTF-8", dir)); } })(document.getElementById("contentAreaContextMenu"), document.getElementById("context-viewimageinfo"));
Отсутствует
Потом расскажешь.
Ну, своего я точно не напишу. Так что по результатам этого теста заменил на новый вариант. Почти пятикратная разница во времени исполнения. Спасибо.
Отредактировано turbot (28-08-2016 16:16:16)
Отсутствует
День добрый. А в связи с выходом DownThemAll! 3.02 можно изменить кнопку под новые реалии??
Отсутствует
День добрый. А в связи с выходом DownThemAll! 3.02 можно изменить кнопку под новые реалии??
custombutton://%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22UTF-8%22%3F%3E%0D%0A%3Ccustombutton%20xmlns%3Acb%3D%22http%3A//xsms.nm.ru/custombuttons/%22%3E%0A%20%20%3Cname%3EDTA%3C/name%3E%0A%20%20%3Cimage%3E%3C%21%5BCDATA%5Bdata%3Aimage/png%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAAA0AAAAPCAYAAAA/I0V3AAAAAXNSR0IArs4c6QAAAcdJREFUKM990s9LG1EQwPHve9lN1PzYNU1SXaOXpKQU2ouhB6G3Iin0T+gxIOZfKPbQ4r+QIs2xf4PQXAsFqYdehZZqQaHG1bdxN6bZ3bweJEUtZC7DMPOZwzCCGzG/ufMW2OL/eHfxfuPNpJB3mlvSukfNGvLUcnloXZGw8sRGavPmkHF35QLnlOlhE+Axh88sR6SYihY5Z5ke8/goMiiyHLEwHd3ngiXhUsAjzZBTbWFSnI5KKMqcUUQxy4hjCphE01FBeCzisoSLSURBeCSIp6M8Pg4uy5yigTyXGIxvI7v1YRvEOgA6xiKghCJRjCn1FBYBgzhh263O12uiuxLEapBzqkHOqTesQzJckTUGUHlA1hiQZsjz3C8jyDn1IOdUQaxK1W420v2TPUCZRCQJ0RmBqK2hM4Ik4eQQKt0/2VPtZkMCTKBEK4lGGyBra9cZjUT/A7feSLWbjd1+Zegzg4hgfPAFEYHPDLuXVX8CAITd6jiROfdsnDAtJzzeWREuXWsb6lXY/86695rfMs9PWd6QcegZ4eCzALBbHTNMZiovk99WnsQHLwJpvIpSyYLxZ3SWHkcf98WjT93o8aE58n+odjP8C6dbrAZXOS2pAAAAAElFTkSuQmCC%5D%5D%3E%3C/image%3E%0A%20%20%3Cmode%3E0%3C/mode%3E%0A%20%20%3Cinitcode%3E%3C%21%5BCDATA%5B//%20%u041D%u0430%u0441%u0442%u0440%u043E%u0439%u043A%u0430%20%u0444%u0443%u043D%u043A%u0446%u0438%u0439%20%u043A%u043B%u0438%u043A%u043E%u0432%20%u043C%u044B%u0448%u0438%20%u0434%u043B%u044F%20%u043A%u043D%u043E%u043F%u043A%u0438%20................%0Athis.onclick%20%3De%3D%3E%20%7B%0A%0A%20%20%20%20//%20%u0434%u0435%u0439%u0441%u0442%u0432%u0438%u0435%20%u043F%u0440%u0438%20%u043A%u043B%u0438%u043A%u0435%20%u041B%u041A%u041C%20....%0A%20%20%20%20if%20%28%20e.button%20%3D%3D%200%20%29%0A%20%20%20%20%20%20%20%20%20document.getElementById%28%27dtaToolsDTA%27%29.click%28%29%3B%0A%20%20%20%20%20%20%20%20%20%20%0A%20%20%20%20//%20%u0434%u0435%u0439%u0441%u0442%u0432%u0438%u0435%20%u043F%u0440%u0438%20%u043A%u043B%u0438%u043A%u0435%20%u0421%u041A%u041C%20....%20%20%20%20%0A%20%20%20%20if%20%28%20e.button%20%3D%3D%201%20%29%20%7B%20%0A%20%20%20%20%20%20%20%20%20gFindBar.hidden%20%3F%20gFindBar.onFindCommand%28%29%20%3A%20gFindBar.close%28%29%3B%0A%20%20%20%20%20%20%20%20%20document.getElementById%28%27dtaToolsManager%27%29.click%28%29%3B%0A%20%20%20%20%20%20%20%20%20%7D%3B%0A%20%20%20%20%20%0A%20%20%20%20//%20%u0434%u0435%u0439%u0441%u0442%u0432%u0438%u0435%20%u043F%u0440%u0438%20%u043A%u043B%u0438%u043A%u0435%20%u041F%u041A%u041C%20....%20%20%20%20%0A%20%20%20%20if%20%28%20e.button%20%3D%3D%202%20%26%26%20%21e.ctrlKey%20%26%26%20%21e.shiftKey%20%26%26%20%21e.altKey%20%26%26%20%21e.metaKey%20%29%20%7B%20%0A%20%20%20%20%20%20%20%20%20e.preventDefault%28%29%3B%20%20%0A%20%20%20%20%20%20%20%20%20document.getElementById%28%27dtaToolsPrefs%27%29.click%28%29%3B%0A%20%20%20%20%20%20%20%20%20%7D%0A%7D%3B%0A%0A%0Athis.tooltipText%20%3D%20self.label%20+%20%22%5Cn%u041B%3A%20%u041E%u0442%u043A%u0440%u044B%u0442%u044C%20%u043E%u043A%u043E%u0448%u043A%u043E%20%u0434%u043E%u0431%u0430%u0432%u043B%u0435%u043D%u0438%u044F%20%u0437%u0430%u043A%u0430%u0447%u0435%u043A%20%u0434%u043B%u044F%20%u0442%u0435%u043A%u0443%u0449%u0435%u0439%20%u0441%u0442%u0440%u0430%u043D%u0438%u0446%u044B%20%5Cn%u0421%3A%20%u041E%u0442%u043A%u0440%u044B%u0442%u044C%20%u043C%u0435%u043D%u0435%u0434%u0436%u0435%u0440%20%u0437%u0430%u043A%u0430%u0447%u0435%u043A%20%5Cn%u041F%3A%20%u041D%u0430%u0441%u0442%u0440%u043E%u0439%u043A%u0438%20%5CnCtrl+%u041F%3A%20%u0421%u0442%u0430%u043D%u0434%u0430%u0440%u0442%u043D%u043E%u0435%20%u043C%u0435%u043D%u044E%20%u043A%u043D%u043E%u043F%u043A%u0438%22%3B%0A%5D%5D%3E%3C/initcode%3E%0A%20%20%3Ccode%3E%3C%21%5BCDATA%5B%0A%5D%5D%3E%3C/code%3E%0A%20%20%3Caccelkey%3E%3C%21%5BCDATA%5B%5D%5D%3E%3C/accelkey%3E%0A%20%20%3Chelp%3E%3C%21%5BCDATA%5B%5D%5D%3E%3C/help%3E%0A%20%20%3Cattributes/%3E%0A%3C/custombutton%3E
Отсутствует
Приветствую.
Не работают следующие кнопки:
FF Exp Imp CB
Extension List Generator
/* * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. * * Contributor(s): * - LouCypher (original code) */ var xul = this.Help; this.type = "menu"; this.tooltipText += "\nGenerate list of enabled extensions to selected output:" + "\nHTML, Markdown, BBCode, or plain text." var menupopup = this.appendChild(document.createElement("menupopup")); menupopup.setAttribute("oncommand", "generate(event);"); menupopup.generate = generate.bind(); ["HTML", "Markdown", "BBCode", "Plain text"].forEach(function(format) { var menuitem = menupopup.appendChild(document.createElement("menuitem")); menuitem.setAttribute("label", format); }) menupopup.appendChild(document.createElement("menuseparator")); var optionsMenu = menupopup.appendChild(document.createElement("menuitem")); optionsMenu.setAttribute("label", "Options"); optionsMenu.setAttribute("oncommand", "openOptions();"); optionsMenu.openOptions = openOptions.bind(); var rptCurrentDate, rptAddonsURLs, rptAddonsDescs, rptThemeScreenshot, rptInsideSpoiler; initPrefs(); function generate(aEvent) { if (aEvent.target.getAttribute("label") == "Options") return; initPrefs(); AddonManager.getAddonsByTypes(["theme", "extension"], function(addons) { var theme; var extArray = []; addons.forEach(function(addon) { if (addon.isActive) { if (addon.type == "theme") theme = addon; else extArray.push(addon); } }) extArray.sort(function(a, b) { a = a.name.toLowerCase(); b = b.name.toLowerCase(); if (a < b) return -1; if (a > b) return 1; return 0; }) var title = "My " + Application.name + " information"; var date = new Date(); switch (aEvent.target.getAttribute("label")) { case "HTML": generateHTML(title, date, theme, extArray); break; case "Markdown": generateMarkdown(title, date, theme, extArray); break; case "BBCode": generateBBCode(title, date, theme, extArray); break; case "Plain text": generateText(title, date, theme, extArray); } }) } function generateHTML(aTitle, aDate, aTheme, aArray) { var extensions = '<!doctype html><html itemscope="itemscope"' + ' itemtype="http://schema.org/WebPage"><head>' + '<meta charset="utf-8"><meta itemprop="description"' + ' content="' + aTitle + '"><meta name="description"' + ' content="' + aTitle + '"><title>' + aTitle + '</title>' + '</head><body><h1>' + aTitle + '</h1>' + (rptCurrentDate ? "<p>Last updated: " + aDate + "</p>" : "") + "<h2>User agent</h2><p>" + navigator.userAgent + "</p><h2>Theme</h2><p>" + (rptAddonsURLs && !isDefaultTheme(aTheme) ? '<a href="' + getThemeURL(aTheme) + '">' + aTheme.name + '</a>' : aTheme.name) + "</p>" + (rptThemeScreenshot && !isDefaultTheme(aTheme) && aTheme.screenshots && !/getpersonas/.test(aTheme.screenshots) ? '<p><img src="' + aTheme.screenshots[0].url + '" alt="' + aTheme.name + '"/></p>' : "") + "<h2>Extensions</h2>" + '<ol class="column">'; aArray.forEach(function(addon) { extensions += '<li style="margin-bottom:1em">' + (rptAddonsURLs ? ((addon.reviewURL ? '<a href="' + getAMOPage(addon.reviewURL) + '">' : addon.homepageURL ? '<a href="' + addon.homepageURL + '">' : '<a href="http://www.google.com/search?q="' + encodeURIComponent(addon.name + " extension") + '">') + addon.name + '</a>') : addon.name) + (addon.version ? " " + addon.version : "") + (rptAddonsDescs ? "<br/>" + addon.description : "") + "</li>"; }) extensions += "</ol></body></html>"; doSomething(extensions, "text/html"); } function generateMarkdown(aTitle, aDate, aTheme, aArray) { var idx = 0; var extensions = "# " + aTitle + (rptCurrentDate ? "\n\nLast updated: " + aDate : "") + "\n\n## User agent\n\n" + navigator.userAgent + "\n\n## Theme\n\n" + (rptAddonsURLs && !isDefaultTheme(aTheme) ? "[" + aTheme.name + "](" + getThemeURL(aTheme) + ")" : aTheme.name) + (rptThemeScreenshot && !isDefaultTheme(aTheme) && aTheme.screenshots && !/getpersonas/.test(aTheme.screenshots) ? "\n\n![" + aTheme.name + "](" + aTheme.screenshots[0].url + ")" : "") + "\n\n## Extensions"; aArray.forEach(function(addon) { idx++; extensions += "\n\n" + idx + ". " + (rptAddonsURLs ? ((addon.reviewURL ? "[" + addon.name + "](" + getAMOPage(addon.reviewURL) : addon.homepageURL ? "[" + addon.name + "](" + addon.homepageURL : "[" + addon.name + "](" + "http://www.google.com/search?q=" + encodeURIComponent(addon.name + " extension")) + ")") : addon.name) + (addon.version ? " " + addon.version : "") + (rptAddonsDescs ? " \n" + addon.description : "") }) doSomething(extensions, "text/plain", "%0A%0A.md"); } function generateBBCode(aTitle, aDate, aTheme, aArray) { var extensions = (rptInsideSpoiler ? "[spoiler=" + aTitle + "]" : "") + (rptCurrentDate ? "[b]Last updated: [/b]" + aDate : "") + "\n\n[b]User agent:[/b] " + navigator.userAgent + "\n\n[b]Theme:[/b] " + (rptAddonsURLs && !isDefaultTheme(aTheme) ? "[url=" + getThemeURL(aTheme) + "]" + aTheme.name + "[/url]" : aTheme.name) + (rptThemeScreenshot && !isDefaultTheme(aTheme) && aTheme.screenshots && !/getpersonas/.test(aTheme.screenshots) ? "\n[img]" + aTheme.screenshots[0].url + "[/img]" : "") + "\n\n[b]Extensions:[/b]\n[list=1]" aArray.forEach(function(addon) { extensions += "[*]" + (rptAddonsURLs ? ((addon.reviewURL ? "[url=" + getAMOPage(addon.reviewURL) : addon.homepageURL ? "[url=" + addon.homepageURL : "[url=http://www.google.com/search?q=" + encodeURIComponent(addon.name + " extension")) + "]" + addon.name + "[/url]") : addon.name) + (addon.version ? " " + addon.version : "") + (rptAddonsDescs ? "\n" + addon.description : ""); }) extensions += rptInsideSpoiler ? "[/list][/spoiler]" : "[/list]"; doSomething(extensions, "text/plain"); } function generateText(aTitle, aDate, aTheme, aArray) { var idx = 0; var extensions = aTitle + "\n" for (var i = 0; i < aTitle.length; i++) { extensions += "="; } extensions += (rptCurrentDate ? "\n\nLast updated: " + aDate : "") + "\n\nUser agent: " + navigator.userAgent + "\n\nTheme: " + aTheme.name + "\n\nExtensions\n----------"; aArray.forEach(function(addon) { idx++; extensions += "\n" + idx + ". " + addon.name + (addon.version ? " " + addon.version : "") + (rptAddonsDescs ? "\n" + addon.description : "") + (rptAddonsURLs ? "\n" + (addon.reviewURL ? getAMOPage(addon.reviewURL) : addon.homepageURL ? addon.homepageURL : "") : "") + (rptAddonsDescs || rptAddonsURLs ? "\n" : ""); }) doSomething(extensions, "text/plain"); } function isDefaultTheme(aTheme) { return aTheme.id == "{972ce4c6-7e08-4474-a285-3208198ce6fd}" || aTheme.id == "modern@themes.mozilla.org"; } function getAMOPage(aReviewURL) { var url = aReviewURL.replace(/\/reviews\/.*$/, "/") .replace(/mozilla.org\/.*\/addon\//, "mozilla.org/addon/"); url += "?src=external-extension-list-generator"; return url; } function getThemeURL(aAddon) { var url; if (aAddon.reviewURL) { return getAMOPage(aAddon.reviewURL); } else { var id = aAddon.id.match(/\d+/).toString(); if (/getpersonas/.test(aAddon.screenshots[0].url)) { url = "http://getpersonas.com/persona/" + id; } else { url = "http://addons.mozilla.org/addon/" + id; } } url += "/?src=external-extension-list-generator"; return url; } function doSomething(aString, aContentType, aExt) { var doWhat = custombuttons.confirmBox3(self.name, "Extension list has been generated.", "Copy", "Cancel", "View"); switch (doWhat) { case 0: // Copy cbu.gClipboard.write(aString); Cc["@mozilla.org/alerts-service;1"].getService(Ci.nsIAlertsService). showAlertNotification("chrome://mozapps/skin/xpinstall/xpinstallItemGeneric.png", self.name, "Copied to clipboard!", false, "", null); break; case 2: // View var url = "data:" + aContentType + ";charset=utf-8," + encodeURIComponent(aString) + (aExt ? aExt : ""); if (Application.id == "{3550f703-e582-4d05-9a08-453d09bdfdc6}") { // Thunderbird openContentTab(url, "tab", "^https?:"); } else { switchToTabHavingURI(url, true); } default: // Close } } function getBoolPref(aPrefName, aDefVal) { var prefRoot = "custombuttons.extension-list-generator.report."; var prefBranch = cbu.ps.getBranch(prefRoot); try { return prefBranch.getBoolPref(aPrefName); } catch(ex) { prefBranch.setBoolPref(aPrefName, aDefVal); return aDefVal; } } function initPrefs() { rptCurrentDate = getBoolPref("currentDate", true); rptAddonsURLs = getBoolPref("addonsURLs", true); rptAddonsDescs = getBoolPref("addonsDescriptions", false); rptThemeScreenshot = getBoolPref("themeScreenshot", true); rptInsideSpoiler = getBoolPref("insideSpoiler", false); } function openOptions() { var em = Services.ww.getWindowEnumerator(); var winName = "extension-list-generator-options"; var index = 1; while (em.hasMoreElements()) { let win = em.getNext(); if(win.name == winName) { win.focus(); return; } index++ } openDialog("data:application/vnd.mozilla.xul+xml;base64," + encodeURIComponent(btoa(xul)), winName, "chrome, dialog, centerscreen, close"); }
Справка
<?xml version="1.0"?> <!-- This Source Code Form is subject to the terms of the Mozilla Public License, v. 2.0. If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/. Contributor(s): - LouCypher (original code) --> <?xml-stylesheet href="chrome://global/skin/"?> <?xml-stylesheet href="data:text/css;base64,YnV0dG9uW2RsZ3R5cGU9ImV4dHJhMiJdIHsKICAtbW96LWFwcGVhcmFuY2U6IG5vbmU7CiAgY29sb3I6ICNGRkY7CiAgYm9yZGVyOiAxcHggc29saWQgIzNBNEVFRTsKICBib3JkZXItcmFkaXVzOiAzcHg7CiAgbGlzdC1zdHlsZS1pbWFnZTogdXJsKCJjaHJvbWU6Ly9tb3phcHBzL3NraW4vZXh0ZW5zaW9ucy9oZWFydC5wbmciKTsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjMkY3M0VGOwogIGJhY2tncm91bmQtaW1hZ2U6IC1tb3otbGluZWFyLWdyYWRpZW50KHJnYmEoMjUxLCAyNTIsIDI1MywgMC43MCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmdiYSgyNDYsIDI0NywgMjQ4LCAwLjI3KSA0OSUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmdiYSgyMzEsIDIzMiwgMjMzLCAwLjI1KSA1MSUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmdiYSgyMjUsIDIyNiwgMjI5LCAwLjEpKTsKICBiYWNrZ3JvdW5kLWltYWdlOiAgICAgIGxpbmVhci1ncmFkaWVudChyZ2JhKDI1MSwgMjUyLCAyNTMsIDAuNzApLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJnYmEoMjQ2LCAyNDcsIDI0OCwgMC4yNykgNDklLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJnYmEoMjMxLCAyMzIsIDIzMywgMC4yNSkgNTElLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJnYmEoMjI1LCAyMjYsIDIyOSwgMC4xKSk7Cn0KYnV0dG9uW2RsZ3R5cGU9ImV4dHJhMiJdIC5idXR0b24tYm94IHsgcGFkZGluZzogMCA2cHggMXB4IDZweDsgfQpidXR0b25bZGxndHlwZT0iZXh0cmEyIl0gLmJ1dHRvbi1pY29uIHsgLW1vei1tYXJnaW4tZW5kOiAzcHg7IH0KYnV0dG9uW2RsZ3R5cGU9ImV4dHJhMiJdOm5vdCg6YWN0aXZlKTpob3ZlciB7CiAgYm9yZGVyLWNvbG9yOiAjNDI3MUZGOwogIGJhY2tncm91bmQtY29sb3I6ICMwNDU5Rjc7CiAgLW1vei1ib3gtc2hhZG93OiAwIDFweCAwIHJnYmEoMCwgMCwgMCwgMC4xKSwgMCAwIDMuNXB4IGhzbCgxOTAsIDkwJSwgODAlKTsKICAgICAgIGJveC1zaGFkb3c6IDAgMXB4IDAgcmdiYSgwLCAwLCAwLCAwLjEpLCAwIDAgMy41cHggaHNsKDE5MCwgOTAlLCA4MCUpOwogIC1tb3otdHJhbnNpdGlvbjogYmFja2dyb3VuZC1jb2xvciAuNHMgZWFzZS1pbiwKICAgICAgICAgICAgICAgICAgIGJvcmRlci1jb2xvciAuM3MgZWFzZS1pbiwKICAgICAgICAgICAgICAgICAgIGJveC1zaGFkb3cgLjNzIGVhc2UtaW47CiAgICAgICB0cmFuc2l0aW9uOiBiYWNrZ3JvdW5kLWNvbG9yIC40cyBlYXNlLWluLAogICAgICAgICAgICAgICAgICAgYm9yZGVyLWNvbG9yIC4zcyBlYXNlLWluLAogICAgICAgICAgICAgICAgICAgYm94LXNoYWRvdyAuM3MgZWFzZS1pbjsKfQpidXR0b25bZGxndHlwZT0iZXh0cmEyIl06YWN0aXZlOmhvdmVyIHsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjOEZBMUMxOwogIGJvcmRlci1jb2xvcjogcmdiYSgwLCAwLCAwLCAwLjY1KSByZ2JhKDAsIDAsIDAsIDAuNTUpIHJnYmEoMCwgMCwgMCwgMC41KTsKICAtbW96LWJveC1zaGFkb3c6IDAgMCA2LjVweCByZ2JhKDAsIDAsIDAsIDAuNCkgaW5zZXQsCiAgICAgICAgICAgICAgICAgICAwIDAgMnB4IHJnYmEoMCwgMCwgMCwgMC40KSBpbnNldCwKICAgICAgICAgICAgICAgICAgIDAgMXB4IDAgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjQpOwogICAgICAgYm94LXNoYWRvdzogMCAwIDYuNXB4IHJnYmEoMCwgMCwgMCwgMC40KSBpbnNldCwKICAgICAgICAgICAgICAgICAgIDAgMCAycHggcmdiYSgwLCAwLCAwLCAwLjQpIGluc2V0LAogICAgICAgICAgICAgICAgICAgMCAxcHggMCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNCk7Cn0%3D"?> <prefwindow xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul" id="extension-list-generator-options" title="Extension List Generator Options" buttons="extra2, accept, cancel" buttonlabelextra2="Contribute" ondialogextra2="contribute(); close();" onload="sizeToContent();"> <script type="application/x-javascript"><![CDATA[ function contribute() { var url = "http://loucypher.github.io/userscripts/donate.html" + "?Extension+List+Generator" var win = window.opener; if ("openContentTab" in win) { win.openContentTab(url, "tab"); } else { win.openLinkIn(url, "tabshifted", {}); // Requires utilityOverlay.js } } ]]></script> <prefpane id="prefpane-menu" label="Prefpane menu"> <preferences> <preference id="date" name="custombuttons.extension-list-generator.report.currentDate" type="bool"/> <preference id="addonsURLs" name="custombuttons.extension-list-generator.report.addonsURLs" type="bool"/> <preference id="addonsDescriptions" name="custombuttons.extension-list-generator.report.addonsDescriptions" type="bool"/> <preference id="themeScreenshot" name="custombuttons.extension-list-generator.report.themeScreenshot" type="bool"/> <preference id="spoilerTag" name="custombuttons.extension-list-generator.report.insideSpoiler" type="bool"/> </preferences> <groupbox> <caption>Select which informations to include</caption> <checkbox label="Current date" preference="date"/> <checkbox label="Add-ons URLs" preference="addonsURLs"/> <checkbox label="Add-ons Descriptions" preference="addonsDescriptions"/> <checkbox label="Theme screenshot (for non-default theme)" preference="themeScreenshot"/> </groupbox> <groupbox> <caption>BBCode ouput</caption> <checkbox label="Inside [spoiler] tag" preference="spoilerTag"/> <label>Not all forum softwares support this tag.</label> </groupbox> </prefpane> </prefwindow>
Отсутствует
Приветствую.
Не работают следующие кнопки:
Отсутствует
FF Exp Imp CB
Спасибо.
А с Extension List Generator не поможете ?
custombutton://%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22UTF-8%22%3F%3E%0D%0A%3Ccustombutton%20xmlns%3Acb%3D%22http%3A//xsms.nm.ru/custombuttons/%22%3E%0A%20%20%3Cname%3EExtension%20List%20Generator%3C/name%3E%0A%20%20%3Cimage%3E%3C%21%5BCDATA%5Bdata%3Aimage/png%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAABVUlEQVQ4y2P4//8/AyWYoALpQsb9ftPM/4tnM+4nywCQ5s5jRf8d+7T+k2VAxHzH/TUHkv57TDMgzgWyJYz74xZ6/E9Y4vU/ZaXv/9Jd0f/LDkb+j13v8N9xmtp/oy6J/xqN/P+5Ihj2YzUApHnxtb7/My83/e8+W/C/9nj8//yD/v+T99j/D99u8N9nk/J/h9Vi/+Vq2P5jNQBkMz7NTuvE/1ut5v0vV8+M3QCQs3Fptlsh+l93Ktd/pTaW/wKpjAgDYFEFCjCQn3HZDNLME8tYANLDEcrgADcAFlWg0AYFGC5nK3ew/McaC6BEAopnUFSBQhubZpMVbP81JrFgdwEyBkUVup9BNoM0681hBdMYYYCMQfGMzc8gGqQZ5BIQxhkLoEQCimeQs0E2IcuB+CDNxkvZ/ktX4jAAlMJAiQRkA8iZML+CaBAfJA7SDOTvJyovEMIAruB4gKjNkYMAAAAASUVORK5CYII%3D%5D%5D%3E%3C/image%3E%0A%20%20%3Cmode%3E0%3C/mode%3E%0A%20%20%3Cinitcode%3E%3C%21%5BCDATA%5B/*%0A%20*%20%20This%20Source%20Code%20Form%20is%20subject%20to%20the%20terms%20of%20the%20Mozilla%20Public%0A%20*%20%20License%2C%20v.%202.0.%20If%20a%20copy%20of%20the%20MPL%20was%20not%20distributed%20with%20this%0A%20*%20%20file%2C%20You%20can%20obtain%20one%20at%20http%3A//mozilla.org/MPL/2.0/.%0A%20*%0A%20*%20%20Contributor%28s%29%3A%0A%20*%20%20-%20LouCypher%20%28original%20code%29%0A%20*/%0A%0Avar%20xul%20%3D%20this.Help%3B%0Athis.type%20%3D%20%22menu%22%3B%0Athis.tooltipText%20+%3D%20%22%5CnGenerate%20list%20of%20enabled%20extensions%20to%20selected%20output%3A%22%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20+%20%22%5CnHTML%2C%20Markdown%2C%20BBCode%2C%20or%20plain%20text.%22%0A%0Avar%20menupopup%20%3D%20this.appendChild%28document.createElement%28%22menupopup%22%29%29%3B%0Amenupopup.setAttribute%28%22oncommand%22%2C%20%22generate%28event%29%3B%22%29%3B%0Amenupopup.generate%20%3D%20generate.bind%28%29%3B%0A%0A%5B%22HTML%22%2C%20%22Markdown%22%2C%20%22BBCode%22%2C%20%22Plain%20text%22%5D.forEach%28function%28format%29%20%7B%0A%20%20var%20menuitem%20%3D%20menupopup.appendChild%28document.createElement%28%22menuitem%22%29%29%3B%0A%20%20menuitem.setAttribute%28%22label%22%2C%20format%29%3B%0A%7D%29%0A%0Amenupopup.appendChild%28document.createElement%28%22menuseparator%22%29%29%3B%0A%0Avar%20optionsMenu%20%3D%20menupopup.appendChild%28document.createElement%28%22menuitem%22%29%29%3B%0AoptionsMenu.setAttribute%28%22label%22%2C%20%22Options%22%29%3B%0AoptionsMenu.setAttribute%28%22oncommand%22%2C%20%22openOptions%28%29%3B%22%29%3B%0AoptionsMenu.openOptions%20%3D%20openOptions.bind%28%29%3B%0A%0Avar%20rptCurrentDate%2C%20rptAddonsURLs%2C%20rptAddonsDescs%2C%20rptThemeScreenshot%2C%0A%20%20%20%20rptInsideSpoiler%3B%0A%0AinitPrefs%28%29%3B%0A%0Afunction%20generate%28aEvent%29%20%7B%0A%20%20if%20%28aEvent.target.getAttribute%28%22label%22%29%20%3D%3D%20%22Options%22%29%20return%3B%0A%20%20initPrefs%28%29%3B%0A%20%20AddonManager.getAddonsByTypes%28%5B%22theme%22%2C%20%22extension%22%5D%2C%20function%28addons%29%20%7B%0A%20%20%20%20var%20theme%3B%0A%20%20%20%20var%20extArray%20%3D%20%5B%5D%3B%0A%20%20%20%20addons.forEach%28function%28addon%29%20%7B%0A%20%20%20%20%20%20if%20%28addon.isActive%29%20%7B%0A%20%20%20%20%20%20%20%20if%20%28addon.type%20%3D%3D%20%22theme%22%29%20theme%20%3D%20addon%3B%0A%20%20%20%20%20%20%20%20else%20extArray.push%28addon%29%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%29%0A%20%20%20%20extArray.sort%28function%28a%2C%20b%29%20%7B%0A%20%20%20%20%20%20a%20%3D%20a.name.toLowerCase%28%29%3B%0A%20%20%20%20%20%20b%20%3D%20b.name.toLowerCase%28%29%3B%0A%20%20%20%20%20%20if%20%28a%20%3C%20b%29%20return%20-1%3B%0A%20%20%20%20%20%20if%20%28a%20%3E%20b%29%20return%201%3B%0A%20%20%20%20%20%20return%200%3B%0A%20%20%20%20%7D%29%0A%20%20%20%20var%20title%20%3D%20%22My%20%22%20+%20Application.name%20+%20%22%20information%22%3B%0A%20%20%20%20var%20date%20%3D%20new%20Date%28%29%3B%0A%20%20%20%20switch%20%28aEvent.target.getAttribute%28%22label%22%29%29%20%7B%0A%20%20%20%20%20%20case%20%22HTML%22%3A%20generateHTML%28title%2C%20date%2C%20theme%2C%20extArray%29%3B%20break%3B%0A%20%20%20%20%20%20case%20%22Markdown%22%3A%20generateMarkdown%28title%2C%20date%2C%20theme%2C%20extArray%29%3B%20break%3B%0A%20%20%20%20%20%20case%20%22BBCode%22%3A%20generateBBCode%28title%2C%20date%2C%20theme%2C%20extArray%29%3B%20break%3B%0A%20%20%20%20%20%20case%20%22Plain%20text%22%3A%20generateText%28title%2C%20date%2C%20theme%2C%20extArray%29%3B%0A%20%20%20%20%7D%0A%20%20%7D%29%0A%7D%0A%0Afunction%20generateHTML%28aTitle%2C%20aDate%2C%20aTheme%2C%20aArray%29%20%7B%0A%20%20var%20extensions%20%3D%20%27%3C%21doctype%20html%3E%3Chtml%20itemscope%3D%22itemscope%22%27%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20+%20%27%20itemtype%3D%22http%3A//schema.org/WebPage%22%3E%3Chead%3E%27%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20+%20%27%3Cmeta%20charset%3D%22utf-8%22%3E%3Cmeta%20itemprop%3D%22description%22%27%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20+%20%27%20content%3D%22%27%20+%20aTitle%20+%20%27%22%3E%3Cmeta%20name%3D%22description%22%27%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20+%20%27%20content%3D%22%27%20+%20aTitle%20+%20%27%22%3E%3Ctitle%3E%27%20+%20aTitle%20+%20%27%3C/title%3E%27%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20+%20%27%3C/head%3E%3Cbody%3E%3Ch1%3E%27%20+%20aTitle%20+%20%27%3C/h1%3E%27%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20+%20%28rptCurrentDate%20%3F%20%22%3Cp%3ELast%20updated%3A%20%22%20+%20aDate%20+%20%22%3C/p%3E%22%20%3A%20%22%22%29%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20+%20%22%3Ch2%3EUser%20agent%3C/h2%3E%3Cp%3E%22%20+%20navigator.userAgent%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20+%20%22%3C/p%3E%3Ch2%3ETheme%3C/h2%3E%3Cp%3E%22%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20+%20%28rptAddonsURLs%20%26%26%20%21isDefaultTheme%28aTheme%29%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3F%20%27%3Ca%20href%3D%22%27%20+%20getThemeURL%28aTheme%29%20+%20%27%22%3E%27%20+%20aTheme.name%20+%20%27%3C/a%3E%27%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3A%20aTheme.name%29%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20+%20%22%3C/p%3E%22%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20+%20%28rptThemeScreenshot%20%26%26%20%21isDefaultTheme%28aTheme%29%20%26%26%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20aTheme.screenshots%20%26%26%20%21/getpersonas/.test%28aTheme.screenshots%29%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3F%20%27%3Cp%3E%3Cimg%20src%3D%22%27%20+%20aTheme.screenshots%5B0%5D.url%20+%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%27%22%20alt%3D%22%27%20+%20aTheme.name%20+%20%27%22/%3E%3C/p%3E%27%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3A%20%22%22%29%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20+%20%22%3Ch2%3EExtensions%3C/h2%3E%22%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20+%20%27%3Col%20class%3D%22column%22%3E%27%3B%0A%20%20aArray.forEach%28function%28addon%29%20%7B%0A%20%20%20%20extensions%20+%3D%20%27%3Cli%20style%3D%22margin-bottom%3A1em%22%3E%27%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20+%20%28rptAddonsURLs%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3F%20%28%28addon.reviewURL%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3F%20%27%3Ca%20href%3D%22%27%20+%20getAMOPage%28addon.reviewURL%29%20+%20%27%22%3E%27%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3A%20addon.homepageURL%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3F%20%27%3Ca%20href%3D%22%27%20+%20addon.homepageURL%20+%20%27%22%3E%27%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3A%20%27%3Ca%20href%3D%22http%3A//www.google.com/search%3Fq%3D%22%27%20+%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20encodeURIComponent%28addon.name%20+%20%22%20extension%22%29%20+%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%27%22%3E%27%29%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20+%20addon.name%20+%20%27%3C/a%3E%27%29%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3A%20addon.name%29%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20+%20%28addon.version%20%3F%20%22%20%22%20+%20addon.version%20%3A%20%22%22%29%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20+%20%28rptAddonsDescs%20%3F%20%22%3Cbr/%3E%22%20+%20addon.description%20%3A%20%22%22%29%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20+%20%22%3C/li%3E%22%3B%0A%20%20%7D%29%0A%20%20extensions%20+%3D%20%22%3C/ol%3E%3C/body%3E%3C/html%3E%22%3B%0A%20%20doSomething%28extensions%2C%20%22text/html%22%29%3B%0A%7D%0A%0Afunction%20generateMarkdown%28aTitle%2C%20aDate%2C%20aTheme%2C%20aArray%29%20%7B%0A%20%20var%20idx%20%3D%200%3B%0A%20%20var%20extensions%20%3D%20%22%23%20%22%20+%20aTitle%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20+%20%28rptCurrentDate%20%3F%20%22%5Cn%5CnLast%20updated%3A%20%22%20+%20aDate%20%3A%20%22%22%29%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20+%20%22%5Cn%5Cn%23%23%20User%20agent%5Cn%5Cn%22%20+%20navigator.userAgent%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20+%20%22%5Cn%5Cn%23%23%20Theme%5Cn%5Cn%22%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20+%20%28rptAddonsURLs%20%26%26%20%21isDefaultTheme%28aTheme%29%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3F%20%22%5B%22%20+%20aTheme.name%20+%20%22%5D%28%22%20+%20getThemeURL%28aTheme%29%20+%20%22%29%22%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3A%20aTheme.name%29%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20+%20%28rptThemeScreenshot%20%26%26%20%21isDefaultTheme%28aTheme%29%20%26%26%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20aTheme.screenshots%20%26%26%20%21/getpersonas/.test%28aTheme.screenshots%29%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3F%20%22%5Cn%5Cn%21%5B%22%20+%20aTheme.name%20+%20%22%5D%28%22%20+%20aTheme.screenshots%5B0%5D.url%20+%20%22%29%22%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3A%20%22%22%29%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20+%20%22%5Cn%5Cn%23%23%20Extensions%22%3B%0A%20%20aArray.forEach%28function%28addon%29%20%7B%0A%20%20%20%20idx++%3B%0A%20%20%20%20extensions%20+%3D%20%22%5Cn%5Cn%22%20+%20idx%20+%20%22.%20%22%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20+%20%28rptAddonsURLs%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3F%20%28%28addon.reviewURL%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3F%20%22%5B%22%20+%20addon.name%20+%20%22%5D%28%22%20+%20getAMOPage%28addon.reviewURL%29%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3A%20addon.homepageURL%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3F%20%22%5B%22%20+%20addon.name%20+%20%22%5D%28%22%20+%20addon.homepageURL%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3A%20%22%5B%22%20+%20addon.name%20+%20%22%5D%28%22%20+%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22http%3A//www.google.com/search%3Fq%3D%22%20+%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20encodeURIComponent%28addon.name%20+%20%22%20extension%22%29%29%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20+%20%22%29%22%29%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3A%20addon.name%29%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20+%20%28addon.version%20%3F%20%22%20%22%20+%20addon.version%20%3A%20%22%22%29%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20+%20%28rptAddonsDescs%20%3F%20%22%20%20%5Cn%22%20+%20addon.description%20%3A%20%22%22%29%0A%20%20%7D%29%0A%20%20doSomething%28extensions%2C%20%22text/plain%22%2C%20%22%250A%250A.md%22%29%3B%0A%7D%0A%0Afunction%20generateBBCode%28aTitle%2C%20aDate%2C%20aTheme%2C%20aArray%29%20%7B%0A%20%20var%20extensions%20%3D%20%28rptInsideSpoiler%20%3F%20%22%5Bspoiler%3D%22%20+%20aTitle%20+%20%22%5D%22%20%3A%20%22%22%29%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20+%20%28rptCurrentDate%20%3F%20%22%5Bb%5DLast%20updated%3A%20%5B/b%5D%22%20+%20aDate%20%3A%20%22%22%29%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20+%20%22%5Cn%5Cn%5Bb%5DUser%20agent%3A%5B/b%5D%20%22%20+%20navigator.userAgent%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20+%20%22%5Cn%5Cn%5Bb%5DTheme%3A%5B/b%5D%20%22%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20+%20%28rptAddonsURLs%20%26%26%20%21isDefaultTheme%28aTheme%29%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3F%20%22%5Burl%3D%22%20+%20getThemeURL%28aTheme%29%20+%20%22%5D%22%20+%20aTheme.name%20+%20%22%5B/url%5D%22%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3A%20aTheme.name%29%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20+%20%28rptThemeScreenshot%20%26%26%20%21isDefaultTheme%28aTheme%29%20%26%26%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20aTheme.screenshots%20%26%26%20%21/getpersonas/.test%28aTheme.screenshots%29%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3F%20%22%5Cn%5Bimg%5D%22%20+%20aTheme.screenshots%5B0%5D.url%20+%20%22%5B/img%5D%22%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3A%20%22%22%29%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20+%20%22%5Cn%5Cn%5Bb%5DExtensions%3A%5B/b%5D%5Cn%5Blist%3D1%5D%22%0A%20%20aArray.forEach%28function%28addon%29%20%7B%0A%20%20%20%20extensions%20+%3D%20%22%5B*%5D%22%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20+%20%28rptAddonsURLs%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3F%20%28%28addon.reviewURL%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3F%20%22%5Burl%3D%22%20+%20getAMOPage%28addon.reviewURL%29%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3A%20addon.homepageURL%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3F%20%22%5Burl%3D%22%20+%20addon.homepageURL%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3A%20%22%5Burl%3Dhttp%3A//www.google.com/search%3Fq%3D%22%20+%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20encodeURIComponent%28addon.name%20+%20%22%20extension%22%29%29%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20+%20%22%5D%22%20+%20addon.name%20+%20%22%5B/url%5D%22%29%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3A%20addon.name%29%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20+%20%28addon.version%20%3F%20%22%20%22%20+%20addon.version%20%3A%20%22%22%29%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20+%20%28rptAddonsDescs%20%3F%20%22%5Cn%22%20+%20addon.description%20%3A%20%22%22%29%3B%0A%20%20%7D%29%0A%20%20extensions%20+%3D%20rptInsideSpoiler%20%3F%20%22%5B/list%5D%5B/spoiler%5D%22%20%3A%20%22%5B/list%5D%22%3B%0A%20%20doSomething%28extensions%2C%20%22text/plain%22%29%3B%0A%7D%0A%0Afunction%20generateText%28aTitle%2C%20aDate%2C%20aTheme%2C%20aArray%29%20%7B%0A%20%20var%20idx%20%3D%200%3B%0A%20%20var%20extensions%20%3D%20aTitle%20+%20%22%5Cn%22%0A%20%20for%20%28var%20i%20%3D%200%3B%20i%20%3C%20aTitle.length%3B%20i++%29%20%7B%0A%20%20%20%20extensions%20+%3D%20%22%3D%22%3B%0A%20%20%7D%0A%20%20extensions%20+%3D%20%28rptCurrentDate%20%3F%20%22%5Cn%5CnLast%20updated%3A%20%22%20+%20aDate%20%3A%20%22%22%29%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20+%20%22%5Cn%5CnUser%20agent%3A%20%22%20+%20navigator.userAgent%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20+%20%22%5Cn%5CnTheme%3A%20%22%20+%20aTheme.name%20+%20%22%5Cn%5CnExtensions%5Cn----------%22%3B%0A%20%20aArray.forEach%28function%28addon%29%20%7B%0A%20%20%20%20idx++%3B%0A%20%20%20%20extensions%20+%3D%20%22%5Cn%22%20+%20idx%20+%20%22.%20%22%20+%20addon.name%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20+%20%28addon.version%20%3F%20%22%20%22%20+%20addon.version%20%3A%20%22%22%29%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20+%20%28rptAddonsDescs%20%3F%20%22%5Cn%22%20+%20addon.description%20%3A%20%22%22%29%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20+%20%28rptAddonsURLs%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3F%20%22%5Cn%22%20+%20%28addon.reviewURL%20%3F%20getAMOPage%28addon.reviewURL%29%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3A%20addon.homepageURL%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3F%20addon.homepageURL%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3A%20%22%22%29%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3A%20%22%22%29%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20+%20%28rptAddonsDescs%20%7C%7C%20rptAddonsURLs%20%3F%20%22%5Cn%22%20%3A%20%22%22%29%3B%0A%20%20%7D%29%0A%20%20doSomething%28extensions%2C%20%22text/plain%22%29%3B%0A%7D%0A%0Afunction%20isDefaultTheme%28aTheme%29%20%7B%0A%20%20return%20aTheme.id%20%3D%3D%20%22%7B972ce4c6-7e08-4474-a285-3208198ce6fd%7D%22%20%7C%7C%0A%20%20%20%20%20%20%20%20%20aTheme.id%20%3D%3D%20%22modern@themes.mozilla.org%22%3B%0A%7D%0A%0Afunction%20getAMOPage%28aReviewURL%29%20%7B%0A%20%20var%20url%20%3D%20aReviewURL.replace%28/%5C/reviews%5C/.*%24/%2C%20%22/%22%29%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20.replace%28/mozilla.org%5C/.*%5C/addon%5C//%2C%20%22mozilla.org/addon/%22%29%3B%0A%20%20url%20+%3D%20%22%3Fsrc%3Dexternal-extension-list-generator%22%3B%0A%20%20return%20url%3B%0A%7D%0A%0Afunction%20getThemeURL%28aAddon%29%20%7B%0A%20%20var%20url%3B%0A%20%20if%20%28aAddon.reviewURL%29%20%7B%0A%20%20%20%20return%20getAMOPage%28aAddon.reviewURL%29%3B%0A%20%20%7D%20else%20%7B%0A%20%20%20%20var%20id%20%3D%20aAddon.id.match%28/%5Cd+/%29.toString%28%29%3B%0A%20%20%20%20if%20%28/getpersonas/.test%28aAddon.screenshots%5B0%5D.url%29%29%20%7B%0A%20%20%20%20%20%20url%20%3D%20%22http%3A//getpersonas.com/persona/%22%20+%20id%3B%0A%20%20%20%20%7D%20else%20%7B%0A%20%20%20%20%20%20url%20%3D%20%22http%3A//addons.mozilla.org/addon/%22%20+%20id%3B%0A%20%20%20%20%7D%0A%20%20%7D%0A%20%20url%20+%3D%20%22/%3Fsrc%3Dexternal-extension-list-generator%22%3B%0A%20%20return%20url%3B%0A%7D%0A%0Afunction%20doSomething%28aString%2C%20aContentType%2C%20aExt%29%20%7B%0A%20%20var%20doWhat%20%3D%20custombuttons.confirmBox3%28self.name%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22Extension%20list%20has%20been%20generated.%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22Copy%22%2C%20%22Cancel%22%2C%20%22View%22%29%3B%0A%20%20switch%20%28doWhat%29%20%7B%0A%20%20%20%20case%200%3A%20//%20Copy%0A%20%20%20%20%20%20cbu.gClipboard.write%28aString%29%3B%0A%20%20%20%20%20%20Cc%5B%22@mozilla.org/alerts-service%3B1%22%5D.getService%28Ci.nsIAlertsService%29.%0A%20%20%20%20%20%20showAlertNotification%28%22chrome%3A//mozapps/skin/xpinstall/xpinstallItemGeneric.png%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20self.name%2C%20%22Copied%20to%20clipboard%21%22%2C%20false%2C%20%22%22%2C%20null%29%3B%0A%20%20%20%20%20%20break%3B%0A%20%20%20%20case%202%3A%20//%20View%0A%20%20%20%20%20%20var%20url%20%3D%20%22data%3A%22%20+%20aContentType%20+%20%22%3Bcharset%3Dutf-8%2C%22%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20+%20encodeURIComponent%28aString%29%20+%20%28aExt%20%3F%20aExt%20%3A%20%22%22%29%3B%0A%20%20%20%20%20%20if%20%28Application.id%20%3D%3D%20%22%7B3550f703-e582-4d05-9a08-453d09bdfdc6%7D%22%29%20%7B%0A%20%20%20%20%20%20%20%20//%20Thunderbird%0A%20%20%20%20%20%20%20%20openContentTab%28url%2C%20%22tab%22%2C%20%22%5Ehttps%3F%3A%22%29%3B%0A%20%20%20%20%20%20%7D%20else%20%7B%0A%20%20%20%20%20%20%20%20switchToTabHavingURI%28url%2C%20true%29%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20default%3A%20//%20Close%0A%20%20%7D%0A%7D%0A%0Afunction%20getBoolPref%28aPrefName%2C%20aDefVal%29%20%7B%0A%20%20var%20prefRoot%20%3D%20%22custombuttons.extension-list-generator.report.%22%3B%0A%20%20var%20prefBranch%20%3D%20cbu.ps.getBranch%28prefRoot%29%3B%0A%20%20try%20%7B%0A%20%20%20%20return%20prefBranch.getBoolPref%28aPrefName%29%3B%0A%20%20%7D%20catch%28ex%29%20%7B%0A%20%20%20%20prefBranch.setBoolPref%28aPrefName%2C%20aDefVal%29%3B%0A%20%20%20%20return%20aDefVal%3B%0A%20%20%7D%0A%7D%0A%0Afunction%20initPrefs%28%29%20%7B%0A%20%20rptCurrentDate%20%3D%20getBoolPref%28%22currentDate%22%2C%20true%29%3B%0A%20%20rptAddonsURLs%20%3D%20getBoolPref%28%22addonsURLs%22%2C%20true%29%3B%0A%20%20rptAddonsDescs%20%3D%20getBoolPref%28%22addonsDescriptions%22%2C%20false%29%3B%0A%20%20rptThemeScreenshot%20%3D%20getBoolPref%28%22themeScreenshot%22%2C%20true%29%3B%0A%20%20rptInsideSpoiler%20%3D%20getBoolPref%28%22insideSpoiler%22%2C%20false%29%3B%0A%7D%0A%0Afunction%20openOptions%28%29%20%7B%0A%20%20var%20em%20%3D%20Services.ww.getWindowEnumerator%28%29%3B%0A%20%20var%20winName%20%3D%20%22extension-list-generator-options%22%3B%0A%20%20var%20index%20%3D%201%3B%0A%20%20while%20%28em.hasMoreElements%28%29%29%20%7B%0A%20%20%20%20let%20win%20%3D%20em.getNext%28%29%3B%0A%20%20%20%20if%28win.name%20%3D%3D%20winName%29%20%7B%0A%20%20%20%20%20%20win.focus%28%29%3B%0A%20%20%20%20%20%20return%3B%0A%20%20%20%20%7D%0A%20%20%20%20index++%0A%20%20%7D%0A%20%20openDialog%28%22data%3Aapplication/vnd.mozilla.xul+xml%3Bbase64%2C%22%20+%0A%20%20%20%20%20%20%20%20%20%20%20%20%20encodeURIComponent%28btoa%28xul%29%29%2C%20winName%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%22chrome%2C%20dialog%2C%20centerscreen%2C%20close%22%29%3B%0A%7D%5D%5D%3E%3C/initcode%3E%0A%20%20%3Ccode%3E%3C%21%5BCDATA%5B/*CODE*/%5D%5D%3E%3C/code%3E%0A%20%20%3Caccelkey%3E%3C%21%5BCDATA%5B%5D%5D%3E%3C/accelkey%3E%0A%20%20%3Chelp%3E%26lt%3B%3Fxml%20version%3D%221.0%22%3F%26gt%3B%0A%26lt%3B%21--%0A%20%20%20%20This%20Source%20Code%20Form%20is%20subject%20to%20the%20terms%20of%20the%20Mozilla%20Public%0A%20%20%20%20License%2C%20v.%202.0.%20If%20a%20copy%20of%20the%20MPL%20was%20not%20distributed%20with%20this%0A%20%20%20%20file%2C%20You%20can%20obtain%20one%20at%20http%3A//mozilla.org/MPL/2.0/.%0A%0A%20%20%20%20Contributor%28s%29%3A%0A%20%20%20%20-%20LouCypher%20%28original%20code%29%0A--%26gt%3B%0A%0A%26lt%3B%3Fxml-stylesheet%20href%3D%22chrome%3A//global/skin/%22%3F%26gt%3B%0A%26lt%3B%3Fxml-stylesheet%20href%3D%22data%3Atext/css%3Bbase64%2CYnV0dG9uW2RsZ3R5cGU9ImV4dHJhMiJdIHsKICAtbW96LWFwcGVhcmFuY2U6IG5vbmU7CiAgY29sb3I6ICNGRkY7CiAgYm9yZGVyOiAxcHggc29saWQgIzNBNEVFRTsKICBib3JkZXItcmFkaXVzOiAzcHg7CiAgbGlzdC1zdHlsZS1pbWFnZTogdXJsKCJjaHJvbWU6Ly9tb3phcHBzL3NraW4vZXh0ZW5zaW9ucy9oZWFydC5wbmciKTsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjMkY3M0VGOwogIGJhY2tncm91bmQtaW1hZ2U6IC1tb3otbGluZWFyLWdyYWRpZW50KHJnYmEoMjUxLCAyNTIsIDI1MywgMC43MCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmdiYSgyNDYsIDI0NywgMjQ4LCAwLjI3KSA0OSUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmdiYSgyMzEsIDIzMiwgMjMzLCAwLjI1KSA1MSUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmdiYSgyMjUsIDIyNiwgMjI5LCAwLjEpKTsKICBiYWNrZ3JvdW5kLWltYWdlOiAgICAgIGxpbmVhci1ncmFkaWVudChyZ2JhKDI1MSwgMjUyLCAyNTMsIDAuNzApLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJnYmEoMjQ2LCAyNDcsIDI0OCwgMC4yNykgNDklLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJnYmEoMjMxLCAyMzIsIDIzMywgMC4yNSkgNTElLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJnYmEoMjI1LCAyMjYsIDIyOSwgMC4xKSk7Cn0KYnV0dG9uW2RsZ3R5cGU9ImV4dHJhMiJdIC5idXR0b24tYm94IHsgcGFkZGluZzogMCA2cHggMXB4IDZweDsgfQpidXR0b25bZGxndHlwZT0iZXh0cmEyIl0gLmJ1dHRvbi1pY29uIHsgLW1vei1tYXJnaW4tZW5kOiAzcHg7IH0KYnV0dG9uW2RsZ3R5cGU9ImV4dHJhMiJdOm5vdCg6YWN0aXZlKTpob3ZlciB7CiAgYm9yZGVyLWNvbG9yOiAjNDI3MUZGOwogIGJhY2tncm91bmQtY29sb3I6ICMwNDU5Rjc7CiAgLW1vei1ib3gtc2hhZG93OiAwIDFweCAwIHJnYmEoMCwgMCwgMCwgMC4xKSwgMCAwIDMuNXB4IGhzbCgxOTAsIDkwJSwgODAlKTsKICAgICAgIGJveC1zaGFkb3c6IDAgMXB4IDAgcmdiYSgwLCAwLCAwLCAwLjEpLCAwIDAgMy41cHggaHNsKDE5MCwgOTAlLCA4MCUpOwogIC1tb3otdHJhbnNpdGlvbjogYmFja2dyb3VuZC1jb2xvciAuNHMgZWFzZS1pbiwKICAgICAgICAgICAgICAgICAgIGJvcmRlci1jb2xvciAuM3MgZWFzZS1pbiwKICAgICAgICAgICAgICAgICAgIGJveC1zaGFkb3cgLjNzIGVhc2UtaW47CiAgICAgICB0cmFuc2l0aW9uOiBiYWNrZ3JvdW5kLWNvbG9yIC40cyBlYXNlLWluLAogICAgICAgICAgICAgICAgICAgYm9yZGVyLWNvbG9yIC4zcyBlYXNlLWluLAogICAgICAgICAgICAgICAgICAgYm94LXNoYWRvdyAuM3MgZWFzZS1pbjsKfQpidXR0b25bZGxndHlwZT0iZXh0cmEyIl06YWN0aXZlOmhvdmVyIHsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjOEZBMUMxOwogIGJvcmRlci1jb2xvcjogcmdiYSgwLCAwLCAwLCAwLjY1KSByZ2JhKDAsIDAsIDAsIDAuNTUpIHJnYmEoMCwgMCwgMCwgMC41KTsKICAtbW96LWJveC1zaGFkb3c6IDAgMCA2LjVweCByZ2JhKDAsIDAsIDAsIDAuNCkgaW5zZXQsCiAgICAgICAgICAgICAgICAgICAwIDAgMnB4IHJnYmEoMCwgMCwgMCwgMC40KSBpbnNldCwKICAgICAgICAgICAgICAgICAgIDAgMXB4IDAgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjQpOwogICAgICAgYm94LXNoYWRvdzogMCAwIDYuNXB4IHJnYmEoMCwgMCwgMCwgMC40KSBpbnNldCwKICAgICAgICAgICAgICAgICAgIDAgMCAycHggcmdiYSgwLCAwLCAwLCAwLjQpIGluc2V0LAogICAgICAgICAgICAgICAgICAgMCAxcHggMCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNCk7Cn0%253D%22%3F%26gt%3B%0A%0A%26lt%3Bprefwindow%0A%20%20xmlns%3D%22http%3A//www.mozilla.org/keymaster/gatekeeper/there.is.only.xul%22%0A%20%20id%3D%22extension-list-generator-options%22%20title%3D%22Extension%20List%20Generator%20Options%22%0A%20%20buttons%3D%22extra2%2C%20accept%2C%20cancel%22%0A%20%20buttonlabelextra2%3D%22Contribute%22%0A%20%20ondialogextra2%3D%22contribute%28%29%3B%20close%28%29%3B%22%0A%20%20onload%3D%22sizeToContent%28%29%3B%22%26gt%3B%0A%0A%20%20%26lt%3Bscript%20type%3D%22application/x-javascript%22%26gt%3B%26lt%3B%21%5BCDATA%5B%0A%20%20%20%20function%20contribute%28%29%20%7B%0A%20%20%20%20%20%20var%20url%20%3D%20%22http%3A//loucypher.github.io/userscripts/donate.html%22%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20+%20%22%3FExtension+List+Generator%22%0A%20%20%20%20%20%20var%20win%20%3D%20window.opener%3B%0A%20%20%20%20%20%20if%20%28%22openContentTab%22%20in%20win%29%20%7B%0A%20%20%20%20%20%20%20%20win.openContentTab%28url%2C%20%22tab%22%29%3B%0A%20%20%20%20%20%20%7D%20else%20%7B%0A%20%20%20%20%20%20%20%20win.openLinkIn%28url%2C%20%22tabshifted%22%2C%20%7B%7D%29%3B%20//%20Requires%20utilityOverlay.js%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%20%20%5D%5D%26gt%3B%26lt%3B/script%26gt%3B%0A%0A%20%20%26lt%3Bprefpane%20id%3D%22prefpane-menu%22%20label%3D%22Prefpane%20menu%22%26gt%3B%0A%0A%20%20%20%20%26lt%3Bpreferences%26gt%3B%0A%20%20%20%20%20%20%26lt%3Bpreference%20id%3D%22date%22%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20name%3D%22custombuttons.extension-list-generator.report.currentDate%22%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3D%22bool%22/%26gt%3B%0A%20%20%20%20%20%20%26lt%3Bpreference%20id%3D%22addonsURLs%22%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20name%3D%22custombuttons.extension-list-generator.report.addonsURLs%22%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3D%22bool%22/%26gt%3B%0A%20%20%20%20%20%20%26lt%3Bpreference%20id%3D%22addonsDescriptions%22%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20name%3D%22custombuttons.extension-list-generator.report.addonsDescriptions%22%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3D%22bool%22/%26gt%3B%0A%20%20%20%20%20%20%26lt%3Bpreference%20id%3D%22themeScreenshot%22%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20name%3D%22custombuttons.extension-list-generator.report.themeScreenshot%22%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3D%22bool%22/%26gt%3B%0A%20%20%20%20%20%20%26lt%3Bpreference%20id%3D%22spoilerTag%22%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20name%3D%22custombuttons.extension-list-generator.report.insideSpoiler%22%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3D%22bool%22/%26gt%3B%0A%20%20%20%20%26lt%3B/preferences%26gt%3B%0A%0A%20%20%20%20%26lt%3Bgroupbox%26gt%3B%0A%20%20%20%20%20%20%26lt%3Bcaption%26gt%3BSelect%20which%20informations%20to%20include%26lt%3B/caption%26gt%3B%0A%20%20%20%20%20%20%26lt%3Bcheckbox%20label%3D%22Current%20date%22%20preference%3D%22date%22/%26gt%3B%0A%20%20%20%20%20%20%26lt%3Bcheckbox%20label%3D%22Add-ons%20URLs%22%20preference%3D%22addonsURLs%22/%26gt%3B%0A%20%20%20%20%20%20%26lt%3Bcheckbox%20label%3D%22Add-ons%20Descriptions%22%20preference%3D%22addonsDescriptions%22/%26gt%3B%0A%20%20%20%20%20%20%26lt%3Bcheckbox%20label%3D%22Theme%20screenshot%20%28for%20non-default%20theme%29%22%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20preference%3D%22themeScreenshot%22/%26gt%3B%0A%20%20%20%20%26lt%3B/groupbox%26gt%3B%0A%0A%20%20%20%20%26lt%3Bgroupbox%26gt%3B%0A%20%20%20%20%20%20%26lt%3Bcaption%26gt%3BBBCode%20ouput%26lt%3B/caption%26gt%3B%0A%20%20%20%20%20%20%26lt%3Bcheckbox%20label%3D%22Inside%20%5Bspoiler%5D%20tag%22%20preference%3D%22spoilerTag%22/%26gt%3B%0A%20%20%20%20%20%20%26lt%3Blabel%26gt%3BNot%20all%20forum%20softwares%20support%20this%20tag.%26lt%3B/label%26gt%3B%0A%20%20%20%20%26lt%3B/groupbox%26gt%3B%0A%0A%20%20%26lt%3B/prefpane%26gt%3B%0A%0A%26lt%3B/prefwindow%26gt%3B%3C/help%3E%0A%20%20%3Cattributes/%3E%0A%3C/custombutton%3E
Отредактировано Uxapb (08-09-2016 22:06:28)
Отсутствует
Uxapb
custombutton://%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22UTF-8%22%3F%3E%0D%0A%3Ccustombutton%20xmlns%3Acb%3D%22http%3A//xsms.nm.ru/custombuttons/%22%3E%0A%20%20%3Cname%3EExtension%20List%20Generator%3C/name%3E%0A%20%20%3Cimage%3E%3C%21%5BCDATA%5Bdata%3Aimage/png%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAABVUlEQVQ4y2P4//8/AyWYoALpQsb9ftPM/4tnM+4nywCQ5s5jRf8d+7T+k2VAxHzH/TUHkv57TDMgzgWyJYz74xZ6/E9Y4vU/ZaXv/9Jd0f/LDkb+j13v8N9xmtp/oy6J/xqN/P+5Ihj2YzUApHnxtb7/My83/e8+W/C/9nj8//yD/v+T99j/D99u8N9nk/J/h9Vi/+Vq2P5jNQBkMz7NTuvE/1ut5v0vV8+M3QCQs3Fptlsh+l93Ktd/pTaW/wKpjAgDYFEFCjCQn3HZDNLME8tYANLDEcrgADcAFlWg0AYFGC5nK3ew/McaC6BEAopnUFSBQhubZpMVbP81JrFgdwEyBkUVup9BNoM0681hBdMYYYCMQfGMzc8gGqQZ5BIQxhkLoEQCimeQs0E2IcuB+CDNxkvZ/ktX4jAAlMJAiQRkA8iZML+CaBAfJA7SDOTvJyovEMIAruB4gKjNkYMAAAAASUVORK5CYII%3D%5D%5D%3E%3C/image%3E%0A%20%20%3Cmode%3E0%3C/mode%3E%0A%20%20%3Cinitcode%3E%3C%21%5BCDATA%5B/*%0A%20*%20%20This%20Source%20Code%20Form%20is%20subject%20to%20the%20terms%20of%20the%20Mozilla%20Public%0A%20*%20%20License%2C%20v.%202.0.%20If%20a%20copy%20of%20the%20MPL%20was%20not%20distributed%20with%20this%0A%20*%20%20file%2C%20You%20can%20obtain%20one%20at%20http%3A//mozilla.org/MPL/2.0/.%0A%20*%0A%20*%20%20Contributor%28s%29%3A%0A%20*%20%20-%20LouCypher%20%28original%20code%29%0A%20*/%0A%0Avar%20xul%20%3D%20this.Help%3B%0Athis.type%20%3D%20%22menu%22%3B%0Athis.tooltipText%20+%3D%20%22%5CnGenerate%20list%20of%20enabled%20extensions%20to%20selected%20output%3A%22%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20+%20%22%5CnHTML%2C%20Markdown%2C%20BBCode%2C%20or%20plain%20text.%22%0A%0Avar%20menupopup%20%3D%20this.appendChild%28document.createElement%28%22menupopup%22%29%29%3B%0Amenupopup.setAttribute%28%22oncommand%22%2C%20%22generate%28event%29%3B%22%29%3B%0Amenupopup.generate%20%3D%20generate.bind%28%29%3B%0A%0A%5B%22HTML%22%2C%20%22Markdown%22%2C%20%22BBCode%22%2C%20%22Plain%20text%22%5D.forEach%28function%28format%29%20%7B%0A%20%20var%20menuitem%20%3D%20menupopup.appendChild%28document.createElement%28%22menuitem%22%29%29%3B%0A%20%20menuitem.setAttribute%28%22label%22%2C%20format%29%3B%0A%7D%29%0A%0Amenupopup.appendChild%28document.createElement%28%22menuseparator%22%29%29%3B%0A%0Avar%20optionsMenu%20%3D%20menupopup.appendChild%28document.createElement%28%22menuitem%22%29%29%3B%0AoptionsMenu.setAttribute%28%22label%22%2C%20%22Options%22%29%3B%0AoptionsMenu.setAttribute%28%22oncommand%22%2C%20%22openOptions%28%29%3B%22%29%3B%0AoptionsMenu.openOptions%20%3D%20openOptions.bind%28%29%3B%0A%0Avar%20rptCurrentDate%2C%20rptAddonsURLs%2C%20rptAddonsDescs%2C%20rptThemeScreenshot%2C%0A%20%20%20%20rptInsideSpoiler%3B%0A%0AinitPrefs%28%29%3B%0A%0Afunction%20generate%28aEvent%29%20%7B%0A%20%20if%20%28aEvent.target.getAttribute%28%22label%22%29%20%3D%3D%20%22Options%22%29%20return%3B%0A%20%20initPrefs%28%29%3B%0A%20%20AddonManager.getAddonsByTypes%28%5B%22theme%22%2C%20%22extension%22%5D%2C%20function%28addons%29%20%7B%0A%20%20%20%20var%20theme%3B%0A%20%20%20%20var%20extArray%20%3D%20%5B%5D%3B%0A%20%20%20%20addons.forEach%28function%28addon%29%20%7B%0A%20%20%20%20%20%20if%20%28addon.isActive%29%20%7B%0A%20%20%20%20%20%20%20%20if%20%28addon.type%20%3D%3D%20%22theme%22%29%20theme%20%3D%20addon%3B%0A%20%20%20%20%20%20%20%20else%20extArray.push%28addon%29%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%29%0A%20%20%20%20extArray.sort%28function%28a%2C%20b%29%20%7B%0A%20%20%20%20%20%20a%20%3D%20a.name.toLowerCase%28%29%3B%0A%20%20%20%20%20%20b%20%3D%20b.name.toLowerCase%28%29%3B%0A%20%20%20%20%20%20if%20%28a%20%3C%20b%29%20return%20-1%3B%0A%20%20%20%20%20%20if%20%28a%20%3E%20b%29%20return%201%3B%0A%20%20%20%20%20%20return%200%3B%0A%20%20%20%20%7D%29%0A%20%20%20%20var%20title%20%3D%20%22My%20%22%20+%20Services.appinfo.name%20+%20%22%20%22%20+%20Services.appinfo.version%20+%20%22%20information%22%3B%0A%20%20%20%20var%20date%20%3D%20new%20Date%28%29%3B%0A%20%20%20%20switch%20%28aEvent.target.getAttribute%28%22label%22%29%29%20%7B%0A%20%20%20%20%20%20case%20%22HTML%22%3A%20generateHTML%28title%2C%20date%2C%20theme%2C%20extArray%29%3B%20break%3B%0A%20%20%20%20%20%20case%20%22Markdown%22%3A%20generateMarkdown%28title%2C%20date%2C%20theme%2C%20extArray%29%3B%20break%3B%0A%20%20%20%20%20%20case%20%22BBCode%22%3A%20generateBBCode%28title%2C%20date%2C%20theme%2C%20extArray%29%3B%20break%3B%0A%20%20%20%20%20%20case%20%22Plain%20text%22%3A%20generateText%28title%2C%20date%2C%20theme%2C%20extArray%29%3B%0A%20%20%20%20%7D%0A%20%20%7D%29%0A%7D%0A%0Afunction%20generateHTML%28aTitle%2C%20aDate%2C%20aTheme%2C%20aArray%29%20%7B%0A%20%20var%20extensions%20%3D%20%27%3C%21doctype%20html%3E%3Chtml%20itemscope%3D%22itemscope%22%27%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20+%20%27%20itemtype%3D%22http%3A//schema.org/WebPage%22%3E%3Chead%3E%27%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20+%20%27%3Cmeta%20charset%3D%22utf-8%22%3E%3Cmeta%20itemprop%3D%22description%22%27%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20+%20%27%20content%3D%22%27%20+%20aTitle%20+%20%27%22%3E%3Cmeta%20name%3D%22description%22%27%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20+%20%27%20content%3D%22%27%20+%20aTitle%20+%20%27%22%3E%3Ctitle%3E%27%20+%20aTitle%20+%20%27%3C/title%3E%27%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20+%20%27%3C/head%3E%3Cbody%3E%3Ch1%3E%27%20+%20aTitle%20+%20%27%3C/h1%3E%27%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20+%20%28rptCurrentDate%20%3F%20%22%3Cp%3ELast%20updated%3A%20%22%20+%20aDate%20+%20%22%3C/p%3E%22%20%3A%20%22%22%29%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20+%20%22%3Ch2%3EUser%20agent%3C/h2%3E%3Cp%3E%22%20+%20navigator.userAgent%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20+%20%22%3C/p%3E%3Ch2%3ETheme%3C/h2%3E%3Cp%3E%22%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20+%20%28rptAddonsURLs%20%26%26%20%21isDefaultTheme%28aTheme%29%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3F%20%27%3Ca%20href%3D%22%27%20+%20getThemeURL%28aTheme%29%20+%20%27%22%3E%27%20+%20aTheme.name%20+%20%27%3C/a%3E%27%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3A%20aTheme.name%29%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20+%20%22%3C/p%3E%22%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20+%20%28rptThemeScreenshot%20%26%26%20%21isDefaultTheme%28aTheme%29%20%26%26%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20aTheme.screenshots%20%26%26%20%21/getpersonas/.test%28aTheme.screenshots%29%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3F%20%27%3Cp%3E%3Cimg%20src%3D%22%27%20+%20aTheme.screenshots%5B0%5D.url%20+%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%27%22%20alt%3D%22%27%20+%20aTheme.name%20+%20%27%22/%3E%3C/p%3E%27%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3A%20%22%22%29%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20+%20%22%3Ch2%3EExtensions%3C/h2%3E%22%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20+%20%27%3Col%20class%3D%22column%22%3E%27%3B%0A%20%20aArray.forEach%28function%28addon%29%20%7B%0A%20%20%20%20extensions%20+%3D%20%27%3Cli%20style%3D%22margin-bottom%3A1em%22%3E%27%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20+%20%28rptAddonsURLs%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3F%20%28%28addon.reviewURL%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3F%20%27%3Ca%20href%3D%22%27%20+%20getAMOPage%28addon.reviewURL%29%20+%20%27%22%3E%27%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3A%20addon.homepageURL%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3F%20%27%3Ca%20href%3D%22%27%20+%20addon.homepageURL%20+%20%27%22%3E%27%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3A%20%27%3Ca%20href%3D%22http%3A//www.google.com/search%3Fq%3D%22%27%20+%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20encodeURIComponent%28addon.name%20+%20%22%20extension%22%29%20+%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%27%22%3E%27%29%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20+%20addon.name%20+%20%27%3C/a%3E%27%29%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3A%20addon.name%29%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20+%20%28addon.version%20%3F%20%22%20%22%20+%20addon.version%20%3A%20%22%22%29%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20+%20%28rptAddonsDescs%20%3F%20%22%3Cbr/%3E%22%20+%20addon.description%20%3A%20%22%22%29%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20+%20%22%3C/li%3E%22%3B%0A%20%20%7D%29%0A%20%20extensions%20+%3D%20%22%3C/ol%3E%3C/body%3E%3C/html%3E%22%3B%0A%20%20doSomething%28extensions%2C%20%22text/html%22%29%3B%0A%7D%0A%0Afunction%20generateMarkdown%28aTitle%2C%20aDate%2C%20aTheme%2C%20aArray%29%20%7B%0A%20%20var%20idx%20%3D%200%3B%0A%20%20var%20extensions%20%3D%20%22%23%20%22%20+%20aTitle%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20+%20%28rptCurrentDate%20%3F%20%22%5Cn%5CnLast%20updated%3A%20%22%20+%20aDate%20%3A%20%22%22%29%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20+%20%22%5Cn%5Cn%23%23%20User%20agent%5Cn%5Cn%22%20+%20navigator.userAgent%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20+%20%22%5Cn%5Cn%23%23%20Theme%5Cn%5Cn%22%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20+%20%28rptAddonsURLs%20%26%26%20%21isDefaultTheme%28aTheme%29%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3F%20%22%5B%22%20+%20aTheme.name%20+%20%22%5D%28%22%20+%20getThemeURL%28aTheme%29%20+%20%22%29%22%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3A%20aTheme.name%29%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20+%20%28rptThemeScreenshot%20%26%26%20%21isDefaultTheme%28aTheme%29%20%26%26%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20aTheme.screenshots%20%26%26%20%21/getpersonas/.test%28aTheme.screenshots%29%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3F%20%22%5Cn%5Cn%21%5B%22%20+%20aTheme.name%20+%20%22%5D%28%22%20+%20aTheme.screenshots%5B0%5D.url%20+%20%22%29%22%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3A%20%22%22%29%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20+%20%22%5Cn%5Cn%23%23%20Extensions%22%3B%0A%20%20aArray.forEach%28function%28addon%29%20%7B%0A%20%20%20%20idx++%3B%0A%20%20%20%20extensions%20+%3D%20%22%5Cn%5Cn%22%20+%20idx%20+%20%22.%20%22%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20+%20%28rptAddonsURLs%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3F%20%28%28addon.reviewURL%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3F%20%22%5B%22%20+%20addon.name%20+%20%22%5D%28%22%20+%20getAMOPage%28addon.reviewURL%29%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3A%20addon.homepageURL%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3F%20%22%5B%22%20+%20addon.name%20+%20%22%5D%28%22%20+%20addon.homepageURL%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3A%20%22%5B%22%20+%20addon.name%20+%20%22%5D%28%22%20+%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22http%3A//www.google.com/search%3Fq%3D%22%20+%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20encodeURIComponent%28addon.name%20+%20%22%20extension%22%29%29%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20+%20%22%29%22%29%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3A%20addon.name%29%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20+%20%28addon.version%20%3F%20%22%20%22%20+%20addon.version%20%3A%20%22%22%29%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20+%20%28rptAddonsDescs%20%3F%20%22%20%20%5Cn%22%20+%20addon.description%20%3A%20%22%22%29%0A%20%20%7D%29%0A%20%20doSomething%28extensions%2C%20%22text/plain%22%2C%20%22%250A%250A.md%22%29%3B%0A%7D%0A%0Afunction%20generateBBCode%28aTitle%2C%20aDate%2C%20aTheme%2C%20aArray%29%20%7B%0A%20%20var%20extensions%20%3D%20%28rptInsideSpoiler%20%3F%20%22%5Bspoiler%3D%22%20+%20aTitle%20+%20%22%5D%22%20%3A%20%22%22%29%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20+%20%28rptCurrentDate%20%3F%20%22%5Bb%5DLast%20updated%3A%20%5B/b%5D%22%20+%20aDate%20%3A%20%22%22%29%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20+%20%22%5Cn%5Cn%5Bb%5DUser%20agent%3A%5B/b%5D%20%22%20+%20navigator.userAgent%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20+%20%22%5Cn%5Cn%5Bb%5DTheme%3A%5B/b%5D%20%22%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20+%20%28rptAddonsURLs%20%26%26%20%21isDefaultTheme%28aTheme%29%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3F%20%22%5Burl%3D%22%20+%20getThemeURL%28aTheme%29%20+%20%22%5D%22%20+%20aTheme.name%20+%20%22%5B/url%5D%22%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3A%20aTheme.name%29%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20+%20%28rptThemeScreenshot%20%26%26%20%21isDefaultTheme%28aTheme%29%20%26%26%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20aTheme.screenshots%20%26%26%20%21/getpersonas/.test%28aTheme.screenshots%29%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3F%20%22%5Cn%5Bimg%5D%22%20+%20aTheme.screenshots%5B0%5D.url%20+%20%22%5B/img%5D%22%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3A%20%22%22%29%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20+%20%22%5Cn%5Cn%5Bb%5DExtensions%3A%5B/b%5D%5Cn%5Blist%3D1%5D%22%0A%20%20aArray.forEach%28function%28addon%29%20%7B%0A%20%20%20%20extensions%20+%3D%20%22%5B*%5D%22%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20+%20%28rptAddonsURLs%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3F%20%28%28addon.reviewURL%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3F%20%22%5Burl%3D%22%20+%20getAMOPage%28addon.reviewURL%29%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3A%20addon.homepageURL%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3F%20%22%5Burl%3D%22%20+%20addon.homepageURL%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3A%20%22%5Burl%3Dhttp%3A//www.google.com/search%3Fq%3D%22%20+%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20encodeURIComponent%28addon.name%20+%20%22%20extension%22%29%29%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20+%20%22%5D%22%20+%20addon.name%20+%20%22%5B/url%5D%22%29%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3A%20addon.name%29%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20+%20%28addon.version%20%3F%20%22%20%22%20+%20addon.version%20%3A%20%22%22%29%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20+%20%28rptAddonsDescs%20%3F%20%22%5Cn%22%20+%20addon.description%20%3A%20%22%22%29%3B%0A%20%20%7D%29%0A%20%20extensions%20+%3D%20rptInsideSpoiler%20%3F%20%22%5B/list%5D%5B/spoiler%5D%22%20%3A%20%22%5B/list%5D%22%3B%0A%20%20doSomething%28extensions%2C%20%22text/plain%22%29%3B%0A%7D%0A%0Afunction%20generateText%28aTitle%2C%20aDate%2C%20aTheme%2C%20aArray%29%20%7B%0A%20%20var%20idx%20%3D%200%3B%0A%20%20var%20extensions%20%3D%20aTitle%20+%20%22%5Cn%22%0A%20%20for%20%28var%20i%20%3D%200%3B%20i%20%3C%20aTitle.length%3B%20i++%29%20%7B%0A%20%20%20%20extensions%20+%3D%20%22%3D%22%3B%0A%20%20%7D%0A%20%20extensions%20+%3D%20%28rptCurrentDate%20%3F%20%22%5Cn%5CnLast%20updated%3A%20%22%20+%20aDate%20%3A%20%22%22%29%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20+%20%22%5Cn%5CnUser%20agent%3A%20%22%20+%20navigator.userAgent%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20+%20%22%5Cn%5CnTheme%3A%20%22%20+%20aTheme.name%20+%20%22%5Cn%5CnExtensions%5Cn----------%22%3B%0A%20%20aArray.forEach%28function%28addon%29%20%7B%0A%20%20%20%20idx++%3B%0A%20%20%20%20extensions%20+%3D%20%22%5Cn%22%20+%20idx%20+%20%22.%20%22%20+%20addon.name%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20+%20%28addon.version%20%3F%20%22%20%22%20+%20addon.version%20%3A%20%22%22%29%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20+%20%28rptAddonsDescs%20%3F%20%22%5Cn%22%20+%20addon.description%20%3A%20%22%22%29%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20+%20%28rptAddonsURLs%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3F%20%22%5Cn%22%20+%20%28addon.reviewURL%20%3F%20getAMOPage%28addon.reviewURL%29%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3A%20addon.homepageURL%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3F%20addon.homepageURL%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3A%20%22%22%29%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3A%20%22%22%29%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20+%20%28rptAddonsDescs%20%7C%7C%20rptAddonsURLs%20%3F%20%22%5Cn%22%20%3A%20%22%22%29%3B%0A%20%20%7D%29%0A%20%20doSomething%28extensions%2C%20%22text/plain%22%29%3B%0A%7D%0A%0Afunction%20isDefaultTheme%28aTheme%29%20%7B%0A%20%20return%20aTheme.id%20%3D%3D%20%22%7B972ce4c6-7e08-4474-a285-3208198ce6fd%7D%22%20%7C%7C%0A%20%20%20%20%20%20%20%20%20aTheme.id%20%3D%3D%20%22modern@themes.mozilla.org%22%3B%0A%7D%0A%0Afunction%20getAMOPage%28aReviewURL%29%20%7B%0A%20%20var%20url%20%3D%20aReviewURL.replace%28/%5C/reviews%5C/.*%24/%2C%20%22/%22%29%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20.replace%28/mozilla.org%5C/.*%5C/addon%5C//%2C%20%22mozilla.org/addon/%22%29%3B%0A%20%20url%20+%3D%20%22%3Fsrc%3Dexternal-extension-list-generator%22%3B%0A%20%20return%20url%3B%0A%7D%0A%0Afunction%20getThemeURL%28aAddon%29%20%7B%0A%20%20var%20url%3B%0A%20%20if%20%28aAddon.reviewURL%29%20%7B%0A%20%20%20%20return%20getAMOPage%28aAddon.reviewURL%29%3B%0A%20%20%7D%20else%20%7B%0A%20%20%20%20var%20id%20%3D%20aAddon.id.match%28/%5Cd+/%29.toString%28%29%3B%0A%20%20%20%20if%20%28/getpersonas/.test%28aAddon.screenshots%5B0%5D.url%29%29%20%7B%0A%20%20%20%20%20%20url%20%3D%20%22http%3A//getpersonas.com/persona/%22%20+%20id%3B%0A%20%20%20%20%7D%20else%20%7B%0A%20%20%20%20%20%20url%20%3D%20%22http%3A//addons.mozilla.org/addon/%22%20+%20id%3B%0A%20%20%20%20%7D%0A%20%20%7D%0A%20%20url%20+%3D%20%22/%3Fsrc%3Dexternal-extension-list-generator%22%3B%0A%20%20return%20url%3B%0A%7D%0A%0Afunction%20doSomething%28aString%2C%20aContentType%2C%20aExt%29%20%7B%0A%20%20var%20doWhat%20%3D%20custombuttons.confirmBox3%28self.name%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22Extension%20list%20has%20been%20generated.%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22Copy%22%2C%20%22Cancel%22%2C%20%22View%22%29%3B%0A%20%20switch%20%28doWhat%29%20%7B%0A%20%20%20%20case%200%3A%20//%20Copy%0A%20%20%20%20%20%20cbu.gClipboard.write%28aString%29%3B%0A%20%20%20%20%20%20Cc%5B%22@mozilla.org/alerts-service%3B1%22%5D.getService%28Ci.nsIAlertsService%29.%0A%20%20%20%20%20%20showAlertNotification%28%22chrome%3A//mozapps/skin/xpinstall/xpinstallItemGeneric.png%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20self.name%2C%20%22Copied%20to%20clipboard%21%22%2C%20false%2C%20%22%22%2C%20null%29%3B%0A%20%20%20%20%20%20break%3B%0A%20%20%20%20case%202%3A%20//%20View%0A%20%20%20%20%20%20var%20url%20%3D%20%22data%3A%22%20+%20aContentType%20+%20%22%3Bcharset%3Dutf-8%2C%22%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20+%20encodeURIComponent%28aString%29%20+%20%28aExt%20%3F%20aExt%20%3A%20%22%22%29%3B%0A%20%20%20%20%20%20if%20%28Services.appinfo.ID%20%3D%3D%20%22%7B3550f703-e582-4d05-9a08-453d09bdfdc6%7D%22%29%20%7B%0A%20%20%20%20%20%20%20%20//%20Thunderbird%0A%20%20%20%20%20%20%20%20openContentTab%28url%2C%20%22tab%22%2C%20%22%5Ehttps%3F%3A%22%29%3B%0A%20%20%20%20%20%20%7D%20else%20%7B%0A%20%20%20%20%20%20%20%20switchToTabHavingURI%28url%2C%20true%29%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20default%3A%20return%3B%0A%20%20%7D%0A%7D%0A%0Afunction%20getBoolPref%28aPrefName%2C%20aDefVal%29%20%7B%0A%20%20var%20prefRoot%20%3D%20%22custombuttons.extension-list-generator.report.%22%3B%0A%20%20var%20prefBranch%20%3D%20cbu.ps.getBranch%28prefRoot%29%3B%0A%20%20try%20%7B%0A%20%20%20%20return%20prefBranch.getBoolPref%28aPrefName%29%3B%0A%20%20%7D%20catch%28ex%29%20%7B%0A%20%20%20%20prefBranch.setBoolPref%28aPrefName%2C%20aDefVal%29%3B%0A%20%20%20%20return%20aDefVal%3B%0A%20%20%7D%0A%7D%0A%0Afunction%20initPrefs%28%29%20%7B%0A%20%20rptCurrentDate%20%3D%20getBoolPref%28%22currentDate%22%2C%20true%29%3B%0A%20%20rptAddonsURLs%20%3D%20getBoolPref%28%22addonsURLs%22%2C%20true%29%3B%0A%20%20rptAddonsDescs%20%3D%20getBoolPref%28%22addonsDescriptions%22%2C%20false%29%3B%0A%20%20rptThemeScreenshot%20%3D%20getBoolPref%28%22themeScreenshot%22%2C%20true%29%3B%0A%20%20rptInsideSpoiler%20%3D%20getBoolPref%28%22insideSpoiler%22%2C%20false%29%3B%0A%7D%0A%0Afunction%20openOptions%28%29%20%7B%0A%20%20var%20em%20%3D%20Services.ww.getWindowEnumerator%28%29%3B%0A%20%20var%20winName%20%3D%20%22extension-list-generator-options%22%3B%0A%20%20var%20index%20%3D%201%3B%0A%20%20while%20%28em.hasMoreElements%28%29%29%20%7B%0A%20%20%20%20let%20win%20%3D%20em.getNext%28%29%3B%0A%20%20%20%20if%28win.name%20%3D%3D%20winName%29%20%7B%0A%20%20%20%20%20%20win.focus%28%29%3B%0A%20%20%20%20%20%20return%3B%0A%20%20%20%20%7D%0A%20%20%20%20index++%0A%20%20%7D%0A%20%20openDialog%28%22data%3Aapplication/vnd.mozilla.xul+xml%3Bbase64%2C%22%20+%0A%20%20%20%20%20%20%20%20%20%20%20%20%20encodeURIComponent%28btoa%28xul%29%29%2C%20winName%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%22chrome%2C%20dialog%2C%20centerscreen%2C%20close%22%29%3B%0A%7D%5D%5D%3E%3C/initcode%3E%0A%20%20%3Ccode%3E%3C%21%5BCDATA%5B/*CODE*/%5D%5D%3E%3C/code%3E%0A%20%20%3Caccelkey%3E%3C%21%5BCDATA%5B%5D%5D%3E%3C/accelkey%3E%0A%20%20%3Chelp%3E%26lt%3B%3Fxml%20version%3D%221.0%22%3F%26gt%3B%0A%26lt%3B%21--%0A%20%20%20%20This%20Source%20Code%20Form%20is%20subject%20to%20the%20terms%20of%20the%20Mozilla%20Public%0A%20%20%20%20License%2C%20v.%202.0.%20If%20a%20copy%20of%20the%20MPL%20was%20not%20distributed%20with%20this%0A%20%20%20%20file%2C%20You%20can%20obtain%20one%20at%20http%3A//mozilla.org/MPL/2.0/.%0A%0A%20%20%20%20Contributor%28s%29%3A%0A%20%20%20%20-%20LouCypher%20%28original%20code%29%0A--%26gt%3B%0A%0A%26lt%3B%3Fxml-stylesheet%20href%3D%22chrome%3A//global/skin/%22%3F%26gt%3B%0A%26lt%3B%3Fxml-stylesheet%20href%3D%22data%3Atext/css%3Bbase64%2CYnV0dG9uW2RsZ3R5cGU9ImV4dHJhMiJdIHsKICAtbW96LWFwcGVhcmFuY2U6IG5vbmU7CiAgY29sb3I6ICNGRkY7CiAgYm9yZGVyOiAxcHggc29saWQgIzNBNEVFRTsKICBib3JkZXItcmFkaXVzOiAzcHg7CiAgbGlzdC1zdHlsZS1pbWFnZTogdXJsKCJjaHJvbWU6Ly9tb3phcHBzL3NraW4vZXh0ZW5zaW9ucy9oZWFydC5wbmciKTsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjMkY3M0VGOwogIGJhY2tncm91bmQtaW1hZ2U6IC1tb3otbGluZWFyLWdyYWRpZW50KHJnYmEoMjUxLCAyNTIsIDI1MywgMC43MCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmdiYSgyNDYsIDI0NywgMjQ4LCAwLjI3KSA0OSUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmdiYSgyMzEsIDIzMiwgMjMzLCAwLjI1KSA1MSUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmdiYSgyMjUsIDIyNiwgMjI5LCAwLjEpKTsKICBiYWNrZ3JvdW5kLWltYWdlOiAgICAgIGxpbmVhci1ncmFkaWVudChyZ2JhKDI1MSwgMjUyLCAyNTMsIDAuNzApLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJnYmEoMjQ2LCAyNDcsIDI0OCwgMC4yNykgNDklLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJnYmEoMjMxLCAyMzIsIDIzMywgMC4yNSkgNTElLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJnYmEoMjI1LCAyMjYsIDIyOSwgMC4xKSk7Cn0KYnV0dG9uW2RsZ3R5cGU9ImV4dHJhMiJdIC5idXR0b24tYm94IHsgcGFkZGluZzogMCA2cHggMXB4IDZweDsgfQpidXR0b25bZGxndHlwZT0iZXh0cmEyIl0gLmJ1dHRvbi1pY29uIHsgLW1vei1tYXJnaW4tZW5kOiAzcHg7IH0KYnV0dG9uW2RsZ3R5cGU9ImV4dHJhMiJdOm5vdCg6YWN0aXZlKTpob3ZlciB7CiAgYm9yZGVyLWNvbG9yOiAjNDI3MUZGOwogIGJhY2tncm91bmQtY29sb3I6ICMwNDU5Rjc7CiAgLW1vei1ib3gtc2hhZG93OiAwIDFweCAwIHJnYmEoMCwgMCwgMCwgMC4xKSwgMCAwIDMuNXB4IGhzbCgxOTAsIDkwJSwgODAlKTsKICAgICAgIGJveC1zaGFkb3c6IDAgMXB4IDAgcmdiYSgwLCAwLCAwLCAwLjEpLCAwIDAgMy41cHggaHNsKDE5MCwgOTAlLCA4MCUpOwogIC1tb3otdHJhbnNpdGlvbjogYmFja2dyb3VuZC1jb2xvciAuNHMgZWFzZS1pbiwKICAgICAgICAgICAgICAgICAgIGJvcmRlci1jb2xvciAuM3MgZWFzZS1pbiwKICAgICAgICAgICAgICAgICAgIGJveC1zaGFkb3cgLjNzIGVhc2UtaW47CiAgICAgICB0cmFuc2l0aW9uOiBiYWNrZ3JvdW5kLWNvbG9yIC40cyBlYXNlLWluLAogICAgICAgICAgICAgICAgICAgYm9yZGVyLWNvbG9yIC4zcyBlYXNlLWluLAogICAgICAgICAgICAgICAgICAgYm94LXNoYWRvdyAuM3MgZWFzZS1pbjsKfQpidXR0b25bZGxndHlwZT0iZXh0cmEyIl06YWN0aXZlOmhvdmVyIHsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjOEZBMUMxOwogIGJvcmRlci1jb2xvcjogcmdiYSgwLCAwLCAwLCAwLjY1KSByZ2JhKDAsIDAsIDAsIDAuNTUpIHJnYmEoMCwgMCwgMCwgMC41KTsKICAtbW96LWJveC1zaGFkb3c6IDAgMCA2LjVweCByZ2JhKDAsIDAsIDAsIDAuNCkgaW5zZXQsCiAgICAgICAgICAgICAgICAgICAwIDAgMnB4IHJnYmEoMCwgMCwgMCwgMC40KSBpbnNldCwKICAgICAgICAgICAgICAgICAgIDAgMXB4IDAgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjQpOwogICAgICAgYm94LXNoYWRvdzogMCAwIDYuNXB4IHJnYmEoMCwgMCwgMCwgMC40KSBpbnNldCwKICAgICAgICAgICAgICAgICAgIDAgMCAycHggcmdiYSgwLCAwLCAwLCAwLjQpIGluc2V0LAogICAgICAgICAgICAgICAgICAgMCAxcHggMCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNCk7Cn0%253D%22%3F%26gt%3B%0A%0A%26lt%3Bprefwindow%0A%20%20xmlns%3D%22http%3A//www.mozilla.org/keymaster/gatekeeper/there.is.only.xul%22%0A%20%20id%3D%22extension-list-generator-options%22%20title%3D%22Extension%20List%20Generator%20Options%22%0A%20%20buttons%3D%22extra2%2C%20accept%2C%20cancel%22%0A%20%20buttonlabelextra2%3D%22Contribute%22%0A%20%20ondialogextra2%3D%22contribute%28%29%3B%20close%28%29%3B%22%0A%20%20onload%3D%22sizeToContent%28%29%3B%22%26gt%3B%0A%0A%20%20%26lt%3Bscript%20type%3D%22application/x-javascript%22%26gt%3B%26lt%3B%21%5BCDATA%5B%0A%20%20%20%20function%20contribute%28%29%20%7B%0A%20%20%20%20%20%20var%20url%20%3D%20%22http%3A//loucypher.github.io/userscripts/donate.html%22%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20+%20%22%3FExtension+List+Generator%22%0A%20%20%20%20%20%20var%20win%20%3D%20window.opener%3B%0A%20%20%20%20%20%20if%20%28%22openContentTab%22%20in%20win%29%20%7B%0A%20%20%20%20%20%20%20%20win.openContentTab%28url%2C%20%22tab%22%29%3B%0A%20%20%20%20%20%20%7D%20else%20%7B%0A%20%20%20%20%20%20%20%20win.openLinkIn%28url%2C%20%22tabshifted%22%2C%20%7B%7D%29%3B%20//%20Requires%20utilityOverlay.js%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%20%20%5D%5D%26gt%3B%26lt%3B/script%26gt%3B%0A%0A%20%20%26lt%3Bprefpane%20id%3D%22prefpane-menu%22%20label%3D%22Prefpane%20menu%22%26gt%3B%0A%0A%20%20%20%20%26lt%3Bpreferences%26gt%3B%0A%20%20%20%20%20%20%26lt%3Bpreference%20id%3D%22date%22%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20name%3D%22custombuttons.extension-list-generator.report.currentDate%22%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3D%22bool%22/%26gt%3B%0A%20%20%20%20%20%20%26lt%3Bpreference%20id%3D%22addonsURLs%22%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20name%3D%22custombuttons.extension-list-generator.report.addonsURLs%22%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3D%22bool%22/%26gt%3B%0A%20%20%20%20%20%20%26lt%3Bpreference%20id%3D%22addonsDescriptions%22%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20name%3D%22custombuttons.extension-list-generator.report.addonsDescriptions%22%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3D%22bool%22/%26gt%3B%0A%20%20%20%20%20%20%26lt%3Bpreference%20id%3D%22themeScreenshot%22%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20name%3D%22custombuttons.extension-list-generator.report.themeScreenshot%22%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3D%22bool%22/%26gt%3B%0A%20%20%20%20%20%20%26lt%3Bpreference%20id%3D%22spoilerTag%22%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20name%3D%22custombuttons.extension-list-generator.report.insideSpoiler%22%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3D%22bool%22/%26gt%3B%0A%20%20%20%20%26lt%3B/preferences%26gt%3B%0A%0A%20%20%20%20%26lt%3Bgroupbox%26gt%3B%0A%20%20%20%20%20%20%26lt%3Bcaption%26gt%3BSelect%20which%20informations%20to%20include%26lt%3B/caption%26gt%3B%0A%20%20%20%20%20%20%26lt%3Bcheckbox%20label%3D%22Current%20date%22%20preference%3D%22date%22/%26gt%3B%0A%20%20%20%20%20%20%26lt%3Bcheckbox%20label%3D%22Add-ons%20URLs%22%20preference%3D%22addonsURLs%22/%26gt%3B%0A%20%20%20%20%20%20%26lt%3Bcheckbox%20label%3D%22Add-ons%20Descriptions%22%20preference%3D%22addonsDescriptions%22/%26gt%3B%0A%20%20%20%20%20%20%26lt%3Bcheckbox%20label%3D%22Theme%20screenshot%20%28for%20non-default%20theme%29%22%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20preference%3D%22themeScreenshot%22/%26gt%3B%0A%20%20%20%20%26lt%3B/groupbox%26gt%3B%0A%0A%20%20%20%20%26lt%3Bgroupbox%26gt%3B%0A%20%20%20%20%20%20%26lt%3Bcaption%26gt%3BBBCode%20ouput%26lt%3B/caption%26gt%3B%0A%20%20%20%20%20%20%26lt%3Bcheckbox%20label%3D%22Inside%20%5Bspoiler%5D%20tag%22%20preference%3D%22spoilerTag%22/%26gt%3B%0A%20%20%20%20%20%20%26lt%3Blabel%26gt%3BNot%20all%20forum%20softwares%20support%20this%20tag.%26lt%3B/label%26gt%3B%0A%20%20%20%20%26lt%3B/groupbox%26gt%3B%0A%0A%20%20%26lt%3B/prefpane%26gt%3B%0A%0A%26lt%3B/prefwindow%26gt%3B%3C/help%3E%0A%20%20%3Cattributes/%3E%0A%3C/custombutton%3E
Отсутствует
Есть кнопка для запуска VBscript, а такой же только с перламутр для скриптов .js нету?
Поясню, а то может у меня проблема с названиями. Есть скрипт который иногда используется. Включаю командную строку (ctrl+shift+k), вставляю и жму ввод. А чтоб лишних движений не делать?
Отсутствует
Mishania
Bookmarklet сделайте или во вкладку "Код" CB положите - код будет выполнятся при нажатии закладки/кнопки.
Отсутствует
Помогите пожалуйста сделать обе эти инициализации рабочими. Вместе, в одной или разных кнопках, очистка строки поиска не работает, fix работает. Напомню, фикс нужен для открытия новой вкладки при нажатии на лупу, без него новая вкладка открывается только по Enter.
var sbar = document.getElementById("searchbar");
var butt = document.getAnonymousElementByAttribute(sbar, "anonid", "search-go-button");
var attr = '\
if (event.button == 2) { event.preventDefault(); this.parentNode.parentNode.value = ""; }\
else handleSearchCommand(event);';
butt.setAttribute("onclick", attr);
// ------ Фикс открытия новой вкладки при ЛКМ по лупе
(bar => {
if (!bar) return;
var btn = document.getAnonymousElementByAttribute(bar, "anonid", "search-go-button");
var prfx = 'event.button == 0 && gPrefService.getBoolPref("browser.search.openintab")\n\t'
+ '? doSearch(value, event.shiftKey ? "tabshifted" : "tab")\n\t: ';
function setAttr(arg) btn.setAttribute("onclick", (arg ? "" : prfx) + "handleSearchCommand(event);");
setAttr(); addDestructor(setAttr);
})(BrowserSearch.searchBar);
Отредактировано _zt (26-09-2016 17:05:35)
Отсутствует
В ESR 45.4.0 перестала работать Menuitem hider
custombutton://%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22UTF-8%22%3F%3E%0D%0A%3Ccustombutton%20xmlns%3Acb%3D%22http%3A//xsms.nm.ru/custombuttons/%22%3E%0A%20%20%3Cname%3EMenuitem%20hider%3C/name%3E%0A%20%20%3Cimage%3E%3C%21%5BCDATA%5Bdata%3Aimage/x-icon%3Bbase64%2CAAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB8fHz/fHx8/3t7e/97e3v/fHx8/3x8fP98fHz/fHx8/3x8fP98fHz/fHx8/3x8fP98fHz/fHx8/3x8fP98fHz/fHx8/6Gkyf9HWOP/OEas//f3+v////////////////////////////////////////////Ly8///////fHx8/3x8fP9ueNT/Rlzs/x810P+/xe///////////////////////////////////////9fX3f+Mjbb//////3x8fP98fHz/V2HM/0FZ5P8xRt3/P02w/3d6jv6FhYX+hYWF/oWFhf6FhYX+hYWF/oWFhf5HSZH/T1B6/oWFhf58fHz/fHx8/5me8v80TN3/HDfd/ztIu//IzfL///////////////////////////+6u87/NULL/+Dg5P//////fHx8/3x8fP/o6PX/VGPS/xYy2P8aMMv/ra3A///////////////////////o6Or/NUjT/3uCvP///////////3x8fP98fHz/hYWF/nd4k/4xRtb/Ei7a/yQwpv9ycXT+hYWF/oWFhf6AgYP+OUOb/yE1yf95eXz+hYWF/oWFhf58fHz/fHx8////////////e36v/x820P8QLd7/VVur//T09P//////cXjC/xs27v+qrMj/////////////////fHx8/3x8fP///////////42Njf+7vfX/ITjT/x444P9dZLD/YWq3/xUy8/9lb8P//////////////////////3x8fP98fHz/hYWF/oWFhf6FhYX+hYWF/nl7oP4aLbj/DSbT/w4r4f8sOrP/e3uC/oWFhf6FhYX+hYWF/oWFhf58fHz/fHx8////////////jY2N//T09v+ho9X/FCzS/wki2/8DHNP/OknJ/8fN9v//////////////////////fHx8/3x8fP///////////2xtf/9dZ7//GDPk/wcn6/8vQtH/ZnDX/wke0f8+S7n/ys7n/////////////////3x8fP98fHz/dXV7/mNolP9reeT/VGr5/0BX9f8yRMn/cHGG/oWFhf5rb7L+KkPy/zE8of9mZnT+hYWF/oWFhf58fHz/e3t8/2Vy0P+JmPj/h5b6/3qK9v9/idz/3Nzl/////////////////9na+P+Ik/j/Y27S/5CSrP/y8vP/fHx8/3x8fP+WpPn/coPp/4OP3/+ws9f/9vb6////////////////////////////+fn9/8XH+P+Mk+//ZWmq/3t7e/98fHz/fHx8/3x8fP98fHz/fHx8/3x8fP98fHz/fHx8/3x8fP98fHz/fHx8/3x8fP98fHz/fHx8/3x8fP98fHz/AACsQQAArEEAAKxBAACsQQAArEEAAKxBAACsQQAArEEAAKxBAACsQQAArEEAAKxBAACsQQAArEEAAKxBAACsQQ%3D%3D%5D%5D%3E%3C/image%3E%0A%20%20%3Cmode%3E0%3C/mode%3E%0A%20%20%3Cinitcode%3E%3C%21%5BCDATA%5Bvar%20ids%20%3D%20%5B%0A%22%23context-viewsource%22%2C%20/*%20%u0418%u0441%u0445%u043E%u0434%u043D%u044B%u0439%20%u043A%u043E%u0434%20%u0441%u0442%u0440%u0430%u043D%u0438%u0446%u044B*/%0A%22%23lpt_lpcontentareacontextmenu%22%2C%20/*%20LastPass*/%0A%22%23lpt_lpfillformsmenu4%22%2C%20/*%20LastPass%20%u0437%u0430%u043F%u043E%u043B%u043D%u0435%u043D%u0438%u0435%20%u0444%u043E%u0440%u043C*/%0A%22%23context-viewbgimage%22%2C%20/*%20%u041E%u0442%u043A%u0440%u044B%u0442%u044C%20%u0444%u043E%u043D%u043E%u0432%u043E%u0435%20%u0438%u0437%u043E%u0431%u0440%u0430%u0436%u0435%u043D%u0438%u0435*/%0A%22%23context-viewinfo%22%2C%20/*%20%u0418%u043D%u0444%u043E%u0440%u043C%u0430%u0446%u0438%u044F%20%u043E%20%u0441%u0442%u0440%u0430%u043D%u0438%u0446%u0435*/%0A%22%23context-sep-viewsource%22%2C%20/*%20menuseparator*/%0A%0A%22%23context-openlinkintab%22%2C%20/*%20%u041E%u0442%u043A%u0440%u044B%u0442%u044C%20%u0441%u0441%u044B%u043B%u043A%u0443%20%u0432%20%u043D%u043E%u0432%u043E%u0439%20%u0432%u043A%u043B%u0430%u0434%u043A%u0435*/%0A%22%23context-openlinkprivate%22%2C%20/*%20%u041E%u0442%u043A%u0440%u044B%u0442%u044C%20%u0441%u0441%u044B%u043B%u043A%u0443%20%u0432%20%u043D%u043E%u0432%u043E%u043C%20%u043F%u0440%u0438%u0432%u0430%u0442%u043D%u043E%u043C%20%u043E%u043A%u043D%u0435*/%0A%22%23context-openlink%22%2C%20/*%20%u041E%u0442%u043A%u0440%u044B%u0442%u044C%20%u0441%u0441%u044B%u043B%u043A%u0443%20%u0432%20%u043D%u043E%u0432%u043E%u043C%20%u043E%u043A%u043D%u0435*/%0A%0A%22%23context-bookmarklink%22%2C%20/*%20%u0414%u043E%u0431%u0430%u0432%u0438%u0442%u044C%20%u0441%u0441%u044B%u043B%u043A%u0443%20%u0432%20%u0437%u0430%u043A%u043B%u0430%u0434%u043A%u0438*/%0A%22%23context-setDesktopBackground%22%2C%20/*%20%u0421%u0434%u0435%u043B%u0430%u0442%u044C%20%u0444%u043E%u043D%u043E%u0432%u044B%u043C%20%u0440%u0438%u0441%u0443%u043D%u043A%u043E%u043C%20%u0440%u0430%u0431%u043E%u0447%u0435%u0433%u043E%20%u0441%u0442%u043E%u043B%u0430%u2026*/%0A%22%23context-sendimage%22%2C%20/*%20%u041E%u0442%u043F%u0440%u0430%u0432%u0438%u0442%u044C%20%u0438%u0437%u043E%u0431%u0440%u0430%u0436%u0435%u043D%u0438%u0435%20%u043F%u043E%20%u043F%u043E%u0447%u0442%u0435%u2026*/%0A%22%23context-copyimage-contents%22%2C%20/*%20%u041A%u043E%u043F%u0438%u0440%u043E%u0432%u0430%u0442%u044C%20%u0438%u0437%u043E%u0431%u0440%u0430%u0436%u0435%u043D%u0438%u0435*/%0A%22%23context-saveimage%22%2C%20/*%20%u0421%u043E%u0445%u0440%u0430%u043D%u0438%u0442%u044C%20%u0438%u0437%u043E%u0431%u0440%u0430%u0436%u0435%u043D%u0438%u0435%20%u043A%u0430%u043A%u2026*/%0A%22%23context-bookmarkpage%22%2C%20/*%20%u0420%u0435%u0434%u0430%u043A%u0442%u0438%u0440%u043E%u0432%u0430%u0442%u044C%20%u044D%u0442%u0443%20%u0437%u0430%u043A%u043B%u0430%u0434%u043A%u0443*/%0A%22%23toggle_lpt_lastpass-toolbar%22%2C%20/*%20%u041F%u0430%u043D%u0435%u043B%u044C%20%u0438%u043D%u0441%u0442%u0440%u0443%u043C%u0435%u043D%u0442%u043E%u0432%20LastPass*/%0A%22%23toggle_Gismeteo-toolbar%22%2C%20/*%20Gismeteo.Bar*/%0A%22%23toggle_Overlay_Toolbar%22%2C%20/*%20SimpleTV%20Toolbar*/%0A%0A%5D//menuitem%20hider%20mark%0A%0Avar%20button%20%3D%20this%2C%20currentImage%20%3D%20this.image%3B%0Aconst%20imgFalse%20%3D%20%22data%3Aimage/x-icon%3Bbase64%2CAAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB8fHz/fHx8/3t7e/97e3v/fHx8/3x8fP98fHz/fHx8/3x8fP98fHz/fHx8/3x8fP98fHz/fHx8/3x8fP98fHz/fHx8/6Gkyf9HWOP/OEas//f3+v////////////////////////////////////////////Ly8///////fHx8/3x8fP9ueNT/Rlzs/x810P+/xe///////////////////////////////////////9fX3f+Mjbb//////3x8fP98fHz/V2HM/0FZ5P8xRt3/P02w/3d6jv6FhYX+hYWF/oWFhf6FhYX+hYWF/oWFhf5HSZH/T1B6/oWFhf58fHz/fHx8/5me8v80TN3/HDfd/ztIu//IzfL///////////////////////////+6u87/NULL/+Dg5P//////fHx8/3x8fP/o6PX/VGPS/xYy2P8aMMv/ra3A///////////////////////o6Or/NUjT/3uCvP///////////3x8fP98fHz/hYWF/nd4k/4xRtb/Ei7a/yQwpv9ycXT+hYWF/oWFhf6AgYP+OUOb/yE1yf95eXz+hYWF/oWFhf58fHz/fHx8////////////e36v/x820P8QLd7/VVur//T09P//////cXjC/xs27v+qrMj/////////////////fHx8/3x8fP///////////42Njf+7vfX/ITjT/x444P9dZLD/YWq3/xUy8/9lb8P//////////////////////3x8fP98fHz/hYWF/oWFhf6FhYX+hYWF/nl7oP4aLbj/DSbT/w4r4f8sOrP/e3uC/oWFhf6FhYX+hYWF/oWFhf58fHz/fHx8////////////jY2N//T09v+ho9X/FCzS/wki2/8DHNP/OknJ/8fN9v//////////////////////fHx8/3x8fP///////////2xtf/9dZ7//GDPk/wcn6/8vQtH/ZnDX/wke0f8+S7n/ys7n/////////////////3x8fP98fHz/dXV7/mNolP9reeT/VGr5/0BX9f8yRMn/cHGG/oWFhf5rb7L+KkPy/zE8of9mZnT+hYWF/oWFhf58fHz/e3t8/2Vy0P+JmPj/h5b6/3qK9v9/idz/3Nzl/////////////////9na+P+Ik/j/Y27S/5CSrP/y8vP/fHx8/3x8fP+WpPn/coPp/4OP3/+ws9f/9vb6////////////////////////////+fn9/8XH+P+Mk+//ZWmq/3t7e/98fHz/fHx8/3x8fP98fHz/fHx8/3x8fP98fHz/fHx8/3x8fP98fHz/fHx8/3x8fP98fHz/fHx8/3x8fP98fHz/AACsQQAArEEAAKxBAACsQQAArEEAAKxBAACsQQAArEEAAKxBAACsQQAArEEAAKxBAACsQQAArEEAAKxBAACsQQ%3D%3D%22%3B%0A%0Aconst%20pn%20%3D%20%22custombutton.menuitem_hider.active%22%3B%0Avar%20prefs%20%3D%20Application.prefs%3B%0Aif%20%28%20%21prefs.has%28pn%29%20%29%20prefs.setValue%28%20pn%2C%20true%20%29%3B%0Avar%20pref%20%3D%20prefs.get%28%20pn%20%29%3B%0A%0Avar%20ios%20%3D%20Cc%5B%27@mozilla.org/network/io-service%3B1%27%5D.getService%28Ci.nsIIOService%29%3B%0Avar%20sss%20%3D%20Cc%5B%22@mozilla.org/content/style-sheet-service%3B1%22%5D.getService%28Ci.nsIStyleSheetService%29%3B%0Aconst%20us%20%3D%20sss.USER_SHEET%3B%0A%0Afunction%20makeCssURI%28%29%20%7B%0A%20%20%20%20%20%20%20%20cssStr%20%3D%20ids%20+%20%22%20%7B%20display%3A%20none%20%21important%20%7D%22%0A%20%20%20%20%20%20%20%20return%20ios.newURI%28%22data%3Atext/css%2C%22%20+%20encodeURIComponent%28cssStr%29%2C%20null%2C%20null%29%3B%0A%7D%0Avar%20currCssURI%20%3D%20makeCssURI%28%29%3B%0Aif%20%28%20pref.value%20%29%20regSheet%28%20currCssURI%2C%20true%20%29%3B%0A%0Afunction%20regSheet%28newCssURI%2C%20reg%29%20%7B%0A%0A%09if%20%28sss.sheetRegistered%28currCssURI%2C%20us%29%29%20sss.unregisterSheet%28currCssURI%2C%20us%29%3B%0A%09if%20%28%21reg%29%20return%3B%0A%09if%20%28%21sss.sheetRegistered%28newCssURI%2C%20us%29%29%20sss.loadAndRegisterSheet%28newCssURI%2C%20us%29%3B%0A%09currCssURI%20%3D%20newCssURI%3B%0A%7D%0Afunction%20onClick%28e%29%20%7B%0A%09if%20%28e.button%20%21%3D%201%29%20return%3B%0A%09var%20target%20%3D%20e.target%3B%0A%09var%20nn%20%3D%20target.nodeName%3B%0A%09if%20%28nn%20%21%3D%20%22menuitem%22%20%26%26%20nn%20%21%3D%20%22menu%22%20%26%26%20nn%20%21%3D%20%22menuseparator%22%29%20return%3B%0A%09var%20id%20%3D%20target.id%3B%0A%09if%20%28%21id%29%20return%3B%0A%09var%20label%20%3D%20target.label%20%7C%7C%20target.nodeName%3B%0A%0A%09var%20link%20%3D%20custombuttons.makeButtonLink%28%22edit%22%2C%20button.id%29%3B%0A%09var%20param%20%3D%20custombuttons.cbService.getButtonParameters%28link%29%3B%0A%09param%20%3D%20param.wrappedJSObject%20%7C%7C%20param%3B%0A%09var%20init%20%3D%20param.initCode%3B%0A%09var%20index%20%3D%20init.indexOf%28%22%5Cn%5D//menuitem%20hider%20mark%22%29%3B%0A%09var%20part1%20%3D%20init.substring%280%2C%20index%29%3B%0A%09var%20part2%20%3D%20init.substring%28index%2C%20init.length%29%3B%0A%09param.initCode%20%3D%20part1%20+%20%27%22%23%27%20+%20id%20+%20%27%22%2C%20/*%20%27%20+%20label%20+%20%27%5C*%5C/%27%20+%20%27%5Cn%27%20+%20part2%3B%0A%09custombuttons.cbService.installButton%28param%29%3B%09%0A%7D%0AaddEventListener%28%22click%22%2C%20onClick%2C%20false%29%3B%0A%0Athis.onDestroy%20%3D%20function%28reason%29%20%7B%0A%09removeEventListener%28%22click%22%2C%20onClick%2C%20false%29%3B%0A%09regSheet%28currCssURI%2C%20false%29%3B%0A%09if%20%28reason%20%3D%3D%20%22delete%22%29%20pref.reset%28%29%3B%0A%7D%0Abutton.onclick%20%3D%20function%28e%29%20%7B%0A%09if%20%28e.button%29%20return%3B%0A%09pref.value%20%3D%20%21pref.value%3B%0A%09button.image%20%3D%20pref.value%20%3F%20currentImage%20%3A%20imgFalse%3B%0A%09pref.value%20%3F%20button.init%28%29%20%3A%20button.onDestroy%28%29%3B%0A%7D%0Abutton.image%20%3D%20pref.value%20%3F%20currentImage%20%3A%20imgFalse%3B%0Aif%20%28%20%21pref.value%20%29%20button.onDestroy%28%29%3B%0A%5D%5D%3E%3C/initcode%3E%0A%20%20%3Ccode%3E%3C%21%5BCDATA%5B/*CODE*/%5D%5D%3E%3C/code%3E%0A%20%20%3Caccelkey%3E%3C%21%5BCDATA%5B%5D%5D%3E%3C/accelkey%3E%0A%20%20%3Chelp%3E%3C%21%5BCDATA%5B%5D%5D%3E%3C/help%3E%0A%20%20%3Cattributes/%3E%0A%3C/custombutton%3E
Отсутствует
В ESR 45.4.0 перестала работать Menuitem hider
Отсутствует