Consultando la Vista "Magazzino" che abbiamo creato nelle Guide precedenti, un Utente può trovare un Attrezzo di suo interesse e, cliccandovi sopra, accedere alla pagina dell'Attrezzo. Vediamo come personalizzare la pagina dell'Attrezzo con informazioni e comandi che dipendono sia dall'Attrezzo sia dall'Utente (vedi esempio in azione)

EVA: una Vista dentro la pagina di una Entità
Per arricchire la pagina di una Entità con informazioni prese da altre Entità e con comandi che dipendono dall'Entità e dall'Utente, possiamo usare le EVA (Entity Views Attachment), cioè Viste che vengono inserite ("allegate") nella pagina dell'Entità. Per costruire le EVA occorre installare ed attivare il modulo aggiuntivo EVA: Entity Views Attachment.
La creazione di una EVA richiede i seguenti passaggi;
| Crea la EVA | Crea la Vista come al solito, poi nella sezione Visualizzazioni della Vista clicca Aggiungi - EVA. Appare una nuova Visualizzazione EVA |
| Collega la EVA alla pagina dell'Entità | 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") |
| metti a disposizione della EVA l'identificativo della Entità in cui verrà richiamata | Nella sezione Filtri contestuali aggiungi il Campo identificativo dell'Entità (vedremo in una prossima Guida una spiegazione più estesa dei Filtri contestuali) |
| utilizza l'identificativo dell'Entità nelle altre sezione della EVA | L'identificativo dell'Entità è disponibile nel Token {{ raw_arguments.nid }} |
Esempi di EVA
Con riferimento alla app di esempio, esemplifichiamo le potenzialità delle EVA personalizzando la pagina dell'Attrezzo. Come sempre, il metodo qui illustrato è generalizzabile per personalizzare la pagina di una qualunque Entità della tua app. Vogliamo che la pagina di ogni Attrezzo mostri:
| Se l'Utente è il proprietario dell'Attrezzo | Se l'Utente non è il proprietario dell'Attrezzo |
| un comando per tornare a "Miei Attrezzi" ed un comando "Prestiti conclusi sull'Attrezzo" per vedere la storia dei prestiti sull'Attrezzo | un comando per tornare a "Magazzino" ed un comando "Chiedi in prestito " per chiederlo in prestito |
i dati dell'Attrezzo, della sua Categoria e del suo Proprietario | |
| l'elenco delle Richieste e Prestiti attualmente aperti sull'Attrezzo | |
Per ognuno dei riquadri sopra elencati dobbiamo costruire una EVA.
EVA COMANDI DEL PROPRIETARIO
Questa EVA mostra al solo Proprietario dell'Attrezzo i comandi "Miei Attrezzi" e "Prestiti conclusi sull'Attrezzo".
| crea la EVA | vai in Struttura - Viste - Aggiungi nuova vista; scegli il nome della Vista ("Comandi Attrezzo Proprietario"); in Mostra scegli contenuto di tipo "Attrezzo"; scegli di creare una Pagina e di mostrare il risultato come Elenco non formattato di campi. Nella sezione Visualizzazioni cliccare Aggiungi - EVA. |
| aggancia la EVA alla pagina dell'Attrezzo | Nella sezione Entity content settings, come Tipo di Entità seleziona Contenuto e come Bundle seleziona "Attrezzo" |
| passa alla EVA l'identificativo dell'Attrezzo | Nella sezione Filtri contestuali aggiungi ID - Contenuto |
| identifica il Proprietario dell'Attrezzo, con la relazione Attrezzo → Autore | Nella sezione Relazioni aggiungi Utente - Contenuto- Nome utente dell'autore del contenuto e rinomina come "proprietario" |
| limita la visualizzazione al Proprietario | Nella sezione Criteri del Filtro aggiungi Corrente - Utente- Filtra la vista con l'utente attualmente autenticato, come Relazione seleziona "proprietario", come operatore seleziona è uguale a e come è l'utente autenticato seleziona si |
| mostra il comando "Miei Attrezzi" | Nella sezione Campi aggiungi Testo personalizzato - Globale - Fornisce testo o link personalizzato, come Testo digita "Miei Attrezzi", in Risultati di riscrittura attiva Mostra questo campo come un collegamento personalizzato, come Percorso del link digita "/miei-attrezzi" e come Classe del link digita "btn btn-primary" |
| mostra il comando "Prestiti conclusi sull'Attrezzo" | Nella sezione Campi aggiungi Testo personalizzato - Globale - Fornisce testo o link personalizzato, come Testo digita "Prestiti conclusi sull'Attrezzo", in Risultati di riscrittura attiva Mostra questo campo come un collegamento personalizzato, come Percorso del link digita "/miei-prestiti-conclusi/{{ raw_arguments.nid }}" (la sintassi di questo comando sarà spiegata nella prossima Guida) e come Classe del link digita "btn btn-primary" |
| alline orizzontalmente i due comandi | Nella sezione Formato, in Mostra - Impostazioni attiva Campi allineati per tutte e due i Campi. |
EVA COMANDI PER NON PROPRIETARIO
Questa EVA mostra agli Utenti diversi dal proprietario dell'Attrezzo i comandi "Magazzino" e "Chiedi in prestito questo Attrezzo". Si può creare come duplicazione o variazione della precedente, cambiando oltre al nome (es. "Comandi Attrezzo non Proprietario") questi aspetti:
| limita la visualizzazione agli Utenti diversi dal Proprietario | Nella sezione Criteri del Filtro aggiungi Corrente - Utente- Filtra la vista con l'utente attualmente autenticato, come Relazione seleziona "proprietario", come operatore seleziona è uguale a e come è l'utente autenticato seleziona no |
| mostra il comando "Magazzino" | Nella sezione Campi aggiungi Testo personalizzato - Globale - Fornisce testo o link personalizzato, come Testo digita "Magazzino", in Risultati di riscrittura attiva Mostra questo campo come un collegamento personalizzato, come Percorso del link digita "/magazzino" e come Classe del link digita "btn btn-primary" |
| mostra il comando "Chiedi in prestito questo Attrezzo" | Nella sezione Campi aggiungi Testo personalizzato - Globale - Fornisce testo o link personalizzato, come Testo digita "Chiedi in prestito questo Attrezzo", in Risultati di riscrittura attiva Mostra questo campo come un collegamento personalizzato, come Percorso del link digita "/node/add/richiesta?attrezzo={{ raw_arguments.nid }}" (la sintassi di questo comando sarà spiegata nella prossima Guida) e come Classe del link digita "btn btn-primary" |
EVA DATI DELL'ATTREZZO
Di default, la pagina di una Entità mostra tutti i Campi dell'Entità stessa. Perché quindi creare una EVA per mostrarli? Per un paio di buoni motivi:
- la pagina dell'Entità non mostra di default il nome del Proprietario dell'Attrezzo, che è contenuto in uno dei Campi predefiniti non elencato nella pagina (Campo Autore)
- usare una EVA al posto dell'esposizione diretta dei Campi consente di personalizzare la loro presentazione, ad esempio per affiancare al Campo Categoria dell'Attrezzo anche l'informazione sulla Categoria superiore.
In generale, io preferisco usare una EVA per presentare i dati di una Entità anziché limitarmi a mostrarne i Campi. Per presentare in modo "allineato" etichette e valori dei Campi, può risultare utile installare ed attivare il modulo aggiuntivo "Views Flipped Table". Grazie a questo modulo possiamo costruire la Vista come tabella e poi "ruotarla" invertendo le righe con le colonne. Ad esempio se la Vista in formato tabella è così:
| Attrezzo | Categoria | Ambiente | Nota | Allegati | Proprietario |
| Levigatrice | Utensili | Casa | Manuale utente | Carla.Bianchi |
selezionando come Formato Flipped Table, la tabella viene mostrata così:
| Attrezzo | Levigatrice |
| Categoria | Utensile |
| Ambiente | Casa |
| Nota | |
| Allegati | Manuale Utente |
| Proprietario | Carla.Bianchi |
Se decidi di usare anche tu una Flipped View per mostrare i dati dell'Attrezzo a tutti gli Utenti:
| nascondi i Campi dell'Attrezzo | In Struttura - Tipi di contenuto - Attrezzo - Gestione visualizzazione nascondi tutti i Campi trascinandoli sotto Disattivati. |
| crea la EVA | vai in Struttura - Viste - Aggiungi nuova vista, scegli il nome della vista ("Dati Attrezzo"); in Mostra scegli contenuto di tipo "Attrezzo"; scegli di creare una Pagina e di mostrare il risultato come Flipped Table. Nella sezione Visualizzazioni cliccare Aggiungi - EVA. |
| aggancia la EVA alla pagina dell'Attrezzo | Nella sezione Entity content settings, come Tipo di Entità seleziona Contenuto e come Bundle seleziona "Attrezzo" |
| passa alla EVA l'identificativo dell'Attrezzo: | Nella sezione Filtri contestuali aggiungi ID - Contenuto |
| identifica il Proprietario dell'Attrezzo, con la relazione Attrezzo → Autore | Nella sezione Relazioni aggiungi Utente - Contenuto- Nome utente dell'autore del contenuto e rinomina come "proprietario" |
| identifica la Categoria dell'Attrezzo, con la relazione Attrezzo → Categoria | aggiungi Contenuto referenziato da field_categoria - Contenuto - Appare in: richiesta e rinomina come "categoria" |
| identifica la Categoria superiore dell'Attrezzo, con la relazione Categoria → Categoria Superiore | nella sezione Relazioni aggiungi anche Contenuto referenziato da field_categoria_superiore - Contenuto - Appare in: categoria, come Relazione seleziona "categoria" e rinomina come "categoria superiore" |
| mostra le informazioni relativa all'Attrezzo, al Proprietario ed alle Categorie | nella sezione Campi cambia Etichetta del Campo titolo (presente per default) in "Attrezzo"; aggiungi un altro Campo "titolo", come Relazione seleziona "categoria" e cambia Etichetta in "Categoria"; aggiungi un altro Campo "titolo", come Relazione seleziona "categoria superiore" e cambia Etichetta in "Categoria superiore"; aggiungi un Campo "nome", come Relazione seleziona "proprietario" e cambia Etichetta in "Proprietario"; aggiungi i Campi "Immagine", "Nota" ed "Allegati" e riordina tutti questi Campi a piacere. |
EVA RICHIESTE E PRESTITI APERTI
Questa EVA mostra al solo Proprietario dell'Attrezzo l'elenco delle Richieste aperte sull'Attrezzo e l'eventuale Prestito concesso in risposta ad esse.
| crea la EVA | vai in Struttura - Viste - Aggiungi nuova vista, scegli il nome della vista ("Richieste aperte su Attrezzo"); in Mostra scegli contenuto di tipo "Richiesta"; scegli di creare una Pagina e di mostrare il risultato come Tabella. Nella sezione Visualizzazioni cliccare Aggiungi - EVA. |
| aggancia la EVA alla pagina dell'Attrezzo | Nella sezione Entity content settings, come Tipo di Entità seleziona Contenuto e come Bundle seleziona "Attrezzo" |
| identificare l'Attrezzo oggetto della Richiesta, con la relazione Richiesta→ Attrezzo | nella sezione Relazioni aggiungi Contenuto referenziato da field_attrezzo - Contenuto - Appare in: richiesta e rinomina come "attrezzo" |
| passa alla EVA l'identificativo dell'Attrezzo | Nella sezione Filtri contestuali aggiungi ID - Contenuto e come Relazione seleziona "attrezzo" |
| identifica il Richiedente, con la relazione Richiedente → Autore | Nella sezione Relazioni aggiungi Utente - Contenuto- Nome utente dell'autore del contenuto e rinomina come "richiedente" |
| identifica il Proprietario dell'Attrezzo, con la relazione Attrezzo → Autore | Nella sezione Relazioni aggiungi Utente - Contenuto- Nome utente dell'autore del contenuto, come Relazioni seleziona "attrezzo" e rinomina come "proprietario" |
| identifica l'eventuale Prestito attivato in risposta alla Richiesta, con la relazione Prestito → Richiesta usata in senso inverso | Nella sezione Relazioni aggiungi Contenuto che usa field_richiesta - Contenuto - Relate each Contenuto with a field_richiesta set to the content item e rinomina come "prestito" |
| limita la visualizzazione delle Richieste al Proprietario | Nella sezione Criteri del Filtro aggiungi Corrente - Utente- Filtra la vista con l'utente attualmente autenticato, come Relazione seleziona "proprietario", come operatore seleziona è uguale a e come è l'utente autenticato seleziona si |
| limita la Vista alle sole Richieste aperte (cioè senza Prestito o con Prestito senza data di restituzione) | Nella sezione Criteri del Filtro aggiungi Restituzione (field_restituzione) - Contenuto - Appare in: prestito, come Relazione seleziona "prestito" e come operatore seleziona è vuoto |
| mostra le informazioni relative a Richieste, Richiedente e Prestito | Nella sezione Campi aggiungi Creato il e cambia Etichetta in "Data"; cambia Etichetta del Campo titolo (presente per default) in "Richiesta"; aggiungi un altro Campo "titolo", come Relazione seleziona "Prestito" e cambia Etichetta in "Prestito"; aggiungi il Campo "Consegna", come Relazione seleziona "Prestito" e seleziona un formato adeguato di data. Non mostriamo l'Attrezzo (perché siamo già nella pagina dell'Attrezzo) né il nome del Proprietario (perché è l'Utente che sta guardando la Vista). |
| ordina le Richieste in ordine di data di richiesta | Nella sezione Criteri di ordinamento, aggiungi Creato il - Contenuto - The date and time that the content was created e seleziona ordine ascendente |
| Mostra istruzioni all'Utente | Nella sezione Intestazione aggiungi Area di testo - Globale - Provide markup for the area using any available text format e come Contenuto digita "<h3>Richieste aperte sull'Attrezzo</h3>Clicca sulla Richiesta per vederne i dettagli ed eventualmente attivare un Prestito" |
Posizionare la EVA nella pagina
Ogni EVA è come se fosse un Campo aggiuntivo dell'Entità, il cui contenuto viene ricalcolato ogni volta che si richiama la pagina. Può quindi essere posizionato a piacere nella pagina dell'Entità, come abbiamo già visto per i Campi veri e propri:
- In Struttura - Tipo di Contenuto - Attrezzo - Gestione visualizzazione trascina i "campi" EVA nell'ordine desiderato (es. "Dati Attrezzo" prima delle altre due) e salva.