Mettre en place un processus de publication sur Drupal 8

Zoom sur une machine à écrire

Drupal 8 dispose dans son coeur depuis sa version 8.3 des modules expérimentaux Content Moderation et Workflows permettant de mettre en place un processus de publication évolué. Mais conformément à la politique des modules expérimentaux, ces modules peuvent évoluer structurellement durant la phase alpha sans proposer de chemins de mises à jour. Il peut être risqué de baser son projet sur ces modules, sans une solide connaissance de Drupal 8, un suivi régulier de ces modules, et les ressources en temps et en compétences nécessaires pour adapter si besoin votre projet aux évolutions de ces modules expérimentaux qui peuvent changer d'API sans assurer de rétrocompatibilité durant le passage entre deux versions mineures.

Bref, à utiliser à vos risques et périls, sans aucune garantie, comme le dit le message lorsqu'on installe ces modules. A noter toutefois que ces modules rentreront en phase bêta dès la version 8.4 du coeur de Drupal, et à ce titre seront désormais maintenus en assurant une retro-compatibilité ou à tout le moins un chemin d'upgrade.

Le module workflows couplé au module Content Moderation propose une solution complète, disponible (modulo quelques bugs critiques surtout si votre site est multilingue, cf. Forward revisions + translation UI can result in forked draft revisions), pour mettre en place un processus de publication. Découvrons les grands principes de fonctionnement de ces deux modules, somme toute très proche au demeurant de Workbench Moderation sur Drupal 7. Pour qui a déjà utilisé cette solution, il ne sera pas dépaysé.

Configuration des différents états et leurs transitions

Une fois installés les modules Workflows et Content moderation, nous disposons par défaut de quelques états standards d'un processus de publication éditorial. Nous pouvons créer autant de processus de publication que nécessaire et les configurer autant que de besoin.

Editorial workflow

L'ergonomie a été repensée pour disposer d'une vue d'ensemble à la fois des états et de leur différentes transitions

Configuration du processus de publication

Ici, nous avons rajouté un état supplémentaire Need technical review aux processus créés par défaut, et deux transitions Send to technical review and Validate and publish.

Les différents états d'un processus de publication peuvent être caractérisés par deux propriétés majeures

  • Publié : quand un contenu atteint cet état, il est publié. Cet propriété implique que le contenu dans cet état devienne alors également la révision par défaut.
  • Revision par défaut : quand un contenu atteint cet état, alors il devient la révision par défaut. Cela peut être particulièrement utile si on souhaite que le contenu soit dépublié lorsqu'il atteint cet état. Le cas typique d'usage est l'état Archivé, qui peut alors servir à dépublier un contenu. 

Créer un état de workflow

Ainsi il est possible de disposer d'une version en ligne, publiée, d'un contenu, tandis que nous pouvons travailler et modifier une version plus récente du contenu, mais non encore publiée, et qui pourra être revue et amendée avant d'être validée pour devenir la nouvelle version publiée (la revision par défaut du contenu).

Pour résumer :

  • Un état type Publié, permet de publier un contenu et sera toujours également la revision par défaut. Donc la révision consultable en ligne par les visiteurs
  • Un état type Révision par défaut permet de positionner la dernière révision (la plus récente) d'un contenu comme étant la version par défaut, donc celle consultable par les visiteurs (ou pas si le contenu n'est pas publié). L'exemple typique est l'état Archivé.
  • Si un état est configuré sans aucune de ces deux options activées, alors cet état permettra de caractériser un contenu en cours de modification, contenu qui ne sera pas encore la version par défaut, laissant la dernière version par défaut toujours en ligne et consultable.

Workflow état archivé

Il restera alors à affiner les droits d'accès sur chaque transition qui aura été configuré, permettant une grande granularité sur les droits de publication, de revue, de modification d'un contenu.

Permissions sur les transitions d'un workflow de publication

Activer un processus de publication 

Pour activer un processus de publication sur un type de contenu, rien de plus simple. Il suffit de se rendre sur le type de contenu en question, et dans l'onglet "Gérer les modérations", de sélectionner le processus de publication créé et d'enregistrer la configuration.

Activer un processus de publication

Nous pouvons alors créer un article, et nous disposons des différents transitions configurées dans le processus éditorial configuré.

Workflow transitions

Les contenus soumis au processus de publication disposent alors d'un onglet "Dernière revision" permettant de gérer une nouvelle version d'un contenu déjà en ligne, ainsi que d'un formulaire disponible pour rapidement changer le statut de cette révision sans devoir passer forcément par la case Modification.

Dernière révision d'un contenu soumis au processus de publication

Tandis que la version par défaut du contenu est toujours en ligne et publiée.

La version par défaut d'un contenu soumis au processus de publication

 

Conclusion

La création d'un processus de publication sur Drupal 8, comme nous avons pu le voir, est accessible en quelques clics. A noter qu'un type de contenu ne peut disposer que d'une seul processus de publication. Il reste bien entendu encore quelques enrichissements en attente, pour gérer par exemple les notifications par email, mais ceux-ci seront très bientôt couverts par des modules contribués qui viendront compléter le coeur du processus de publication.

Bien qu'expérimentaux, ces deux modules proposent une solution déjà opérationnelle, utilisable maintenant avec la version 8.3.2 de Drupal. Ils ne devraient plus subir de changements d'API, ceux étant rentré en phase bêta. Et même si cela était le cas, un chemin d'upgrade serait alors mis à disposition. Une solution opérationnelle modulo un bug critique, en cours d'analyse et de traitement, déjà mentionné plus haut, si vous souhaitez mettre en place une telle solution sur un site multilingue.

Nous disposons aussi d'autres solutions pour mettre en place un processus de publication. Notamment le module State Machine qui est utilisé par Drupal Commerce 2.x pour gérer les différents états de ses entités (les états des commandes, des paiements, des livraisons, etc.). Il permet de déclarer autant d'états que nécessaires et de définir des transitions entre ces états. Autrement dit, State Machine et Workflows sont extrêmement proches en termes de couverture fonctionnelle. Ce qui les distingue est avant tout leur approche. Workflows a une approche site builder, permettant de créer les états et leurs transitions, depuis une interface en quelques clics, tandis que State Machine a une approche développeur, les états et leurs transitions sont à créer manuellement au sein d'un fichier de configuration YAML. State Machine peut s'avérer une solution intéressante pour qui n'a pas besoin de gérer différentes révisions tout en conservant la dernière version par défaut en ligne (même si cela est réalisable, mais il ne s'agirait pas de re-developper Content Moderation...), ou encore a besoin de différents processus (techniques, éditorial, juridique, etc) découplés pour un même type de contenu, voire de développer rapidement des logiques métiers, avec l'aide d'un développeur Drupal 8, en fonction des différents états et transitions définis avec State Machine.

Mais ceci pourra faire l'objet d'un prochain billet.

 

Ajouter un commentaire