70
Extensões pro Firefox

Workshop (Mozilla Party) Desenvolvendo Extensões para o Firefox 3.0

Embed Size (px)

DESCRIPTION

Relizado por Elomar França para o Dia Livre 8.06

Citation preview

Page 1: Workshop (Mozilla Party)  Desenvolvendo Extensões para o Firefox 3.0

Extensões pro Firefox

Page 2: Workshop (Mozilla Party)  Desenvolvendo Extensões para o Firefox 3.0

Eu sou

Elomar França

4º ano do técnico integrado de Informática

Estagiando na Techvirtual

Fã do Firefox!

Page 3: Workshop (Mozilla Party)  Desenvolvendo Extensões para o Firefox 3.0

O que é uma extensão?

Mini-aplicativo que roda no Firefox

Modifica o navegador

Adiciona funcionalidades

Page 4: Workshop (Mozilla Party)  Desenvolvendo Extensões para o Firefox 3.0

Feita usandoXULXML User Interface LanguageLinguagem de marcação criada pra definir a interface

do Mozilla

JavascriptPra adicionar comportamento

CSSPra adicionar estilo

Page 5: Workshop (Mozilla Party)  Desenvolvendo Extensões para o Firefox 3.0

Quem já desenvolve aplicações web vai se sentir em casa

Page 6: Workshop (Mozilla Party)  Desenvolvendo Extensões para o Firefox 3.0

Preparando o Ambienteabout:configjavascript.options.showInConsole = true

nglayout.debug.disable_xul_cache = true

Instale o DOM Inspectorhttps://addons.mozilla.org/pt-BR/firefox/addon/6622

Baixe o código de hojehttp://impactajax.com/maisweb/workshop/

Page 7: Workshop (Mozilla Party)  Desenvolvendo Extensões para o Firefox 3.0

Começando

Alguns nomes pra arquivos e diretórios são convenções - é melhor seguir.

Page 8: Workshop (Mozilla Party)  Desenvolvendo Extensões para o Firefox 3.0

helloworld/chrome.manifestinstall.rdfcontent/

overlay.jsoverlay.xulhello.xul

locale/pt-BR/

overlay.dtdhello.dtd

skin/overlay.css

Page 9: Workshop (Mozilla Party)  Desenvolvendo Extensões para o Firefox 3.0

Criar na mão é chaaaaato

http://ted.mielczarek.org/code/mozilla/extensionwiz/

http://tinyurl.com/6hvfw7

Page 10: Workshop (Mozilla Party)  Desenvolvendo Extensões para o Firefox 3.0

URL Chromechrome://<package name>/<part>/<file.xul>

chrome://helloworld/content/overlay.xul

chrome://helloworld/content/overlay.js

chrome://helloworld/skin/overlay.css

chrome://helloworld/locale/pt-BR/hello.dtd

Page 11: Workshop (Mozilla Party)  Desenvolvendo Extensões para o Firefox 3.0

Arquivos ManifestDescreve pacotes e indica seu lugar no disco.content helloworld content/

Descreve “merges” de arquivos XULoverlay chrome://browser/content/browser.xul

chrome://helloworld/content/overlay.xul

Descreve pacotes de localizaçãolocale helloworld pt-BR locale/pt-BR/

skin helloworld classic/1.0 skin/

Page 12: Workshop (Mozilla Party)  Desenvolvendo Extensões para o Firefox 3.0

chrome.manifestcontent helloworld content/

overlay chrome://browser/content/browser.xulchrome://helloworld/content/overlay.xul

locale helloworld pt-BR locale/pt-BR/

skin helloworld classic/1.0 skin/

Page 13: Workshop (Mozilla Party)  Desenvolvendo Extensões para o Firefox 3.0

Usando Entidades XML

Ajudam na hora da internacionalização

Todas as strings que dependem do idioma ficam separadas do programa

<!ENTITY nome "Valor">

Page 14: Workshop (Mozilla Party)  Desenvolvendo Extensões para o Firefox 3.0

overlay.dtd:<!ENTITY helloworld "Olá Mundo!">

hello.dtd:<!ENTITY title.label "Olá Mundo!">

<!ENTITY separate.label "Minha Primeira Extensão pro Firefox!">

<!ENTITY close.label "Fechar">

Page 15: Workshop (Mozilla Party)  Desenvolvendo Extensões para o Firefox 3.0

Um pouquinho de XULLinguagem de Marcação (Lembra XHTML)Elementos pra:• Controles como caixas de texto e checkboxes• Barras de ferramentas com menus ou outros

elementos• Menus em barras de menus ou pop-ups• Caixas com abas• Árvores para informação hierárquica• Atalhos de teclado

Page 16: Workshop (Mozilla Party)  Desenvolvendo Extensões para o Firefox 3.0

Criando uma Janela

