Полезная информация

Многие проблемы быстрее решаются поиском по форуму и чтением FAQ, чем созданием новой темы и томительным ожиданием ответа.

№152620-08-2016 23:00:36

turbot
Участник
 
Группа: Members
Зарегистрирован: 09-10-2011
Сообщений: 2529
UA: Firefox 51.0

Re: Обсуждение кнопок CB

и она сохраняет с текстом и ище код какой то

Этот код - адрес страницы. :) Да и поскольку еще и заголовка у страницы блокнота нет - заметка "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)

Отсутствует

 

№152720-08-2016 23:21:13

broker
Участник
 
Группа: Members
Зарегистрирован: 23-06-2015
Сообщений: 98
UA: unknown 0.0

Re: Обсуждение кнопок CB

turbot
Спасибо :D работает.

Отредактировано broker (20-08-2016 23:29:35)

Отсутствует

 

№152827-08-2016 03:28:36

difabor
Участник
 
Группа: Members
Зарегистрирован: 21-09-2013
Сообщений: 523
UA: Firefox 28.0
Веб-сайт

Re: Обсуждение кнопок CB

Уважаемый turbot, спасибо за Вашу "Раскукоживатель коротких ссылок(Firefox 24+), от 26.07.2016." - работает, как доктор прописал.
Но у меня есть несколько маленьких предложений.
1. Если сокращённая ссылка текст, а не линк (не кликабельна), то её надо выделять. Нельзя ли сделать, чтобы просто по клику - без выделения?
2. Нельзя ли добавить обратный сервис, т.е. скукоживатель с выбором скукоживателя (сократителя) в каскадном контекстном меню?
Спасибо


Хорошо, когда у человека есть выбор, но плохо, когда он перед ним стоит ©

Отсутствует

 

№152927-08-2016 15:32:48

turbot
Участник
 
Группа: Members
Зарегистрирован: 09-10-2011
Сообщений: 2529
UA: Firefox 51.0

Re: Обсуждение кнопок CB

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)

Отсутствует

 

№153027-08-2016 21:28:28

Dumby
Участник
 
Группа: Members
Зарегистрирован: 12-08-2012
Сообщений: 1010
UA: Firefox 45.0

Re: Обсуждение кнопок CB

turbot пишет:

что более щадяще будет

Не, не знаю. Но предположу, что косвенно об этом можно судить
по разнице во времени исполнения. Вот, попробуй понажимать
что-нибудь простое, или напиши какой-нибудь более надёжный тест.
Потом расскажешь.

скрытый текст

Выделить код

Код:

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;
  };

Отсутствует

 

№153128-08-2016 12:26:20

Uxapb
Участник
 
Группа: Members
Зарегистрирован: 25-01-2012
Сообщений: 126
UA: Firefox 48.0

Re: Обсуждение кнопок CB

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


bunda1, большое спасибо. Работает.

Отредактировано Uxapb (28-08-2016 14:07:15)

Отсутствует

 

№153228-08-2016 13:56:04

bunda1
Moderator
 
Группа: Moderators
Откуда: Латвия
Зарегистрирован: 09-02-2010
Сообщений: 4786
UA: Firefox 24.0

Re: Обсуждение кнопок CB

Uxapb пишет:

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

Отсутствует

 

№153328-08-2016 16:15:55

turbot
Участник
 
Группа: Members
Зарегистрирован: 09-10-2011
Сообщений: 2529
UA: Firefox 51.0

Re: Обсуждение кнопок CB

Dumby пишет:

Потом расскажешь.

Ну, своего я точно не напишу. :) Так что по результатам этого теста заменил на новый вариант. Почти пятикратная разница во времени исполнения. Спасибо.

Отредактировано turbot (28-08-2016 16:16:16)

Отсутствует

 

№153401-09-2016 14:11:31

Mishania
Участник
 
Группа: Members
Зарегистрирован: 22-10-2011
Сообщений: 354
UA: Firefox 47.0

Re: Обсуждение кнопок CB

День добрый. А в связи с выходом DownThemAll! 3.02 можно изменить кнопку под новые реалии??

Отсутствует

 

№153501-09-2016 18:34:05

bunda1
Moderator
 
Группа: Moderators
Откуда: Латвия
Зарегистрирован: 09-02-2010
Сообщений: 4786
UA: Firefox 24.0

Re: Обсуждение кнопок CB

Mishania пишет:

День добрый. А в связи с выходом 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

Отсутствует

 

№153601-09-2016 18:49:27

Mishania
Участник
 
Группа: Members
Зарегистрирован: 22-10-2011
Сообщений: 354
UA: Firefox 47.0

Re: Обсуждение кнопок CB

bunda1
Огромное спасибо! Благодаря вашим трудам, пользоваться браузером в разы приятней.

Отсутствует

 

№153707-09-2016 13:12:59

Uxapb
Участник
 
Группа: Members
Зарегистрирован: 25-01-2012
Сообщений: 126
UA: Firefox 48.0

Re: Обсуждение кнопок CB

Приветствую.
Не работают следующие кнопки:
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>


