Problema: gli articoli creati/modificati dagli utenti devono essere approvati da un editor prima di essere pubblicati.
Come spesso accade Drupal permette di ottenere lo stesso risultato seguendo approcci e soluzioni diverse; in questo caso integriamo il modulo workflow con il sistema di revisione dei contenuti e le azioni di Drupal.
Soluzione:
l'autore crea o modifica un contenuto; può salvarlo come bozza (impostandone lo stato = bozza), oppure inviarlo per revisione (stato = revisione). il contenuto non viene pubblicato.
Quando lo stato di un contenuto è impostato come revisione, l'editor viene avvertito con una email e allo stesso tempo l'autore non ha più il permesso di modificarne il contenuto.
L'editor rivede il contenuto e se lo reputa idoneo, lo pubblica (stato = approvato), altrimenti lo rimanda per revisione all'autore (stato = bozza) ed il ciclo ricomincia. In entrambi i casi l'autore può essere avvertito con una email.
Il flusso di lavoro si può schematizzare più o meno così:
PASSAGGIO DI STATO AUTORE TRIGGER EDITOR
(permessi) (email) (permessi)
--------------------------------------------------------------
(creazione)->bozza X
bozza->revisione X "avverti editor"->
<-"avverti autore"
revisione->bozza <-"richiedi revisione" X
revisione->approvato <-"conferma autore" X
--------------------------------------------------------------
Supponiamo che si voglia applicare questo workflow al tipo di contenuto story:
A questo punto, quando il ruolo "autore" crea una story dovrebbe poter impostare lo stato di BOZZA o REVISIONE, mentre il ruolo "editor" ha in aggiunta una opzione APPROVATO
*) NOTA: in alcuni casi il placeholder %author non funziona, probabilmente perchè il modulo trigger viene chiamato troppo presto. La soluzione (non sempre) può essere di aumentare il peso (weight) del modulo trigger (ad esempio da "0" a "2") nella tabella {system} del database.
Un'altra possibilità è usare l'azione avanzata "send a tokenized email" fornita dai moduli token e token_actions:
- abilitare i moduli token e token_ actions (incluso in token)
- andare su admin/settings/actions
- nel form "Rendi disponibile una nuova azione avanzata", scegliere "Send tokenized e-mail"
- nel campo "Destinatario" della nuova azione creata, scrivere il token [author-mail]
- configurare e sostituire due azioni di questo tipo a quelle impostate per "richiedi revisione" e "avverti autore"
NOTA: questo workflow ha un limite importante: una volta che un contenuto è stato pubblicato gli autori non possono più modificarlo (o possono modificarlo live in base ai permessi). i moduli revisioning+module_grants possono essere aggiunti a questo workflow permettendo la modifica "in revisione" dei contenuti, ovvero l'autore può modificare un contenuto pubblicato ma solo creando una nuova revisione che verrà pubblicata (e sostituirà la vecchia versione) solo dopo l'approvazione dell'editor. Questi moduli permettono anche configurazioni molto più complesse di questa.
Alcuni altri moduli per la moderazione dei contenuti:
http://drupal.org/project/content_moderation
http://drupal.org/project/revision_moderation
http://drupal.org/project/modr8
http://drupal.org/project/publishcontent
http://drupal.org/project/comment_moderation
Bonus: http://drupal.org/project/diff