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 di tipo 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 EVA | In 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 mostrarla | Nella 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 mostrarla | Nella 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 pagina di un tipo di Entità, per aggiungervi informazioni prelevate da altre Entità e decidere cosa mostrare o nascondere 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 al Richiedente, nascondendoli a tutti gli altri Utenti. Vogliamo inoltre aggiungere alla pagina della Richiesta alcune informazioni sull'Attrezzo e una sintesi delle altre informazioni conseguenti alla Richiesta, cioè le Note scambiate tra Richiedente e Proprietario, le Consegne effettuate dell'Attrezzo e le Valutazioni finali espresse dai due Utenti.
Come primo passaggio nascondiamo i Campi della Richiesta a tutti gli Utenti e poi affidiamo ad una EVA il compito di mostrarli solo a Richiedente e Proprietario. 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 e dell'Attrezzo prestato, riservandola ai soli Richiedente ('Autore della Richiesta) e Proprietario (Autore dell'Attrezzo):
| crea la EVA | In Struttura - Viste crea la Vista "Dati della 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 mostrarla | Nella sezione Filtri contestuali aggiungi ID - Contenuto |
| identifica il Richiedente, grazie alla relazione Attrezzo → Autore | Nella sezione Relazioni aggiungi Utente - Contenuto e rinomina "Richiedente" |
| identifica l'Attrezzo, grazie alla relazione Richiesta → Attrezzo | Nella sezione Relazioni aggiungi Contenuto - Contenuto referenziato da field_attrezzo_richiesta e rinomina "Attrezzo" |
| identifica il Proprietario, grazie alla relazione Attrezzo → Autore | Nella sezione Relazioni aggiungi Utente - Contenuto con Relazione "Attrezzo" e rinomina "Proprietario" |
| limita la Vista ai soli Richiedente e Proprietario | Come abbiamo già visto, nella sezione Criteri del filtro:
|
| mostra le informazioni relativa alla Richiesta ed all'Attrezzo | nella sezione Campi:
|
Aggiungiamo ora alla pagina della Richiesta una seconda EVA, che elenca (sempre solo al Richiedente ed al Proprietario) le Note scambiate tra i due. Diversamente dalla EVA sopra descritta, in questa seconda EVA le Entità mostrate (Note) non coincidono con l'Entità della pagina in cui la EVA viene richiamata (Richiesta):questa differenza è evidenziata dal Filtro contestuale della EVA: nella prima EVA era semplicemente l'identificativo della Richiesta Contenuto - ID, nella seconda l'identificativo della Richiesta deve essere messo in Relazione con le Note. Ecco come:
| crea la EVA | In Struttura - Viste crea la Vista "Note della Richiesta". in Mostra scegli contenuto di tipo "Nota". Attiva la creazione di una Pagina, mostra il risultato come Tabella. In Elementi da visualizzare scegli 0, per mostrare tutte le Note 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 Note associate alla Richiesta, grazie alla relazione Nota → Richiesta | Nella sezione Relazioni aggiungi Contenuto - Contenuto referenziato da field_richiesta_nota e rinomina "Richiesta". |
| specifica l'identificativo dell'Entità in cui mostrarla, che è la Richiesta richiamata dalle Note | 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:
|
| mostra le informazioni relativa alle Note | nella sezione Campi aggiungi i Campi della Nota (data, autore della Nota, testo) |
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. |