Migrer depuis DXPR Builder 1.x ou 2.x.
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_requirementdansdxpr_builder.info.yml). - Le module Key. C’est une dépendance stricte en 3.x ;
dxpr_builder_update_9020()l’installe sidrush updatedble trouve manquant. - Une clé produit émise pour DXPR Builder 2.0.0 ou ultérieur. Les clés sans claim
dxpr_tiersont 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
-
Sauvegardez la base de données et les fichiers :
drush sql:dump --result-file=backup.sql -
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 -
Exécutez les hooks de mise à jour et reconstruisez les caches :
drush updatedb drush cache:rebuildPlusieurs 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.
-
Ouvrez
/admin/dxpr_studio/dxpr_builder/settingset vérifiez la section License. Après la mise à jour 9020, la Storage method est Key module et la Key estDXPR Builder JWT(dxpr_builder_jwt). -
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.
-
Ouvrez
/admin/dxpr_studio/dxpr_builder/ai_settingset décidez si les trois interrupteurs IA, activés par défaut, doivent rester activés. -
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_tokende toute configuration versionnée ; après la mise à jour 9020, la clé vit dans l’entité Keydxpr_builder_jwt. Cette Key utilise le fournisseur Configuration, la clé est donc toujours exportée commekey.key.dxpr_builder_jwt. Basculez-la vers le fournisseur File ou Environment à/admin/config/system/keyspour 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_buttonsetmodal_buttons.
Dépannage
Si le contenu ne s’affiche pas correctement après la mise à jour :
- Exécutez
drush cache:rebuild. - Vérifiez
/admin/reports/dblogpour les messages du canaldxpr_builder; les migrations par lot journalisent les éléments ignorés. - Vérifiez que l’affichage de chaque champ du constructeur utilise toujours le formateur DXPR Builder.
- Vérifiez que le thème charge Bootstrap 5, ou activez le sideloading à
/admin/dxpr_studio/dxpr_builder/settings.

Et ensuite ?
- Mises à jour : les mises à jour de routine dans une série
- Journal des changements : ce que chaque version a changé
- Référence de configuration : chaque clé touchée par les hooks de mise à jour