Indice

🟦Pronta 🟨Bozza 🟥Da scrivere

Un metodo per costruire la app

Descrivere le app e tradurre la descrizione in configurazioni di Drupal
Aggiornata il:
Stato: 🟦Pronta

Costruire la app = configurare Drupal

La costruzione di una app con Drupal consiste nella configurazione di Drupal guidata da comandi, selezioni e campi da compilare, presentati dal menù di Amministrazione. La configurazione di Drupal è molto ricca e cresce con l'installazione di moduli aggiuntivi. Con MieApp voglio aiutarti a scoprire passo passo le configurazioni più importanti, senza doverti preoccupare se sbagli o dimentichi qualcosa, perché in ogni momento potrai tornare indietro e raffinare la tua opera. Non è quindi necessario avere tutto chiaro prima di partire a costruire, anzi la prima versione della app ti fornirà suggerimenti su come proseguire. 

Per guidarti nella costruzione della app, ti suggerisco di rispondere a queste domande:

  • Scopo: a cosa serve la app?
  • Dati: quali informazioni gestisce la app?
  • Persone: chi usa la app?
  • Autorizzazioni: cosa possono fare le persone sui dati?
  • Percorsi: come agiscono le persone nella app?
  • Automazioni: cosa fa la app in autonomia o al posto delle persone?

Risponderai a queste domande prima a parole e poi configurando uno o più aspetti di Drupal. Aiutiamoci con un esempio. I dettagli realizzati li vedremo nelle Guide che seguiranno, per ora basta capire il percorso logico proposto. 

Scopo

Descrivi in poche frasi cosa vuoi dalla app. Ad esempio immaginiamo di voler una app per "Gestire le prenotazioni di sale riunioni".

Dati

Elenca i tipi di informazioni che la app deve gestire. Ad esempio, la app prenotazioni sale deve gestire le Sale, le Prenotazioni e le Assegnazioni delle Sale in risposta alle Prenotazioni. Ricordati che, oltre ai dati relativi a cose, luoghi e processi, la app deve sempre gestire anche i dati personali degli Utenti che useranno la app.

Il modo più semplice ed intuitivo per rappresentare in Drupal i Dati che hai identificato è creare per ogni tipo di Dato uno o più Tipi di Contenuti. Ad esempio, per la app prenotazione sale configuriamo in Drupal un Tipo di Contenuto "Sala", caratterizzato da localizzazione, capienza e strumentazione disponibile; un Tipo di Contenuto "Prenotazione", caratterizzato dalla Sala richiesta e dalla data/ora richiesta di utilizzo; un tipo di Contenuto "Assegnazione", caratterizzato dalla Prenotazione cui risponde e da eventuali note sull'uso. Vedremo nella apposita Guida come è facile con Drupal configurare tutti i Tipi di Contenuti che servono alla tua app e come collegarli tra loro. Appena configuri un nuovi tipo di Contenuto,  Drupal ti mette subito a disposizione le pagine per creare, modificare, eliminare, mostrare e cercare i Contenuti di quel tipo. 

Più in dettaglio, ogni tipo di Contenuto è caratterizzato dai Campi che memorizzano le informazioni elementari che lo compongono. Proseguendo nell'esempio, vediamo da quali Campi sono formati i vari tipi di Contenuto.

Sala

CampoTipoDescrizione
Titolotestonome della Sala
Capienzanumeroquante persone può ospitare
Descrizionetestodescrizione della Sala, comprensiva delle attrezzature disponibili
Localizzazionecoordinatedove si trova la Sala

Prenotazione

CampoTipoDescrizione
Titolotestodescrizione breve della prenotazione
Quandodata e oraquando è richiesta la Sala
Salariferimento ad una Salaquale Sala è richiesta
Notatestonota relativa alla Sala

Assegnazione

CampoTipoDescrizione
Titolotestodescrizione breve della assegnazione
Quandodata e oraquando è concessa la Sala
Prenotazioneriferimento ad una Prenotazionea quale Prenotazione risponde l'Assegnazione
Notatestonota relativa all'Assegnazione

