Migrar do DXPR Builder 1.x ou 2.x.

Aprender DXPR BuilderComece aquiMudar de outro construtor

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_requirement em dxpr_builder.info.yml).
  • O módulo Key. É dependência obrigatória em 3.x; dxpr_builder_update_9020() instala-o se drush updatedb o encontrar em falta.
  • Uma chave de produto emitida para o DXPR Builder 2.0.0 ou posterior. Chaves sem declaração dxpr_tier sã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

  1. Faça cópia de segurança da base de dados e ficheiros:

    drush sql:dump --result-file=backup.sql
    
  2. 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
    
  3. Corra os hooks de atualização e reconstrua caches:

    drush updatedb
    drush cache:rebuild
    

    Vários hooks 3.x processam cada valor de campo DXPR Builder em lotes (veja abaixo). Em sites grandes demoram minutos, não segundos.

  4. Abra /admin/dxpr_studio/dxpr_builder/settings e verifique a secção License. Depois da atualização 9020 o Storage method é Key module e a Key é DXPR Builder JWT (dxpr_builder_jwt).

  5. Verifique Sideload Bootstrap files na mesma página. Sites que tinham Bootstrap 3 ou 4 selecionado estão agora em Bootstrap 5.

  6. Abra /admin/dxpr_studio/dxpr_builder/ai_settings e decida se os três interrutores de IA, que vêm ligados por predefinição, devem ficar ligados.

  7. 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_token de qualquer configuração guardada; depois da atualização 9020 a chave vive na entidade Key dxpr_builder_jwt. Essa Key usa o fornecedor Configuration, por isso a chave ainda é exportada como key.key.dxpr_builder_jwt. Mude-a para o fornecedor File ou Environment em /admin/config/system/keys para 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_buttons e modal_buttons.

Resolução de problemas

Se o conteúdo não for apresentado corretamente após a atualização:

  1. Corra drush cache:rebuild.
  2. Verifique /admin/reports/dblog por mensagens do canal dxpr_builder; migrações em lote registam os itens que saltam.
  3. Confirme que a apresentação de vista de cada campo de construtor ainda usa o formatador DXPR Builder.
  4. Confirme que o tema carrega Bootstrap 5, ou ative o sideload em /admin/dxpr_studio/dxpr_builder/settings.

Página de definições gerais do DXPR Builder depois da atualização

E a seguir?