Arricchire una Entità con le Viste

Aggiungere alla pagina di una Entità informazioni prese da altre Entità, grazie alle Viste EVA
Dal Vocabolario: Filtro contestuale
Aggiornata il:

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. 

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). Una EVA è una Vista che viene richiamata dentro la pagina di una Entità. Per utilizzare le EVA occorre installare ed attivare il modulo aggiuntivo EVA: Entity Views Attachment

La costruzione di una EVA è del tutto simile alla costruzione di una Vista, con i seguenti passaggi in più necessari per collegare la Vista alla pagina in cui deve essere richiamata:

Crea la EVACrea la Vista come al solito. Nella sezione Visualizzazioni della Vista clicca Aggiungi - EVA. Appare una nuova Visualizzazione EVA
Collega la EVA alla pagina dell'Entità (es. pagina dell'Attrezzo)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")
Definisci l'identificativo della Entità in cui la EVA verrà richiamataNella sezione Filtri contestuali aggiungi il Campo identificativo dell'Entità, es. ID - Contenuto (vedremo in una prossima Guida una spiegazione più estesa dei Filtri contestuali)
(Se necessario) Utilizza l'identificativo dell'Entità nelle altre sezioni della EVAL'identificativo dell'Entità nella cui pagina verrà richiamata la EVA è scritto nel Token {{ raw_arguments.nid }} 

Esempi di EVA

Con riferimento alla app di esempio, esemplifichiamo le potenzialità delle EVA personalizzando la pagina dell'Attrezzo. Il metodo qui illustrato è generalizzabile per personalizzare la pagina di una qualunque Entità della tua app e lo riapplicheremo anche alle pagine della Richiesta, del Prestito e del Messaggio. 

Vogliamo che la pagina di ogni Attrezzo sia così formata:

Pagina dell'Attrezzo
Se l'Utente è il Proprietario dell'AttrezzoSe l'Utente non è il Proprietario dell'Attrezzo
Comando "Miei Attrezzi" | Comando "Prestiti conclusi sull'Attrezzo"Comando "Magazzino" | Comando "Chiedi in prestito questo Attrezzo"

Informazioni sull'Attrezzo

Elenco di Richieste e Prestiti aperti sull'Attrezzo 

Per ognuno dei riquadri sopra elencati costruiamo una EVA.  

COMANDI SULL'ATTREZZO PER IL PROPRIETARIO

Questa EVA mostra al Proprietario dell'Attrezzo i comandi "Miei Attrezzi" e "Prestiti conclusi sull'Attrezzo".

crea la EVAvai 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 clicca Aggiungi - EVA
Collega la EVA alla pagina dell'AttrezzoNella sezione Entity content settings, come Tipo di Entità seleziona Contenuto e come Bundle seleziona "Attrezzo"
Definisci l'identificativo dell'Attrezzo in cui la EVA verrà richiamataNella sezione Filtri contestuali aggiungi ID - Contenuto
identifica il Proprietario dell'Attrezzo, con la relazione Attrezzo → AutoreNella sezione Relazioni aggiungi Utente - Contenuto- Nome utente dell'autore del contenuto e rinomina come "proprietario"
limita la visualizzazione al ProprietarioNella 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"
allinea orizzontalmente i due comandiNella sezione Formato, in Mostra - Impostazioni attiva Campi allineati per tutte e due i Campi.

COMANDI SULL'ATTREZZO PER GLI UTENTI DIVERSI DAL PROPRIETARIO

Questa EVA mostra agli Utenti diversi dal proprietario dell'Attrezzo i comandi "Magazzino" e "Chiedi in prestito questo Attrezzo". Questa Vista è molto simile alla precedente, salvo per il Filtro (utente corrente deve essere diverso dal proprietario) e per il contenuto dei comandi:

