Architectuur.

DXPR Builder lerenUitbreidenArchitectuur en API’s

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 de data-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 en hook_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 met edit with dxpr builder die 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. $operation is een van de interfaceconstanten DXPR_USER_SYNC_OPERATION (sync), DXPR_USER_ADD_OPERATION (add) of DXPR_USER_REMOVE_OPERATION (remove).

DxprBuilderKeyService

  • getApiKey(): ?string: de productsleutel. Wanneer de instelling api_key_storage key is, leest hij de Key-entiteit genoemd in key_provider; anders leest hij json_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 claims sub, scope en dxpr_tier van 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