un vrai manque de Drupal : travailler avec des rédacteurs et des éditeurs

Information importante

En raison d'un grand nombre d'inscriptions de spammers sur notre site, polluant sans relache notre forum, nous suspendons la création de compte via le formulaire de "sign up".

Il est néanmoins toujours possible de devenir adhérent•e en faisant la demande sur cette page, rubrique "Inscription" : https://www.drupal.fr/contact


De plus, le forum est désormais "interdit en écriture". Il n'est plus autorisé d'y écrire un sujet/billet/commentaire.

Pour contacter la communauté, merci de rejoindre le slack "drupalfrance".

Si vous voulez contacter le bureau de l'association, utilisez le formulaire disponible ici, ou envoyez-nous un DM sur twitter.

Ca fait maintenant quelques mois que je découvre Drupal, j'étais très séduit mais là je dois avouer que je commence à être refroidi.
Il y a un vrai manque et je n'arrive à trouver aucun tutoriel alors que ça me semble être le b-a-ba :

Je veux avoir 2 rôles : les rédacteurs et les éditeurs
Les rédacteurs peuvent créer du contenu mais pas le publier.
Ils peuvent créer leur propre contenu
modifier ou supprimer leur contenu s'il n'a pas encore été publié
Sinon, ils peuvent proposer une révision de leur contenu s'il a déjà été publié
Ils peuvent aussi proposer un révision du contenu des autres
Une fois qu'ils ont enregistré qc, une notification est envoyée aux éditeurs

Les éditeurs eux, valident le contenu des rédacteurs.
Ils peuvent publier le contenu, accepter ou rejeter les révisions.
Et également modifier, supprimer du contenu.

Mais en aucun cas, les éditeurs ne doivent être des administrateurs de noeuds.

Mais voilà :
- dans Drupal, seuls les administrateurs de noeuds peuvent voir la liste des contenus (admin/content/node) ce qui est complètement idiot: en effet, on peut cocher le droit "edit any page content" et pour autant ne pas avoir accès à admin/content/node. Par contre, quand on est administrateur de noeuds, on a d'office le droit de tout modifier.
- il n'y a pas de droit "créer une révision"
- il n'y a pas de réel workflow de publication avec le module workflow car même en créant un statut personnalisé "publié", le fait de changer l'état de publication de base de Drupal ne changera pas l'état "publié" du workflow.

En fait, ce que je trouve bizarre, c'est que ces manques ne sont pas soulignés alors qu'ils me paraissent vraiment essentiels.

Si qn a réussi à mettre en place ce que je souhaite merci de son aide.

Effectivement le problème d'admin/content/node est connu et en cours de résolution pour Drupal 7.x.

En attendant, même si c'est limité aux contenus de l'utilisateur lui-même, le module workspace est déjà un moyen d'améliorer la gestion par le contributeur de ses propres contenus.

Concernant workflow as tu vraiment regardé en détail ? tu dois pouvoir faire ce que tu souhaites. (au passage, j'ai posté la traduction française ici).

N'oublie pas d'activer aussi Workflow access qui te permettra, pour chaque statut du contenu de définir qui peut voir et qui peut éditer le contenu à une étape donnée du flux de publication. Si tu as besoin active aussi Workflow Fields qui permet un contrôle fin au niveau du champ lui-même.

Ensuite, la petite "astuce" qu'il faut garder en tête, c'est de modifier chaque type de contenu de manière à ce que le contenu ne soit pas publié lors de la création du contenu. Autrement dit du édite ton type de contenu, tu règle dans "Procédure de publication" :

Publié
Promu en page d'accueil
Epinglé en haut des listes
Créer une révision x

Tu ne coches que créer une révision.

Deuxième chose : tu dois définir plusieurs statuts dans ton workflow, sinon le module ne sert pas à grand chose. En effet, la valeur ajoutée du module, en dehors du fait que tu peux contrôler les accès aux différents stades, c'est que tu peux définir des actions à effectuer par le système entre deux statuts.

Par exemple dans mon cas, les status que j'ai créé sont : brouillon, en attente, publié, archivé, poubelle.

Avec le liens "Actions" tu peux définir les actions à effectuer par le système via les déclencheurs Drupal. Par exemple, pour le passage de brouillon à en attente j'ai défini :

Déclencheur : Quand article passe de flux de publication par défaut: (création) à flux de publication par défaut: brouillon

Enregistrer le contenu
Affecter le statut Brouillon au contenu

Pour que les actions du module workflow soient activés par contre il faut aller dans admin/settings/actions et "Rendre une nouvelle action avancée disponible" (tout en bas de la page).

Ensuite avec la combinaison des droits d'accès et des actions tu dois pouvoir obtenir ce que tu veux :)

Merci beaucoup pour ton aide !
Je vais essayer de m'en sortir avec tes explications.
Je risque de revenir vers toi ;-)
Par contre, je ne trouve pas ton fichier de traduction en suivant ton lien. Me suis trompé quelque part ?

