content type, view e rules – mario baioli glad (gruppo di lavoro drupal sapienza)

35
Content type, view e rules – Mario Baioli http://www.corsodrupal.uniroma1.it GLAD (gruppo di lavoro drupal Sapienza) Corso Drupal advanced

Upload: letizia-grilli

Post on 01-May-2015

221 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Content type, view e rules – Mario Baioli  GLAD (gruppo di lavoro drupal Sapienza)

Content type, view e rules – Mario Baiolihttp://www.corsodrupal.uniroma1.itGLAD (gruppo di lavoro drupal Sapienza)

Corso Drupal advanced

Page 2: Content type, view e rules – Mario Baioli  GLAD (gruppo di lavoro drupal Sapienza)

Applicazione che gestisce le richieste di assistenza

11/04/23Content type, view e rules - Mario Baioli Pagina 2

Page 3: Content type, view e rules – Mario Baioli  GLAD (gruppo di lavoro drupal Sapienza)

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

11/04/23Content type, view e rules - Mario Baioli Pagina 3

Page 4: Content type, view e rules – Mario Baioli  GLAD (gruppo di lavoro drupal Sapienza)

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.

11/04/23Content type, view e rules - Mario Baioli Pagina 4

Versione Downloads Data

7.x-1.0 http://ftp.drupal.org/files/projects/auto_nodetitle-7.x-1.0.tar.gz 7 giugno 2011

Page 5: Content type, view e rules – Mario Baioli  GLAD (gruppo di lavoro drupal Sapienza)

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.

11/04/23Content type, view e rules - Mario Baioli Pagina 5

Versione Downloads Data

7.x-1.0-beta2 http://ftp.drupal.org/files/projects/field_permissions-7.x-1.0-beta2.tar.gz 25 gennaio 2012

Page 6: Content type, view e rules – Mario Baioli  GLAD (gruppo di lavoro drupal Sapienza)

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.

11/04/23Content type, view e rules - Mario Baioli Pagina 6

Page 7: Content type, view e rules – Mario Baioli  GLAD (gruppo di lavoro drupal Sapienza)

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.

11/04/23Content type, view e rules - Mario Baioli Pagina 7

Page 8: Content type, view e rules – Mario Baioli  GLAD (gruppo di lavoro drupal Sapienza)

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]

11/04/23Content type, view e rules - Mario Baioli Pagina 8

Page 9: Content type, view e rules – Mario Baioli  GLAD (gruppo di lavoro drupal Sapienza)

Content type

Campi per l’utente

• Sede• Luogo• Ambito • Descrizione

Campi per l’amministratore

• Intervento• Stato• Data

11/04/23Content type, view e rules - Mario Baioli Pagina 9

Page 10: Content type, view e rules – Mario Baioli  GLAD (gruppo di lavoro drupal Sapienza)

Campo Sede - tassonomia

Da Struttura:

Tassonomia

Aggiungere un vocabolario con nome: Sede

Inserire alcune voci nel vocabolario. Es. edificio1, edificio2, edificio3, edificio4, ecc.

• Rientrare sul CT Richiesta_assistenza, [gestisci i campi] e seleziona come tipo di campo [riferimento termine] che ha come widget [elenco di selezione]

• Vocabolario: Sede

• Lasciare di default le altre voci

• salvare

11/04/23Content type, view e rules - Mario Baioli Pagina 10

Page 11: Content type, view e rules – Mario Baioli  GLAD (gruppo di lavoro drupal Sapienza)

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)

11/04/23Content type, view e rules - Mario Baioli Pagina 11

Page 12: Content type, view e rules – Mario Baioli  GLAD (gruppo di lavoro drupal Sapienza)

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

11/04/23Content type, view e rules - Mario Baioli Pagina 12

Page 13: Content type, view e rules – Mario Baioli  GLAD (gruppo di lavoro drupal Sapienza)

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

11/04/23Content type, view e rules - Mario Baioli Pagina 13

Page 14: Content type, view e rules – Mario Baioli  GLAD (gruppo di lavoro drupal Sapienza)

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.

11/04/23Content type, view e rules - Mario Baioli Pagina 14

Page 15: Content type, view e rules – Mario Baioli  GLAD (gruppo di lavoro drupal Sapienza)

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.

11/04/23Content type, view e rules - Mario Baioli Pagina 15

Page 16: Content type, view e rules – Mario Baioli  GLAD (gruppo di lavoro drupal Sapienza)

Campo data di chiusura - date

