Migrer depuis DXPR Builder 1.x ou 2.x.

Apprendre DXPR BuilderCommencer iciQuitter un autre builder

DXPR Builder 3.x se met à jour en place depuis toute version 1.x ou 2.x. Composer remplace le code, et drush updatedb exécute les hooks de mise à jour de dxpr_builder.install qui convertissent la configuration et le contenu. Cette page liste ce que font ces hooks, ce qui a changé pour le code sur mesure, et comment vérifier le résultat. Les dates de version viennent des tags git ; voir Anciennes versions.

Historique des versions en bref

Série Drupal Notes
7.x-1.x Drupal 7 Vendu comme Glazed Builder, renommé ensuite.
1.x (8.x-1.x) Drupal 8 et 9 Nom machine du module dxpr_builder depuis la première version 1.x en mai 2020. Dernière version 1.8.8.
2.x Drupal 9.3 à 11 CKEditor 5, prise en charge du module Key, premières fonctions IA. Dernière version 2.8.1.
3.x Drupal 10.2 et 11 Bootstrap 5 uniquement, module Key requis, migrations de contenu, génération de pages et d’images IA.

Le nom machine n’a pas changé entre 1.x et 3.x. Le contenu portant encore du balisage de l’ère Glazed doit être migré sur 1.x ou 2.x avant la mise à niveau ; 3.x ne réécrit plus le nom Glazed (voir ci-dessous).

Prérequis avant de commencer

  • Drupal 10.2 ou ultérieur, ou Drupal 11 (core_version_requirement dans dxpr_builder.info.yml).
  • Le module Key. C’est une dépendance stricte en 3.x ; dxpr_builder_update_9020() l’installe si drush updatedb le trouve manquant.
  • Une clé produit émise pour DXPR Builder 2.0.0 ou ultérieur. Les clés sans claim dxpr_tier sont rejetées par le formulaire de paramètres.
  • Un thème qui fournit Bootstrap 5, ou l’option sideload Bootstrap 5. Le sideload Bootstrap 3 et 4 n’existe plus.

Étapes de migration

  1. Sauvegardez la base de données et les fichiers :

    drush sql:dump --result-file=backup.sql
    
  2. Mettez à jour le code avec Composer. 3.x est pour l’instant publié en pré-versions, autorisez-les donc :

    composer require 'drupal/dxpr_builder:^3.0@beta' --with-all-dependencies
    
  3. Exécutez les hooks de mise à jour et reconstruisez les caches :

    drush updatedb
    drush cache:rebuild
    

    Plusieurs hooks 3.x traitent chaque valeur de champ DXPR Builder par lots (voir ci-dessous). Sur de grands sites, ils prennent des minutes, pas des secondes.

  4. Ouvrez /admin/dxpr_studio/dxpr_builder/settings et vérifiez la section License. Après la mise à jour 9020, la Storage method est Key module et la Key est DXPR Builder JWT (dxpr_builder_jwt).

  5. Vérifiez Sideload Bootstrap files sur la même page. Les sites qui avaient Bootstrap 3 ou 4 sélectionné sont maintenant sur Bootstrap 5.

  6. Ouvrez /admin/dxpr_studio/dxpr_builder/ai_settings et décidez si les trois interrupteurs IA, activés par défaut, doivent rester activés.

  7. Visitez les pages qui utilisent DXPR Builder et vérifiez qu’elles s’affichent et se modifient correctement.

Ce que font les hooks de mise à jour

Les hooks numérotés 8005 à 8025 sont sortis en 1.x. Un site 1.x exécute tout depuis 8026 ; un site 2.8.0 ou 2.8.1 exécute 8040 et 9014 et suivants. Les noms de fonctions sont dxpr_builder_update_NNNN().

Ajoutés en 2.x (exécutés en venant de 1.x)

Hook Fonction
8026 Met à jour le stockage central des utilisateurs DXPR Builder.
8027 Ajoute le bloc d’infos de licence et une colonne « DXPR Builder User » à la vue People.
8028 Crée la table dxpr_lock pour le verrouillage de contenu.
8029 Ajoute le bloc des licences au tableau de bord des licences utilisateur.
8030 Bascule le réglage Bootstrap après la suppression de l’option « Bootstrap 3 Light ».
8031 Active le bloc d’infos de licence là où il était installé désactivé.
8032 Retire les utilisateurs bloqués du stockage des licences.
8033 Initialise drm_last_contact.
8034 Installe le champ utilisateur dxpr_user_is_disavowed et les actions d’utilisateur avow/disavow.
8035 Initialise le paramètre hide_reminders.
8036 Migre les noms de boutons de barre d’outils CKEditor 4 des profils vers CKEditor 5.
8037 Ajoute un style d’image par défaut pour des images à chargement rapide.
8038 Vide les caches pour enregistrer les services d’intégration du module Key.
8039 Répare les styles d’image avec des paramètres image_scale_and_crop incomplets.
9007 Crée les vocabulaires ai_tone_of_voice et ai_agent_commands avec leurs termes par défaut.
9008 Règle ai_enabled sur true et supprime l’ancienne clé ai_page_enabled.
9009 Déplace drm_last_contact de la configuration vers l’état.
9010 Vide les caches.
9011 Active les boutons AI Assistant et AI Tone of Voice dans chaque profil.
9012 Restaure ai_page_enabled avec la valeur par défaut true.
9013 Définit les valeurs par défaut du filtrage de sortie IA (ai_output_allowed_domains).
9015 Ajoute ai_image_enabled avec la valeur par défaut true.

