Howto: configurazione del modulo workflow per la moderazione del contenuto creato dagli utenti

19 contenuti / 0 new
Ultimo contenuto
Howto: configurazione del modulo workflow per la moderazione del contenuto creato dagli utenti

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:

  1. creare 2 ruoli: editor (permesso:administer nodes) e autore (permessi: crea story e modifica own story)
  2. Contenuto->content types->story->edit (/admin/content/node-type/story): "workflow settings"->togliere la spunta a "pubblicato"; salvare
  3. Attivare il modulo "trigger" (core - optional)
  4. Configurazione del sito->Azioni (/admin/settings/actions)->"crea una nuova azione avanzata"->"invia una email"
    • Descrizione: "avverti editor" (avverte l'editor che è stato creato nuovo contenuto)
    • Destinatario: inserire indirizzo email dell'editor
    • Definire oggetto e corpo dell'email ricordando che è possibile usare i seguenti placeholders:
      • %username = nome utente dell'autore
      • %node_type = tipo di contenuto
      • %title = campo titolo del contenuto
      • %site_name = nome del sito
      • %node = full node e %teaser = teaser
  5. ->"crea una nuova azione avanzata"->"invia una email"
    • Descrizione: "avverti autore" (avverte l'autore che il suo contenuto è in fase di moderazione)
    • Destinatario: inserire indirizzo email dell'autore utilizzando il placeholder %author*
    • Definire oggetto e corpo dell'email come già descritto
  6. ->"crea una nuova azione avanzata"->"invia una email"
    • Descrizione: "richiedi revisione" (avverte l'autore che il suo contenuto deve essere rivisto)
    • Destinatario: inserire indirizzo email dell'autore utilizzando il placeholder %author*
    • Definire oggetto e corpo dell'email
  7. volendo si può aggiungere un'ulteriore azione "conferma autore" per segnalare all'autore che il suo contenuto è stato pubblicato
  8. Attivare il modulo workflow
  9. Site building->workflow (/admin/build/workflow) -> Creare un nuovo workflow ed applicarlo al content type story
  10. Creare gli stati BOZZA, REVISIONE, APPROVATO all'interno del nuovo workflow ed assegnare i permessi per i passaggi da uno stato all'altro secondo la tabella in alto
  11. Site building->workflow->actions (/admin/build/workflow/actions); assegnare le azioni ai rispettivi triggers (vedi anche tabella):
    • da (creazione) a BOZZA-> nessuna azione
    • da (creazione) a REVISIONE-> "avverti editor" (e "avverti autore")
    • da BOZZA a REVISIONE-> "avverti editor" (e "avverti autore")
    • da REVISIONE a BOZZA-> "richiedi revisione"
    • da REVISIONE a APPROVATO-> "conferma autore", "pubblica contenuto" e "salva contenuto"

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

Scusa il ritardo...
allora la patch non l'avevo applicata a workflow, ma ad un modulo del core!
POi devo aver cancellato il patch con un upgrade ad una versione successiva.
Insomma, che io sappia non c'è una patch che risolva il problema di %author.
Penso che il fatto che a me funzioni (su 2 macchine e sistemi diversi) e che non ci sia molto su d.o, siano entrambe indicazioni che forse hai qualche problema nella tua installazione.
Dovresti provare a riprodurre il tutto in locale con un'installazione di drupal con solo i moduli essenziali.

ma...l'email è arrivata a destinazione?

Ciao, anche io ho seguito tutto il vostro 3d, che ho trovato molto interessante, e purtroppo ho incontrato lo stesso problema.
Mi arriva una mail di

failure notice

da

MAILER-DAEMON@webxxxxxxx.ad.aruba.it

in cui mi dice che il sistema non è riuscito a inviare la mail a %author.
vi posto letteralmente il testo della mail:

Hi. This is the qmail-send program at webxxxxxxx.ad.aruba.it.
I'm afraid I wasn't able to deliver your message to the following addresses.
This is a permanent error; I've given up. Sorry it didn't work out.
<%[email protected]>:
Sorry, no mailbox here by that name. (#5.1.1)
--- Below this line is a copy of the message.
...

Avete novità su come risolvere questo problema?

lukkio wrote:
MAILER-DAEMON@webxxxxxxx.ad.aruba.it

in cui mi dice che il sistema non è riuscito a inviare la mail a %author.
vi posto letteralmente il testo della mail:

Hi. This is the qmail-send program at webxxxxxxx.ad.aruba.it.
I'm afraid I wasn't able to deliver your message to the following addresses.
This is a permanent error; I've given up. Sorry it didn't work out.
<%[email protected]>:
Sorry, no mailbox here by that name. (#5.1.1)
--- Below this line is a copy of the message.
...

Avete novità su come risolvere questo problema?

Per risolvere il problema devi inserire una mail valida, reale.
Qmail ti sta dicendo che nell'host di destinazione l'indirizzo email <%[email protected]> non esiste.

ma il problema è che l'autore è una variabile dinamica, non è sempre una stessa persona per tutti i post inseriti nel sito.
non c'è solo un iscritto al mio sito, ma ce ne sono "n".
dunque come faccio a dirgli che indirizzo ha l'autore?

se metto un indirizzo mail valido reale tipo "[email protected]", tutte le mail generate dal sistema, arriveranno sempre a "pippo" e non arriveranno ciascuuna al proprio destinatario.
cioè, non posso mettere una mail statica valida reale, perchè l'autore è dinamico.
capito?

ciao lukkio ho provato anche io il tutorial e il modulo perchè per curiosità e poi a breve servrà anche a me.
ti dico che ho lo stesso problema ma sto cercando di capire cosa è che non va.
in poche parole con un email reale va tutto liscio, se provo con il token %author è come se provasse ad inviare l'email a un indirizzo email statico senza tener conto del token.
non so se il problema è del modulo token, di workflow o magari abbiamo entrambi qualche cosa sul server che non va.
cercherò di capirlo se ci riesco ti dico

ok. grande, se ci sono novità sarò tutt'orecchie.

in alcuni casi %author non funziona perchè trigger viene chiamato troppo presto. La soluzione (non sempre) può essere aumentare il peso del modulo trigger (tipo da "0" a "10") nella tabella del database.
Un'altra possibilità è usare l'azione avanzata "send a tokenized email" abilitando i moduli token e token actions (vedi commento #13). quest'ultima, che io sappia dovrebbe funzionare.

direi di chiedere a Bhoz di dare una revisionata alla guida raccogliendo le cose uili dei commenti e la discussione avvenuta di seguito, così che possa essere inserita ufficialmente nella guida.

Cancellerò i commenti superflui per dare maggiore risalto alla guida.

Grazie a tutti!!

Slice2Theme Servizio per la conversione di Design in markup HTML e/o temi.

WeBrain Solution | Pillsofbits Of Bits

Si, funziona, con una TOKENIZED EMAIL funziona.
grandioso.

Se può servire per la guida, metto una breve descrizione a modo mio dell'operazione da fare (ma non sono molto bravo a spiegare le cose):

- abilitare il modulo "Token actions"
- andare su settings/actions
- nel form "Rendi disponibile una nuova azione avanzata", scegliere "Send tokenized e-mail" e fare "Crea"
- nel campo "Destinatario" della nuova azione creata, scrivere il token "[author-mail]"

grazie a tutti.

Il pulsante modifica si trova affianco al titolo
LOL :DD

grazie!

lukkio wrote:
Si, funziona, con una TOKENIZED EMAIL funziona.
grandioso.

Se può servire per la guida, metto una breve descrizione a modo mio dell'operazione da fare (ma non sono molto bravo a spiegare le cose):

- abilitare il modulo "Token actions"
- andare su settings/actions
- nel form "Rendi disponibile una nuova azione avanzata", scegliere "Send tokenized e-mail" e fare "Crea"
- nel campo "Destinatario" della nuova azione creata, scrivere il token "[author-mail]"

grazie a tutti.

lukkio giusto per capire anche io che intanto stavo cercando di pelare altre gatte!! :)
hai attivato token action, poi hai creato la nuova action "send tokenized email" e nel destinatario hai inseito author-mail.
ma qui non ho capito, dopo nel workflow hai modificato %author con author-mail o hai lasciato sempre %author?

<a href="mailto:[email protected]" rel="nofollow">[email protected]</a> wrote:
Il pulsante modifica si trova affianco al titolo
LOL :DD

grazie!


ci ho messo mesi anche io a trovarlo :D

Slice2Theme Servizio per la conversione di Design in markup HTML e/o temi.

WeBrain Solution | Pillsofbits Of Bits

@all: ho modificato il post originale per integrare quanto venuto fuori dalla discussione e preparare l'articolo per l'inserimento nella documentazione.
Correzioni e suggerimenti sono benvenuti. ;)

<a href="mailto:[email protected]" rel="nofollow">[email protected]</a> wrote:
@all: ho modificato il post originale per integrare quanto venuto fuori dalla discussione e preparare l'articolo per l'inserimento nella documentazione.
Correzioni e suggerimenti sono benvenuti. ;)

benissimo! Grazie del tuo tempo!

Mi prendo " il premesso" di elminare commenti superflui in vista dell'inserimento nella documentazione...
Quindi non offendetevi si vi cancello il commento... :D

Slice2Theme Servizio per la conversione di Design in markup HTML e/o temi.

WeBrain Solution | Pillsofbits Of Bits

azz wrote:
lukkio giusto per capire anche io che intanto stavo cercando di pelare altre gatte!! :)
hai attivato token action, poi hai creato la nuova action "send tokenized email" e nel destinatario hai inseito author-mail.
ma qui non ho capito, dopo nel workflow hai modificato %author con author-mail o hai lasciato sempre %author?

Aspè, in che senso se ho modificato "nel workflow"?
Solo nelle Actions puoi compilare dei campi di testo; nel workflow che mi risulti si spuntano solo dei checkbox o radiobutton.

prima dell'attivazione del modulo token actions dove hai inserito il token %author, dopo la modifica hai sostituito %author con author-mail?