crea la EVAvai in Struttura - Viste - Aggiungi nuova vista;  scegli il nome della Vista ("Comandi Attrezzo Non 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
Collega la EVA alla pagina dell'AttrezzoNella sezione Entity content settings, come Tipo di Entità seleziona Contenuto e come Bundle seleziona "Attrezzo"
Definisci l'identificativo dell'Attrezzo in cui la EVA verrà richiamataNella sezione Filtri contestuali aggiungi ID - Contenuto
identifica il Proprietario dell'Attrezzo, con la relazione Attrezzo → AutoreNella sezione Relazioni aggiungi Utente - Contenuto- Nome utente dell'autore del contenuto e rinomina come "proprietario"
limita la visualizzazione agli utenti diversi dal ProprietarioNella 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 ni 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"
alline orizzontalmente i due comandiNella sezione Formato, in Mostra - Impostazioni attiva Campi allineati per tutte e due i Campi.

INFORMAZIONI SULL'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 una Vista come tabella e poi "ruotarla" invertendo le righe con le colonne. Ad esempio se la Vista in formato tabella è così:

AttrezzoCategoriaAmbienteNotaAllegatiProprietario
LevigatriceUtensiliCasa Manuale utenteCarla.Bianchi

selezionando come Formato Flipped Table, la tabella viene mostrata così:

AttrezzoLevigatrice
CategoriaUtensile
AmbienteCasa
Nota 
AllegatiManuale Utente
ProprietarioCarla.Bianchi

Se decidi di usare anche tu una Flipped View per mostrare i dati dell'Attrezzo a tutti gli Utenti:

nascondi i Campi dell'AttrezzoIn Struttura - Tipi di contenuto - Attrezzo - Gestione visualizzazione nascondi tutti i Campi trascinandoli sotto Disattivati.
crea la EVAvai 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
Collega la EVA alla pagina dell'AttrezzoNella sezione Entity content settings, come Tipo di Entità seleziona Contenuto e come Bundle seleziona "Attrezzo"
Definisci l'identificativo dell'Attrezzo in cui la EVA verrà richiamataNella sezione Filtri contestuali aggiungi ID - Contenuto
identifica il Proprietario dell'Attrezzo, con la relazione Attrezzo → AutoreNella sezione Relazioni aggiungi Utente - Contenuto- Nome utente dell'autore del contenuto e rinomina come "proprietario"
identifica la Categoria dell'Attrezzo, con la relazione Attrezzo → Categoriaaggiungi  Contenuto referenziato da field_categoria - Contenuto - Appare in: richiesta e rinomina come "categoria"
identifica la Categoria superiore dell'Attrezzo, con la relazione Categoria → Categoria Superiorenella 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 mostra le informazioni 

  • sull'Attrezzo: aggiungi "titolo" cambiando Etichetta in "Attrezzo", aggiungi "Descrizione", "Immagine", "Allegati" e "Stato".
  • sul Proprietario: aggiungi "nome" (Relazione "Proprietario", Etichetta "Proprietario")
  • sulle Categorie: aggiungi "titolo" (Relazione "Categoria", Etichetta "Categoria"), aggiungi "titolo" (Relazione "Categoria superiore", Etichetta "Categoria superiore")

RICHIESTE E PRESTITI APERTI

Questa EVA mostra solo al Proprietario dell'Attrezzo l'elenco delle Richieste aperte sull'Attrezzo e l'eventuale Prestito aperto in risposta ad esse. 

crea la EVAvai 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
Collega la EVA alla pagina dell'AttrezzoNella sezione Entity content settings, come Tipo di Entità seleziona Contenuto e come Bundle seleziona "Attrezzo"
identifica l'Attrezzo oggetto della Richiesta, con la relazione Richiesta→ Attrezzonella sezione Relazioni aggiungi Contenuto referenziato da field_attrezzo - Contenuto - Appare in: richiesta e rinomina come "attrezzo"
Definisci l'identificativo dell'Attrezzo in cui la EVA verrà richiamataNella sezione Filtri contestuali aggiungi ID - Contenuto e come Relazione seleziona "attrezzo"
identifica il Richiedente, con la relazione Richiedente → AutoreNella sezione Relazioni aggiungi Utente - Contenuto- Nome utente dell'autore del contenuto e rinomina come "richiedente"
identifica il Proprietario dell'Attrezzo, con  la relazione Attrezzo → AutoreNella 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 inversoNella 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 ProprietarioNella 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 mostra le informazioni:

  • sulla Richiesta: aggiungi "Creato il" (Etichetta "Data"), "titolo2 (Etichetta "Richiesta")
  • sul Richiedente: aggiungi "nome" (Relazione "Richiedente", Etichetta "Richiedente")
  • sul Prestito: aggiungi "titolo" (Relazione "Prestito", Etichetta "Prestito"), "Consegna" (Relazione "Prestito", Etichetta "Consegna"), 

Non mostriamo l'Attrezzo (perché siamo già nella pagina dell'Attrezzo) né il nome del Proprietario (perché è l'Utente che sta guardando la Vista e comunque è già scritto nei Dati dell'Attrezzo). 

ordina le Richieste in ordine di data di richiestaNella sezione Criteri di ordinamento, aggiungi Creato il - Contenuto - The date and time that the content was created e seleziona ordine ascendente
Mostra istruzioni all'UtenteNella 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 le 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.