Drupal in realtà gestisce, oltre ai Contenuti, molti altri tipi di Entità tra cui Utenti, File, Commenti ecc. che scopriremo a tempo opportuno. 

Persone

Elenca i ruoli delle persone che usano la app. Se la app è usata solo da te, avrai solo due ruoli: l'Amministratore (cioè tu) e i Visitatori, cioè chiunque riesca ad arrivare alla tua app dalla rete locale o da internet. Se invece pensi di condividere l'uso della app con più persone, avrai almeno tre ruoli: l'Amministratore, i Visitatori e gli Utenti, cioè le persone che fanno login nella app per farsi riconoscere. A loro volta, gli Utenti potrebbero svolgere diversi ruoli: ad esempio, nella app prenotazioni sale potresti delegare l'assegnazione delle sale a Utenti Gestori ed avere quindi quattro ruoli: L'Amministratore, i Visitatori, gli Utenti Richiedenti e gli Utenti Gestori. 

Drupal gestisce le persone che interagiscono con la app come Utenti. L'Utente è un particolare tipo di Entità, per il quale Drupal ti mette a disposizione non solo le pagine di creazione, modifica e cancellazione, ma anche funzioni specifiche quali la registrazione, l'autoregistrazione, il login, il logout ed altre ancora. 

Per caratterizzare gli Utenti, Drupal utilizza i Ruoli. I ruoli predefiniti sono "Visitatore" (o Utente anonimo, cioè la persona che non ha fatto login), "Utente autenticato" (cioè la persona che ha fatto login) e "Amministratore" (cioè la persona che gestisce Drupal). Con una semplice configurazione, puoi facilmente aggiungere ulteriori Ruoli per caratterizzare diversi gruppi di Utenti autenticati: ad esempio, nella app prenotazione sale aggiungeremo i Ruoli "Richiedente" e "Gestore". 

Autorizzazioni

Per ogni tipo di dato e per ogni ruolo utente che hai identificato, ora specifica quali ruoli possono eseguire su quali tipi di dati le operazioni base di creazione, lettura, modifica e eliminazione. Una tabella come quella che segue può risultare utile per descrivere queste Autorizzazioni (non rappresento il ruolo Amministratore perché può sempre far tutto):

 Ruolo utente
Tipo di informazioneVisitatoreUtente RichiedenteUtente Gestore
Dati personali dell'Utente-Modifica i propri datiModifica i dati di tutti gli utenti
SalaVede tutte le SaleVede tutte le SaleCrea e modifica tutte le Sale
Prenotazione-Crea, vede, modifica e elimina (1) le proprie Prenotazioni Vede, modifica e elimina (1) tutte le Prenotazioni
Assegnazione-Vede le Assegnazioni create dai Gestori in risposta alle proprie Prenotazioni.
Delle Assegnazioni altrui vede solo l'effetto di occupazione delle Sale senza dettagli.
Crea, modifica e elimina tutte le Assegnazioni

(1) Una Prenotazione è eliminabile solo se non è stata ancora create l'Assegnazione corrispondente.

La gestione base delle Autorizzazioni in Drupal è fatta configurando i Permessi: un Permesso è una semplice opzione accesa / spenta che abilita / disabilita una funzione ad un ruolo utente. Per ogni tipo di Contenuto che hai configurato, Drupal mette a disposizione i corrispondenti Permessi di creazione, modifica e eliminazione. In Drupal troverai una tabella molto simile a quella sopra descritta, in cui accedere / spegnere i Permessi. Drupal mette a disposizione anche Permessi per la gestione degli Utenti e per molte altre funzioni. Spesso l'installazione di moduli aggiuntivi aggiunge nuovi Permessi. Vedremo più avanti che le Autorizzazioni gestite coi Permessi possono essere integrate con strumenti più sofisticati, quali ad esempio i "Gruppi" (comunità di Utenti e Contenuti), i Permessi dinamici dati dai Workflow e i Permessi basati su etichette condivise tra Utenti e Contenuti.

