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."} |
|
|
| 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. |
Validatore dei link di aiuto
|
|
| 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.
Suggerimenti di link a entità
|
|
| 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). |
| 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:
- Decodifica
htmlContent: XOR di ogni byte con 7, poi URL-decode.
- Scrive il risultato nel primo delta del campo indicato.
- Crea una nuova revisione predefinita con il messaggio di log
Saved with DXPR builder quando il tipo di entità ammette revisioni.
- Rimuove ogni blocco di contenuto per l’entità.
- Aggiorna
block_revision_id nelle sezioni Layout Builder che
referenziano il blocco inline salvato.
- 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.