Migración desde DXPR Builder 1.x o 2.x.

Learn DXPR BuilderStart hereVerhuizen vanaf een andere builder

DXPR Builder 3.x se actualiza en su sitio desde cualquier versión 1.x o 2.x. Composer cambia el código, y drush updatedb ejecuta los hooks de actualización en dxpr_builder.install que convierten configuración y contenido. Esta página lista qué hacen esos hooks, qué cambió para código personalizado, y cómo verificar el resultado. Las fechas de versión vienen de etiquetas git; consulta Versiones anteriores.

Historial de versiones en breve

Serie Drupal Notas
7.x-1.x Drupal 7 Vendido como Glazed Builder, renombrado después.
1.x (8.x-1.x) Drupal 8 y 9 Nombre máquina de módulo dxpr_builder desde la primera versión 1.x en mayo de 2020. Última versión 1.8.8.
2.x Drupal 9.3 a 11 CKEditor 5, soporte de módulo Key, primeras funciones de IA. Última versión 2.8.1.
3.x Drupal 10.2 y 11 Solo Bootstrap 5, módulo Key requerido, migraciones de contenido, generación de páginas e imágenes con IA.

El nombre máquina no cambió entre 1.x y 3.x. Contenido que aún lleva marcado de la era Glazed debe migrarse en 1.x o 2.x antes de actualizar; 3.x ya no reescribe el nombre Glazed (ver abajo).

Requisitos antes de empezar

  • Drupal 10.2 o posterior, o Drupal 11 (core_version_requirement en dxpr_builder.info.yml).
  • El módulo Key. Es una dependencia dura en 3.x; dxpr_builder_update_9020() lo instala si drush updatedb lo encuentra ausente.
  • Una clave de producto emitida para DXPR Builder 2.0.0 o posterior. Claves sin claim dxpr_tier son rechazadas por el formulario de ajustes.
  • Un tema que provee Bootstrap 5, o la opción de carga lateral Bootstrap 5. La carga lateral de Bootstrap 3 y 4 ya no existe.

Pasos de migración

  1. Haz una copia de seguridad de la base de datos y archivos:

    drush sql:dump --result-file=backup.sql
    
  2. Actualiza el código con Composer. 3.x se publica ahora como preversiones, así que permítelas:

    composer require 'drupal/dxpr_builder:^3.0@beta' --with-all-dependencies
    
  3. Ejecuta los hooks de actualización y reconstruye cachés:

    drush updatedb
    drush cache:rebuild
    

    Varios hooks 3.x procesan cada valor de campo DXPR Builder en lotes (ver abajo). En sitios grandes tardan minutos, no segundos.

  4. Abre /admin/dxpr_studio/dxpr_builder/settings y comprueba la sección License. Tras la actualización 9020 el Storage method es Key module y la Key es DXPR Builder JWT (dxpr_builder_jwt).

  5. Comprueba Sideload Bootstrap files en la misma página. Sitios que tenían Bootstrap 3 o 4 seleccionado están ahora en Bootstrap 5.

  6. Abre /admin/dxpr_studio/dxpr_builder/ai_settings y decide si los tres interruptores de IA, que vienen activados por defecto, deben seguir activos.

  7. Visita páginas que usan DXPR Builder y confirma que se generan y editan bien.

Qué hacen los hooks de actualización

Los hooks numerados 8005 a 8025 salieron en 1.x. Un sitio 1.x ejecuta todo desde 8026 en adelante; un sitio 2.8.0 o 2.8.1 ejecuta 8040 y 9014 en adelante. Los nombres de función son dxpr_builder_update_NNNN().

Añadidos en 2.x (se ejecutan al venir de 1.x)

Hook Qué hace
8026 Actualiza el almacenamiento central de usuarios de DXPR Builder.
8027 Añade el bloque de info de licencia y una columna "DXPR Builder User" a la vista People.
8028 Crea la tabla dxpr_lock para bloqueo de contenido.
8029 Añade el bloque de licencias al panel de licencias de usuario.
8030 Cambia el ajuste Bootstrap tras eliminar la opción "Bootstrap 3 Light".
8031 Activa el bloque de info de licencia donde se instaló desactivado.
8032 Quita usuarios bloqueados del almacenamiento de licencias.
8033 Inicializa drm_last_contact.
8034 Instala el campo de usuario dxpr_user_is_disavowed y las acciones de usuario avow/disavow.
8035 Inicializa el ajuste hide_reminders.
8036 Migra nombres de botones de barra CKEditor 4 en perfiles a CKEditor 5.
8037 Añade un estilo de imagen predeterminado para imágenes de carga rápida.
8038 Limpia cachés para registrar los servicios de integración del módulo Key.
8039 Repara estilos de imagen con ajustes image_scale_and_crop incompletos.
9007 Crea los vocabularios ai_tone_of_voice y ai_agent_commands con términos predeterminados.
9008 Pone ai_enabled en true y quita la clave vieja ai_page_enabled.
9009 Mueve drm_last_contact de configuración a estado.
9010 Limpia cachés.
9011 Activa los botones AI Assistant y AI Tone of Voice en cada perfil.
9012 Restaura ai_page_enabled con true por defecto.
9013 Define los valores predeterminados de filtrado de salida de IA (ai_output_allowed_domains).
9015 Añade ai_image_enabled con true por defecto.

