--- 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.

Visión general

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.

Marcadores

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:

Creación

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.

Lectura

Propiedades de los elementos

Para todos los elementos:

Para marcadores:

Para carpetas:

Contenido de las 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.

Búsqueda

Actualización

Para todos los elementos:

Para marcadores:

Borrado

Observar

Importar/Exportar en formato HTML

Respaldo/Restauración

Nuevo

Historia

Agregar

Consultas

Observar

Nuevo

{{ languages( { "es": "es/Lugares/Gu\u00eda_para_migraci\u00f3n_con_lugares", "fr": "fr/Guide_de_migration_vers_Places", "ja": "ja/Places/Migration_Guide", "en": "en/Places_migration_guide" } ) }}