http://www.pastie.org/217713

Page 17: Workshop (Mozilla Party)  Desenvolvendo Extensões para o Firefox 3.0
Page 18: Workshop (Mozilla Party)  Desenvolvendo Extensões para o Firefox 3.0

Adicionando um botão

http://www.pastie.org/217714

Page 19: Workshop (Mozilla Party)  Desenvolvendo Extensões para o Firefox 3.0
Page 20: Workshop (Mozilla Party)  Desenvolvendo Extensões para o Firefox 3.0

Adicionando Texto

http://www.pastie.org/217716

Page 21: Workshop (Mozilla Party)  Desenvolvendo Extensões para o Firefox 3.0
Page 22: Workshop (Mozilla Party)  Desenvolvendo Extensões para o Firefox 3.0

hello.xul

http://www.pastie.org/217717

Page 23: Workshop (Mozilla Party)  Desenvolvendo Extensões para o Firefox 3.0

Criando Menus

http://www.pastie.org/217717

Page 24: Workshop (Mozilla Party)  Desenvolvendo Extensões para o Firefox 3.0

overlay.xul

http://www.pastie.org/217721

Page 25: Workshop (Mozilla Party)  Desenvolvendo Extensões para o Firefox 3.0

http://developer.mozilla.org/en/docs/XUL_Tutorial

Page 26: Workshop (Mozilla Party)  Desenvolvendo Extensões para o Firefox 3.0

Um pouco de Javascript

http://www.pastie.org/217723

Page 27: Workshop (Mozilla Party)  Desenvolvendo Extensões para o Firefox 3.0

http://www.pastie.org/2177234

Page 29: Workshop (Mozilla Party)  Desenvolvendo Extensões para o Firefox 3.0

overlay.js

http://www.pastie.org/2177237

Page 30: Workshop (Mozilla Party)  Desenvolvendo Extensões para o Firefox 3.0

Criando o Instalador

Page 31: Workshop (Mozilla Party)  Desenvolvendo Extensões para o Firefox 3.0

pastie.org/217732

Page 32: Workshop (Mozilla Party)  Desenvolvendo Extensões para o Firefox 3.0

Pra isso existem wizards!

Page 33: Workshop (Mozilla Party)  Desenvolvendo Extensões para o Firefox 3.0

http://www.pastie.org/218517

Page 34: Workshop (Mozilla Party)  Desenvolvendo Extensões para o Firefox 3.0

http://www.pastie.org/218522

Page 35: Workshop (Mozilla Party)  Desenvolvendo Extensões para o Firefox 3.0

http://www.pastie.org/218525

Page 36: Workshop (Mozilla Party)  Desenvolvendo Extensões para o Firefox 3.0

CSS

overlay.css

http://www.pastie.org/218527

Page 37: Workshop (Mozilla Party)  Desenvolvendo Extensões para o Firefox 3.0

Registrando

Crie um arquivo na pasta de seu perfil de usuário. O nome deve ser a id da extensão

helloworld@maisweb

/home/user/.mozilla/firefox/w8uij5g.default/extensions

O conteúdo é uma linha com o caminho até a extensão

/home/user/helloworld

Page 38: Workshop (Mozilla Party)  Desenvolvendo Extensões para o Firefox 3.0

Empacotando

Todo o conteúdo (pastas content, locale e skin)

fica num arquivo .jar

Tudo (conteúdo, chrome e install.rdf) fica num

arquivo .xpi

(São só arquivos zipados)

Page 39: Workshop (Mozilla Party)  Desenvolvendo Extensões para o Firefox 3.0

Empacotando

Primeiro passo, atualizar a

estrutura de diretórios

Page 40: Workshop (Mozilla Party)  Desenvolvendo Extensões para o Firefox 3.0

helloworld.xpi/chrome.manifest

install.rdf

chrome/helloworld.jar

content/

overlay.js

overlay.xul

hello.xul

locale/

pt-BR/

overlay.dtd

hello.dtd

skin/

overlay.css

Page 41: Workshop (Mozilla Party)  Desenvolvendo Extensões para o Firefox 3.0

Segundo passo, atualizar o

chrome.manifest

Page 42: Workshop (Mozilla Party)  Desenvolvendo Extensões para o Firefox 3.0

content helloworldjar:chrome/helloworld.jar!/content/

overlay chrome://browser/content/browser.xulchrome://helloworld/content/overlay.xul

locale helloworld pt-BR jar:chrome/helloworld.jar!/locale/pt-BR

skin helloworld classic/1.0 jar:chrome/helloworld.jar!/skin/

Page 43: Workshop (Mozilla Party)  Desenvolvendo Extensões para o Firefox 3.0

$ zip -r helloworld.jar content/* skin/* locale/*

$ zip helloworld.xpi install.rdf chrome.manifestchrome/tuttoolbar.jar

Page 45: Workshop (Mozilla Party)  Desenvolvendo Extensões para o Firefox 3.0

Pronto!

Sua primeira extensão pro Firefox!

Page 46: Workshop (Mozilla Party)  Desenvolvendo Extensões para o Firefox 3.0

Firefox 3

Duas grandes novidades pra quem desenvolve extensões

Page 47: Workshop (Mozilla Party)  Desenvolvendo Extensões para o Firefox 3.0

FUEL

Biblioteca pra facilitar o acesso a recursos do Firefox

Classes para Bookmarks, Janelas, Sessão, Extensões, etc.

http://developer.mozilla.org/en/docs/FUEL

Page 48: Workshop (Mozilla Party)  Desenvolvendo Extensões para o Firefox 3.0

microformats API

API (sério?) pra manipular

Microformats (meeesmo?) numa página

Page 50: Workshop (Mozilla Party)  Desenvolvendo Extensões para o Firefox 3.0

A gente começa com uma informação pronta pra humanos

Exemplo com hCard

Exemplo retirado de<http://tantek.com/presentations/2006/07/what-are-microformats/>

Page 51: Workshop (Mozilla Party)  Desenvolvendo Extensões para o Firefox 3.0

Exemplo retirado de<http://tantek.com/presentations/2006/07/what-are-microformats/>

Agora nós temos XHTMLPra humanos, ainda são informações de contato

Pra máquinas, é só XHTML

Page 52: Workshop (Mozilla Party)  Desenvolvendo Extensões para o Firefox 3.0

Agora nós temos hCard!Pra humanos, ainda são só informações de contato

Mas máquinas agora podem identificar esse padrãoE saber que aqui temos informações de contato

Exemplo retirado de<http://tantek.com/presentations/2006/07/what-are-microformats/>

Page 53: Workshop (Mozilla Party)  Desenvolvendo Extensões para o Firefox 3.0

Exemplo retirado de<http://tantek.com/presentations/2006/07/what-are-microformats/>

Quase nenhum esforço, e agora temos informação que

faz sentido para humanos e máquinas

XHTML com mais significado

Page 54: Workshop (Mozilla Party)  Desenvolvendo Extensões para o Firefox 3.0

Existem dezenas de microformats

hCardPessoas e organizações

rel-tagTags, categorias

VoteLinks, hReviewsOpiniões, avaliações, resenhas

hCalendarCalendários e eventos

XFNRedes sociais

rel-licenseLicenças

Page 55: Workshop (Mozilla Party)  Desenvolvendo Extensões para o Firefox 3.0

microformats API

Suporta os Microformats adr, geo, hCard, hCalendar e tag

Você pode adicionar outros

Principais métodos: count e get

Page 56: Workshop (Mozilla Party)  Desenvolvendo Extensões para o Firefox 3.0

Usando a API

Vamos criar uma extensão que pega o primeiro

hCard de uma página e preenche um formulário.

Page 58: Workshop (Mozilla Party)  Desenvolvendo Extensões para o Firefox 3.0

Adicionando a UI

firefoxOverlay.xul

<overlay>

...

<toolbarpalette id="nav-bar">

</toolbarpalette>

</overlay>

Page 59: Workshop (Mozilla Party)  Desenvolvendo Extensões para o Firefox 3.0

http://www.pastie.org/218538

Page 60: Workshop (Mozilla Party)  Desenvolvendo Extensões para o Firefox 3.0

http://www.pastie.org/218543

Page 61: Workshop (Mozilla Party)  Desenvolvendo Extensões para o Firefox 3.0

Adicionando Comportamento

overlay.js

Page 64: Workshop (Mozilla Party)  Desenvolvendo Extensões para o Firefox 3.0

Por hoje é só, pessoal!

Espero que tenham curtido

Page 65: Workshop (Mozilla Party)  Desenvolvendo Extensões para o Firefox 3.0

O que vem depois

• Internacionalização

• Mais XUL

• FUEL

• Update

• Preferências

• Microformats

Page 67: Workshop (Mozilla Party)  Desenvolvendo Extensões para o Firefox 3.0

• http://lifehacker.com/software/programming/how-to-build-a-firefox-extension-264490.php

• http://roachfiend.com/archives/2004/12/08/how-to-create-firefox-extensions/

• http://developer.mozilla.org/en/docs/Extensions

• http://kb.mozillazine.org/Extension_development#Tutorials

• http://simplesideias.com.br/criando-extensoes-para-o-firefox-i/

Page 69: Workshop (Mozilla Party)  Desenvolvendo Extensões para o Firefox 3.0
Page 70: Workshop (Mozilla Party)  Desenvolvendo Extensões para o Firefox 3.0

Obrigado!

Elomar Franç[email protected]