Arquitetura.

Learn DXPR BuilderExtendArchitectuur en API’s

O DXPR Builder tem três partes: um formatador de campo em PHP, um editor que corre no navegador, e um conjunto de rotas que o editor chama para guardar e obter dados. Esta página explica como combinam.

Formatador de campo

O conteúdo é HTML guardado num campo de texto comum do Drupal (text, text_long ou text_with_summary). Um campo fica editável quando a apresentação usa o formatador DXPR Builder (dxpr_builder_text, em src/Plugin/Field/FieldFormatter/DxprBuilderFormatter.php).

O formatador carrega o editor apenas quando tudo isto se verifica:

  • o visitante é faturável: utilizador 1, ou uma conta ativa com edit with dxpr builder não excluída da edição do DXPR Builder;
  • o visitante pode atualizar a entidade;
  • a conta tem um endereço eletrónico;
  • os limites de utilizadores e conteúdos da licença não são excedidos;
  • o site não está na lista de bloqueio do servidor de licenças, e a página não é uma página de revisões.

Os restantes recebem o HTML processado: tokens de caminho expandidos, blocos e vistas do Drupal apresentados nos marcadores, os atributos de editor data-az* removidos, e as bibliotecas de que o conteúdo precisa anexadas. A saída para utilizadores com sessão iniciada não fica em cache (max-age 0), porque traz definições por utilizador.

Editor

O editor é um conjunto de ficheiros JavaScript carregados como a biblioteca dxpr_builder/editor.builder. Vêm da CDN da DXPR, ou da pasta dxpr_builder/ do módulo quando tem uma compilação local; a definição Asset source em General Settings só aparece nessa altura. O editor analisa o HTML do campo numa árvore de objetos de elemento e escreve-o de volta em HTML ao guardar.

Os tipos de elemento vêm de dois lugares em dxpr_builder/build/:

Folder Element types
dxpr-builder/core-elements/ Container, Section, Row, Column, Tabs e os painéis de separador, interrutor e slide
dxpr-elements/elements/ Elementos de conteúdo e os elementos de esquema Collapsibles, Carousel e Positioned Layers

Cada elemento guarda as definições no próprio HTML: atributos data-azat-*, classes e estilos em linha. O HTML guardado é o único registo do esquema; não há armazenamento de esquema separado. Elementos personalizados mostra o formato.

Analisar HTML existente

Marcação sem atributos do construtor mapeia-se para elementos quando o editor a carrega. Contentores, linhas e colunas Bootstrap viram secções, linhas e colunas. Componentes reconhecidos viram os elementos, por exemplo botões, alertas, cartões, citações, imagens, ícones, barras de progresso, separadores e colapsáveis. Texto, tabelas e outra marcação em linha viram elementos Text, e um <iframe> vira um elemento HTML. Etiquetas <script> e <style> soltas e comentários são descartados. As regras estão em dxpr-builder/base-element/parse-html.js.

Rotas que o editor chama

O editor guarda através de /dxpr_builder/ajax, carrega ficheiros através de /dxpr_builder/ajax/file_upload e alcança a IA através de /dxpr_builder/ajax/ai/*. A maioria das rotas verifica a verificação de acesso de utilizador faturável e um token CSRF; a lista completa com requisitos de acesso está na referência de API.

Entidades de configuração

Entity type Config prefix Holds
dxpr_builder_page_template dxpr_builder.page_template Esquemas de página inteira
dxpr_builder_user_template dxpr_builder.user_template Secções que os editores guardaram para reutilizar
dxpr_builder_profile dxpr_builder.dxpr_builder_profile Limites por função em elementos, blocos, vistas, modelos, conjuntos de ícones e botões do editor de texto

Verificação de licença

A chave de produto é um JWT. DxprBuilderLicenseService envia-a ao servidor de licenças da DXPR, que devolve o estado da licença e os limites de utilizadores e conteúdos; o resultado fica em cache. Sem chave de produto aplica-se o plano gratuito: um utilizador e 100 conteúdos. O serviço também mantém sincronizada a lista do servidor com os editores deste site.