Architettura.

Impara DXPR BuilderEstendiArchitettura e API

DXPR Builder ha tre parti: un formatter di campo in PHP, un editor che gira nel browser e una serie di route che l’editor chiama per salvare e leggere dati. Questa pagina spiega come stanno insieme.

Formatter di campo

Il contenuto è HTML memorizzato in un normale campo di testo Drupal (text, text_long o text_with_summary). Un campo diventa modificabile quando la sua visualizzazione usa il formatter DXPR Builder (dxpr_builder_text, in src/Plugin/Field/FieldFormatter/DxprBuilderFormatter.php).

Il formatter carica l’editor solo quando valgono tutte queste condizioni:

  • chi guarda è fatturabile: l’user 1, o un account attivo con edit with dxpr builder non escluso dalla modifica con DXPR Builder;
  • chi guarda può aggiornare l’entità;
  • l’account ha un indirizzo email;
  • i limiti di utenti e contenuti della licenza non sono superati;
  • il sito non è nella blocklist del server delle licenze e la pagina non è una pagina di revisioni.

Tutti gli altri ricevono l’HTML elaborato: token di percorso espansi, blocchi e viste Drupal renderizzati nei loro segnaposto, attributi editor data-az* rimossi e librerie necessarie al contenuto collegate. L’output per gli utenti collegati non è in cache (max-age 0), perché contiene impostazioni per utente.

Editor

L’editor è un insieme di file JavaScript caricati come libreria dxpr_builder/editor.builder. Provengono dalla CDN di DXPR, oppure dalla cartella dxpr_builder/ del modulo quando contiene una build locale; l’impostazione Asset source in General Settings compare solo allora. L’editor analizza l’HTML del campo in un albero di oggetti elemento e lo riscrive in HTML quando salva.

I tipi di elemento provengono da due posti in dxpr_builder/build/:

Cartella Tipi di elemento
dxpr-builder/core-elements/ Container, Section, Row, Column, Tabs e i loro pannelli tab, toggle e slide
dxpr-elements/elements/ Elementi di contenuto e gli elementi di layout Collapsibles, Carousel e Positioned Layers

Ogni elemento conserva le sue impostazioni nel proprio HTML: attributi data-azat-*, classi e stili inline. L’HTML memorizzato è l’unico record del layout; non esiste un archivio layout separato. Elementi personalizzati mostra il formato.

Analisi dell’HTML esistente

Il markup senza attributi builder è mappato in elementi quando l’editor lo carica. Contenitori, righe e colonne Bootstrap diventano sezioni, righe e colonne. I componenti riconosciuti diventano i loro elementi, ad esempio pulsanti, avvisi, card, citazioni, immagini, icone, barre di avanzamento, tab e collapsible. Testo, tabelle e altro markup inline diventano elementi Text, e un <iframe> diventa un elemento HTML. Tag <script> e <style> isolati e i commenti sono scartati. Le regole sono in dxpr-builder/base-element/parse-html.js.

Route chiamate dall’editor

L’editor salva tramite /dxpr_builder/ajax, carica i file tramite /dxpr_builder/ajax/file_upload e raggiunge l’AI tramite /dxpr_builder/ajax/ai/*. La maggior parte delle route verifica il controllo di accesso dell’utente fatturabile e un token CSRF; l’elenco completo con i requisiti di accesso è nel Riferimento API.

Entità di configurazione

Tipo di entità Prefisso di configurazione Contiene
dxpr_builder_page_template dxpr_builder.page_template Layout di pagine intere
dxpr_builder_user_template dxpr_builder.user_template Sezioni salvate dagli editor per il riutilizzo
dxpr_builder_profile dxpr_builder.dxpr_builder_profile Limiti per ruolo su elementi, blocchi, viste, modelli, set di icone e pulsanti dell’editor di testo

Verifica della licenza

La chiave prodotto è un JWT. DxprBuilderLicenseService lo invia al server delle licenze DXPR, che restituisce lo stato della licenza e i suoi limiti di utenti e contenuti; il risultato è in cache. Senza chiave prodotto vale il piano gratuito: un utente e 100 elementi di contenuto. Il servizio mantiene anche sincronizzato l’elenco degli editor di questo sito sul server.