Ajoutés en 3.x (exécutés en venant de 1.x ou 2.x)

Hook Fonction
8040 Normalise bootstrap en bs5 ; les valeurs 1 (Bootstrap 3) et bs4 sont réécrites.
9014 Par lot : convertit le balisage Owl Carousel du contenu en carrousel Bootstrap (src/Migration/OwlCarouselMigration.php).
9016 Ajoute ai_user_model_selection avec la valeur par défaut true.
9017 Par lot : convertit les compteurs circulaires circliful en balisage de progression Bootstrap (CircleCounterMigration.php).
9018 Par lot : convertit l’ancien balisage de barre de progression en structure de progression Bootstrap (ProgressBarMigration.php).
9020 Installe le module Key, déplace json_web_token dans l’entité Key dxpr_builder_jwt, règle api_key_storage sur key et efface la valeur en clair.
9021 Remplit a posteriori la propriété type des modèles d’utilisateur depuis leur balisage.
9022 Par lot : ajoute data-entity-type et data-entity-uuid aux liens internes /node/N (EntityLinkMigration.php).
9023 Par lot : répare le format de texte, le résumé et les deltas supprimés que la mise à jour 9022 a perdus sur les champs text_with_summary.
9024 Par lot : enrichit les liens internes avec alias de la même façon que 9022 (AliasLinkMigration.php).
9025 Efface tone_of_voice_vocabulary quand il pointe vers un vocabulaire qui n’existe plus.
9026 Efface un json_web_token en clair resté dans les paramètres quand la clé vit dans une entité Key.

Il n’y a pas de mise à jour 9019.

Migrations de contenu

3.x exécute les migrations de contenu par lot uniquement ; il n’y a plus de conversion au rendu. La page d’état des migrations (/admin/dxpr_studio/dxpr_builder/migration-status) et le rapport d’état listent le contenu en attente. Les hooks de mise à jour ci-dessus le migrent, de même que les actions Run now et Run all pending migrations de cette page. Les migrations sont des services tagués dxpr_builder.content_migration (dxpr_builder.services.yml). Un lot qui enregistre des échecs n’est pas marqué terminé ; les éléments échoués sont journalisés et restent en attente.

La réécriture de chaîne glazed_to_dxpr que 1.x et 2.x appliquaient au rendu a été supprimée. Le nom Glazed a été abandonné avec la 1.0.0 en mai 2020 et tout le contenu de l’ère Glazed et Carbide est supposé avoir été migré par ces versions. La réécriture était un simple remplacement de chaîne. Sur les sites dont le contenu mentionne seulement Glazed (articles de support, liens de documentation), elle aurait réécrit de la prose et cassé des liens au lieu de migrer du balisage. Les sites qui détiennent encore des noms de classe Glazed dans du contenu stocké devraient d’abord exécuter la version 2.x.

Changements pour le code sur mesure

Formateur d’affichage

L’id du formateur d’affichage est dxpr_builder_text (libellé « DXPR Builder », src/Plugin/Field/FieldFormatter/DxprBuilderFormatter.php), inchangé depuis 1.x. Il a un paramètre, profile, qui est vide pour la valeur par défaut basée sur les rôles ou un id de profil. Vérifiez que chaque champ du constructeur utilise toujours ce formateur sur son affichage ; la réparation de la mise à jour 9023 se limite aux champs qui le font.

Hooks

dxpr_builder.api.php documente les hooks 3.x. Renommez ceux de Glazed Builder comme suit :

Hook Glazed Builder Hook 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() Supprimé ; pas de hook de remplacement.
none hook_dxpr_builder_icon_sets_alter(array &$icon_sets), nouveau. Les jeux d’icônes sont déclarés dans des fichiers MODULE.dxpr_icon_sets.yml.

CSS et classes utilitaires

Le CSS sur mesure qui cible des noms de classe Glazed doit utiliser les noms DXPR, comme dxpr-theme-util, panel-dxpr et dxpr-builder. Les classes utilitaires exposées dans l’éditeur sont fournies via hook_dxpr_builder_classes_alter().

Configuration et déploiement

  • Retirez json_web_token de toute configuration versionnée ; après la mise à jour 9020, la clé vit dans l’entité Key dxpr_builder_jwt. Cette Key utilise le fournisseur Configuration, la clé est donc toujours exportée comme key.key.dxpr_builder_jwt. Basculez-la vers le fournisseur File ou Environment à /admin/config/system/keys pour la garder hors des exports.
  • Les exports de configuration incluent désormais les deux vocabulaires IA et leurs termes.
  • Les profils exportent les noms de boutons CKEditor 5 dans inline_buttons et modal_buttons.

Dépannage

Si le contenu ne s’affiche pas correctement après la mise à jour :

  1. Exécutez drush cache:rebuild.
  2. Vérifiez /admin/reports/dblog pour les messages du canal dxpr_builder ; les migrations par lot journalisent les éléments ignorés.
  3. Vérifiez que l’affichage de chaque champ du constructeur utilise toujours le formateur DXPR Builder.
  4. Vérifiez que le thème charge Bootstrap 5, ou activez le sideloading à /admin/dxpr_studio/dxpr_builder/settings.

Page des paramètres généraux de DXPR Builder après la mise à jour

Et ensuite ?