Diese Seite listet jede Route, die DXPR Builder in dxpr_builder.routing.yml registriert, mit den HTTP-Methoden, Zugriffsvoraussetzungen, Anfrageparametern und Antwortformen, wie in den Controllern implementiert. Das JavaScript des Editors ist der vorgesehene Client für die AJAX-Endpunkte; nichts auf dieser Seite ist eine stabile öffentliche API, und Parameternamen können sich zwischen Releases ändern.
Zugriffsvoraussetzungen
Routen nutzen drei Arten von Voraussetzungen. Eine Route kann sie kombinieren.
| Anforderung |
Bedeutung |
_permission |
Der User braucht die genannte Drupal-Berechtigung. DXPR Builder definiert administer dxpr builder configuration, edit with dxpr builder und administer dxpr_builder_profile in dxpr_builder.permissions.yml; view media und administer site configuration kommen aus dem Core. |
_csrf_token |
Die Anfrage muss ein gültiges CSRF-Token im token-Query-Parameter tragen. Für den Haupt-AJAX-Handler holt der Editor eine URL mit dem Token von /dxpr_builder/csrf (oder aus der dxpr_builder_csrf-Operation). Für die anderen Routen legt der Feld-Formatter URLs mit einem Token in drupalSettings.dxprBuilder, zum Beispiel fileUploadUrl, entityLinkSuggestionsUrl, userSettingsUrl und aiAgent.endpointUrl. |
_dxpr_builder_billable_user |
Der User muss ein Billable User sein, wie unten definiert. |
Was „billable user“ bedeutet
DxprBuilderBillableUserAccessCheck erlaubt Zugriff, wenn DxprBuilderLicenseService::isBillableUser() für das aktuelle Konto true zurückgibt. Diese Methode gibt false zurück für blockierte Konten und für Konten, deren dxpr_user_is_disavowed-Feld gesetzt ist (ein Administrator schließt einen User vom Bearbeiten auf der User-Licenses-Seite aus). Sonst gibt sie true zurück für User 1 und für jedes Konto, das die edit with dxpr builder-Berechtigung hält. Kurz: Ein Billable User ist ein aktives, nicht ausgeschlossenes Konto, das mit DXPR Builder bearbeiten darf, und der Lizenz-Service zählt diese Konten auf Ihren Produktschlüssel an.
HTTP-Methoden
Wo eine Route methods deklariert, werden nur diese Methoden geroutet. Wo nicht, akzeptiert die Route jede Methode (Drupals MethodFilter filtert nur Routen, die Methoden deklarieren). Die Tabellen unten nennen die Methode, die das JavaScript des Editors tatsächlich nutzt, wenn das im Quellcode sichtbar ist.
Editor-AJAX-Endpunkte
CSRF-Token-URL
|
|
| Pfad |
/dxpr_builder/csrf |
| Route |
dxpr_builder.csrf_refresh |
| Methoden |
Nicht deklariert (jede Methode). Der Editor sendet GET (backend-connect.js, fetchCsrfTokenUrl()). |
| Anforderungen |
Billable user |
| Controller |
AjaxController::ajaxRefresh() |
Die Anfrage muss den Header X-Requested-With: XMLHttpRequest tragen; ohne ihn gibt der Controller HTTP 403 mit dem JSON-Body {"error": "Invalid request"} zurück.
| Parameter |
Quelle |
Erforderlich |
Hinweise |
enterprise |
Query-String |
Optional |
Wenn auf true gesetzt und das dxpr_builder_e-Modul installiert ist, wird das Token stattdessen für die dxpr_builder_e.ajax_callback-Route erzeugt. Ist es ohne dieses Modul auf true gesetzt, wirft der Controller eine Exception. |
Antwort: ein JSON-String mit der URL des Haupt-AJAX-Handlers und einem token-Query-Parameter. Die URL ist ein Pfad vom Site-Root (Basispfad enthalten, kein Host). Das JavaScript postet jede Builder-Operation an diese URL.
Haupt-AJAX-Handler
|
|
| Pfad |
/dxpr_builder/ajax |
| Route |
dxpr_builder.ajax_callback |
| Methoden |
Nicht deklariert (jede Methode). Der Controller liest jeden Parameter aus dem POST-Body, und der Editor sendet POST. |
| Anforderungen |
Billable user, CSRF token |
| Controller |
AjaxController::ajaxCallback() |
Das POST-Body-Feld action wählt die Operation. Jede Operation und ihre Parameter stehen unter Main AJAX handler operations. Wenn action fehlt oder unbekannt ist, gibt der Controller eine leere Drupal-AjaxResponse ohne Befehle zurück. Die meisten Operationen, die den Billable-User-Status erneut prüfen, geben dieselbe leere Antwort zurück, wenn diese Prüfung scheitert; die Tabellen nennen die zwei Ausnahmen.
KI-Chat
|
|
| Pfad |
/dxpr_builder/ajax/ai/chat |
| Route |
dxpr_builder.ai_chat |
| Methoden |
POST |
| Anforderungen |
edit with dxpr builder, billable user, CSRF token |
| Controller |
AiChatController::chat() |
Der Anfrage-Body ist JSON. Der Controller reicht die Anfrage an den dxpr-Provider des Drupal-ai-Moduls weiter, sodass kein API-Schlüssel den Browser erreicht. Vor dem Aufruf mischt er die Domains aus der ai_output_allowed_domains-Einstellung in den ai-Hostname-Filter des Moduls, wenn es diesen Service gibt. Ein Wert von * setzt den Filter stattdessen auf volles Vertrauen. Der Filter wird danach wiederhergestellt.
| Parameter |
Quelle |
Erforderlich |
Hinweise |
messages |
JSON-Body |
Erforderlich |
Array von Objekten mit role und content. |
stream |
JSON-Body |
Optional |
Boolean, Standard true. |
model |
JSON-Body |
Optional |
Standard kavya-m1. |
prediction |
JSON-Body |
Optional |
Wird als Array an die Provider-Konfiguration übergeben. |
providers |
JSON-Body |
Optional |
Wird an die Provider-Konfiguration durchgereicht. |
allowed_html_tags |
JSON-Body |
Optional |
Wird an die Provider-Konfiguration durchgereicht. |
allowed_html_classes |
JSON-Body |
Optional |
Wird an die Provider-Konfiguration durchgereicht. |
web_search |
JSON-Body |
Optional |
Nur der Wert false wird weitergeleitet; jeder andere Wert wird ignoriert. |
response_format |
JSON-Body |
Optional |
Wird als Array an die Provider-Konfiguration übergeben. |
Antworten:
| Fall |
Status |
Body |
Gestreamt (stream true und der Provider streamt) |
200, Content-Type: text/event-stream |
Server-sent Events. Jedes Event ist data: <JSON>, wobei das JSON choices[0].delta.content hat und, wenn der Provider sie liefert, id, object, created, model, original_model und usage. Der Stream endet mit data: [DONE]. |
| Nicht gestreamt |
200, application/json |
{"choices": [{"message": {"role": "assistant", "content": "<text>"}}]} |
Body ist kein JSON, oder messages fehlt oder ist leer |
400, reiner Text |
Invalid request: messages required |
model steht nicht in der allowed_models-Liste von ai_provider_dxpr.settings (wird nur geprüft, wenn das ai_provider_dxpr-Modul installiert und die Liste gesetzt ist) |
403, application/json |
{"error": {"code": "model_not_allowed", "message": "The selected model is not allowed. Please refresh the page to update your model options."}} |
| Provider-Exception |
500, application/json |
{"error": {"message": "The request could not be completed."}} |
KI-Bilderzeugung
|
|
| Pfad |
/dxpr_builder/ajax/ai/image |
| Route |
dxpr_builder.ai_image |
| Methoden |
POST |
| Anforderungen |
edit with dxpr builder, billable user, CSRF token |
| Controller |
AiImageController::generate() |
| Parameter |
Quelle |
Erforderlich |
Hinweise |
prompt |
JSON-Body |
Erforderlich |
Text-Prompt. |
model |
JSON-Body |
Optional |
Standard kavya-image. |
size |
JSON-Body |
Optional |
Wird an die Provider-Konfiguration weitergereicht, wenn nicht leer. |
quality |
JSON-Body |
Optional |
Wird an die Provider-Konfiguration weitergereicht, wenn nicht leer. |
background |
JSON-Body |
Optional |
Wird an die Provider-Konfiguration weitergereicht, wenn nicht leer. |
Antworten:
| Fall |
Status |
Body |
| Erfolg |
200 |
{"data": [{"b64_json": "<base64 image>"}]}(nur das erste erzeugte Bild wird zurückgegeben) |
Body ist kein JSON, oder prompt fehlt |
400 |
{"error": {"message": "Invalid request: prompt required"}} |
| Provider gab kein Bild zurück |
500 |
{"error": {"message": "No image was generated"}} |
| Provider-Exception |
500 |
{"error": {"message": "Image generation failed. Please try again."}} |
KI-Bildbearbeitung
|
|
| Pfad |
/dxpr_builder/ajax/ai/image/edit |
| Route |
dxpr_builder.ai_image_edit |
| Methoden |
POST |
| Anforderungen |
edit with dxpr builder, billable user, CSRF token |
| Controller |
AiImageController::edit() |
| Parameter |
Quelle |
Erforderlich |
Hinweise |
prompt |
JSON-Body |
Erforderlich |
Bearbeitungsanweisung. |
image |
JSON-Body |
Erforderlich |
Base64-kodiertes Quellbild (striktes Decoding). |
mimeType |
JSON-Body |
Optional |
Standard image/png; der Subtyp wird die Dateiendung, die an den Provider übergeben wird. |
model |
JSON-Body |
Optional |
Standard kavya-image. |
size, quality, background |
JSON-Body |
Optional |
Wird an die Provider-Konfiguration weitergereicht, wenn nicht leer. |
Antworten:
| Fall |
Status |
Body |
| Erfolg |
200 |
{"data": [{"b64_json": "<base64 image>"}]} |
Body ist kein JSON, oder prompt oder image fehlt |
400 |
{"error": {"message": "Invalid request: prompt and image required"}} |
image ist kein gültiges Base64 |
400 |
{"error": {"message": "Invalid image data: base64 decode failed"}} |
| Provider gab kein Bild zurück |
500 |
{"error": {"message": "No image was generated"}} |
| Provider-Exception |
500 |
{"error": {"message": "Image editing failed. Please try again."}} |
Datei-Upload
|
|
| Pfad |
/dxpr_builder/ajax/file_upload |
| Route |
dxpr_builder.ajax_file_upload_callback |
| Methoden |
POST, DELETE (im Routing deklariert; der Controller hat einen einzigen Upload-Handler und keinen eigenen Delete-Zweig) |
| Anforderungen |
Billable user, CSRF token |
| Controller |
UploadFileController::fileUpload() |
| Parameter |
Quelle |
Erforderlich |
Hinweise |
upload |
Multipart-Formulardateien, gesendet als upload[] |
Erforderlich |
Eine oder mehrere hochgeladene Dateien. |
Der Controller sortiert jede Datei nach dem ersten Teil ihres Client-MIME-Typs in <default scheme>://dxpr_builder_images, dxpr_builder_videos oder dxpr_builder_files. Ein Bild braucht eine Endung der MIME-Typen image/gif, jpg, jpeg, png, webp, avif oder svg. Ein Video braucht einen von video/webm, ogv, ogg, mp4 oder quicktime (zum Beispiel .mov). Das Größenlimit ist das Upload-Maximum von PHP. Eine Datei mit gleichem Namen und identischem SHA-256-Inhalt wie eine vorhandene verwaltete Datei, die der User sehen kann, wird wiederverwendet statt erneut gespeichert. Wenn das media-Modul installiert ist und ein Medientyp namens image, media_image, video oder media_video existiert, wird eine veröffentlichte Medien-Entity für die Datei erstellt (oder wiederverwendet). Die Dateinutzung wird unter dem dxpr_builder-Modul verzeichnet.
Antworten:
| Fall |
Status |
Body |
| Erfolg |
201 |
JSON-Array, ein Objekt pro Datei: url (absolute Datei-URL), uuid und id (der Medien-Entity, wenn es eine gibt, sonst der Datei), fid (Datei-ID), entity_type (media oder file). |
Keine upload-Dateien |
400 |
{"message": "No files were uploaded."} |
| Ungültiger Upload, unbeschreibbares Ziel oder Speicherfehler |
500 |
{"message": "<reason>"} |
| Validierungsfehler (Endung oder Größe) |
422 |
{"message": "<violation messages>"} |
| Dateiname bereits von einer anderen Anfrage gesperrt |
503 |
{"message": "File \"<name>\" is already locked for writing."} |
|
|
| Pfad |
/dxpr_builder/media-library |
| Route |
dxpr_builder.media_library |
| Methoden |
Nicht deklariert (jede Methode). Parameter werden aus dem Query-String gelesen. |
| Anforderungen |
view media; Admin-Route |
| Controller |
AjaxController::openImageMediaLibrary() |
| Parameter |
Quelle |
Erforderlich |
Hinweise |
media_type |
Query-String |
Optional |
image (Standard) oder video. |
remaining_slots |
Query-String |
Optional |
Anzahl der Elemente, die der Opener akzeptiert; Standard ist 1. |
uuid |
Query-String |
Optional |
Wird als opener_parameters.uuid an den Opener übergeben. |
Der angebotene Medientyp hängt von der media_browser-Einstellung ab: media_library nutzt den image- oder video-Medientyp direkt; media_library_acquia_dam nutzt acquia_dam_image_asset oder acquia_dam_video_asset, wenn es diesen Medientyp gibt.
Antworten:
| Fall |
Ergebnis |
| Erfolg |
Ein Render-Array, gebaut von MediaLibraryUiBuilder::buildUi() mit dem Opener media_library.opener.dxpr_builder. Drupal rendert es als HTML-Seite für einen iframe. |
media_library-Modul nicht installiert |
403, reiner Text Media Library is not enabled. Please enable it to access this feature. |
Nicht unterstützter media_type |
400, reiner Text Unsupported media type "<value>". |
media_browser-Einstellung hat keinen nutzbaren Medientyp |
400, reiner Text The "<setting>" settings is not supported. |
Hilfe-Link-Validator
|
|
| Pfad |
/dxpr_builder/ajax/help_link_validator |
| Route |
dxpr_builder.ajax_help_link_validator |
| Methoden |
Nicht deklariert (jede Methode). Das Dev-Skript dxpr_builder_dev.js sendet POST mit einem formularkodierten Body. |
| Anforderungen |
Billable user |
| Controller |
AjaxController::validateHelpLink() |
| Parameter |
Quelle |
Erforderlich |
Hinweise |
help_link |
POST-Body |
Erforderlich für eine sinnvolle Antwort |
Nur http- oder https-URLs auf Host dxpr.com mit einem Pfad ab /documentation/ werden geprüft. |
Antwort: ein JSON-Array. [true], wenn ein HEAD-Request an den Link (ohne Redirects zu folgen) 200 zurückgibt; [false], wenn der HTTP-Client eine Exception wirft; [] in jedem anderen Fall, auch bei fehlendem Parameter, nicht passender URL oder non-200-Status.
Entity-Link-Vorschläge
|
|
| Pfad |
/dxpr_builder/entity-link-suggestions |
| Route |
dxpr_builder.entity_link_suggestions |
| Methoden |
GET |
| Anforderungen |
edit with dxpr builder, CSRF-Token; no_cache-Routenoption |
| Controller |
EntityLinkSuggestionsController::suggestions() |
| Parameter |
Quelle |
Erforderlich |
Hinweise |
q |
Query-String |
Erforderlich für Ergebnisse |
Suchtext, kleingeschrieben. Ein Wert wie /node/123 lädt diese Entity direkt. |
langcode |
Query-String |
Optional |
Sprache der Host-Entity; Standard ist die aktuelle Sprache. Nur Entities in dieser Sprache werden zurückgegeben. |
Bundles sind die mit ckeditor5_link_suggestions in deren Bundle-Info; wenn keine konfiguriert sind, werden alle Node-Bundles durchsucht. Bis zu 100 Entities pro Entity-Typ werden mit einer CONTAINS-Suche über die Entity-Referenz-Auswahlplugins des Cores gefunden.
Antwort: {"suggestions": [...]} mit privater Cacheability und einer Max-Age von 300 Sekunden. Jeder Vorschlag hat description, entity_type_id, entity_uuid, group, label und path. Wenn q nichts trifft, hält das Array einen einzigen manuellen Link-Vorschlag mit description, label (die kleingeschriebene Eingabe) und path (die Eingabe, wenn sie eine gültige URL ist, sonst ein leerer String). Wenn q leer ist, suggestions ist ein leeres Array.
User-Editor-Einstellungen
|
|
| Pfad |
/dxpr_builder/user-settings |
| Route |
dxpr_builder.user_settings |
| Methoden |
POST |
| Anforderungen |
edit with dxpr builder, CSRF-Token; no_cache-Routenoption |
| Controller |
UserSettingsController::save() |
Der Editor sendet diese Anfrage, wenn ein User seine eigenen Editor-Einstellungen ändert, zum Beispiel unter Editor settings. Die Werte werden beim Benutzerkonto gespeichert in user.data, Modul dxpr_builder.
| Parameter |
Quelle |
Erforderlich |
Hinweise |
controls_layout |
JSON-Body |
Erforderlich (die einzige Einstellung) |
element, breadcrumb oder default. default entfernt die Wahl des Users, sodass die Profil- oder Site-Einstellung gilt. |
Antworten:
| Fall |
Status |
Body |
| Gespeichert |
200 |
{"settings": {"controls_layout": "<value>"}}: jede Einstellung nach dem Speichern, default, wo der User keine Wahl gespeichert hat. |
| Body ist kein nicht-leeres JSON-Objekt, oder ein Name oder Wert ist ungültig |
400 |
{"error": "Invalid setting or value."}. Nichts wird gespeichert. |
Operationen des Haupt-AJAX-Handlers
Alle Operationen gehen an /dxpr_builder/ajax mit dem Token-Query-Parameter von /dxpr_builder/csrf. Der Operationsname wird im POST-Body-Feld action gesendet; alle anderen Parameter sind POST-Body-Felder, sofern nicht anders angegeben. Die Spalte „Erneuter Billable-Check“ markiert Operationen, die isBillableUser() erneut innerhalb des Switch aufrufen. Wenn diese Prüfung scheitert, geben sie die leere AjaxResponse von oben zurück, sofern die Zeile nichts anderes sagt.
Sitzung und Zugriff
| Operation |
Parameter |
Erneuter Billable-Check |
Rückgabe |
dxpr_login |
Keine |
Nein |
JSON-Boolean: ob der aktuelle User billable ist. |
dxpr_builder_csrf |
Keine |
Ja |
JSON-String: die Handler-URL mit einem token-Query-Parameter (wie /dxpr_builder/csrf ohne die enterprise-Option). |
| Operation |
Parameter |
Erneuter Billable-Check |
Rückgabe |
dxpr_get_container_types |
Keine |
Ja |
JSON-Objekt mit Schlüssel entity_type|bundle und Wert entity_type - bundle, ein Eintrag pro Bundle, dessen Standard-Anzeigemodus den dxpr_builder_text-Formatter auf mindestens einem Feld nutzt. |
dxpr_get_container_names |
container_type (erforderlich, entity_type|bundle) |
Ja (gibt einen leeren JSON-String statt der leeren Antwort zurück) |
JSON-Objekt mit Schlüssel entity_id|field_name (oder entity_id|field_name|langcode für übersetzbare Entities) mit Wert entity label|field label. Wenn container_type fehlt oder die Billable-Prüfung scheitert, ist die Antwort ein leerer JSON-String. |
dxpr_save_container |
type (erforderlich, entity_type|bundle); name (erforderlich, entity_id|field_name oder entity_id|revision_id|field_name); htmlContent (erforderlich, kodiertes Markup); lang (optional, Standard ist die Site-Standardsprache) |
Ja |
JSON-Leerstring bei Erfolg. HTTP 400 mit einer JSON-Nachricht, wenn htmlContent kein String ist oder die Sprache auf eine nicht übersetzbare Entity nicht zutrifft; 404, wenn die angefragte Übersetzung nicht existiert; 500, wenn die Entity nicht geladen werden kann. |
dxpr_save_container tut Folgendes:
- Dekodiert
htmlContent: XOR jedes Byte mit 7, dann URL-dekodieren.
- Schreibt das Ergebnis ins erste Delta des genannten Felds.
- Erstellt eine neue Standard-Revision mit der Log-Nachricht
Saved with DXPR builder, wenn der Entity-Typ revisionierbar ist.
- Entfernt jede Inhaltssperre für die Entity.
- Aktualisiert
block_revision_id in Layout-Builder-Sektionen, die den gespeicherten Inline-Block referenzieren.
- Erhöht den
dxpr_builder.saves_count-State-Wert.
Das Speichern geschieht nur, wenn der User update-Zugriff auf die Entity hat. Ohne ihn gibt die Operation dennoch die Leerstring-Erfolgsantwort zurück.
CMS-Elemente (Blöcke und Ansichten)
| Operation |
Parameter |
Erneuter Billable-Check |
Rückgabe |
dxpr_builder_get_cms_element_names |
Keine |
Ja |
JSON-Objekt aus DxprBuilderService::getCmsElementNames() mit den Schlüsseln list, disallowed und blockCategories. |
dxpr_get_cms_element_settings |
name (erforderlich): view-<view_id>-<display_id> oder block-<plugin_id>; ajax_page_state[libraries] (optional, kommagetrennte, bereits geladene Libraries) |
Ja |
JSON-Objekt mit css, js, settings und data. Für eine Ansicht ist data die gerenderten Exposed-Filter-Widgets; für einen Block ist data das Konfigurationsformular des Blocks, verpackt in <form>-Tags, ohne die Elemente provider, admin_label, label, label_display und context_mapping, und mit allen geöffneten Details-Elementen. |
dxpr_builder_load_cms_element |
name (erforderlich, geparst von parseStringForCmsElementInfo()); settings (erforderlich); data (erforderlich, Array); ajax_page_state[libraries] (optional) |
Nein |
JSON-Objekt mit css, js, settings und data, wobei data der gerenderte Block oder die gerenderte Ansichts-Anzeige ist. |
In beiden settings-zurückgebenden Operationen sind css und js gerenderte Asset-Tags, die noch nicht auf der Seite sind, und settings ist das dekodierte drupalSettings-Objekt, oder ein leerer String, wenn es keine gibt.
Seitenvorlagen
| Operation |
Parameter |
Erneuter Billable-Check |
Rückgabe |
dxpr_get_page_templates |
Keine |
Ja |
JSON-Array aktivierter Seitenvorlagen, jede mit title, uuid, module (immer null: die Entity speichert es nicht), category, date, weight (Ganzzahl) und image (eine data:-URL, oder die not-found.png-URL des Moduls). |
dxpr_load_page_template |
uuid (erforderlich) |
Ja |
HTML-Antwort mit dem Vorlagen-Markup und ersetzten Basis-Tokens; leer, wenn keine aktivierte Vorlage passt. |
Benutzervorlagen
| Operation |
Parameter |
Erneuter Billable-Check |
Rückgabe |
dxpr_get_templates |
Keine |
Ja |
JSON-Array von Vorlagen des aktuellen Users oder als global markiert; Vorlagen, deren Autorkonto nicht mehr existiert, fehlen. Jeder Eintrag hat id, uuid, name, global, current_user_is_author, author_id, author_name, type und, wenn gespeichert, image (eine data:-URL). |
dxpr_load_template |
uuid (erforderlich) |
Ja |
HTML-Antwort mit dem Vorlagen-Markup und ersetzten Basis-Tokens; leer, wenn keine aktivierte Vorlage passt. |
dxpr_save_template |
name (erforderlich); template (erforderlich, Markup); type (optional, Standard custom); global (optional, zu Boolean gecastet); image (optional: ein Base64-String oder eine data:image-URL im POST-Body, oder ein Multipart-Dateifeld namens image) |
Ja |
JSON-Objekt mit message und code. code 200 bei Erfolg; code 409 (HTTP-Status 200), wenn eine Vorlage mit gleichem Systemnamen existiert; code 400 mit HTTP 400, wenn das Bild keine gültigen Bilddaten enthält. |
dxpr_delete_template |
name (erforderlich) |
Ja |
JSON-Leerstring. |
Der Systemname leitet sich ab aus name, indem er kleingeschrieben wird und jede Folge von Zeichen außerhalb von a-z0-9_ durch einen Unterstrich ersetzt wird. type fällt zurück auf das data-azb-Attribut im Markup, wenn eine gespeicherte Vorlage keinen Typ hat.
Bilder
| Operation |
Parameter |
Erneuter Billable-Check |
Rückgabe |
dxpr_builder_get_image_urls |
entityIDs (erforderlich, Array); imageStyle (erforderlich; original für die ungestylte Datei); entityType (erforderlich; media löst Medien-Items auf, jeder andere Wert wird als Entity-Typ der IDs genutzt) |
Ja |
Text-Body: kommagetrennte Bild-URLs. Dateien geben eine Root-relative URL mit einem fid-Query-Parameter. Medien-Items vom Typ image oder video lösen zu ihrer Quelldatei auf. acquia_dam_image_asset-Items geben die DAM-URL mit hinzugefügten mid, acquiaDamAsset und imageStyle. Andere Medien-Items werden übersprungen. HTTP 204 ohne Body, wenn entityIDs leer ist oder wenn kein Medien-Item aufgelöst werden kann. |
dxpr_builder_get_image_style_url |
imageStyle (erforderlich); entityId (erforderlich); entityTypeId (erforderlich, file oder media) |
Ja |
Text-Body. Für eine Datei: ihre Root-relative URL durch den Bildstil (SVG-Dateien und original überspringen den Bildstil), mit einem fid-Query-Parameter. Für ein acquia_dam_image_asset-Medien-Item: die DAM-URL. HTTP 204 ohne Body für jede andere Entity, oder wenn die Entity nicht gefunden wird. |
dxpr_builder_get_image_metadata |
entityId (erforderlich); entityType (erforderlich, file oder media) |
Ja (gibt 403-JSON statt der leeren Antwort zurück) |
{"data": {"alt": "...", "title": "..."}} aus dem Bildquellenfeld des Medien-Items (ein Acquia-DAM-Asset gibt seinen DAM-Alt-Text und einen leeren Titel). Für eine Datei kommen die Werte aus dem ersten Medien-Item, dessen field_media_image darauf verweist. data ist ein leeres Array, wenn die Entity weder Datei noch Medien-Item ist, oder wenn kein Medien-Item die Datei referenziert. Fehler: 400 {"error": "Missing required parameters"}, 404 {"error": "Entity not found"}, 500 {"error": "Failed to load entity"}, 403 {"error": "Access denied"}. |
Inhaltssperren
| Operation |
Parameter |
Erneuter Billable-Check |
Rückgabe |
dxpr_content_lock_status |
entity_id, revision_id, entity_type, langcode (alle erforderlich) |
Nein |
JSON-Objekt mit status (Boolean) und label (Entity-Label); wenn gesperrt, auch entity_lock_author_id und entity_lock_author_name. |
dxpr_toggle_content_lock |
entity_id, revision_id, entity_type, langcode, toggle_action (alle erforderlich; lock erstellt die Sperre, jeder andere Wert entfernt sie) |
Nein |
JSON-Objekt mit label und status (true nach dem Sperren, false nach dem Entsperren). Ein leeres JSON-Array ([]), wenn die Entity nicht geladen werden kann oder dem User update-Zugriff fehlt. |
Admin-Seiten
Alle diese Routen akzeptieren jede Methode (kein methods-Schlüssel). Pfade mit {...} nehmen die Config-Entity-ID, oder die Migrations-ID für {migration_id}.
| Pfad |
Route |
Berechtigung |
Zweck |
/admin/dxpr_studio |
dxpr_builder.admin.studio |
administer dxpr builder configuration |
DXPR-Studio-Übersicht; Blockseite des Core-Admin-Menüs mit Unterseiten. |
/admin/dxpr_studio/dxpr_builder |
dxpr_builder.admin.studio.builder |
administer dxpr builder configuration |
DXPR-Builder-Übersicht; Blockseite des Core-Admin-Menüs. |
/admin/dxpr_studio/dxpr_builder/settings |
dxpr_builder.settings |
administer dxpr builder configuration |
DxprBuilderSettingsForm: das Modul-Einstellungsformular. |
/admin/dxpr_studio/dxpr_builder/ai_settings |
dxpr_builder.ai_settings |
administer dxpr builder configuration |
DxprBuilderAiSettingsForm: das KI-Einstellungsformular. |
/admin/dxpr_studio/dxpr_builder/user_templates |
entity.dxpr_builder_user_template.collection |
administer site configuration |
Liste von dxpr_builder_user_template-Config-Entities. |
/admin/dxpr_studio/dxpr_builder/user_templates/add |
entity.dxpr_builder_user_template.add_form |
administer site configuration |
Eine Benutzervorlage hinzufügen. |
/admin/dxpr_studio/dxpr_builder/user_templates/{dxpr_builder_user_template} |
entity.dxpr_builder_user_template.edit_form |
administer site configuration |
Eine Benutzervorlage bearbeiten. |
/admin/dxpr_studio/dxpr_builder/user_templates/{dxpr_builder_user_template}/delete |
entity.dxpr_builder_user_template.delete_form |
administer site configuration |
Eine Benutzervorlage löschen (Bestätigungsformular). |
/admin/dxpr_studio/dxpr_builder/page_template |
entity.dxpr_builder_page_template.collection |
administer site configuration |
Liste von dxpr_builder_page_template-Config-Entities. |
/admin/dxpr_studio/dxpr_builder/page_template/add |
entity.dxpr_builder_page_template.add_form |
administer site configuration |
Eine Seitenvorlage hinzufügen. |
/admin/dxpr_studio/dxpr_builder/page_template/create |
dxpr_builder.create_page_template |
administer dxpr builder configuration |
PageController::createPageTemplate(): kopiert die aktivierte Benutzervorlage, die der uuid-Query-Parameter nennt, in eine neue Seitenvorlage mit gleicher ID und Kategorie DXPR. Setzt eine Status- oder Fehlermeldung und leitet zur Benutzervorlagenliste weiter. |
/admin/dxpr_studio/dxpr_builder/page_template/{dxpr_builder_page_template} |
entity.dxpr_builder_page_template.edit_form |
administer site configuration |
Eine Seitenvorlage bearbeiten. |
/admin/dxpr_studio/dxpr_builder/page_template/{dxpr_builder_page_template}/delete |
entity.dxpr_builder_page_template.delete_form |
administer site configuration |
Eine Seitenvorlage löschen (Bestätigungsformular). |
/admin/dxpr_studio/dxpr_builder/profile |
entity.dxpr_builder_profile.collection |
administer dxpr_builder_profile |
Liste von dxpr_builder_profile-Config-Entities. |
/admin/dxpr_studio/dxpr_builder/profile/add |
entity.dxpr_builder_profile.add_form |
administer dxpr_builder_profile |
Ein Profil hinzufügen. |
/admin/dxpr_studio/dxpr_builder/profile/{dxpr_builder_profile} |
entity.dxpr_builder_profile.edit_form |
administer dxpr_builder_profile |
Ein Profil bearbeiten. |
/admin/dxpr_studio/dxpr_builder/profile/{dxpr_builder_profile}/delete |
entity.dxpr_builder_profile.delete_form |
administer dxpr_builder_profile |
Ein Profil löschen (Bestätigungsformular). |
/admin/dxpr_studio/dxpr_builder/user_licenses |
dxpr_builder.user_licenses |
administer dxpr builder configuration |
PageController::userLicensesPage(): nicht-gecachte Tabelle lizenzierter User (Spalten User, Roles, Sites, Assigned und Operations). Darüber rendert die Seite ihre eigene Lizenz-Übersichtskarte (dxpr-license-info), wenn Lizenzinformationen verfügbar sind, und, während eine freigegebene Lizenz ihre 30 Tage abwartet, einen „Next license available on“-Hinweis. Auf dieser Route rendert der License info-Block nichts, sodass die Übersicht nie doppelt erscheint. |
/admin/dxpr_studio/dxpr_builder/user_licenses/sites |
dxpr_builder.user_licenses.sites |
administer dxpr builder configuration |
PageController::userLicensesSitesPage(): Liste der Domains, die für den User im mail-Request-Parameter verzeichnet sind; aus der Lizenztabelle in einem Modal geöffnet. |
/admin/dxpr_studio/dxpr_builder/content |
dxpr_builder.licensed_content |
administer dxpr builder configuration |
PageController::licensedContentPage(): seitenweise Tabelle (20 pro Seite) von mit DXPR Builder bearbeiteten Inhalten, mit der Inhalte-Lizenzübersicht. Der Query-Parameter needs_migration=1 zeigt nur Elemente, die eine Inhaltsmigration brauchen. Leer, wenn keine Lizenzinformationen verfügbar sind. |
/admin/dxpr_studio/dxpr_builder/migration-status |
dxpr_builder.migration_status |
administer dxpr builder configuration |
MigrationStatusController::statusPage(): nicht-gecachte Tabelle registrierter Inhaltsmigrationen mit ihren ausstehenden Elementen. Jede ausstehende Migration hat einen Run now-Link, und ein Run all pending migrations-Button erscheint, wenn welche ausstehen. |
/admin/dxpr_studio/dxpr_builder/migration-run/{migration_id} |
dxpr_builder.migration_run_confirm |
administer dxpr builder configuration |
MigrationRunConfirmForm: bestätigt, führt dann eine Migration als Batch aus und kehrt zur Statusseite zurück. |
/admin/dxpr_studio/dxpr_builder/migration-run-all |
dxpr_builder.migration_run_all_confirm |
administer dxpr builder configuration |
MigrationRunAllConfirmForm: bestätigt, führt dann jede registrierte Migration als einen Batch aus und kehrt zur Statusseite zurück. |
/dxpr-builder/disavow-user |
dxpr_builder.disavow_user_confirm |
administer dxpr builder configuration |
DisavowUserConfirmForm: bestätigt, den User im uid-Query-Parameter vom DXPR-Builder-Bearbeiten auszuschließen. |
/dxpr-builder/delete-stale-user |
dxpr_builder.delete_stale_user_confirm |
administer dxpr builder configuration |
DeleteStaleUserConfirmForm: bestätigt das Entfernen von Lizenzdaten für die E-Mail-Adresse im email-Query-Parameter. |
Wie geht es weiter?
- Konfigurationsreferenz: die Einstellungen, die den Medienbrowser und das KI-Verhalten dieser Endpunkte steuern
- PHP API: die Services, die die Controller aufrufen
- Hooks-API: die Hooks, mit denen andere Module Builder-Verhalten ändern können