Este articulo necesita una revisión editorial. Cómo puedes ayudar.
Para realizar los pasos que se describen a continuación es necesario tener instalado el SDK y conocimientos básico de cfx
.
Si esta usando jpm en vez de cfx, el método para usar módulos externos es diferente, y debe leer la versión jmp en vez de esta guía.
El SDK aún no posee una API para agregar nuevas opciones de menú a Firefox. Pero su diseño permite que sus funcionalidades sean ampliadas, por lo tanto cualquiera puede desarrollar y publicar módulos para que sean usados por los desarrolladores de add-on. Afortunadamente, Erik Vold escribió el módulo menuitems
que permite agregar opciones al menú.
Este manual cumple con una doble funcionalidad. Describe el método general para usar un módulo externo, de terceras partes en el add-on, y describe como agregar una opción al menú usando el módulo menuitems
en particular.
Primero, cree una nuevo add-on. Cree un directorio llamado "clickme" donde desee, ingrese en el directorio recien creado y ejecute cfx init
.
mkdir clickme cd clickme cfx init
La estructura del directorio sera creada:
- clickme
- data
- lib
- main.js
- package.json
- tests
- test-main.js
Instalar menuitems
Cree un directorio llamado "packages"menuitems
package desde https://github.com/mykmelez/menuitems-jplib y extraiga el archivo dentro del directorio "packages" que acaba de crear:
mkdir packages cd packages tar -xf ../erikvold-menuitems-jplib-d80630c.zip
Dependencias del Módulo
Si los módulos de terceras partes solo dependen de los módulos de SDK, puede usarlos inmediatamente, pero si dependen de otros módulos de terceras partes, debe instalar también esas dependencias.
En el directorio principal del paquete encontrará un archivo llamado "package.json". Abralo y busque una entrada llamada "dependencies". La entrada para el paquete menuitems
es:
"dependencies": ["vold-utils"]
Esto significa que se debe instalar el paquete vold-utils
, lo cual puede hacerse descargándolo desde https://github.com/mykmelez/vold-utils-jplib y agregándolo dentro del directorio packages
junto a menuitems
.
Usar menuitems
La documentación para el módulo menuitems
nos dice que creemos una opción del menú usando MenuItem()
. De las opciones aceptadas por MenuItem()
, usaremos este resumido conjunto:
id
: identificador para esta opción de menúlabel
: texto que mostrará la opción de menúcommand
: función que se ejecutará cuando se seleccione la opción de menúmenuid
: identificador del elemento padre de la opción de menúinsertbefore
: identificador de la opción del menú delante de la cual queremos que aparezca nuestra opción de menú.
var menuitem = require("menuitems").Menuitem({ id: "clickme", menuid: "menu_ToolsPopup", label: "Click Me!", onCommand: function() { console.log("clicked"); }, insertbefore: "menu_pageInfo" });
Luego, se debe declarar la dependencia en el paquete menuitems
. En el archivo package.json
del add-on se agrega:
"dependencies": "menuitems"
Note que debido al bug 663480, si agrega una línea dependencies
en package.json
, y usa cualquier módulo del SDK, tendrá que declarar la dependencia a ese paquete integrado, como sigue:
"dependencies": ["menuitems", "addon-sdk"]
Ahora esta todo listo. Ejecute el add-on y verá la nueva opción de menú en el menú Herramientas
: seleccionela y verá aparecer en la terminal info: clicked
.
Advertencia
Los módulos de terceras partes son una manera genial de usar funcionalidades que no son proporcionadas directamente por SDK, pero debido a que los módulos de terceras partes usan APIs de bajo nivel pueden no funcionar correctamente en las nuevas versiones de Firefox.