Corso Drupal advanced
Content type, view e rules – Mario Baioli
http://www.corsodrupal.uniroma1.it
GLAD (gruppo di lavoro drupal Sapienza)
Applicazione che gestisce le richieste di assistenza
Richiesta di assistenza
Gestione della richiesta
Archiviazione delle richieste
Content type, view e rules - Mario Baioli
18/12/2015
Pagina 2
Fase 1 creare un Tipo di contenuto
Prima di questa operazione verificare se nella
distribuzione sono presenti i moduli:
1. Automatic node titles (7.x-1.0)
2. Field permissions (7.x-1.0-beta2)
• Qualora questi due moduli non fossero presenti
vanno installati. Ahimè! Non ci sono nel nostro
Acquia Dev Desktop
Content type, view e rules - Mario Baioli
18/12/2015
Pagina 3
Scaricare il modulo Automatic Nodetitles
• "auto_nodetitle" è un modulo piccolo ed efficiente
che permette di nascondere il campo del node title
del form. Si può prevenire che il nome del titolo del
content resti vuoto configurandolo per generare il
titolo in una forma stabilita.
Versione
7.x-1.0
Downloads
http://ftp.drupal.org/files/projects/auto_nodetitle-7.x-1.0.tar.gz
Content type, view e rules - Mario Baioli
18/12/2015
Data
7 giugno 2011
Pagina 4
Scaricare il modulo Field Permissions
The Field Permissions module allows site administrators to set field-level
permissions to edit, view and create fields on any entity.
•
•
•
Enable field permissions on any entity, not just nodes.
Role-based field permissions allowing different viewing patterned based on
what access the user has.
Author-level permissions allow viewing and editing of fields based on who the
entity owner is.
Permissions for each field are not enabled by default. Instead, administrators
can enable these permissions explicitly for the fields where this feature is
needed.
Versione
7.x-1.0-beta2
Downloads
http://ftp.drupal.org/files/projects/field_permissions-7.x-1.0-beta2.tar.gz
Content type, view e rules - Mario Baioli
18/12/2015
Data
25 gennaio 2012
Pagina 5
Richiesta di assistenza
• Ad evitare inutile spam, è abilitato a fare richieste di
assistenza tecnica esclusivamente il personale di ruolo di
Sapienza.
• Può essere quindi opportuno legare questo modulo ai ruoli
provenienti da LDAP Sapienza per abilitare automaticamente i
ruoli del personale strutturato docente, tecnico amministrativo
e bibliotecario.
• Conosciamo già i ruoli interessati: Prof. Ordinario, Prof.
Associato, Ricercatore e assimilato, Tecnico-Amministrativo,
Area Biblioteche.
Content type, view e rules - Mario Baioli
18/12/2015
Pagina 6
Richiesta di assistenza: cosa vogliamo?
• Il nostro obbiettivo è far compilare una scheda di richiesta di
assistenza quanto più precisa possibile da parte di soggetti
ben identificati (LDAP Sapienza).
• L’amministratore risponderà alla richiesta ad ogni cambio di
stato descrivendo l’intervento effettuato. (rules)
• Lo stato della richiesta viene gestito dal ruolo amministrativo
con views tramite raggruppamenti di pertinenza.
Content type, view e rules - Mario Baioli
18/12/2015
Pagina 7
Creazione di un tipo di contenuto
Dal menu Tipi di contenuto:
• aggiungere un nuovo tipo di contenuto
• assegnare un nome al tipo di contenuto: richiesta
assistenza (il nome interno sarà
richiesta_assistenza)
• descrizione: fornire eventuali dettagli utili all’utente
connesso
• selezionare:
Automatically generate the title and hide the title
field (modulo automatic node titles)
• Pattern for the title:
richiesta-assistenza-del-[node:created:noore]
Content type, view e rules - Mario Baioli
18/12/2015
Pagina 8
Content type
Campi per l’utente
Campi per l’amministratore
•
•
•
•
• Intervento
• Stato
• Data
Sede
Luogo
Ambito
Descrizione
Content type, view e rules - Mario Baioli
18/12/2015
Pagina 9
Campo Sede - tassonomia
Da Struttura:
Tassonomia
Aggiungere un vocabolario
con nome: Sede
• Rientrare sul CT
Richiesta_assistenza, [gestisci i
campi] e seleziona come tipo di
campo [riferimento termine] che
ha come widget [elenco di
selezione]
Inserire alcune voci nel
vocabolario. Es. edificio1, • Vocabolario: Sede
edificio2, edificio3,
• Lasciare di default le altre voci
edificio4, ecc.
• salvare
Content type, view e rules - Mario Baioli
18/12/2015
Pagina 10
Campo Luogo - testo
• Per il luogo decidiamo di lasciare un campo a
testo libero di max 70 caratteri per indicare il luogo
della richiesta di assistenza.
• Quindi per il campo Luogo inizializzare una
variabile, selezionare il tipo di campo (testo) che
ha come widget (campo di testo)
Content type, view e rules - Mario Baioli
18/12/2015
Pagina 11
Campo Ambito – lista testuale
• Per la descrizione dell’ambito di intervento usiamo
la lista testuale per soli fini didattici, potrebbe
essere utilmente usata la tassonomia come
abbiamo visto per la sede.
• Quindi per il campo Ambito inizializzare una
variabile, selezionare il tipo di campo (lista
testuale) scegliere come widget (elenco di
selezione)
• Salvare
Content type, view e rules - Mario Baioli
18/12/2015
Pagina 12
Campo Ambito – lista testuale
• Drupal in automatico duplica l’etichetta, chi vuole
può modificare l’etichetta che è una delle due voci,
credo la seconda.
• audio|audio
• computer|computer
• lan|lan
• wifi|wifi
• videoproiettori|videoproiettori
• altro|altro
Content type, view e rules - Mario Baioli
18/12/2015
Pagina 13
Campo Descrizione – testo long
• Per il campo Descrizione inizializzare una
variabile con tipo [testo long] con widget
[area di testo (righe multiple)]
Ricordarsi che ogni volta che si crea un nuovo
campo va salvato il CT.
Content type, view e rules - Mario Baioli
18/12/2015
Pagina 14
Campo Intervento – testo long
• È uguale al campo descrizione, in seguito
dovremo assegnare questo campo ad un
ruolo specifico in quanto il richiedente potrà
solo leggere il testo della descrizione
dell’intervento, ma non potrà modificarlo.
Content type, view e rules - Mario Baioli
18/12/2015
Pagina 15
Campo data di chiusura - date
• Per il campo Data di chiusura inizializzare una
variabile con tipo [date] con widget [Pop-up
calendar]
Content type, view e rules - Mario Baioli
18/12/2015
Pagina 16
Campo Stato – lista testuale
Anche per il campo Stato della richiesta di assistenza usiamo una
lista testuale:
• Aperta (default)
• In lavorazione
• Chiusa
Quindi come per l’ambito inizializziamo una variabile di
tipo [lista testuale] con widget [elenco di valori] ed
inseriamo i tre valori:
• aperta|aperta
• in lavorazione|in lavorazione
• chiusa|chiusa
Content type, view e rules - Mario Baioli
18/12/2015
Pagina 17
Un campo per contare le richieste: computed
Potrebbe essere utile avere un codice univoco di riferimento,
chissà se lo fa drupal per noi…
Inizializziamo un campo di tipo [computed] con widget [computed]
Nella pagina di gestione del campo inserire il seguente codice php
if (!$entity_field){
$entity_field[0]['value'] ="ra-".substr(md5(time()), 3,5).substr(mt_rand(), 3,3);
}else{
$entity_field[0]['value']=$entity_field[0]['value'];
}
• Valorizzare il checkbox in fondo alla pagina:
 Index computed values in the database (Does not apply to text or longtext fields.)