• Per il campo Data di chiusura inizializzare una variabile con tipo [date] con widget [Pop-up calendar]

11/04/23Content type, view e rules - Mario Baioli Pagina 16

Page 17: Content type, view e rules – Mario Baioli  GLAD (gruppo di lavoro drupal Sapienza)

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

11/04/23Content type, view e rules - Mario Baioli Pagina 17

Page 18: Content type, view e rules – Mario Baioli  GLAD (gruppo di lavoro drupal Sapienza)

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 phpif (!$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.)

11/04/23Content type, view e rules - Mario Baioli Pagina 18

Page 19: Content type, view e rules – Mario Baioli  GLAD (gruppo di lavoro drupal Sapienza)

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.

11/04/23Content type, view e rules - Mario Baioli Pagina 19

Page 20: Content type, view e rules – Mario Baioli  GLAD (gruppo di lavoro drupal Sapienza)

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)

11/04/23Content type, view e rules - Mario Baioli Pagina 20

Page 21: Content type, view e rules – Mario Baioli  GLAD (gruppo di lavoro drupal Sapienza)

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)

11/04/23Content type, view e rules - Mario Baioli Pagina 21

Page 22: Content type, view e rules – Mario Baioli  GLAD (gruppo di lavoro drupal Sapienza)

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.

11/04/23Content type, view e rules - Mario Baioli Pagina 22

Page 23: Content type, view e rules – Mario Baioli  GLAD (gruppo di lavoro drupal Sapienza)

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”

11/04/23Content type, view e rules - Mario Baioli Pagina 23

Page 24: Content type, view e rules – Mario Baioli  GLAD (gruppo di lavoro drupal Sapienza)

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.

11/04/23Content type, view e rules - Mario Baioli Pagina 24

Page 25: Content type, view e rules – Mario Baioli  GLAD (gruppo di lavoro drupal Sapienza)

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

11/04/23Content type, view e rules - Mario Baioli Pagina 25

Page 26: Content type, view e rules – Mario Baioli  GLAD (gruppo di lavoro drupal Sapienza)

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

11/04/23Content type, view e rules - Mario Baioli Pagina 26

Page 27: Content type, view e rules – Mario Baioli  GLAD (gruppo di lavoro drupal Sapienza)

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.

11/04/23Content type, view e rules - Mario Baioli Pagina 27

Page 28: Content type, view e rules – Mario Baioli  GLAD (gruppo di lavoro drupal Sapienza)

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.

Dopo aver scaricato il modulo abilitarlo e salvare la configurazione.

11/04/23Content type, view e rules - Mario Baioli Pagina 28

Versione Downloads Data

7.x-2.3 http://ftp.drupal.org/files/projects/rules-7.x-2.3.tar.gz 27 marzo 2013

Page 29: Content type, view e rules – Mario Baioli  GLAD (gruppo di lavoro drupal Sapienza)

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 contenutodal menu data selector: node

Tipi di contenuto: Valore (selezionare il CT)•richiesta assistenza

11/04/23Content type, view e rules - Mario Baioli Pagina 29

Page 30: Content type, view e rules – Mario Baioli  GLAD (gruppo di lavoro drupal Sapienza)

azioni

Azione sending an email•A:

node:author:mail

•Oggetto:

Notifica Apertura Richiesta Assistenza

•From:

non rispondere <[email protected]>

11/04/23Content type, view e rules - Mario Baioli Pagina 30

Page 31: Content type, view e rules – Mario Baioli  GLAD (gruppo di lavoro drupal Sapienza)

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

11/04/23Content type, view e rules - Mario Baioli Pagina 31

Page 32: Content type, view e rules – Mario Baioli  GLAD (gruppo di lavoro drupal Sapienza)

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 contenutodal menu data selector: node

Tipi di contenuto: Valore (selezionare il CT)•richiesta assistenza

11/04/23Content type, view e rules - Mario Baioli Pagina 32

Page 33: Content type, view e rules – Mario Baioli  GLAD (gruppo di lavoro drupal Sapienza)

• 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….

11/04/23Content type, view e rules - Mario Baioli Pagina 33

Page 34: Content type, view e rules – Mario Baioli  GLAD (gruppo di lavoro drupal Sapienza)

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

11/04/23Content type, view e rules - Mario Baioli Pagina 34

Page 35: Content type, view e rules – Mario Baioli  GLAD (gruppo di lavoro drupal Sapienza)

11/04/23Content type, view e rules - Mario Baioli Pagina 35