Architectuur.
De PHP-services, JavaScript-extensiepunten en routes die
DXPR Builder definieert. Service-ID's komen uit
dxpr_builder.services.yml, routes uit
dxpr_builder.routing.yml. Voor de aanvraag- en
antwoorddetails van elke route, zie
API-endpoints.
PHP-services
| Service-ID | Klasse (in src/) |
Doel |
|---|---|---|
dxpr_builder.service |
Service\DxprBuilderService |
Bereidt builderinhoud voor op output, behandelt padtokens, bouwt het pictogrammensetregister |
dxpr_builder.license_service |
Service\DxprBuilderLicenseService |
Licentiestatus, factureerbare gebruikers, editorsynchronisatie door DXPR |
dxpr_builder.key_service |
Service\DxprBuilderKeyService |
Leest en bewaart de productsleutel |
dxpr_builder.jwt_decoder |
Service\DxprBuilderJWTDecoder |
Decodeert de payload van de productsleutel |
dxpr_builder.user_settings |
Service\UserSettings |
De eigen editorinstellingen van elke redacteur, bewaard in gebruikersdata |
dxpr_builder.content_lock |
Service\ContentLock |
Legt vast welke gebruiker een entiteitsrevisie bewerkt |
dxpr_builder.content_migration |
Service\ContentMigrationService |
Draait inhoudsmigraties; verzamelt services met de tag dxpr_builder.content_migration |
dxpr_builder.profile_handler |
Service\Handler\ProfileHandler |
Zet een profiel om naar editorinstellingen |
dxpr_builder.handler.block |
Service\Handler\BlockHandler |
Rendert Drupal-blokken geplaatst als elementen |
dxpr_builder.handler.view |
Service\Handler\ViewHandler |
Rendert Views-displays geplaatst als elementen |
dxpr_builder.template_image_validator |
Service\TemplateImageValidator |
Valideert voorbeeldafbeeldingen van sjablonen |
dxpr_builder.rl_variant.extractor, dxpr_builder.rl_variant.registrar |
RlIntegration\Service\* |
A/B-testvarianten; inactief zonder de RL-module |
dxpr_builder.rl_sort.extractor, dxpr_builder.rl_sort.registrar |
RlIntegration\Service\* |
Smart-sort-experimenten; inactief zonder de RL-module |
logger.channel.dxpr_builder |
core logger channel | Logkanaal dxpr_builder |
DxprBuilderServiceInterface
Geïmplementeerd door dxpr_builder.service. De methoden die je het meest waarschijnlijk
aanroept:
insertBaseTokens($content): vervangt de basis-URL van deze site, de filesmap en het modulepad met tokens. De editor bewaart inhoud in deze vorm.replaceBaseTokens(&$content): void: breidt de tokens weer uit naar URL's voor de huidige omgeving.stripHtmlElementPersists(string $markup): string: verwijdert dedata-az-persist-attributen. Draai hem op markup geschreven buiten de editor; de editor herbouwt ze bij laden.getCmsElementNames(): de blokken en Views-displays aangeboden als elementen, gecachet.getIconSets(): array: het pictogrammensetregister na YAML-discovery enhook_dxpr_builder_icon_sets_alter().
$markup = \Drupal::service('dxpr_builder.service')->insertBaseTokens($html);
DxprBuilderLicenseServiceInterface
Geïmplementeerd door dxpr_builder.license_service.
isBillableUser(?AccountInterface $account = NULL): bool: TRUE voor gebruiker 1 en voor actieve accounts metedit with dxpr builderdie niet zijn uitgesloten van DXPR Builder-bewerken.getLicenseInfo(): licentiestatus van de DXPR-licentieserver, gecachet. Zonder productsleutel geeft hij de gratis tier terug: één gebruiker en 100 contentitems.syncAllUsersWithCentralStorage(string $operation, string $json_web_token = ''): void: stuurt de redacteurs van deze site naar DXPR.$operationis een van de interfaceconstantenDXPR_USER_SYNC_OPERATION(sync),DXPR_USER_ADD_OPERATION(add) ofDXPR_USER_REMOVE_OPERATION(remove).
DxprBuilderKeyService
getApiKey(): ?string: de productsleutel. Wanneer de instellingapi_key_storagekeyis, leest hij de Key-entiteit genoemd inkey_provider; anders leest hijjson_web_token.setApiKey(string $key_value, string $storage_type = 'config', ?string $selected_key_id = NULL): void: bewaart de sleutel in config of in een Key-entiteit.
DxprBuilderJWTDecoder
decodeJwt(string $access_token): geeft de claimssub,scopeendxpr_tiervan de productsleutel terug, elk NULL wanneer het token niet kan worden gelezen. Het resultaat is gecachet per token.
JavaScript-extensiepunten
De editorscripts delen twee arrays op window.dxprBuilder. Push je eigen objecten erop tussen het
script dat de array maakt en dxpr_builder.js, dat ze één keer leest wanneer het draait.
| Array | Gemaakt door | Wat dxpr_builder.js ermee doet |
|---|---|---|
dxpr_param_types |
dxpr_param_types.js |
Registreert elk object als parametertype met register_param_type() |
dxpr_elements |
dxpr_elements.js |
create_dxpr_elements() registreert elke definitie met register_animated_element() en
converteert zijn params met make_param_type() |
De parametertypen die de module registreert zijn boxmodel, checkbox,
checkboxes, colorpicker, datetime, dropdown, dxb_slider,
html, icon, image, images, link, links, numericfield,
row_layout, saved_datetime, social_links, textarea,
textfield en video. Een parameter met een onbekende type rendert als een gewone
tekstinput.
Aangepaste elementen toont een complete elementdefinitie en hoe je die op het juiste moment laadt.
Editorroutes
Toegangslegende: billable is de _dxpr_builder_billable_user-controle (gebruiker 1, of een
actief account met edit with dxpr builder dat niet is uitgesloten); CSRF is
_csrf_token.
| Pad | Routenaam | Methoden | Toegang |
|---|---|---|---|
/dxpr_builder/ajax |
dxpr_builder.ajax_callback |
alle | billable, CSRF |
/dxpr_builder/ajax/file_upload |
dxpr_builder.ajax_file_upload_callback |
POST, DELETE | billable, CSRF |
/dxpr_builder/ajax/ai/chat |
dxpr_builder.ai_chat |
POST | edit with dxpr builder, billable, CSRF |
/dxpr_builder/ajax/ai/image |
dxpr_builder.ai_image |
POST | edit with dxpr builder, billable, CSRF |
/dxpr_builder/ajax/ai/image/edit |
dxpr_builder.ai_image_edit |
POST | edit with dxpr builder, billable, CSRF |
/dxpr_builder/csrf |
dxpr_builder.csrf_refresh |
alle | billable |
/dxpr_builder/ajax/help_link_validator |
dxpr_builder.ajax_help_link_validator |
alle | billable |
/dxpr_builder/media-library |
dxpr_builder.media_library |
alle | view media |
/dxpr_builder/entity-link-suggestions |
dxpr_builder.entity_link_suggestions |
GET | edit with dxpr builder, CSRF |
/dxpr_builder/user-settings |
dxpr_builder.user_settings |
POST | edit with dxpr builder, CSRF |
Adminroutes
Alle adminpagina's staan onder DXPR Studio > DXPR Builder. De kolom Tab toont het label in het adminmenu.
| Pad | Tabblad | Recht |
|---|---|---|
/admin/dxpr_studio |
DXPR Studio | administer dxpr builder configuration |
/admin/dxpr_studio/dxpr_builder |
DXPR Builder | administer dxpr builder configuration |
/admin/dxpr_studio/dxpr_builder/settings |
General Settings | administer dxpr builder configuration |
/admin/dxpr_studio/dxpr_builder/ai_settings |
AI | administer dxpr builder configuration |
/admin/dxpr_studio/dxpr_builder/content |
Content Items | administer dxpr builder configuration |
/admin/dxpr_studio/dxpr_builder/migration-status |
Migrations (under Content Items) | administer dxpr builder configuration |
/admin/dxpr_studio/dxpr_builder/page_template |
Page Templates | administer site configuration |
/admin/dxpr_studio/dxpr_builder/user_licenses |
User Licenses | administer dxpr builder configuration |
/admin/dxpr_studio/dxpr_builder/profile |
User Profiles | administer dxpr_builder_profile |
/admin/dxpr_studio/dxpr_builder/user_templates |
User Templates | administer site configuration |