Разработка расширения для firefox, или мой первый опыт, на примере скриншотера

После написания статьи Системные скрипты на php для linux, пишем скриншотер, у меня появилась идея «А почему бы, не написать расширение которое завязать на мой скрипт, с возможностью автоматической выгрузки на яндекс диск.»… Почитав документацию о разработке расширений я решил всё же начать писать.
image

Вот это маленькая кнопочка и скриншот на яндекс диске, результат прототипа расширения, написаного за пару часов. О процессе его создание под катом…

Внимание: это первая версия приложения, в будущем в роли скриншотера будет выступать скрипт из предыдущей статьи…

Расширение которое я разработал имеет следующую файловую структуру:

Структура
-chrome.manifest
-install.rdf
--content
----browserOverlay.js
----browserOverlay.xul
----options.xul
--skin
----browserOverlay.css

Сейчас нас интересуют файлы: chrome.manifest и install.rdf. chrome.manifest содержит в себе описание структуры проекта:

chrome.manifest
content xulphpsrc content/
skin xulphpsrc classic/1.0 skin/

overlay chrome://browser/content/browser.xul chrome://xulphpsrc/content/browserOverlay.xul



Первые две строки хром манифеста содержат: тип данных, название пакета, путь к файлам пакета.
Третья строка регистрирует, так называемый, overlay (поверхностный слой) т.е. этот слой ложиться как бы по верх уже существующего, и добавляет элементы управления в браузер.

Файл install.rdf это манифест установки, который содержит информацию об добавляемом расширение:

install.rdf




  
    phpsrc@phpsrc.ru
    xulphpsrc
    PHP screenshoter extensions!
    0.1
    chrome://xulphpsrc/content/options.xul
    Naumov
    2

    
    
      
        {ec8030f7-c20a-464f-9b0e-13a3a9e97384}
        4.0
        10.*
      
    
  



Как вы видите. Он содержит в себе идентификатор, имя приложения, версию, создателя, тип приложения, URL панели настройки и д.р. информацию.
Я не думаю что стоит заострять внимание на этом файле, так как всё вполне очевидно. Мы можем только разобрать одну опцию optionsURL, это url который ведёт к настройкам расширения, настройки в свою очередь описываются файлом options.xul:
options.xul





    
        
            
        

        
            
        

        
            
    



В этом файле, мы описали всего 2-ва поля логин и пароль. Обратите внимание на имена «extensions.xulphpsrc.login» и «extensions.xulphpsrc.pass» они содержат как бы древовидную структуру, и их будет удобнее получать из общей массы записей, да и есть, некая гарантия уникальности ключей…
Далее рассмотрим фаил browserOverlay.xul:
browserOverlay.xul