Почините, если возможно.
Кнопки, использующие Справку работают. CB правил через cbbuttonimpl.js

Отсутствует

 

№153808-09-2016 18:37:29

bunda1
Moderator
 
Группа: Moderators
Откуда: Латвия
Зарегистрирован: 09-02-2010
Сообщений: 4786
UA: Firefox 24.0

Re: Обсуждение кнопок CB

Uxapb пишет:

Приветствую.
Не работают следующие кнопки:

:/ FF Exp Imp CB

Отсутствует

 

№153908-09-2016 19:05:52

bezuma
Участник
 
Группа: Members
Откуда: Москва
Зарегистрирован: 26-01-2014
Сообщений: 153
UA: Firefox 45.0

Re: Обсуждение кнопок CB

bunda1
Спасибо - очень нужная кнопка!

Отсутствует

 

№154008-09-2016 21:59:31

Uxapb
Участник
 
Группа: Members
Зарегистрирован: 25-01-2012
Сообщений: 126
UA: Firefox 48.0

Re: Обсуждение кнопок CB

bunda1 пишет:

:/ 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)

Отсутствует

 

№154108-09-2016 23:32:36

turbot
Участник
 
Группа: Members
Зарегистрирован: 09-10-2011
Сообщений: 2529
UA: Firefox 51.0

Re: Обсуждение кнопок CB

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

Отсутствует

 

№154209-09-2016 00:40:52

Uxapb
Участник
 
Группа: Members
Зарегистрирован: 25-01-2012
Сообщений: 126
UA: Firefox 48.0

Re: Обсуждение кнопок CB

turbot, большое спасибо.
имхо, кнопка заслуживает место в готовых. )

Отсутствует

 

№154312-09-2016 22:07:29

Mishania
Участник
 
Группа: Members
Зарегистрирован: 22-10-2011
Сообщений: 354
UA: Firefox 47.0

Re: Обсуждение кнопок CB

Есть кнопка для запуска VBscript, а такой же только с перламутр для скриптов .js нету?
Поясню, а то может у меня проблема с названиями.  Есть скрипт который иногда используется. Включаю командную строку (ctrl+shift+k), вставляю и жму ввод. А чтоб лишних движений не делать?

Отсутствует

 

№154412-09-2016 22:44:43

turbot
Участник
 
Группа: Members
Зарегистрирован: 09-10-2011
Сообщений: 2529
UA: Firefox 51.0

Re: Обсуждение кнопок CB

Mishania
Bookmarklet сделайте или во вкладку "Код" CB положите - код будет выполнятся при нажатии закладки/кнопки.

Отсутствует

 

№154513-09-2016 08:15:05

Mishania
Участник
 
Группа: Members
Зарегистрирован: 22-10-2011
Сообщений: 354
UA: Firefox 47.0

Re: Обсуждение кнопок CB

turbot
Спасибо. Букмарклет сработал, кнопка нет.

Отсутствует

 

№154613-09-2016 17:15:08

turbot
Участник
 
Группа: Members
Зарегистрирован: 09-10-2011
Сообщений: 2529
UA: Firefox 51.0

Re: Обсуждение кнопок CB

Mishania пишет:

кнопка нет

Код, естественно, поправить нужно, чтоб сработала. Как минимум, позаменять document на window.content.document.

Отсутствует

 

№154726-09-2016 17:04:11

_zt
Участник
 
Группа: Members
Зарегистрирован: 10-11-2014
Сообщений: 194
UA: Firefox 45.0

Re: Обсуждение кнопок CB

Помогите пожалуйста сделать обе эти инициализации рабочими. Вместе, в одной или разных кнопках, очистка строки поиска не работает, fix работает. Напомню, фикс нужен для открытия новой вкладки при нажатии на лупу, без него новая вкладка открывается только по Enter.

скрытый текст
// ------  Очистка searchbar по ПКМ на иконке лупы

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)

Отсутствует

 

№154826-09-2016 19:06:30

Mishania
Участник
 
Группа: Members
Зарегистрирован: 22-10-2011
Сообщений: 354
UA: Firefox 47.0

Re: Обсуждение кнопок CB

В 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

Отсутствует

 

№154926-09-2016 19:32:26

bunda1
Moderator
 
Группа: Moderators
Откуда: Латвия
Зарегистрирован: 09-02-2010
Сообщений: 4786
UA: Firefox 24.0

Re: Обсуждение кнопок CB

Mishania пишет:

В ESR 45.4.0 перестала работать Menuitem hider

Menuitem hider( Firefox24+ ) от 07.06.2016.

Отсутствует

 

№155026-09-2016 19:37:26

bezuma
Участник
 
Группа: Members
Откуда: Москва
Зарегистрирован: 26-01-2014
Сообщений: 153
UA: Firefox 45.0

Re: Обсуждение кнопок CB

Mishania
У меня работает нормалек на ESR

Отсутствует

 

Board footer

Powered by PunBB
Modified by Mozilla Russia
Copyright © 2004–2011 Mozilla Russia
Язык отображения форума: [Русский] [English]