En fait, voilà ce que je ne comprends pas :
J'ai créé un état "non publié" (l'équivalent de ton état brouillon je suppose)
J'ai ensuite créé un état "publié".
Apparemment, toute nouvelle contribution passe automatiquement de l'état "(création)" à l'état "non publié". C'est ce que je veux, donc tant mieux, mais est ce normal que ce soit automatique ? Je veux dire, à quoi sert l'état "(création)" ?
Mon problème c'est que les états "non publié" et "publié" que j'ai créés doivent toujours être synchronisés avec l'état de publication réel du nœud. Et c'est là que je trouve que c'est "mal fait" : il y a d'un côté l'état "abstrait" de publication créé avec le workflow et l'état "concret" de publication du nœud géré par Drupal. Dommage que les 2 ne puissent pas faire qu'un.
Donc le problème va être de gérer cette synchronisation.
Ensuite, j'ai un problème d'accès : impossible d'autoriser un rédacteur/validateur à voir les contenus non publiés des autres rédacteurs. J'ai l'impression qu'avec Drupal, seul un administrateur peut voir les contenus non publiés des autres.
J'ai peut-être mal paramétré quelque chose, je ne sais pas. Mais cela est-il possible ?
Merci de ton aide.

Pardon j'avais posté la trad à deux endroits, j'en ai supprimé une et c'était pas la bonne. C'est rétabli !

L'état (création) est un état par défaut nécessaire j'imagine pour le bon fonctionnement de Drupal si tu installe le module sans définir aucun état.

Pour la "synchronisation" non ça ne doit pas poser de problème si tu procèdes comme j'ai décrit plus haut : non publié par défaut et gestion du passage de non publié à publié via les actions associés aux transitions. Les actions sont la clé qui te permet via les déclencheurs de modifier l'état de publication lors de telle ou telle transition. Une fois que tu as compris ça, tu fais ce que tu veux, que ce soit publier, créer une révision, dépublier ou supprimer un contenu via le workflow.

Pour les droits, normalement ça devrait fonctionner mais il faut que je poursuive mes tests. Je te dirai ça une fois que j'aurai fini.

Et puis j'aimerais pouvoir forcer les rédacteurs à créer une révision lorsqu'ils tentent de modifier un contenu déjà publié. Et là c'est pareil, il n'existe pas ce genre de droits par défaut, je crois. Arg :-D !

Si tu dois avoir raison, je viens de remarquer ça :-)

Sinon, pour l'état de publication de Drupal qui pose problème en empêchant les autres rédacteurs de voir le contenu non publié, j'ai l'impression que la seule solution est :
- lorsqu'un noeud est créé, on force la publication par défaut de Drupal dans tous les cas
- on gère ensuite un 2e état supplémentaire de publication (en passant par workflow) qui permette de décider si le contenu est effectivement rendu accessible aux utilisateurs anonymes ou seulement aux rédacteurs/publieurs.

J'aime pas ce genre de contournements mais je ne vois pas comment faire autrement, à moins d'écrire un module qui ajoute le droit "accéder au contenu non publié" mais je suis encore trop débutant pour savoir faire ça !

Non définir le statut sur publié par défaut n'est pas la solution...

Tu as bien activé le module Workflow access ? Normalement c'est lui qui va définir la visibilité par tel ou tel rôle. Il faut que tu ailles dans admin/build/workflow/ et que tu cliques sur "modifier" pour chaque statut et là tu peux normalement déterminer quel rôle peut voir et/ou éditer quel type de contenu.

