Indice

Arricchire la pagina di una Entità con le Viste EVA

Cosa sono le EVA. Personalizzare e proteggere con le EVA la pagina di una Entità, in base all'Utente e alle caratteristiche della singola Entità.
Aggiornata il:
Stato: 🟩Pronta

Avevamo visto in questa Guida che, ad ogni Entità, è associata una pagina di presentazione che ne mostra i Campi. Ad esempio, la pagina 

/node/12 

mostra il Contenuto con identificativo ID=12, mentre la pagina 

/user/23 

mostra l'Utente con identificativo UID=23. In questa Guida vediamo come aggiungere alla pagina di presentazione di una Entità anche informazioni prelevate da altre Entità, come variare le informazioni in base all'Utente che la sta guardando e come aggiungervi comandi, grazie alle Viste EVA.

EVA: una Vista dentro la pagina di una Entità

Una EVA (Entity Views Attachment) è una Vista che viene richiamata dentro la pagina di una Entità. Installato ed attivato il modulo aggiuntivo EVA: Entity Views Attachment, nell'editor delle Viste si rende disponibile il nuovo tipo di Visualizzazione "EVA" che consente appunto di creare una EVA. 

Nella costruzione della EVA occorre (1) specificare nella sezione Entity content settings il tipo di Entità in cui deve essere richiamata e (2) predisporre nella sezione Filtri contestuali il Campo che riceve l'identificativo dell'Entità dalla pagina dell'Entità. Campo e tipo di Entità devono essere coerenti: ad esempio, se in  Entity content settings la Vista è associata ad un Contenuto, nella sezione Filtri contestuali il Campo deve essere l'identificativo ID di Contenuto; se la Vista è invece associata ad Utenti, il Campo deve essere l'identificativo UID. 

Ecco quindi i passi salienti per creare una EVA:

crea la EVAIn Struttura - Viste crea una nuova Vista oppure modifica una Vista esistente. Nella sezione Visualizzazioni clicca Aggiungi - EVA. Appare una nuova Visualizzazione EVA. Clicca su di essa.
associa la EVA al tipo di Entità in cui mostrarlaNella nuova sezione Entity content settings (che sostituisce la sezione Impostazioni pagina) della Visualizzazione EVA, seleziona il tipo di Entità ed il Bundle cui la Vista deve essere allegata (es. Contenuto - "Attrezzo")
specifica l'identificativo dell'Entità in cui mostrarlaNella sezione Filtri contestuali aggiungi il Campo identificativo dell'Entità, es. ID - Contenuto

Per il resto, la costruzione di una EVA è del tutto simile alla costruzione delle altre Viste.

Personalizzare e proteggere la presentazione dei Campi di una Entità

Un primo utilizzo delle EVA è la personalizzazione della presentazione dei Campi dell'Entità, per aggiungervi informazioni prelevate da altre Entità e decidere cosa mostrare ai diversi Utenti. 

Come esempio, vediamo la personalizzazione della pagina della Richiesta della app "Vicinato". Se non interveniamo con le EVA, la pagina standard mostra tutti i Campi della Richiesta a tutti i Partecipanti. Vogliamo invece mostrare i Campi solo al Proprietario dell'Attrezzo richiesto e all'Utente Richiedente l'Attrezzo, nascondendoli a tutti gli altri Utenti. Vogliamo inoltre aggiungere alla Richiesta alcune informazioni sull'Attrezzo prestato e sull'eventuale Prestito concesso in risposta alla Richiesta. In questo modo non solo arricchiamo la pagina, ma la proteggiamo anche da sguardi indiscreti.

Come primo passaggio nascondiamo i Campi della Richiesta a tutti gli Utenti e poi affidiamo ad una EVA il compito di mostrarli solo a quei due Utenti. Al di là del caso specifico, questo metodo è di utilità generale, quando appunto si voglia controllare la visualizzazione dei Campi di una Entità in base alle caratteristiche dell'Utente.