Percorsi

Per ogni ruolo utente, illustra il percorso dentro la app in termini di sequenza di pagine visitate e, per ogni pagina, di dati mostrati e di comandi disponibili. Tabelle come quelle che seguono possono risultare utile per descrivere i Percorsi dei diversi ruoli (non rappresento il ruolo Amministratore perché si muove liberamente in Drupal). Nelle tabelle ho sottolineato i dati che, se cliccati dall'utente, portano alla pagina di dettaglio del dato (es. "Elenco Prenotazioni" indica che, cliccando su una delle Prenotazioni elencate, si passa alla pagina coi dettagli di quella Prenotazione). In ogni pagina è anche mostrato un comando "Inizio" (non riportato in tabella) che consente di tornare rapidamente alla pagina inziale del percorso. 

Percorso Visitatore
PaginaInformazioni mostrateComandi disponibili
InizialeSpiegazione della app.
Istruzioni per iscriversi.
Registrazione
Login 
RegistrazioneModulo di iscrizioneInvio (viene creato l'Utente)
LoginModulo di inserimento credenzialiInvio (il Visitatore diventa Utente e passa al percorso Utente Richiedente o Gestore)
Percorso Utente Richiedente
PaginaInformazioni mostrateComandi disponibili
InizialeElenco delle sue Prenotazioni prive di Assegnazione 
Elenco delle sue Assegnazioni ricevute
Sale
Profilo
Logout (l'Utente diventa Visitatore e passa al percorso Visitatore)
SaleElenco delle Sale  
SalaCaratteristiche della Sala
Calendario Assegnazioni sulla Sala 
Prenota (va alla pagina Crea Prenotazione)
Crea PrenotazioneModulo di creazione di nuova Prenotazione Invio (viene creata la Prenotazione e va alla pagina Prenotazione)
PrenotazioneDati della Prenotazione, inclusa eventuale AssegnazioneModifica
Elimina (1)
AssegnazioneDati dell'Assegnazione, inclusa Prenotazione Rinuncia (esegue la procedura di eliminazione Assegnazione, vedi Automazioni)
ProfiloDati dell'UtenteModifica
Percorso Utente Gestore
Paginainformazioni mostrateComandi disponibili
InizialeElenco delle Prenotazioni prive di AssegnazioneGestione Sale
Gestione utenti 
Profilo
Logout (l'Utente diventa Visitatore e passa al percorso Visitatore)
Gestione SaleElenco delle SaleNuova Sala (va alla pagina Crea Sala)
Crea Salamodulo di creazione di una nuova SalaInvio (viene creata la Sala e va alla pagina Sala)
SalaDati della Sala
Elenco Prenotazioni prive di Assegnazione
Calendario Assegnazioni
Modifica
Elimina (2)
PrenotazioneDati della Prenotazione, incluso Utente richiedente ed eventuale AssegnazioneModifica
Elimina (1)
Assegna (se non già assegnata, va alla pagina Crea Assegnazione)
Crea AssegnazioneModulo di creazione nuova Assegnazione sulla Sala Invio (viene creata la Assegnazione e va alla pagina Assegnazione)
AssegnazioneDati dell'Assegnazione, inclusi Utente richiedente, Utente Gestore, Prenotazione e SalaAssegnazioni
Modifica
Elimina
AssegnazioniElenco di tutte le Assegnazioni, ricercabile per data, Utente richiedente, Utente Gestore, Prenotazione e Sala 
Gestione UtentiElenco degli Utenti 
UtenteDati dell'Utente
se Utente Richiedente:
Elenco delle sue Prenotazioni, con Sala e eventuale Assegnazione e Utente Gestore
se Utente Gestore:
Elenco delle sue Assegnazioni, con Utente Richiedente, Prenotazione e Sala
Modifica
Elimina

(1) Una Prenotazione è eliminabile solo se non esiste l'Assegnazione corrispondente
(2) Una Sala è eliminabile solo se non ci sono Assegnazioni o Prenotazioni su di essa

Drupal mette a disposizione nativamente una pagine di creazione per ogni tipo di Contenuto e una pagina di dettaglio per ogni Contenuto, coi comandi "Modifica" e "Elimina", limitate però ai soli Campi del Contenuto. Per creare pagine che elencano i Contenuti e per arricchire la pagina di un Contenuto con dati presi da altri Contenuti ad esso correlati, Drupal mette a disposizione le Viste, un potentissimo strumento cui dedicherò molte Guide. Con le Viste puoi costruire pagine specificando quali tipi di Contenuti mostrare, in che ordine, quali filtri applicare e come mescolare i loro dati con dati prese da Utenti o altre Entità o Contenuti. Ad esempio, nella app prenotazione sale con le Viste puoi configurare la pagina "Sala" in modo che mostri non solo i dati di una Sala, ma anche l'elenco delle sue Assegnazioni. Sempre con le Viste, in una pagina puoi aggiungere comandi che appaiono solo se il contesto lo consente o lo richiede: ad esempio, nella pagina "Sala" mostreremo il comando "Prenota" solo se l'Utente che guarda la pagina non è un Gestore e solo se quell'Utente non ha già inoltrato una prenotazione non ancora soddisfatta.

Oltre ai comandi mostrati nelle pagine, Drupal gestisce Menù di comandi mostrati in tutte le pagine o in gruppi di pagine, differenziabili per ruolo dell'utente. Ad esempio, nella app prenotazione sale il comando "Inizio" che riporta alla pagina di inizio del percorso sarà scritto in un menù per non doverlo ripetere nella configurazione di ogni pagina.

Le funzioni necessarie per gestire Contenuti, Utenti, Ruoli, Permessi, Viste, Menù e molti altri aspetti di Drupal sono disponibili nativamente in Drupal. Se la tua app richiede ulteriori funzioni non disponibili nella installazione base di Drupal, puoi cercarle tra le migliaia di Moduli aggiuntivi gratuiti. Ad esempio, se nella pagina "Sala" sopra descritta vogliamo mostrare le Assegnazioni non come mero elenco ma come un calendario navigabile per mese, installeremo il modulo aggiuntivo "Calendar View".  

Automazioni

Oltre ai comandi e ai dati forniti dagli utenti, è possibile assegnare a Drupal operazioni da eseguire al posto delle persone, ad esempio operazioni periodiche di pulizia, ricalcolo valori, spedizione mail agli utenti con l'elenco delle ultime novità, o anche operazioni cui gli utenti non sono autorizzati. Ad esempio, nella app prenotazione sale, col comando "Rinuncia" l'Utente richiedente rinuncia all'Assegnazione creata da un Gestore, ma non può eliminarla direttamente, perché non ha l'autorizzazione di eliminare Assegnazioni: il comando "Rinuncia" attiva quindi una procedura, eseguita da Drupal coi privilegi necessari, che elimina l'Assegnazione al posto dell'Utente.

A questo scopo disegneremo procedure ECA (Event - Condition - Action), che istruiscono Drupal su cosa fare quando accade quell'evento. Le ECA sono forse la cosa che si avvicina di più alla programmazione in Drupal, ma la loro configurazione non richiede la conoscenza di un linguaggio di programmazione e riusa tutti gli strumenti Drupal che nel frattempo avrai imparato a conoscere. Ad esempio, nella app prenotazione sale disegneremo una procedura ECA "Rinuncia" che, attivata dal click dell'Utente sul comando omonimo nella pagina "Assegnazione", ordina a Drupal di eliminare quell'Assegnazione, superando così i limiti delle Autorizzazioni dell'Utente.

Qualche altro esempio

Nelle Guide che seguono, applicheremo questo metodo ad un paio di esempi, il primo molto semplice e l'altro più complesso come evoluzione del primo:

  • Miei Libri: una app di uso personale per gestire la tua biblioteca e i prestiti agli amici
  • Prestiti tra Vicini: una app per gestire i prestiti di oggetti tra vicini