Alors voilà ce que je fais :
je vais à admin/build/workflow/edit/1 (1 doit être l'id de mon workflow)
Là effectivement, tout en bas, il y a :

Access control

"non publié"
Roles who can view posts in this state :
utilisateur anonyme
utilisateur identifié
publieur X
rédacteur X
author X

Donc tout est bien paramétré, non ?
Pourtant comme je l'ai écrit plus haut, un publieur ne peut toujours pas accéder à un contenu rédigé par un rédacteur si ce contenu n'est pas publié (je parle de l'état de publication réel géré par Drupal), même si le statut de workflow est bien "non publié" et que les rédacteurs ont normalement le droit de voir un contenu dans cet état.
Donc en fait il semble que le statut de workflow n'ait pas la priorité sur l'état de publication géré par Drupal. Ca ressemble à un bug ça...

Si toi tu y arrives, dis moi comment tu fais merci :-)

Ca me semble être bon, oui. Tu as peut-être mis le doigt sur quelque chose... je vais regarder ça quand j'aurai un peu de temps. Et me mettre en quête d'une solution car ce serait effectivement gênant si c'est confirmé...

Intéressant (merci pour le lien !), et très embêtant pour le bon fonctionnement du module workflow si l'approbateur ne doit pas disposer d'administer node :-\

Vu le profil de Dave et les modules qu'il a créé, je dirai qu'on peut avoir confiance en sa solution. Maintenant il faut vérifier à quelle version elle s'applique et s'il y a eu des avancées entre temps.

J'ai déjà trouvé un patch récent mais qui concerne le module revision moderation :
http://drupal.org/node/174900

Il existe des modules qui permettent de ne pas donner tous les droits liés à la permission "administer nodes" : notamment Override Node Options ou Publish Content. Il y a également moyen de créer un workflow avec un champ cck et le module Rules ; mais peut-être le moyen suggéré par davidm est-il plus simple.

Non ma solution ne fonctionne pas à cause d'un problème du module Workflow... ça devrait mais ça ne marche pas :(

Je suis en train d'enquêter un peu plus loin pour voir s'il n'y a pas un patch mais je regarderai ces deux modules que je ne connaissai pas... merci !

J'ai déjà essayé les 2 modules précédents :
node override ne règle pas le problème d'accès aux noeuds non publiés (ils restent inaccessibles)
publish content le permet mais il y a des problèmes (j'ai un peu oublié quoi)
Enfin il faut encore faire des essais, c'est pas gagné.
Le mieux serait de corriger workflow...

Sans doute la meilleure approche c'est vrai... par contre le fait que cela ait été relevé il y a plus d'un an et pas encore patché n'est pas encourageant pour que cette piste soit probable :-\

Oui je suis en train d'essayer revision_moderation mais c'est une version alpha...

Ce que je trouve bizarre, c'est qu'il n'y a aucun vrai tutoriel sur comment gérer ce que je veux faire. On dirait que je suis le 1er à vouloir faire ça :-D alors que c'est super classique comme demande.
Jamais je n'aurais imaginé qu'il soit si compliqué de mettre en place un système de rédacteur-publieur avec révisions : si je m'en sors, je tâcherai d'écrire un tutoriel.

non, tu n'es pas le premier, fais une recherche dans les archives des forums. Le problème, c'est que les informations données il y a un an peuvent être déjà complètement obsolètes ; l'autre problème à faire un tutoriel, c'est que chaque besoin est différent. Moi par exemple, j'ai un peu le même besoin, mais je voudrais cloisonner les permissions (un "modérateur" donné ne peut gérer les contenus que de tel ou tel rédacteur, nommément désigné). Bon, ben ça je n'y arrive pas (pour le moment, ne désespérons pas).

Intéresse-toi éventuellement à la galaxie Organic Groups.

Bonjour,

Désolé de remonter une discussion vieille d'un an, mais en lisant cette conversation je me suis rendu compte que j'avais à peu près le même besoin que Marie-Hélène.

A savoir qu'un "expert" ne peut avoir accès aux droits d'édition et publication sur le contenu produit par un "rédacteur" qu'en fonction d'un champ (Content Taxonomy) "domaine d'expertise" présent dans les contenus Article et Profil(un Content Profile).

Auriez-vous des idées, des tutoriaux, des solutions à proposer ?

Merci d'avance

Le soucis de OG (que je ne connais pas vraiment) est, je pense, qu'il rentre les rédacteurs dans des cases trop rigides.

Je m'explique : un Rédacteur peut proposer un Article qui peut toucher à n'importe quel "domaine d'expertise", en indiquant qu'il se réfère à ce champ d'expertise par le biais d'un champ CCK.

Je voudrais que seul le (ou les) experts de ce "domaine d'expertise" bien précis, soi(en)t prévenu(s) par mail et décide(nt) ou non de la publication.

Le problème de OG (vu de loin) est qu'il rentre les Rédacteurs dans un champ d'expertise unique.

Qu'en penses-tu ?

Merci pour vos réponses !

En effet Revisionning me semble être un module tout à fait intéressant pour ce genre de problématique, et en plus il utilise aussi TAC à ce que dit la page de présentation du module.

Mais je me pose encore une petite question...

J'ai déjà géré le workflow d'autres types de contenu avec Workflow/Actions/Trigger et le module Action email role pour envoyer des mails uniquement aux utilisateurs ayant un certain rôle. Il ne me reste plus qu'à dispatcher les mails en fonction du "domaine d'expertise" de l'article et de l'expert.

Ne serait-il pas mieux, pour ne pas trop alourdir les performances avec Revisionning (qui semble couteux en ressources), de modifier un peu le module Action email role en ajoutant une condition à l'envoi de mail pour les utilisateurs du type "expert" ?

Je sais que ce n'est pas top au niveau de la généralisation du code, et que cela empêchera de futures mises à jours, mais peut-être plus efficace dans ce cas...

Qu'en pensez-vous ?