nascondi i Campi della EntitàIn Struttura - Tipi di contenuto - Richiesta - Gestione visualizzazione trascina tutti i Campi sotto Disattivati.

Creiamo ora la EVA che mostra i Campi della Richiesta, dell'Attrezzo prestato e del Prestito, riservandola ai soli Richiedente ('Autore della Richiesta) e Proprietario (Autore dell'Attrezzo):

crea la EVAIn Struttura - Viste crea la Vista "Mostra Richiesta".  in Mostra scegli contenuto di tipo "Richiesta". Attiva la creazione di una Pagina, mostra il risultato come Elenco non formattato di Campi In Elementi da visualizzare scegli 1, perché mostreremo una sola Richiesta. Disattiva il paginatore. Salva. Nella sezione Visualizzazioni della Vista clicca Aggiungi - EVA. Appare una nuova Visualizzazione EVA. 
associa  la EVA al tipo di Entità Nella sezione Entity content settings, come Tipo di Entità seleziona Contenuto e come Bundle seleziona "Richiesta"
specifica l'identificativo dell'Entità in cui mostrarlaNella sezione Filtri contestuali aggiungi ID - Contenuto
identifica il Richiedente, grazie alla relazione Attrezzo → AutoreNella sezione Relazioni aggiungi Utente - Contenuto- Nome utente dell'autore del contenuto e rinomina come "Richiedente"
identifica l'Attrezzo, grazie alla relazione Richiesta → AttrezzoNella sezione Relazioni  aggiungi  Contenuto referenziato da field_attrezzo_richiesta - Contenuto - Appare in: richiesta e rinominalo "Attrezzo"
identifica il Proprietario, grazie alla relazione Attrezzo → AutoreNella sezione Relazioni aggiungi Utente - Contenuto- Nome utente dell'autore del contenuto,  come Relazione seleziona "Attrezzo" e rinomina come "Proprietario"
identifica l'eventuale Prestito, grazie alla relazione Prestito→ Richiesta usata in senso inversoNella sezione Relazioni aggiungi Contenuto - Contenuto referenziato da field_richiesta_prestito - Appare in: prestito e rinomina come "Prestito"
limita la Vista ai soli Richiedente e Proprietario

Come abbiamo già visto, nella sezione Criteri del filtro: 

  • aggiungiamo il Filtro che limita la Vista alle sole Richieste dell'Utente corrente (Utente - Corrente - Filtra la vista con l'utente attualmente autenticato, come Relazione seleziona "Richiedente", come operatore seleziona è uguale a e come è l'utente autenticato seleziona si)
  • aggiungiamo il Filtro che limita la Vista alle sole Richieste su Attrezzi dell'Utente corrente (Utente - Corrente - Filtra la vista con l'utente attualmente autenticato, come Relazione seleziona "Proprietario", come operatore seleziona è uguale a e come è l'utente autenticato seleziona si)
  • mettiamo questi due Filtri in OR logico tra loro (perché l'Utente corrente deve essere il Proprietario oppure il Richiedente) e in AND logico con gli altri Filtri.
mostra le informazioni relativa alla Richiesta ed all'Attrezzo

nella sezione Campi:

  • per la Richiesta: Campo "titolo" (Etichetta "Richiesta"), "Creato il", "Descrizione" e "Stato";
  • per il Richiedente: "nome" (Relazione "Richiedente", Etichetta "Richiedente")
  • per l'Attrezzo: Campo "Immagine" (Relazione "Attrezzo"), "titolo" (Relazione "Attrezzo", Etichetta "Attrezzo")
  • Per il Proprietario: "nome" (Relazione "Proprietario", Etichetta "Proprietario")
  • per il Prestito: "titolo" (Relazione "Prestito", Etichetta "Prestito"),  "Istruzioni" (Relazione "Prestito", Etichetta "Istruzioni") e "Stato" (Relazione "Prestito", Etichetta "Stato del Prestito")

Aggiungiamo alla pagina della Richiesta una seconda EVA, che elenca (sempre solo al Richiedente ed al Proprietario) le Consegne dell'Attrezzo effettuate. Mentre nella precedente EVA l'Entità nella cui pagina viene richiamata la Vista (la Richiesta) coincide con l'Entità elencata dalla Vista, in questa seconda EVA l'Entità nella cui pagina viene richiamata la Vista (sempre la Richiesta) non coincide con le Entità elencate dalla Vista (le Consegne associate alla Richiesta). Questa differenza è evidenziata dal Filtro contestuale della EVA: nella prima EVA è semplicemente l'identificativo della Richiesta Contenuto - ID, nella seconda l'identificativo della Richiesta deve essere messo in Relazione con le Consegne. Ecco come:

crea la EVAIn Struttura - Viste crea la Vista "Consegne della Richiesta".  in Mostra scegli contenuto di tipo "Consegna". Attiva la creazione di una Pagina, mostra il risultato come Tabella o Responsive grid di Campi. In Elementi da visualizzare scegli 0, per mostrare tutte le Consegne associate alla Richiesta. Disattiva il paginatore. Salva. Nella sezione Visualizzazioni della Vista clicca Aggiungi - EVA. Appare una nuova Visualizzazione EVA. 
associa  la EVA al tipo di Entità Nella sezione Entity content settings, come Tipo di Entità seleziona Contenuto e come Bundle seleziona "Richiesta"
identifica le Consegne associate alla Richiesta, grazie alla catena di relazioni Consegna → Prestito e Prestito → Richiesta  Nella sezione Relazioni aggiungi  Contenuto referenziato da field_prestito_consegna - Contenuto - Appare in: consegna e rinominalo "Prestito". Aggiungi  Contenuto referenziato da field_richiesta_prestito - Contenuto - Appare in: prestito, come Relazione seleziona "Prestito" e rinominalo "Richiesta".
specifica l'identificativo dell'Entità in cui mostrarla, che è la Richiesta richiamata dal Prestito, a sua volta richiamato dalle Consegne. Nella sezione Filtri contestuali aggiungi ID - Contenuto, come Relazione seleziona "Richiesta" 
limita la Vista ai soli Richiedente e Proprietario

Come abbiamo già visto, nella sezione Criteri del filtro: 

  • aggiungiamo il Filtro che limita la Vista alle sole Richieste dell'Utente corrente (Utente - Corrente - Filtra la vista con l'utente attualmente autenticato, come Relazione seleziona "Richiedente", come operatore seleziona è uguale a e come è l'utente autenticato seleziona si)
  • aggiungiamo il Filtro che limita la Vista alle sole Richieste su Attrezzi dell'Utente corrente (Utente - Corrente - Filtra la vista con l'utente attualmente autenticato, come Relazione seleziona "Proprietario", come operatore seleziona è uguale a e come è l'utente autenticato seleziona si)
  • mettiamo questi due Filtri in OR logico tra loro (perché l'Utente corrente deve essere il Proprietario oppure il Richiedente) e in AND logico con gli altri Filtri.
mostra le informazioni relativa alle Consegnenella sezione Campi aggiungi i Campi della Consegna

Posizionare le EVA nella pagina

Nella visualizzazione della pagina dell'Entità, ogni EVA è trattata come se fosse un Campo aggiuntivo dell'Entità stessa e può quindi essere posizionato a piacere rispetto ai Campi non nascosti ed alle eventuali altre EVA. Come abbiamo già visto per i Campi veri e propri, per ordinare le EVA tra loro e rispetto ai Campi non nascosti dell'Entità:

riordina Campi e EVA dell'EntitàIn Struttura - Tipo di Contenuto - TIPO DEL CONTENUTO- Gestione visualizzazione trascina i "campi" di nome EVA nell'ordine desiderato e salva.