Migrar do DXPR Builder 1.x ou 2.x.
O DXPR Builder 3.x atualiza no local a partir de qualquer versão 1.x ou
2.x. O Composer troca o código, e
drush updatedb corre os hooks de atualização em
dxpr_builder.install que convertem configuração
e conteúdo. Esta página lista o que esses hooks fazem,
o que mudou para código personalizado e como verificar
o resultado. As datas de versão vêm das etiquetas git; veja
Versões anteriores.
Histórico de versões em resumo
| Série | Drupal | Notas |
|---|---|---|
| 7.x-1.x | Drupal 7 | Vendido como Glazed Builder, depois renomeado. |
| 1.x (8.x-1.x) | Drupal 8 e 9 | Nome de máquina do módulo dxpr_builder desde a primeira versão 1.x em maio de 2020. Última versão 1.8.8. |
| 2.x | Drupal 9.3 a 11 | CKEditor 5, suporte de módulo Key, primeiras funcionalidades de IA. Última versão 2.8.1. |
| 3.x | Drupal 10.2 e 11 | Só Bootstrap 5, módulo Key obrigatório, migrações de conteúdo, geração de páginas e imagens por IA. |
O nome de máquina não mudou entre 1.x e 3.x. Conteúdo ainda com marcação da era Glazed tem de ser migrado em 1.x ou 2.x antes de atualizar; o 3.x já não reescreve o nome Glazed (veja abaixo).
Requisitos antes de começar
- Drupal 10.2 ou posterior, ou Drupal 11
(
core_version_requirementemdxpr_builder.info.yml). - O módulo Key. É dependência obrigatória em 3.x;
dxpr_builder_update_9020()instala-o sedrush updatedbo encontrar em falta. - Uma chave de produto emitida para o DXPR Builder 2.0.0 ou
posterior. Chaves sem declaração
dxpr_tiersão rejeitadas pelo formulário de definições. - Um tema que forneça Bootstrap 5, ou a opção de sideload Bootstrap 5. Sideload de Bootstrap 3 e 4 já não existe.
Passos de migração
-
Faça cópia de segurança da base de dados e ficheiros:
drush sql:dump --result-file=backup.sql -
Atualize o código com Composer. A 3.x é atualmente publicada como pré-versões, por isso permita-as:
composer require 'drupal/dxpr_builder:^3.0@beta' --with-all-dependencies -
Corra os hooks de atualização e reconstrua caches:
drush updatedb drush cache:rebuildVários hooks 3.x processam cada valor de campo DXPR Builder em lotes (veja abaixo). Em sites grandes demoram minutos, não segundos.
-
Abra
/admin/dxpr_studio/dxpr_builder/settingse verifique a secção License. Depois da atualização 9020 o Storage method é Key module e a Key éDXPR Builder JWT(dxpr_builder_jwt). -
Verifique Sideload Bootstrap files na mesma página. Sites que tinham Bootstrap 3 ou 4 selecionado estão agora em Bootstrap 5.
-
Abra
/admin/dxpr_studio/dxpr_builder/ai_settingse decida se os três interrutores de IA, que vêm ligados por predefinição, devem ficar ligados. -
Visite páginas que usam DXPR Builder e confirme que apresentam e editam corretamente.
O que os hooks de atualização fazem
Hooks numerados 8005 a 8025 vieram em 1.x. Um
site 1.x corre tudo de 8026 em diante; um site 2.8.0
ou 2.8.1 corre 8040 e 9014 em diante. Os nomes de função
são dxpr_builder_update_NNNN().
Adicionados em 2.x (correm vindo de 1.x)
| Hook | O que faz |
|---|---|
| 8026 | Atualiza o armazenamento central de utilizadores DXPR Builder. |
| 8027 | Adiciona o bloco de informação de licença e uma coluna "DXPR Builder User" à vista People. |
| 8028 | Cria a tabela dxpr_lock para bloqueio de conteúdo. |
| 8029 | Adiciona o bloco de licenças ao painel de licenças de utilizador. |
| 8030 | Troca a definição Bootstrap depois de a opção "Bootstrap 3 Light" ser removida. |
| 8031 | Ativa o bloco de informação de licença onde foi instalado desligado. |
| 8032 | Remove utilizadores bloqueados do armazenamento de licenças. |
| 8033 | Inicializa drm_last_contact. |
| 8034 | Instala o campo de utilizador dxpr_user_is_disavowed e as ações de utilizador avow/disavow. |
| 8035 | Inicializa a definição hide_reminders. |
| 8036 | Migra nomes de botões de barra de ferramentas CKEditor 4 em perfis para CKEditor 5. |
| 8037 | Adiciona um estilo de imagem predefinido para imagens de carregamento rápido. |
| 8038 | Limpa caches para registar os serviços de integração do módulo Key. |
| 8039 | Repara estilos de imagem com definições image_scale_and_crop incompletas. |
| 9007 | Cria os vocabulários ai_tone_of_voice e ai_agent_commands com termos predefinidos. |
| 9008 | Define ai_enabled como true e remove a chave antiga ai_page_enabled. |
| 9009 | Move drm_last_contact de configuração para estado. |
| 9010 | Limpa caches. |
| 9011 | Ativa os botões AI Assistant e AI Tone of Voice em cada perfil. |
| 9012 | Repõe ai_page_enabled com predefinição true. |
| 9013 | Define as predefinições de filtragem de saída de IA (ai_output_allowed_domains). |
| 9015 | Adiciona ai_image_enabled com predefinição true. |
Adicionados em 3.x (correm vindo de 1.x ou 2.x)
| Hook | O que faz |
|---|---|
| 8040 | Normaliza bootstrap para bs5; os valores 1 (Bootstrap 3) e bs4 são reescritos. |
| 9014 | Lote: converte marcação Owl Carousel em conteúdo para o carrossel Bootstrap (src/Migration/OwlCarouselMigration.php). |
| 9016 | Adiciona ai_user_model_selection com predefinição true. |
| 9017 | Lote: converte contadores circulares circliful para marcação de progresso Bootstrap (CircleCounterMigration.php). |
| 9018 | Lote: converte marcação legada de barra de progresso para a estrutura de progresso Bootstrap (ProgressBarMigration.php). |
| 9020 | Instala o módulo Key, move json_web_token para a entidade Key dxpr_builder_jwt, define api_key_storage como key e limpa o valor em texto claro. |
| 9021 | Preenche a propriedade type de modelos de utilizador a partir da marcação. |
| 9022 | Lote: adiciona data-entity-type e data-entity-uuid a ligações internas /node/N (EntityLinkMigration.php). |
| 9023 | Lote: repara formato de texto, resumo e deltas apagados que a atualização 9022 perdeu em campos text_with_summary. |
| 9024 | Lote: enriquece da mesma forma ligações internas com alias como 9022 (AliasLinkMigration.php). |
| 9025 | Limpa tone_of_voice_vocabulary quando aponta para um vocabulário que já não existe. |
| 9026 | Limpa um json_web_token em texto claro deixado nas definições quando a chave vive numa entidade Key. |
Não há atualização 9019.
Migrações de conteúdo
A 3.x corre migrações de conteúdo só em lote; já não há
conversão em tempo de apresentação. A página de estado de migração
(/admin/dxpr_studio/dxpr_builder/migration-status)
e o relatório de estado listam conteúdo pendente. Os
hooks de atualização acima migram-no, tal como as ações Run
now e Run all pending migrations nessa
página. Migrações são serviços marcados
dxpr_builder.content_migration
(dxpr_builder.services.yml). Um lote que
regista falhas não é marcado completo; os itens falhados
são registados e ficam pendentes.
A reescrita de cadeias glazed_to_dxpr que 1.x e
2.x aplicavam em tempo de apresentação foi removida. O
nome Glazed foi abandonado com 1.0.0 em maio de 2020 e
todo o conteúdo da era Glazed e Carbide é assumido como
migrado por essas versões. A reescrita era uma simples substituição de
cadeia. Em sites cujo conteúdo apenas menciona Glazed (artigos de suporte,
ligações de documentação), teria reescrito prosa
e partido ligações em vez de migrar marcação.
Sites que ainda têm nomes de classe Glazed em conteúdo
guardado devem correr primeiro a versão 2.x.
Mudanças para código personalizado
Formatador de campo
O id do formatador de campo é dxpr_builder_text
(rótulo "DXPR Builder",
src/Plugin/Field/FieldFormatter/DxprBuilderFormatter.php),
inalterado desde 1.x. Tem uma definição,
profile, vazia para a predefinição baseada em funções
ou um id de perfil. Verifique se cada campo de construtor
ainda usa este formatador na apresentação;
a reparação da atualização 9023 limita-se a campos
que o usam.
Hooks
dxpr_builder.api.php documenta os hooks 3.x.
Renomeie os do Glazed Builder assim:
| 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() |
Removido; sem hook de substituição. |
| none | hook_dxpr_builder_icon_sets_alter(array &$icon_sets), novo. Conjuntos de ícones são declarados em ficheiros MODULE.dxpr_icon_sets.yml. |
CSS e classes utilitárias
CSS personalizado que aponta a nomes de classe Glazed tem de
usar os nomes DXPR, como dxpr-theme-util,
panel-dxpr e dxpr-builder.
Classes utilitárias expostas no editor são fornecidas
através de hook_dxpr_builder_classes_alter().
Configuração e implementação
- Remova
json_web_tokende qualquer configuração guardada; depois da atualização 9020 a chave vive na entidade Keydxpr_builder_jwt. Essa Key usa o fornecedor Configuration, por isso a chave ainda é exportada comokey.key.dxpr_builder_jwt. Mude-a para o fornecedor File ou Environment em/admin/config/system/keyspara a manter fora das exportações. - Exportações de configuração incluem agora os dois vocabulários de IA e os seus termos.
- Perfis exportam nomes de botões CKEditor 5 em
inline_buttonsemodal_buttons.
Resolução de problemas
Se o conteúdo não for apresentado corretamente após a atualização:
- Corra
drush cache:rebuild. - Verifique
/admin/reports/dblogpor mensagens do canaldxpr_builder; migrações em lote registam os itens que saltam. - Confirme que a apresentação de vista de cada campo de construtor ainda usa o formatador DXPR Builder.
- Confirme que o tema carrega Bootstrap 5, ou ative
o sideload em
/admin/dxpr_studio/dxpr_builder/settings.

E a seguir?
- Atualizar o DXPR Builder: atualizações de rotina dentro de uma série
- Registo de alterações: o que cada versão mudou
- Configuration reference: cada chave que os hooks de atualização tocam