Corso Drupal «Project management» Pino Vasarelli, Andrea Vivaldi Iit Istituto di Informatica e Telematica del CNR
Project management Il sito Project management deve avere le seguenti caratteristiche: la differenziazione degli utenti rispetto a due ruoli diversi; la suddivisione dei contenuti in progetti e task; la possibilità di elencare progetti e task in ordine di scadenza; la possibilità per ciascun utente di visualizzare il proprio «workspace»; la gestione automatica e collaborativa del flusso. IIT/CNR P. Vasarelli A. Vivaldi 2
Materiale utilizzato Moduli opzionali del core: Profile; PHP filter. Moduli aggiuntivi: CCK; jquery UI; Date; Views; Rules; Ctools; Panels; Node access user reference; Token. Tema: Twilight. IIT/CNR P. Vasarelli A. Vivaldi 3
Configurare «Date» Tramite interfaccia di configurazione «Data e Ora» impostiamo il fuso orario e i formati; tramite interfaccia di configurazione «Date Popup configuration» impostiamo il plugin jquery per il datepicker. IIT/CNR P. Vasarelli A. Vivaldi 4
Configurare «Date» (esempio) IIT/CNR P. Vasarelli A. Vivaldi 5
Creare un nuovo ruolo «Referente» Tramite interfaccia di gestione degli utenti, creare un nuovo ruolo chiamato «Referente»; a questo ruolo saranno associati solo ed esclusivamente gli utenti che sono referenti di un progetto; i referenti, come vedremo in seguito, saranno gli unici utenti autorizzati a creare progetti e assegnare task. IIT/CNR P. Vasarelli A. Vivaldi 6
Aggiungere un ruolo IIT/CNR P. Vasarelli A. Vivaldi 7
Creare il tipo di contenuto «Progetto» Creiamo il tipo di contenuto «Progetto», il quale deve contenere le seguenti informazioni: Titolo; Descrizione; Referente; Data inizio; Data fine; Stato. IIT/CNR P. Vasarelli A. Vivaldi 8
Creiamo il tipo di contenuto «Task» Creiamo il tipo di contenuto «Task», il quale deve contenere le seguenti informazioni: Titolo; Descrizione; Progetto; Assegnatario; Deadline; Stato. IIT/CNR P. Vasarelli A. Vivaldi 9
Aggiungere un tipo di contenuto IIT/CNR P. Vasarelli A. Vivaldi 10
Tipo di contenuto «Progetto» IIT/CNR P. Vasarelli A. Vivaldi 11
Aggiungere il campo «Referente» IIT/CNR P. Vasarelli A. Vivaldi 12
Configurare il campo «Referente» IIT/CNR P. Vasarelli A. Vivaldi 13
Aggiungere il campo «Data inizio» IIT/CNR P. Vasarelli A. Vivaldi 14
Configurare il campo «Data inizio» IIT/CNR P. Vasarelli A. Vivaldi 15
Cambiare le impostazioni di Per ognuno dei due tipi di contenuto creati cambiamo le impostazioni di visualizzazione in modo da avere le etichette sempre in linea con il campo. visualizzazione IIT/CNR P. Vasarelli A. Vivaldi 16
Profilo utente Tramite l interfaccia di gestione dei profili utente, aggiungiamo i seguenti campi da associare all account: Nome; Cognome; Qualifica. IIT/CNR P. Vasarelli A. Vivaldi 17
Aggiungere campi al profilo utente IIT/CNR P. Vasarelli A. Vivaldi 18
Impostare il campo «Nome» IIT/CNR P. Vasarelli A. Vivaldi 19
Popolare un po il sito Creiamo 3 utenti di ruolo «Referente» e 3 utenti normali; creiamo 3 progetti assegnandoli a ciascuno degli utenti referenti appena inseriti; per ogni progetto creiamo 2 task assegnandoli a turno ai 3 utenti normali appena inseriti. IIT/CNR P. Vasarelli A. Vivaldi 20
Creare un utente IIT/CNR P. Vasarelli A. Vivaldi 21
Creare un contenuto «Progetto» IIT/CNR P. Vasarelli A. Vivaldi 22
Creare la lista dei progetti Creiamo ora una vista che elenchi tutti progetti in una tabella, raggiungibile tramite la voce di menu «Progetti» all interno dei link primari; le colonne della tabella devono riportare le seguenti informazioni: Nome del progetto (con link al progetto); Breve descrizione; Referente; Stato; Data inizio. IIT/CNR P. Vasarelli A. Vivaldi 23
Creare la vista «lista_progetti» IIT/CNR P. Vasarelli A. Vivaldi 24
Comporre la vista IIT/CNR P. Vasarelli A. Vivaldi 25
Risultato IIT/CNR P. Vasarelli A. Vivaldi 26
Lista degli utenti Accanto alla lista dei progetti vogliamo aggiungere anche la lista di tutti gli utenti (quindi di tipo utente); creiamo una tabella utenti con informazioni relative a: Nome utente; Nome, Cognome e Qualifica; Ruolo all interno del sito. anche in questo caso la vista sarà una pagina con voce di menu nei link primari. IIT/CNR P. Vasarelli A. Vivaldi 27
Vista utenti IIT/CNR P. Vasarelli A. Vivaldi 28
Risultato IIT/CNR P. Vasarelli A. Vivaldi 29
Visualizzazione di un progetto Così come è ora la visualizzazione del nodo progetto mostra solo i campi inseriti (titolo, descrizione, referente, stato, data inizio e data fine); vogliamo che oltre ai dati propri del contenuto, venga mostrata anche una vista di tutti i task collegati al progetto in dettaglio; per fare ciò costruiremo una nuova visualizzazione per il tipo di contenuto «Progetto» utilizzando i Panel. IIT/CNR P. Vasarelli A. Vivaldi 30
Creazione della vista Creiamo una vista di task, in cui visualizzeremo i seguenti campi, in ordine di deadline crescente: Titolo; Assegnatario; Deadline; Stato. la vista non dovrà essere una pagina e dovrà avere un argomento di tipo node reference, in modo da far vedere solo i task associati ad un certo progetto: lo stile sarà ancora una volta quello tabellare. IIT/CNR P. Vasarelli A. Vivaldi 31
La vista dei task di un progetto IIT/CNR P. Vasarelli A. Vivaldi 32
Creazione del panel per il progetto Ora che abbiamo creato la vista dei task assegnati ad un determinato progetto vediamo come mettere insieme i pezzi: abilitiamo il panel che si occupa di gestire la visualizzazione dei nodi e modifichiamolo secondo le nostre esigenze; aggiungiamo una variante per il nodo di tipo progetto. IIT/CNR P. Vasarelli A. Vivaldi 33
Struttura del panel La variante dovrà essere selezionata solo in caso di nodo di tipo progetto; il panel dovrà dividere l area del contenuto in 2 regioni: a sinistra verranno visualizzate le informazioni del nodo; a destra verrà visualizzata la lista dei task associati. IIT/CNR P. Vasarelli A. Vivaldi 34
Abilitare panel node_view IIT/CNR P. Vasarelli A. Vivaldi 35
Aggiungere la variante IIT/CNR P. Vasarelli A. Vivaldi 36
Impostare la regola di selezione IIT/CNR P. Vasarelli A. Vivaldi 37
Layout variante IIT/CNR P. Vasarelli A. Vivaldi 38
Aggiungere contenuto alla variante IIT/CNR P. Vasarelli A. Vivaldi 39
Profilo utente Modifichiamo l attuale profilo utente attraverso i panel; vogliamo costruire un vero e proprio workspace in cui gli utenti possono controllare i loro progetti (solo se sono referenti), i loro task e anche le altre informazioni relative al profilo; vogliamo inoltre che l home page del sito sia il workspace di ciascun utente; diamo la possibilità all utente di aggiungere un immagine personale. IIT/CNR P. Vasarelli A. Vivaldi 40
Abilitare il ritratto per l utente Per abilitare l immagine personale (ritratto) per ogni utente occorre modificare le impostazioni utente; oltre ad abilitare l opzione configuriamo: altezza e larghezza massime: 100x100; dimensione massima: 200 kb. IIT/CNR P. Vasarelli A. Vivaldi 41
Modificare le viste create Per poter avere le viste «filtrate» sugli utenti (solo i proprio progetti e solo i propri task) occorre modificare la vista dei progetti e aggiungere un altra vista dei task; nella lista dei progetti aggiungeremo un argomento per filtrare in base al referente; la nuova lista dei task dovrà essere simile all altra lista con il campo progetto a cui è riferito (invece del campo assegnatario) e l argomento dovrà essere di tipo user reference (assegnatario). IIT/CNR P. Vasarelli A. Vivaldi 42
Modificare la lista dei progetti IIT/CNR P. Vasarelli A. Vivaldi 43
Nuova lista dei task IIT/CNR P. Vasarelli A. Vivaldi 44
Abilitare il panel «user_view» IIT/CNR P. Vasarelli A. Vivaldi 45
Creare la variante IIT/CNR P. Vasarelli A. Vivaldi 46
Configurare il contesto IIT/CNR P. Vasarelli A. Vivaldi 47
Scegliere il layout IIT/CNR P. Vasarelli A. Vivaldi 48
Popolare il contenuto IIT/CNR P. Vasarelli A. Vivaldi 49
Uso degli argomenti nella vista Per poter far funzionare le viste modificate è necessario passare gli argomenti dal panel; possiamo passare direttamente gli argomenti nella configurazione attraverso i token. IIT/CNR P. Vasarelli A. Vivaldi 50
Permessi sul contenuto del panel Poiché non vogliamo far comparire la vista progetti a chi non ha ruolo referente modifichiamo le regole di selezione del contenuto del panel. IIT/CNR P. Vasarelli A. Vivaldi 51
Configurazione della regola IIT/CNR P. Vasarelli A. Vivaldi 52
Impostare la home page IIT/CNR P. Vasarelli A. Vivaldi 53
Permessi utente Il sito dovrà essere navigabile solo da utenti autenticati; il ruolo utente autenticato potrà: visualizzare tutti i campi cck; visualizzare i profili utente. Il ruolo referente potrà: creare, modificare ed eliminare progetti/task; modificare tutti i campi cck del progetto/task. IIT/CNR P. Vasarelli A. Vivaldi 54
Permessi CCK IIT/CNR P. Vasarelli A. Vivaldi 55
Flusso di lavoro Sarebbe molto più logico che lo stato del progetto dipendesse dallo stato dei task in cui è diviso; ad esempio un progetto sarà terminato quando tutti i task sono terminati e allo stesso modo sarà sospeso quando almeno uno dei task è sospeso; per rendere il flusso ancora più robusto occorrerebbe che gli assegnatari del task potessero modificare i propri task cambiandone lo stato; la data di fine di un progetto a questo punto può essere calcolata nel momento in cui il progetto passa allo stato terminato. IIT/CNR P. Vasarelli A. Vivaldi 56
Modifiche sui permessi Il ruolo referente non può modificare il campo «Data fine» del progetto; Il ruolo referente non può modificare il campo «stato» del progetto; Il ruolo utente autenticato può modificare il campo «Stato» del task. IIT/CNR P. Vasarelli A. Vivaldi 57
Modulo «Node access user reference» Abilitiamo il modulo «Node access user reference» dalla lista dei moduli occorrerà seguire il link per ricostruire l albero dei permessi; andiamo sul tipo di contenuto «Task» e modifichiamo le impostazioni relative al campo «assegnatario», specificandone i permessi; anche dopo questa operazione sarà necessario ricostruire l albero dei permessi. IIT/CNR P. Vasarelli A. Vivaldi 58
Impostazioni «Node access user reference» IIT/CNR P. Vasarelli A. Vivaldi 59
Utilizzare il modulo «Rules» Per fare in modo che i campi «stato» e «Data fine» del tipo di contenuto «progetto» siano modificati in automatico utilizzeremo il modulo «Rules»; Creeremo una regola in base alla quale: ogni volta che viene salvato un tipo di contenuto «task» verrà controllato il valore di «stato» di quel task e di tutti quelli associati al medesimo progetto; esaminando il valore restituito, deciderà se cambiare i valori dei campi del progetto e con quali valori. IIT/CNR P. Vasarelli A. Vivaldi 60
Aggiungere una regola IIT/CNR P. Vasarelli A. Vivaldi 61
Aggiungere una regola IIT/CNR P. Vasarelli A. Vivaldi 62
Aggiungere condizioni e azioni IIT/CNR P. Vasarelli A. Vivaldi 63
Inserire codice PHP nella regola IIT/CNR P. Vasarelli A. Vivaldi 64
Codice PHP di controllo $stato = [node:field_task_stato-raw]; switch($stato) { } case 'Sospeso': db_query("update content_type_progetto SET field_progetto_stato_value = 'Sospeso' WHERE nid = %d", [progetto:nid]); break; case 'Terminato': $query = db_query("select field_task_stato_value as stato FROM content_type_task WHERE field_task_progetto_nid = %d", [progetto:nid]); $tasks = array(); while($task = db_fetch_array($query)) { $tasks[] = $task['stato']; } $flag = FALSE; foreach($tasks as $s) { if($s == 'Terminato') { $flag = TRUE; } else { $flag = FALSE; } } if($flag == TRUE) { db_query("update content_type_progetto SET field_progetto_stato_value = 'Terminato' WHERE nid = %d", [progetto:nid]); db_query("update content_type_progetto SET field_progetto_fine_value = NOW() WHERE nid = %d", [progetto:nid]); } else { db_query("update content_type_progetto SET field_progetto_stato_value = 'Attivo' WHERE nid = %d", [progetto:nid]); db_query("update content_type_progetto SET field_progetto_fine_value = '' WHERE nid = %d", [progetto:nid]); } break; default: db_query("update content_type_progetto SET field_progetto_stato_value = 'Attivo' WHERE nid = %d", [progetto:nid]); db_query("update content_type_progetto SET field_progetto_fine_value = '' WHERE nid = %d", [progetto:nid]); break; drupal_flush_all_caches(); IIT/CNR P. Vasarelli A. Vivaldi 65
Abilitazione del nuovo tema Abilitare il tema «Twilight»; inserire come logo il file logo.png; inserire come icona il file icona.png; sistemare i blocchi a piacere. IIT/CNR P. Vasarelli A. Vivaldi 66
Risultato finale IIT/CNR P. Vasarelli A. Vivaldi 67