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

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

№111-07-2011 11:48:21

tuarisa
Участник
 
Группа: Members
Зарегистрирован: 11-07-2011
Сообщений: 3
UA: Opera 11.5

Адаптация расширения с 3.x на 4.х+ (addon-bar)

Доброго дня, есть вопрос по поводу addon-bar, появившемуся в 4й версии. Долгое время не доходили руки обновить одно локальное расширение, совместимость по большому счёту осталось, но пользователи хотят, чтоб кнопка расширения могла перемещаться в нужное место по панели расширений, как это сделано в расширениях для 4.х и более версий.
Внимание вопрос, как с минимальными изменениями переделать расширение?
Отягощающие обстоятельства - кнопка на тулбаре представляет с собой две колонки: в одной картинка, в другой текст.
Вот так выглядит кусок из XUL, касающийся тулбара:

Выделить код

Код:

<statusbar id="status-bar">
        <statusbarpanel id="BlablaStatusPanel"
                        insertbefore="resizerBottomRight"
                        context="BlablaStatusPopupMenu"
                        tooltip="BlablaStatusTooltip"
                        onclick="Blabla.StatusClick(event);">
            <grid>
                <rows>
                    <row />
                </rows>
                <columns>
                    <column flex="1">
                        <image id="BlablaStatusIcon" src="chrome://blabla/skin/icon_disabled.png"/>
                    </column>
                    <column flex="1">
                        <label id="BlablaLabel" value="0.00" hidden="true" />
                    </column>
                </columns>
            </grid>
        </statusbarpanel>
    </statusbar>

Как правильно это адаптировать под версию 4.х и так, чтоб можно было перетаскивать по панельке?
Заранее спасибо.
(firefox-овые расширения ранее почти не ковыряла, но кое-что умею и быстро учусь)

Отсутствует

 

№211-07-2011 12:36:55

Infocatcher
Not found
 
Группа: Extensions
Зарегистрирован: 24-05-2007
Сообщений: 4339
UA: Firefox 5.0

Re: Адаптация расширения с 3.x на 4.х+ (addon-bar)

Как-то так:

Выделить код

Код:

<toolbarpalette id="BrowserToolbarPalette">
    <toolbaritem
        id="BlablaStatusPanel"
        context="BlablaStatusPopupMenu"
        tooltip="BlablaStatusTooltip"
        onclick="Blabla.StatusClick(event);">
        <grid>
            ...
        </grid>
    </toolbaritem>
</toolbarpalette>

https://developer.mozilla.org/en/XUL/toolbaritem


Прошлое – это локомотив, который тянет за собой будущее. Бывает, что это прошлое вдобавок чужое. Ты едешь спиной вперед и видишь только то, что уже исчезло. А чтобы сойти с поезда, нужен билет. Ты держишь его в руках. Но кому ты его предъявишь?
Виктор Пелевин. Желтая стрела

Отсутствует

 

№311-07-2011 14:18:04

banbot
Moderator
 
Группа: Moderators
Зарегистрирован: 23-12-2007
Сообщений: 5275

Re: Адаптация расширения с 3.x на 4.х+ (addon-bar)

Тема перенесена из форума «Firefox» в форум «Разработка».


Do you feel lucky, punk?

Отсутствует

 

№411-07-2011 14:36:16

tuarisa
Участник
 
Группа: Members
Зарегистрирован: 11-07-2011
Сообщений: 3
UA: Opera 11.5

Re: Адаптация расширения с 3.x на 4.х+ (addon-bar)

Infocatcher , Спасибо большое. Заработало. Вроде делала тоже самое, но видимо перемудрила.
Ещё вопрос, теперь по умолчанию тулбар в панели расширений не появляется, его надо принудительно вытаскивать из вид - панели инструментов - настроить (и перетаскивать руками на панель).
Но в расширениях типа noscript тулбар появляется сразу без манипуляций. Как его по умолчанию заставить быть на панельке?

И какой MIME-type должен отдавать сервер на .xpi-файлик? Чтобы он сразу открывался в фф, а не требовал сначала сохранить, если это возможно.

Отредактировано tuarisa (11-07-2011 14:39:36)

Отсутствует

 

№511-07-2011 14:53:00