Content type, view e rules - Mario Baioli
18/12/2015
Pagina 18
Ora occorrerà fare qualche vista: views
• Dal menu [viste] creare una nuova vista
• Dopo aver inizializzato la vista con il nome
selezionare il [contenuto] da mostrare del tipo
[richiesta assistenza] ordinato in maniera
decrescente, cioè vogliamo vedere per prime le
richieste più vecchie, cioè che aspettano da un
tempo maggiore…
• Vogliamo vedere i dati “Display format” sotto forma
di tabella di campi, visualizzando 15 voci ed usando
il paginatore.
Content type, view e rules - Mario Baioli
18/12/2015
Pagina 19
Inserimento dei campi nella vista
Ora occorre inserire i campi che vogliamo visualizzare:
•
•
•
•
•
•
•
•
•
Contenuto: Sede (Sede)
Contenuto: Luogo (Luogo)
Contenuto: Ambito (Ambito)
Contenuto: Descrizione (Descrizione)
Contenuto: Intervento (Intervento)
Contenuto: data di chisura (data di chisura)
Contenuto: Data di inserimento (Data di inserimento)
Contenuto: n richiesta (n richiesta)
Contenuto: Stato (Stato)
Content type, view e rules - Mario Baioli
18/12/2015
Pagina 20
Criteri di filtro nella vista
FILTER CRITERIA
• Contenuto: Pubblicato (Si)
• Contenuto: Tipo (= richiesta assistenza)
Aggiungere:
Expose this filter to visitors, to allow them to change
it
• Contenuto: Stato (esposto)
• Contenuto: Ambito (esposto)
Content type, view e rules - Mario Baioli
18/12/2015
Pagina 21
Qualche altro settaggio: tagliamo la lunghezza di
un campo
• Vogliamo leggere dalla vista dal campo descrizione
del problema, ma sappiamo che è molto lungo
quindi va troncato…
REWRITE RESULTS
• Taglia questo campo alla lunghezza massima: 15
• Aggiungi un ellisse, se selezionato saranno aggiunti
"..." nel caso in cui il campo venga tagliato.
Content type, view e rules - Mario Baioli
18/12/2015
Pagina 22
Chi è l’autore?
• Ci occorre conoscere l’autore del contenuto. Dalla
terza colonna: Avanzate
RELAZIONI
inserire l’autore del contenuto e poi aggiungere il
campo autore dove sono legati insieme: spuntare
“collega questo campo al suo utente”
Content type, view e rules - Mario Baioli
18/12/2015
Pagina 23
Riordinare i campi con drag & drop
•
•
•
•
•
•
•
•
•
•
•
Contenuto: n richiesta n richiesta
(autore) Utente: Nome Segnalato da:
Contenuto: Titolo Titolo
Contenuto: Sede Sede
Contenuto: Luogo Luogo
Contenuto: Ambito Ambito
Contenuto: Descrizione Descrizione
Contenuto: Intervento Intervento
Contenuto: Data di inserimento Data di inserimento
Contenuto: data di chisura data di chisura
Contenuto: Stato Stato
Ora occorre aggiungere il pulsante modifica per poter editare il contenuto,
quindi aggiungere il link:
• Contenuto: Link modifica
Provide a simple link to edit the content.
Content type, view e rules - Mario Baioli
18/12/2015
Pagina 24
E la prima vista è fatta …
• La vista per la gestione delle richieste da parte
dell’amministratore è pronta, ora occorre
predisporre una vista di dettaglio per il richiedente.
• Cosa facciamo ricominciamo daccapo?
• Ci viene incontro la funzione clona direttamente dal
menu viste
Content type, view e rules - Mario Baioli
18/12/2015
Pagina 25
Vista di dettaglio per il richiedente
• Il nostro obbiettivo è di far apparire questa vista
solo se l’autore coincide con l’utente loggato.
• In cima alla terza colonna della vista ci sono le
funzioni Avanzate e tra queste i CONTEXTUAL FILTERS
• Aggiungiamo : Author uid
Poi dobbiamo specificare:
WHEN THE FILTER VALUE IS NOT IN THE URL
Selezionare: Provide default value
Quindi scegliere dal menu a tendina
ID Utente degli utenti autenticati
Content type, view e rules - Mario Baioli
18/12/2015
Pagina 26
Vista di dettaglio per il richiedente
• A questo punto poiché abbiamo selezionato una
opzione default nel valore filtro
(WHEN THE FILTER VALUE IS IN THE URL OR A DEFAULT IS PROVIDED)
• Specificare un criterio di validazione e dal menu a
tendina “validatore” selezionare Utente cioè il
campo che ci serve agganciare.
•
•
•
Type of user filter value to allow:
spuntare il radiobutton: Only allow numeric UIDs
Restrict user based on role:
Spuntiamo i ruoli interessati a vedere la vista di dettaglio: il personale
tecnico e se vogliamo abilitarli gli altri ruoli del personale strutturato.
Content type, view e rules - Mario Baioli
18/12/2015
Pagina 27
E adesso rules
Il modulo rules permette agli amministratori del sito di
definire l’esecuzione di azioni basate sull’avverarsi
di una condizione o di un evento.
Versione
7.x-2.3
Downloads
http://ftp.drupal.org/files/projects/rules-7.x-2.3.tar.gz
Data
27 marzo 2013
Dopo aver scaricato il modulo abilitarlo e salvare la
configurazione.
Content type, view e rules - Mario Baioli
18/12/2015
Pagina 28
Inviare email di notifica all’autore e administrator
Creiamo una azione con rules e la chiamiamo:
NotificaNuovaRichiestaAssistenza
L’evento è il salvataggio di un nuovo contenuto
Condizione: selezionare il tipo di contenuto
dal menu data selector: node
Tipi di contenuto: Valore (selezionare il CT)
• richiesta assistenza
Content type, view e rules - Mario Baioli
18/12/2015
Pagina 29
azioni
Azione sending an email
• A:
node:author:mail
• Oggetto:
Notifica Apertura Richiesta Assistenza
• From:
non rispondere <[email protected]>
Content type, view e rules - Mario Baioli
18/12/2015
Pagina 30
messaggio
<?php
$userino=user_load($node->uid);
?>
Gentile <?=$userino->mail;?>
abbiamo correttamente ricevuto in data [node:created] la tua segnalazione.
Di seguito rimettiamo il riepilogo dei dati inseriti:
Sede: [node:field-ra-sede]
Luogo: [node:field-ra-luogo]
Ambito: [node:field-ra-ambito]
Descrizione: [node:field-ra-descrizione]
E' possibile controllare lo stato della lavorazione della tua segnalazione tra le proprie segnalazioni all'indirizzo:
/assistenza/richieste/dettaglio
Quando la tua segnalazione sarà evasa riceverai una notifica via mail.
N.B.
Non rispondere a questo messaggio. Questa notifica è stata generata da un indirizzo email di servizio
che non è in grado di ricevere messaggi.
Saluti,
Lo staff
Content type, view e rules - Mario Baioli
18/12/2015
Pagina 31
Inviare notifica del cambio di stato al richiedente
nuovo rules:
• NotificaModificaRichiestaAssistenza
Evento:
• After updating existing content
Come per il rules precedente,
Condizione: selezionare il tipo di contenuto
dal menu data selector: node
Tipi di contenuto: Valore (selezionare il CT)
• richiesta assistenza
Content type, view e rules - Mario Baioli
18/12/2015
Pagina 32
• A: [node:author:mail]
• Oggetto: Modifica Richiesta Assistenza
Messaggio:
Gentile [node:author],
in data [node:changed] è stata modificata la richiesta di assistenza da te segnalata il [node:created].
Di seguito un riepilogo della segnalazione:
Stato:[node:field_ra_stato]
Sede: [node:field_ra_sede]
Luogo: [node:field_ra_luogo]
Ambito: [node:field_ra_ambito]
Descrizione:
[node:field_ra_descrizione]
//…..continua….
Content type, view e rules - Mario Baioli
18/12/2015
Pagina 33
ancora dal messaggio
<?php
if (!empty($node->field_ra_data_chiusura['und']['0']['value'])){
echo "Data Chiusura: ".$node->field_ra_data_chiusura['und']['0']['value'];
}
?>
<?php
if (!empty($node->field_ra_intervento['und']['0']['value'])){
echo "Intervento:";
}
?>
<?php
if (!empty($node->field_ra_intervento['und']['0']['value'])){
print $node->field_ra_intervento['und']['0']['value'];
}
?>
Saluti,
Lo Staff del CeSMA
Content type, view e rules - Mario Baioli
18/12/2015
Pagina 34
Content type, view e rules - Mario Baioli
18/12/2015
Pagina 35
Scarica

content type - views e rules esercitazione