Añadidos en 3.x (se ejecutan al venir de 1.x o 2.x)

Hook Qué hace
8040 Normaliza bootstrap a bs5; los valores 1 (Bootstrap 3) y bs4 se reescriben.
9014 Lotes: convierte marcado Owl Carousel en contenido al carrusel Bootstrap (src/Migration/OwlCarouselMigration.php).
9016 Añade ai_user_model_selection con true por defecto.
9017 Lotes: convierte contadores circulares circliful a marcado de progreso Bootstrap (CircleCounterMigration.php).
9018 Lotes: convierte marcado heredado de barra de progreso a la estructura de progreso Bootstrap (ProgressBarMigration.php).
9020 Instala el módulo Key, mueve json_web_token a la entidad Key dxpr_builder_jwt, pone api_key_storage en key y limpia el valor en texto claro.
9021 Rellena la propiedad type de plantillas de usuario desde su marcado.
9022 Lotes: añade data-entity-type y data-entity-uuid a enlaces internos /node/N (EntityLinkMigration.php).
9023 Lotes: repara formato de texto, resumen y deltas borrados que la actualización 9022 perdió en campos text_with_summary.
9024 Lotes: enriquece enlaces internos con alias igual que 9022 (AliasLinkMigration.php).
9025 Limpia tone_of_voice_vocabulary cuando apunta a un vocabulario que ya no existe.
9026 Limpia un json_web_token en texto claro quedado en los ajustes cuando la clave vive en una entidad Key.

No hay actualización 9019.

Migraciones de contenido

3.x ejecuta migraciones de contenido solo en lotes; ya no hay conversión en tiempo de generación. La página de estado de migración (/admin/dxpr_studio/dxpr_builder/migration-status) y el informe de estado listan contenido pendiente. Los hooks de actualización de arriba lo migran, y también las acciones Run now y Run all pending migrations en esa página. Las migraciones son servicios etiquetados dxpr_builder.content_migration (dxpr_builder.services.yml). Un lote que registra fallos no se marca completo; los elementos fallidos se registran y quedan pendientes.

La reescritura de cadenas glazed_to_dxpr que 1.x y 2.x aplicaban al generar se eliminó. El nombre Glazed se abandonó con 1.0.0 en mayo de 2020 y se asume que todo el contenido de la era Glazed y Carbide ya fue migrado por esas versiones. La reescritura era un reemplazo simple de cadenas. En sitios cuyo contenido solo menciona Glazed (artículos de soporte, enlaces de documentación), habría reescrito prosa y roto enlaces en lugar de migrar marcado. Sitios que aún guardan nombres de clase Glazed en contenido guardado deben ejecutar primero la versión 2.x.

Cambios para código personalizado

Formato de campo

El id del formato de campo es dxpr_builder_text (etiqueta "DXPR Builder", src/Plugin/Field/FieldFormatter/DxprBuilderFormatter.php), sin cambios desde 1.x. Tiene un ajuste, profile, que está vacío para el valor predeterminado basado en rol o un id de perfil. Comprueba que cada campo del constructor aún usa este formato en su presentación; la reparación de la actualización 9023 se limita a campos que lo hacen.

Hooks

dxpr_builder.api.php documenta los hooks 3.x. Renombra los de Glazed Builder así:

Hook de Glazed Builder Hook de DXPR Builder 3.x
hook_glazed_builder_classes() hook_dxpr_builder_classes_alter(array &$dxpr_builder_classes)
hook_glazed_builder_buttons_folders() hook_dxpr_builder_element_buttons_folders_alter(array &$dxpr_element_buttons_folders)
hook_glazed_builder_elements_folders() Eliminado; sin hook de reemplazo.
none hook_dxpr_builder_icon_sets_alter(array &$icon_sets), nuevo. Los conjuntos de iconos se declaran en archivos MODULE.dxpr_icon_sets.yml.

CSS y clases de utilidades

CSS personalizado que apunta nombres de clase Glazed debe usar los nombres DXPR, como dxpr-theme-util, panel-dxpr y dxpr-builder. Las clases de utilidades expuestas en el editor se proveen con hook_dxpr_builder_classes_alter().

Configuración y despliegue

  • Quita json_web_token de cualquier configuración publicada; tras la actualización 9020 la clave vive en la entidad Key dxpr_builder_jwt. Esa Key usa el proveedor Configuration, así que la clave aún se exporta como key.key.dxpr_builder_jwt. Cámbiala al proveedor File o Environment en /admin/config/system/keys para mantenerla fuera de las exportaciones.
  • Las exportaciones de configuración ahora incluyen los dos vocabularios de IA y sus términos.
  • Los perfiles exportan nombres de botones CKEditor 5 en inline_buttons y modal_buttons.

Solución de problemas

Si el contenido no se muestra bien tras la actualización:

  1. Ejecuta drush cache:rebuild.
  2. Comprueba /admin/reports/dblog para mensajes del canal dxpr_builder; las migraciones en lote registran los elementos que omiten.
  3. Confirma que la presentación de vista de cada campo del constructor aún usa el formato DXPR Builder.
  4. Confirma que el tema carga Bootstrap 5, o activa la carga lateral en /admin/dxpr_studio/dxpr_builder/settings.

Página de ajustes generales de DXPR Builder tras la actualización

¿Qué sigue?