Infocatcher
Not found
 
Группа: Extensions
Зарегистрирован: 24-05-2007
Сообщений: 4339
UA: Firefox 5.0

Re: Адаптация расширения с 3.x на 4.х+ (addon-bar)

tuarisa пишет

Но в расширениях типа noscript тулбар появляется сразу без манипуляций. Как его по умолчанию заставить быть на панельке?

Ну, можно посмотреть, что делает NoScript. =)
https://developer.mozilla.org/en/Code_s … by_default

tuarisa пишет

И какой MIME-type должен отдавать сервер на .xpi-файлик?

application/x-xpinstall

Добавлено 11-07-2011 15:05:31
\chrome\noscript.jar\content\noscript\Main.js

  ensureUIVisibility: function() {

Выделить код

Код:

ensureUIVisibility: function() {
    const window =  DOM.mostRecentBrowserWindow;
    try {
      const document = window.document;
      const addonBar = document.getElementById("addon-bar");
      if (!addonBar) return false;
      
      const tbbId = "noscript-tbb";
      let tbb = document.getElementById(tbbId);
      if (tbb) return false;
      
      let navBar = document.getElementById("nav-bar");
      
      let [bar, refId] =
        addonBar.collapsed && navBar && !navBar.collapsed || !this.getPref("statusIcon", true)
        ? [navBar, "urlbar-container"]
        : [addonBar, "status-bar"];
      
      set = bar.currentSet.split(/\s*,\s*/);
      if (set.indexOf(tbbId) > -1) return false;
      
      set.splice(set.indexOf(refId), 0, tbbId);
      
      bar.setAttribute("currentset", bar.currentSet = set.join(","));
      document.persist(bar.id, "currentset");
      try {
        window.BrowserToolboxCustomizeDone(true);
      } catch (e) {}
      try {
        window.noscriptOverlay.initPopups();
      } catch(e) {}
      return true;
    } catch(e) {
      this.dump(e);
      return false;
    }
  },

Отредактировано Infocatcher (11-07-2011 15:05:31)


Прошлое – это локомотив, который тянет за собой будущее. Бывает, что это прошлое вдобавок чужое. Ты едешь спиной вперед и видишь только то, что уже исчезло. А чтобы сойти с поезда, нужен билет. Ты держишь его в руках. Но кому ты его предъявишь?
Виктор Пелевин. Желтая стрела

Отсутствует

 

№612-07-2011 13:28:23

tuarisa
Участник
 
Группа: Members
Зарегистрирован: 11-07-2011
Сообщений: 3
UA: Opera 11.5

Re: Адаптация расширения с 3.x на 4.х+ (addon-bar)

Я заюзала то, что было по первой ссылке. Но по-моему это немного не то, чего мне хотелось. Мне бы хотелось при первом запуске назначить ему положение, а о дальнейшем его расположении озадачить пользователя. Чтоб при каждом новом запуске он не помещался туда, куда, куда совался при первом запуске.

Я попробовала сделать с детектом первого запуска, как здесь http://stackoverflow.com/questions/4978188/how-do-i-detect-a-first-run-in-firefox-a-addon , но по-моему:
pref("extensions.blabla@ololo.firstrun", true);
не работает, файлик лежит в defaults\preferences.

Отсутствует

 

№712-07-2011 14:45:40

Infocatcher
Not found
 
Группа: Extensions
Зарегистрирован: 24-05-2007
Сообщений: 4339
UA: Firefox 5.0

Re: Адаптация расширения с 3.x на 4.х+ (addon-bar)

tuarisa пишет

но по-моему:
pref("extensions.blabla@ololo.firstrun", true);
не работает, файлик лежит в defaults\preferences.

Подойдет любая настройка – надо проверять значение перед добавлением кнопки и переключать в состояние «кнопка добавлена» после.


Прошлое – это локомотив, который тянет за собой будущее. Бывает, что это прошлое вдобавок чужое. Ты едешь спиной вперед и видишь только то, что уже исчезло. А чтобы сойти с поезда, нужен билет. Ты держишь его в руках. Но кому ты его предъявишь?
Виктор Пелевин. Желтая стрела

Отсутствует

 

Board footer

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