DXPR Builder themen.
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 builderdat 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.