--- title: Guía para la migración a catálogo slug: Guía_para_la_migración_a_catálogo tags: - NeedsContent - Places ---
{{ Fx_minversion_header(3) }} Este documento es para los desarrolladores de aplicaciones y extensiones que tienen código los API de los marcadores y de el historial es Firefox 2 y anteriores y que están migrando a Firefox 3.
Catálogo es un conjunto de API para la administración del historial de navegación y los meta datos de las URI. Esto incluye historial, marcadores, pestañas, favicons y anotaciones. Existen dos modelos de identidad en el sistema: URI e identificadores únicos para elementos del sistema de marcadores. Algunos de los API están centrados en URI, mientras que otros usan identificadores de elementos. La firma del API y su contexto, generalmente dejan claro qué modelo se requiere.
El servicio del toolkit marcadores es {{ Source("toolkit/components/places/public/nsINavBookmarksService.idl", "nsINavBookmarksService") }}:
var bookmarks = Cc["@mozilla.org/browser/nav-bookmarks-service;1"]. getService(Ci.nsINavBookmarksService);
EL almacenamiento de los marcadores es jerárquico, sirviendo de modelo a las carpetas y su contenido. Varias carpetas significativas están disponibles como atributos de {{ Interface("nsINavBookmarksService") }}.
Nota: Este documento cubre el servicio de tolkit Catálogo. Sin embargo, los desarrolladores de Firefox pueden aprovechar diversos API de ayuda que son específicos del navegador:
Crear un Marcador
// create an nsIURI for the URL to be bookmarked. var bookmarkURI = Cc["@mozilla.org/network/io-service;1"]. getService(Ci.nsIIOService). newURI("http://www.mozilla.com", null, null); var bookmarkId = bookmarks.insertBookmark( bookmarks.toolbarFolder, // El Id de la carpeta donde se guardará el marcador. bookmarkURI, // La URI del marcador - un objeto nsIURI. bookmarks.DEFAULT_INDEX, // La posición del marcador en su carpeta padre. "my bookmark title"); // El título del marcador.
Crear una carpeta
var folderId = bookmarks.createFolder( bookmarks.toolbarFolder, // La id de la carpeta donde se guardará la nueva carpeta. "my folder title", // El título de la nueva carpeta. bookmarks.DEFAULT_INDEX); // La posición de la nueva carpeta en su carpeta padre.
Crear un separador
var separatorId = bookmarks.insertSeparator( bookmarks.toolbarFolder, // La id de la carpeta donde será puesto el separador. bookmarks.DEFAULT_INDEX); // La posición del separador en su carpeta padre.
Crear un marcador dinámico
var IOService = Cc["@mozilla.org/network/io-service;1"]. getService(Ci.nsIIOService); var siteURI = IOService.newURI("http://www.mozilla.com", null, null); var feedURI = IOService.newURI("http://www.mozilla.org/news.rdf", null, null); var livemarks = Cc["@mozilla.org/browser/livemark-service;2"]. getService(Ci.nsILivemarkService); livemarks.createLivemark(bookmarks.toolbarFolder, // La id de la carpeta donde será almacenado el marcador dinámico "My Livemark Title", // El título del marcador dinámico siteURI, // La URI del sitio. Un objeto nsIURI. feedURI, // La URI del Canal. Un objeto nsIURI. bookmarks.DEFAULT_INDEX); // La posición del marcador dinámico en su carpeta padre.
Para todos los elementos:
Para marcadores:
Para carpetas:
Las consultas en Catálogo se ejecutan a través del servicio principal de historial. El ejemplo siguiente, muestra como listar el contenido de una carpeta de Marcadores y cómo acceder a las propiedades de cada elemento.
var history = Cc["@mozilla.org/browser/nav-history-service;1"]. getService(Ci.nsINavHistoryService); var query = history.getNewQuery(); query.setFolders([myFolderId], 1); var result = history.executeQuery(query, history.getNewQueryOptions()); // La propiedad raíz del resultado de una consulta es un objeto representando la carpeta que especificaste. var folderNode = result.root; // Abre la carpeta y actúa reiterativamente con su contenido. folderNode.containerOpen = true; for (var i=0; i < folderNode.childCount; ++i) { var childNode = folderNode.getChild(i); // Algunas propiedades del elemento. var title = childNode.title; var id = childNode.itemId; var type = childNode.type; // Algunas acciones específicas del tipo. if (type == Ci.nsINavHistoryResultNode.RESULT_TYPE_URI) { var uri = childNode.uri; } else if (type == Ci.nsINavHistoryResultNode.RESULT_TYPE_FOLDER) { childNode.QueryInterface(Ci.nsINavHistoryContainerResultNode); childNode.containerOpen = true; // ahora puedes actuar reiterativamente sobre el 'hijo' de una carpeta. } }
Hay documentación sobre otros tipos de nodo disponible en IDL.
Para todos los elementos:
Para marcadores: