Endpoint API.

Impara DXPR BuilderRiferimentoConfigurazione e API

Questa pagina elenca ogni route registrata da DXPR Builder in dxpr_builder.routing.yml, con i metodi HTTP, i requisiti di accesso, i parametri di richiesta e le forme di risposta come implementati nei controller. Il JavaScript dell’editor è il client previsto per gli endpoint AJAX; niente in questa pagina è una API pubblica stabile e i nomi dei parametri possono cambiare tra le versioni.

Requisiti di accesso

Le route usano tre tipi di requisito. Una route può combinarli.

Requisito Significato
_permission L’utente deve avere il permesso Drupal indicato. DXPR Builder definisce administer dxpr builder configuration, edit with dxpr builder e administer dxpr_builder_profile in dxpr_builder.permissions.yml; view media e administer site configuration vengono dal core.
_csrf_token La richiesta deve portare un token CSRF valido nel parametro di query token. Per il gestore AJAX principale, l’editor recupera un URL con il token da /dxpr_builder/csrf (o dall’operazione dxpr_builder_csrf). Per le altre route, il formatter di campo inserisce URL con token in drupalSettings.dxprBuilder, per esempio fileUploadUrl, entityLinkSuggestionsUrl, userSettingsUrl e aiAgent.endpointUrl.
_dxpr_builder_billable_user L’utente deve essere un utente fatturabile, come definito sotto.

Cosa significa "utente fatturabile"

DxprBuilderBillableUserAccessCheck consente l’accesso quando DxprBuilderLicenseService::isBillableUser() restituisce true per l’account corrente. Quel metodo restituisce false per gli account bloccati e per gli account il cui campo dxpr_user_is_disavowed è impostato (un amministratore esclude un utente dalla modifica nella pagina User Licenses). Altrimenti restituisce true per l’utente 1 e per ogni account che ha il permesso edit with dxpr builder. In breve: un utente fatturabile è un account attivo e non escluso autorizzato a modificare con DXPR Builder, e il servizio licenze conta questi account sulla tua chiave prodotto.

Metodi HTTP

Dove una route dichiara methods, vengono instradati solo quei metodi. Dove non li dichiara, la route accetta qualsiasi metodo (il MethodFilter di Drupal filtra solo le route che dichiarano metodi). Le tabelle sotto indicano il metodo usato davvero dal JavaScript dell’editor quando è visibile nel sorgente.

Endpoint AJAX dell’editor

URL del token CSRF

Percorso /dxpr_builder/csrf
Rotta dxpr_builder.csrf_refresh
Metodi Non dichiarati (qualsiasi metodo). L’editor invia GET (backend-connect.js, fetchCsrfTokenUrl()).
Requisiti Utente fatturabile
Controller AjaxController::ajaxRefresh()

La richiesta deve portare l’header X-Requested-With: XMLHttpRequest; senza di esso il controller restituisce HTTP 403 con il corpo JSON {"error": "Invalid request"}.

Parametro Origine Obbligatorio Note
enterprise Query string Facoltativo Quando impostato su true e il modulo dxpr_builder_e è installato, il token è generato per la rotta dxpr_builder_e.ajax_callback. Quando impostato su true senza quel modulo, il controller solleva un’eccezione.

Risposta: una stringa JSON con l’URL del gestore AJAX principale e un parametro di query token. L’URL è un percorso dalla radice del sito (base path incluso, senza host). Il JavaScript invia ogni operazione del builder a questo URL.

Gestore AJAX principale

Percorso /dxpr_builder/ajax
Rotta dxpr_builder.ajax_callback
Metodi Non dichiarati (qualsiasi metodo). Il controller legge ogni parametro dal corpo POST e l’editor invia POST.
Requisiti Utente fatturabile, token CSRF
Controller AjaxController::ajaxCallback()

Il campo action del corpo POST seleziona l’operazione. Ogni operazione e i suoi parametri sono elencati in Operazioni del gestore AJAX principale. Quando action manca o è sconosciuto, il controller restituisce un AjaxResponse Drupal vuoto senza comandi. La maggior parte delle operazioni che ricontrollano lo stato di utente fatturabile restituisce la stessa risposta vuota quando quel controllo fallisce; le tabelle notano le due eccezioni.

Chat AI

Percorso /dxpr_builder/ajax/ai/chat
Rotta dxpr_builder.ai_chat
Metodi POST
Requisiti edit with dxpr builder, utente fatturabile, token CSRF
Controller AiChatController::chat()

Il corpo della richiesta è JSON. Il controller inoltra la richiesta al provider dxpr del modulo Drupal ai, così nessuna chiave API raggiunge il browser. Prima della chiamata unisce i domini dell’impostazione ai_output_allowed_domains al filtro hostname del modulo ai, quando quel servizio esiste. Un valore di * imposta il filtro su piena fiducia. Il filtro viene ripristinato dopo.

Parametro Origine Obbligatorio Note
messages Corpo JSON Obbligatorio Array di oggetti con role e content.
stream Corpo JSON Facoltativo Booleano, predefinito true.
model Corpo JSON Facoltativo Predefinito kavya-m1.
prediction Corpo JSON Facoltativo Passato alla configurazione del provider come array.
providers Corpo JSON Facoltativo Inoltrato alla configurazione del provider.
allowed_html_tags Corpo JSON Facoltativo Inoltrato alla configurazione del provider.
allowed_html_classes Corpo JSON Facoltativo Inoltrato alla configurazione del provider.
web_search Corpo JSON Facoltativo Solo il valore false viene inoltrato; qualsiasi altro valore è ignorato.
response_format Corpo JSON Facoltativo Passato alla configurazione del provider come array.

Risposte:

Caso Stato Corpo
In streaming (stream true e il provider trasmette) 200, Content-Type: text/event-stream Eventi server-sent. Ogni evento è data: <JSON> dove il JSON ha choices[0].delta.content e, quando il provider li fornisce, id, object, created, model, original_model e usage. Lo stream finisce con data: [DONE].
Non in streaming 200, application/json {"choices": [{"message": {"role": "assistant", "content": "<text>"}}]}
Il corpo non è JSON, oppure messages manca o è vuoto 400, testo semplice Invalid request: messages required
model non nell’elenco allowed_models di ai_provider_dxpr.settings (controllato solo quando il modulo ai_provider_dxpr è installato e l’elenco è impostato) 403, application/json {"error": {"code": "model_not_allowed", "message": "The selected model is not allowed. Please refresh the page to update your model options."}}
Eccezione del provider 500, application/json {"error": {"message": "The request could not be completed."}}

Generazione di immagini AI

Percorso /dxpr_builder/ajax/ai/image
Rotta dxpr_builder.ai_image
Metodi POST
Requisiti edit with dxpr builder, utente fatturabile, token CSRF
Controller AiImageController::generate()
Parametro Origine Obbligatorio Note
prompt Corpo JSON Obbligatorio Prompt di testo.
model Corpo JSON Facoltativo Predefinito kavya-image.
size Corpo JSON Facoltativo Inoltrato alla configurazione del provider quando non vuoto.
quality Corpo JSON Facoltativo Inoltrato alla configurazione del provider quando non vuoto.
background Corpo JSON Facoltativo Inoltrato alla configurazione del provider quando non vuoto.

Risposte:

Caso Stato Corpo
Operazione riuscita 200 {"data": [{"b64_json": "<base64 image>"}]} (viene restituita solo la prima immagine generata)
Il corpo non è JSON, oppure prompt manca 400 {"error": {"message": "Invalid request: prompt required"}}
Il provider non ha restituito immagini 500 {"error": {"message": "No image was generated"}}
Eccezione del provider 500 {"error": {"message": "Image generation failed. Please try again."}}

Modifica di immagini AI

Percorso /dxpr_builder/ajax/ai/image/edit
Rotta dxpr_builder.ai_image_edit
Metodi POST
Requisiti edit with dxpr builder, utente fatturabile, token CSRF
Controller AiImageController::edit()
Parametro Origine Obbligatorio Note
prompt Corpo JSON Obbligatorio Istruzione di modifica.
image Corpo JSON Obbligatorio Immagine sorgente codificata in base64 (decodifica rigida).
mimeType Corpo JSON Facoltativo Predefinito image/png; il sottotipo diventa l’estensione di file passata al provider.
model Corpo JSON Facoltativo Predefinito kavya-image.
size, quality, background Corpo JSON Facoltativo Inoltrati alla configurazione del provider quando non vuoti.

Risposte:

Caso Stato Corpo
Operazione riuscita 200 {"data": [{"b64_json": "<base64 image>"}]}
Il corpo non è JSON, oppure prompt o image manca 400 {"error": {"message": "Invalid request: prompt and image required"}}
image non è base64 valido 400 {"error": {"message": "Invalid image data: base64 decode failed"}}
Il provider non ha restituito immagini 500 {"error": {"message": "No image was generated"}}
Eccezione del provider 500 {"error": {"message": "Image editing failed. Please try again."}}

Caricamento file

Percorso /dxpr_builder/ajax/file_upload
Rotta dxpr_builder.ajax_file_upload_callback
Metodi POST, DELETE (dichiarati nel routing; il controller ha un unico gestore di caricamento e nessun ramo separato di cancellazione)
Requisiti Utente fatturabile, token CSRF
Controller UploadFileController::fileUpload()
Parametro Origine Obbligatorio Note
upload File del form multipart, inviati come upload[] Obbligatorio Uno o più file caricati.

Il controller smista ogni file in base alla prima parte del suo MIME client in <schema predefinito>://dxpr_builder_images, dxpr_builder_videos o dxpr_builder_files. Un’immagine richiede un’estensione dei tipi MIME image/gif, jpg, jpeg, png, webp, avif o svg. Un video ne richiede una tra video/webm, ogv, ogg, mp4 o quicktime (per esempio .mov). Il limite di dimensione è il massimo di caricamento di PHP. Un file con lo stesso nome e contenuto SHA-256 identico a un file gestito esistente che l’utente può vedere viene riusato invece di essere salvato di nuovo. Quando il modulo media è installato ed esiste un tipo di media chiamato image, media_image, video o media_video, viene creata (o riusata) per il file un’entità media pubblicata. L’uso del file è registrato sotto il modulo dxpr_builder.

Risposte:

Caso Stato Corpo
Operazione riuscita 201 Array JSON, un oggetto per file: url (URL assoluto del file), uuid e id (dell’entità media quando esiste, altrimenti del file), fid (ID del file), entity_type (media o file).
Nessun file upload caricato 400 {"message": "No files were uploaded."}
Caricamento non valido, destinazione non scrivibile o salvataggio non riuscito 500 {"message": "<reason>"}
Validazione non riuscita (estensione o dimensione) 422 {"message": "<violation messages>"}
Nome file già bloccato da un’altra richiesta 503 {"message": "File \"<name>\" is already locked for writing."}

Finestra della libreria multimediale

Percorso /dxpr_builder/media-library
Rotta dxpr_builder.media_library
Metodi Non dichiarati (qualsiasi metodo). I parametri sono letti dalla query string.
Requisiti view media; rotta admin
Controller AjaxController::openImageMediaLibrary()
Parametro Origine Obbligatorio Note
media_type Query string Facoltativo image (predefinito) o video.
remaining_slots Query string Facoltativo Numero di elementi accettati dall’apertura; predefinito 1.
uuid Query string Facoltativo Passato all’apertura come opener_parameters.uuid.

Il tipo di media offerto dipende dall’impostazione media_browser: media_library usa direttamente il tipo di media image o video; media_library_acquia_dam usa acquia_dam_image_asset o acquia_dam_video_asset quando quel tipo di media esiste.

Risposte:

Caso Risultato
Operazione riuscita Un render array costruito da MediaLibraryUiBuilder::buildUi() con l’apertura media_library.opener.dxpr_builder. Drupal lo rende come pagina HTML pensata per un iframe.
media_library: modulo non installato 403, testo semplice Media Library is not enabled. Please enable it to access this feature.
Tipo di media non supportato: media_type 400, testo semplice Unsupported media type "<value>".
media_browser: l’impostazione non ha un tipo di media usabile 400, testo semplice The "<setting>" settings is not supported.
Percorso /dxpr_builder/ajax/help_link_validator
Rotta dxpr_builder.ajax_help_link_validator
Metodi Non dichiarati (qualsiasi metodo). Lo script dev dxpr_builder_dev.js invia POST con corpo form-encoded.
Requisiti Utente fatturabile
Controller AjaxController::validateHelpLink()
Parametro Origine Obbligatorio Note
help_link Corpo POST Obbligatorio per una risposta sensata Vengono controllati solo URL http o https sull’host dxpr.com con percorso che inizia per /documentation/.

Risposta: un array JSON. [true] quando una richiesta HEAD al link (senza seguire redirect) restituisce 200; [false] quando il client HTTP solleva un’eccezione; [] in ogni altro caso, inclusi parametro mancante, URL non corrispondente o stato diverso da 200.

Percorso /dxpr_builder/entity-link-suggestions
Rotta dxpr_builder.entity_link_suggestions
Metodi GET
Requisiti edit with dxpr builder, token CSRF; no_cache come opzione di rotta
Controller EntityLinkSuggestionsController::suggestions()
Parametro Origine Obbligatorio Note
q Query string Obbligatorio per avere risultati Testo di ricerca, in minuscolo. Un valore come /node/123 carica direttamente quell’entità.
langcode Query string Facoltativo Lingua dell’entità ospite; predefinita la lingua corrente. Vengono restituite solo entità disponibili in questa lingua.

I bundle sono quelli con ckeditor5_link_suggestions attivo nelle loro info bundle; quando nessuno è configurato, si cercano tutti i bundle nodo. Fino a 100 entità per tipo di entità vengono abbinate con una ricerca CONTAINS tramite i plugin di selezione reference di entità del core.

Risposta: {"suggestions": [...]} con cacheabilità privata e un’età massima di 300 secondi. Ogni suggerimento ha description, entity_type_id, entity_uuid, group, label e path. Quando q non trova nulla, l’array contiene un unico suggerimento di link manuale con description, label (l’input in minuscolo) e path (l’input quando è un URL valido, altrimenti una stringa vuota). Quando q è vuoto, suggestions è un array vuoto.

Impostazioni editor dell’utente

Percorso /dxpr_builder/user-settings
Rotta dxpr_builder.user_settings
Metodi POST
Requisiti edit with dxpr builder, token CSRF; no_cache come opzione di rotta
Controller UserSettingsController::save()

L’editor invia questa richiesta quando un utente cambia le proprie impostazioni editor, per esempio in Editor settings. I valori sono salvati con l’account utente in user.data, modulo dxpr_builder.

Parametro Origine Obbligatorio Note
controls_layout Corpo JSON Obbligatorio (l’unica impostazione) element, breadcrumb o default. default rimuove la scelta dell’utente, così si applica l’impostazione del profilo o del sito.

Risposte:

Caso Stato Corpo
Salvato 200 {"settings": {"controls_layout": "<value>"}}: ogni impostazione dopo il salvataggio, default dove l’utente non ha scelte salvate.
Il corpo non è un oggetto JSON non vuoto, oppure un nome o valore non è valido 400 {"error": "Invalid setting or value."}. Nulla viene salvato.

Operazioni del gestore AJAX principale

Tutte le operazioni vanno a /dxpr_builder/ajax con il parametro di query token ottenuto da /dxpr_builder/csrf. Il nome dell’operazione è inviato nel campo action del corpo POST; tutti gli altri parametri sono campi del corpo POST salvo indicazione diversa. La colonna "Ricontrolla utente fatturabile" segna le operazioni che richiamano isBillableUser() di nuovo dentro lo switch. Quando quel controllo fallisce restituiscono la AjaxResponse vuota descritta sopra, salvo indicazione diversa nella riga.

Sessione e accesso

Operazione Parametri Ricontrolla utente fatturabile Restituisce
dxpr_login Nessuno No Booleano JSON: se l’utente corrente è fatturabile.
dxpr_builder_csrf Nessuno Sì Stringa JSON: l’URL del gestore con un parametro di query token (come /dxpr_builder/csrf senza l’opzione enterprise).

Contenitori (campi resi con il formatter DXPR Builder)

Operazione Parametri Ricontrolla utente fatturabile Restituisce
dxpr_get_container_types Nessuno Sì Oggetto JSON con chiavi entity_type|bundle e valori entity_type - bundle, una voce per bundle la cui visualizzazione predefinita usa il formatter dxpr_builder_text su almeno un campo.
dxpr_get_container_names container_type (obbligatorio, entity_type|bundle) Sì (restituisce una stringa JSON vuota invece della risposta vuota) Oggetto JSON con chiavi entity_id|field_name (o entity_id|field_name|langcode per entità traducibili) e valori entity label|field label. Quando container_type manca, o il controllo di fatturazione fallisce, la risposta è una stringa JSON vuota.
dxpr_save_container type (obbligatorio, entity_type|bundle); name (obbligatorio, entity_id|field_name o entity_id|revision_id|field_name); htmlContent (obbligatorio, markup codificato); lang (facoltativo, predefinita la lingua predefinita del sito) Sì Stringa JSON vuota in caso di successo. HTTP 400 con messaggio JSON quando htmlContent non è una stringa o la lingua non si applica a un’entità non traducibile; 404 quando la traduzione richiesta non esiste; 500 quando l’entità non può essere caricata.

dxpr_save_container fa quanto segue:

  1. Decodifica htmlContent: XOR di ogni byte con 7, poi URL-decode.
  2. Scrive il risultato nel primo delta del campo indicato.
  3. Crea una nuova revisione predefinita con il messaggio di log Saved with DXPR builder quando il tipo di entità ammette revisioni.
  4. Rimuove ogni blocco di contenuto per l’entità.
  5. Aggiorna block_revision_id nelle sezioni Layout Builder che referenziano il blocco inline salvato.
  6. Incrementa il valore di stato dxpr_builder.saves_count.

Il salvataggio avviene solo quando l’utente ha accesso update all’entità. Senza di esso, l’operazione restituisce comunque la risposta di successo a stringa vuota.

Elementi CMS (blocchi e viste)

Operazione Parametri Ricontrolla utente fatturabile Restituisce
dxpr_builder_get_cms_element_names Nessuno Sì Oggetto JSON da DxprBuilderService::getCmsElementNames() con chiavi list, disallowed e blockCategories.
dxpr_get_cms_element_settings name (obbligatorio): view-<view_id>-<display_id> o block-<plugin_id>; ajax_page_state[libraries] (facoltativo, librerie già caricate separate da virgola) Sì Oggetto JSON con css, js, settings e data. Per una vista, data sono i widget dei filtri esposti resi; per un blocco, data è il form di configurazione del blocco racchiuso in tag <form>, con gli elementi provider, admin_label, label, label_display e context_mapping rimossi e tutti gli elementi details aperti.
dxpr_builder_load_cms_element name (obbligatorio, analizzato da parseStringForCmsElementInfo()); settings (obbligatorio); data (obbligatorio, array); ajax_page_state[libraries] (facoltativo) No Oggetto JSON con css, js, settings e data, dove data è la vista o il blocco reso.

In entrambe le operazioni che restituiscono settings, css e js sono tag di asset resi non già presenti nella pagina, e settings è l’oggetto drupalSettings decodificato, o una stringa vuota quando non ce ne sono.

Modelli di pagina

Operazione Parametri Ricontrolla utente fatturabile Restituisce
dxpr_get_page_templates Nessuno Sì Array JSON dei modelli di pagina attivi, ciascuno con title, uuid, module (sempre null: l’entità non lo salva), category, date, weight (intero) e image (un URL data:, o l’URL di not-found.png del modulo).
dxpr_load_page_template uuid (obbligatorio) Sì Risposta HTML contenente il markup del modello con i token base sostituiti; vuota quando nessun modello attivo corrisponde.

Modelli utente

Operazione Parametri Ricontrolla utente fatturabile Restituisce
dxpr_get_templates Nessuno Sì Array JSON dei modelli dell’utente corrente o marcati globali; i modelli il cui account autore non esiste più sono esclusi. Ogni voce ha id, uuid, name, global, current_user_is_author, author_id, author_name, type e, quando salvata, image (un URL data:).
dxpr_load_template uuid (obbligatorio) Sì Risposta HTML contenente il markup del modello con i token base sostituiti; vuota quando nessun modello attivo corrisponde.
dxpr_save_template name (obbligatorio); template (obbligatorio, markup); type (facoltativo, predefinito custom); global (facoltativo, convertito in booleano); image (facoltativo: una stringa base64 o URL data:image nel corpo POST, o un campo file multipart chiamato image) Sì Oggetto JSON con message e code. code 200 in caso di successo; code 409 (stato HTTP 200) quando esiste un modello con lo stesso machine name; code 400 con HTTP 400 quando l’immagine non è dati immagine validi.
dxpr_delete_template name (obbligatorio) Sì Stringa JSON vuota.

Il machine name deriva da name minuscolizzandolo e sostituendo ogni sequenza di caratteri fuori da a-z0-9_ con un underscore. type ripiega sull’attributo data-azb nel markup quando un modello salvato non ha tipo.

Immagini

Operazione Parametri Ricontrolla utente fatturabile Restituisce
dxpr_builder_get_image_urls entityIDs (obbligatorio, array); imageStyle (obbligatorio; original per il file non stilizzato); entityType (obbligatorio; media risolve media, qualsiasi altro valore è usato come tipo di entità degli ID) Sì Corpo di testo: URL di immagini separati da virgola. I file danno un URL relativo alla radice con parametro di query fid. I media di tipo image o video si risolvono nel loro file sorgente. Gli elementi acquia_dam_image_asset danno l’URL DAM con mid, acquiaDamAsset e imageStyle aggiunti. Gli altri media sono saltati. HTTP 204 senza corpo quando entityIDs è vuoto, o quando nessun media può essere risolto.
dxpr_builder_get_image_style_url imageStyle (obbligatorio); entityId (obbligatorio); entityTypeId (obbligatorio, file o media) Sì Corpo di testo. Per un file: il suo URL relativo alla radice tramite lo stile immagine (i file SVG e original saltano lo stile), con parametro di query fid. Per un media acquia_dam_image_asset: l’URL DAM. HTTP 204 senza corpo per qualsiasi altra entità, o quando l’entità non è trovata.
dxpr_builder_get_image_metadata entityId (obbligatorio); entityType (obbligatorio, file o media) Sì (restituisce invece JSON 403 invece della risposta vuota) {"data": {"alt": "...", "title": "..."}} dal campo sorgente immagine del media (un asset Acquia DAM dà il suo testo alt DAM e un titolo vuoto). Per un file, i valori vengono dal primo media il cui field_media_image lo referenzia. data è un array vuoto quando l’entità non è né file né media, o quando nessun media referenzia il file. Errori: 400 {"error": "Missing required parameters"}, 404 {"error": "Entity not found"}, 500 {"error": "Failed to load entity"}, 403 {"error": "Access denied"}.

Blocchi di contenuto

Operazione Parametri Ricontrolla utente fatturabile Restituisce
dxpr_content_lock_status entity_id, revision_id, entity_type, langcode (tutti obbligatori) No Oggetto JSON con status (booleano) e label (etichetta dell’entità); quando bloccato, anche entity_lock_author_id e entity_lock_author_name.
dxpr_toggle_content_lock entity_id, revision_id, entity_type, langcode, toggle_action (tutti obbligatori; lock crea il blocco, qualsiasi altro valore lo rimuove) No Oggetto JSON con label e status (true dopo il blocco, false dopo lo sblocco). Un array JSON vuoto ([]) quando l’entità non può essere caricata o l’utente non ha accesso update.

Pagine admin

Tutte queste route accettano qualsiasi metodo (nessuna chiave methods). I percorsi con {...} prendono l’ID dell’entità di configurazione, o l’ID di migrazione per {migration_id}.

Percorso Rotta Permesso Scopo
/admin/dxpr_studio dxpr_builder.admin.studio administer dxpr builder configuration Panoramica DXPR Studio; pagina blocco menu admin del core che elenca le pagine figlie.
/admin/dxpr_studio/dxpr_builder dxpr_builder.admin.studio.builder administer dxpr builder configuration Panoramica DXPR Builder; pagina blocco menu admin del core.
/admin/dxpr_studio/dxpr_builder/settings dxpr_builder.settings administer dxpr builder configuration DxprBuilderSettingsForm: il form delle impostazioni del modulo.
/admin/dxpr_studio/dxpr_builder/ai_settings dxpr_builder.ai_settings administer dxpr builder configuration DxprBuilderAiSettingsForm: il form delle impostazioni AI.
/admin/dxpr_studio/dxpr_builder/user_templates entity.dxpr_builder_user_template.collection administer site configuration Elenco delle entità di configurazione dxpr_builder_user_template.
/admin/dxpr_studio/dxpr_builder/user_templates/add entity.dxpr_builder_user_template.add_form administer site configuration Aggiungi un modello utente.
/admin/dxpr_studio/dxpr_builder/user_templates/{dxpr_builder_user_template} entity.dxpr_builder_user_template.edit_form administer site configuration Modifica un modello utente.
/admin/dxpr_studio/dxpr_builder/user_templates/{dxpr_builder_user_template}/delete entity.dxpr_builder_user_template.delete_form administer site configuration Cancella un modello utente (form di conferma).
/admin/dxpr_studio/dxpr_builder/page_template entity.dxpr_builder_page_template.collection administer site configuration Elenco delle entità di configurazione dxpr_builder_page_template.
/admin/dxpr_studio/dxpr_builder/page_template/add entity.dxpr_builder_page_template.add_form administer site configuration Aggiungi un modello di pagina.
/admin/dxpr_studio/dxpr_builder/page_template/create dxpr_builder.create_page_template administer dxpr builder configuration PageController::createPageTemplate(): copia il modello utente attivo identificato dal parametro di query uuid in un nuovo modello di pagina con stesso ID e categoria DXPR. Imposta un messaggio di stato o di errore e reindirizza all’elenco dei modelli utente.
/admin/dxpr_studio/dxpr_builder/page_template/{dxpr_builder_page_template} entity.dxpr_builder_page_template.edit_form administer site configuration Modifica un modello di pagina.
/admin/dxpr_studio/dxpr_builder/page_template/{dxpr_builder_page_template}/delete entity.dxpr_builder_page_template.delete_form administer site configuration Cancella un modello di pagina (form di conferma).
/admin/dxpr_studio/dxpr_builder/profile entity.dxpr_builder_profile.collection administer dxpr_builder_profile Elenco delle entità di configurazione dxpr_builder_profile.
/admin/dxpr_studio/dxpr_builder/profile/add entity.dxpr_builder_profile.add_form administer dxpr_builder_profile Aggiungi un profilo.
/admin/dxpr_studio/dxpr_builder/profile/{dxpr_builder_profile} entity.dxpr_builder_profile.edit_form administer dxpr_builder_profile Modifica un profilo.
/admin/dxpr_studio/dxpr_builder/profile/{dxpr_builder_profile}/delete entity.dxpr_builder_profile.delete_form administer dxpr_builder_profile Cancella un profilo (form di conferma).
/admin/dxpr_studio/dxpr_builder/user_licenses dxpr_builder.user_licenses administer dxpr builder configuration PageController::userLicensesPage(): tabella non cachata degli utenti con licenza (colonne User, Roles, Sites, Assigned e Operations). Sopra, la pagina rende la sua card di riepilogo licenza (dxpr-license-info) quando le informazioni di licenza sono disponibili e, mentre una licenza liberata sconta i suoi 30 giorni, un avviso "Next license available on". Su questa rotta il blocco License info non rende nulla, così il riepilogo non compare mai due volte.
/admin/dxpr_studio/dxpr_builder/user_licenses/sites dxpr_builder.user_licenses.sites administer dxpr builder configuration PageController::userLicensesSitesPage(): elenco degli domini registrati per l’utente dato nel parametro di richiesta mail; aperto in una modale dalla tabella licenze.
/admin/dxpr_studio/dxpr_builder/content dxpr_builder.licensed_content administer dxpr builder configuration PageController::licensedContentPage(): tabella paginata (20 per pagina) dei contenuti modificati con DXPR Builder, con il riepilogo licenza dei contenuti. Il parametro di query needs_migration=1 mostra solo gli elementi che richiedono una migrazione di contenuto. Vuota quando non sono disponibili informazioni di licenza.
/admin/dxpr_studio/dxpr_builder/migration-status dxpr_builder.migration_status administer dxpr builder configuration MigrationStatusController::statusPage(): tabella non cachata delle migrazioni di contenuto registrate con i loro elementi in attesa. Ogni migrazione in attesa ha un link Run now e un pulsante Run all pending migrations compare quando ce ne sono in attesa.
/admin/dxpr_studio/dxpr_builder/migration-run/{migration_id} dxpr_builder.migration_run_confirm administer dxpr builder configuration MigrationRunConfirmForm: conferma, poi esegue una migrazione come batch e torna alla pagina di stato.
/admin/dxpr_studio/dxpr_builder/migration-run-all dxpr_builder.migration_run_all_confirm administer dxpr builder configuration MigrationRunAllConfirmForm: conferma, poi esegue ogni migrazione registrata come un unico batch e torna alla pagina di stato.
/dxpr-builder/disavow-user dxpr_builder.disavow_user_confirm administer dxpr builder configuration DisavowUserConfirmForm: conferma l’esclusione dell’utente dato nel parametro di query uid dalla modifica con DXPR Builder.
/dxpr-builder/delete-stale-user dxpr_builder.delete_stale_user_confirm administer dxpr builder configuration DeleteStaleUserConfirmForm: conferma la rimozione dei dati di licenza per l’indirizzo email dato nel parametro di query email.

E adesso?

  • Riferimento alla configurazione per le impostazioni che controllano il browser multimediale e il comportamento AI usati da questi endpoint.
  • PHP API per i servizi chiamati dai controller.
  • Hooks API per gli hook che permettono ad altri moduli di modificare il comportamento del builder.