DXPR Builder themen.

Learn DXPR BuilderExtendArchitectuur en API’s

DXPR Builder heeft drie delen: een veldformatter in PHP, een editor die in de browser draait, en een set routes die de editor aanroept om data op te slaan en op te halen. Deze pagina legt uit hoe ze in elkaar passen.

Veldformatter

Inhoud is HTML opgeslagen in een gewoon Drupal-tekstveld (text, text_long of text_with_summary). Een veld wordt bewerkbaar wanneer zijn weergave de DXPR Builder-formatter gebruikt (dxpr_builder_text, in src/Plugin/Field/FieldFormatter/DxprBuilderFormatter.php).

De formatter laadt de editor alleen wanneer dit allemaal geldt:

  • de kijker is factureerbaar: gebruiker 1, of een actief account met edit with dxpr builder dat niet is uitgesloten van DXPR Builder-bewerken;
  • de kijker mag de entiteit bijwerken;
  • het account heeft een e-mailadres;
  • de gebruikers- en inhoudslimieten van de licentie zijn niet overschreden;
  • de site staat niet op de blokkeerlijst van de licentieserver, en de pagina is geen revisiepagina.

Iedereen anders krijgt de verwerkte HTML: padtokens uitgevouwen, Drupal-blokken en views gerenderd in hun placeholders, de data-az*-editorattributen verwijderd, en de libraries die de inhoud nodig heeft gekoppeld. Output voor ingelogde gebruikers wordt niet gecachet (max-age 0), omdat die gebruikersspecifieke instellingen draagt.

Editor

De editor is een set JavaScript-bestanden geladen als de dxpr_builder/editor.builder-library. Ze komen van het DXPR CDN, of van de eigen map dxpr_builder/ van de module wanneer die een lokale build bevat; de Asset source-instelling op General Settings verschijnt alleen dan. De editor parset de HTML van het veld naar een boom van elementobjecten en schrijft hem bij opslaan terug naar HTML.

Elementtypen komen uit twee plekken in dxpr_builder/build/:

Map Elementtypen
dxpr-builder/core-elements/ Container, Section, Row, Column, Tabs en hun tab-, toggle- en slidepanelen
dxpr-elements/elements/ Inhoudselementen en de lay-outelementen Collapsibles, Carousel en Positioned Layers

Elk element bewaart zijn instellingen in zijn eigen HTML: data-azat-*-attributen, klassen en inline stijlen. De opgeslagen HTML is de enige vastlegging van de lay-out; er is geen aparte lay-outopslag. Aangepaste elementen toont het formaat.

Bestaande HTML parsen

Markup zonder builderattributen wordt bij laden aan elementen gekoppeld. Bootstrap-containers, -rijen en -kolommen worden secties, rijen en kolommen. Herkende componenten worden hun elementen, bijvoorbeeld knoppen, meldingen, kaarten, citaten, afbeeldingen, pictogrammen, voortgangsbalken, tabs en inklappanelen. Tekst, tabellen en andere inline markup worden Tekst-elementen, en een <iframe> wordt een HTML-element. Losse <script>- en <style>-tags en opmerkingen worden weggelaten. De regels staan in dxpr-builder/base-element/parse-html.js.

Routes die de editor aanroept

De editor slaat op via /dxpr_builder/ajax, uploadt bestanden via /dxpr_builder/ajax/file_upload en bereikt AI via /dxpr_builder/ajax/ai/*. De meeste routes controleren de toegangscontrole voor factureerbare gebruikers en een CSRF-token; de volledige lijst met toegangseisen staat in de API-referentie.

Configuratie-entiteiten

Entiteittype Config-prefix Bevat
dxpr_builder_page_template dxpr_builder.page_template Paginavullende lay-outs
dxpr_builder_user_template dxpr_builder.user_template Secties die redacteurs voor hergebruik opsloegen
dxpr_builder_profile dxpr_builder.dxpr_builder_profile Limieten per rol op elementen, blokken, views, sjablonen, pictogrammensets en teksteditorknoppen

Licentiecontrole

De productsleutel is een JWT. DxprBuilderLicenseService stuurt hem naar de DXPR-licentieserver, die de licentiestatus en zijn gebruikers- en inhoudslimieten teruggeeft; het resultaat wordt gecachet. Zonder productsleutel geldt de gratis tier: één gebruiker en 100 contentitems. De service houdt ook de lijst van redacteurs van deze site op de server in sync.