Web

Strapi : Développer un plugin de versioning pour une gestion de contenu optimisée

by François Demory 29 mai 2024

Dans l’univers dynamique et en constante évolution des technologies web, la gestion efficace et flexible du contenu numérique est devenue une priorité incontournable pour les développeurs et les entreprises cherchant à s’adapter et à prospérer. Strapi, reconnu pour sa nature open-source et sa capacité à offrir des solutions sur mesure, s’est établi comme un acteur clé parmi les systèmes de gestion de contenu (CMS) headless, grâce à sa polyvalence et son adaptabilité aux exigences variées des projets modernes.

Strapi offre un large éventail de fonctionnalités, et permet une flexibilité accrue avec la possibilité de créer des plugins sur-mesure.

Dans le cadre d’un projet sur lequel nous avons travaillé, nous avions besoin d’une fonction de versioning. Nous avons donc développé le plugin History, conçu pour enrichir l’expérience utilisateur en intégrant la capacité de suivre et de gérer les révisions de contenu de manière intuitive et sécurisée.

Headless Experience Conf' - Strapi et l'expérience développeur

Pourquoi un plugin de versioning est essentiel pour Strapi ?

Le développement du plugin History pour Strapi a émergé d’une exigence pratique lorsque nous avons identifié une lacune significative : l’incapacité à consulter l’historique des versions pour un type de contenu donné. Cette fonctionnalité est devenue essentielle pour plusieurs raisons :

  1. Sécurité : La capacité de retracer les modifications et de restaurer les versions précédentes est cruciale en cas d’erreur humaine ou de compromission de données. Dans un environnement numérique où les cybermenaces sont omniprésentes, la possibilité de revenir à une version antérieure peut s’avérer être une bouée de sauvetage.
  2. Conformité : Dans des secteurs hautement réglementés, maintenir un historique détaillé des révisions de contenu est souvent une exigence légale ou réglementaire. Les entreprises doivent souvent démontrer la traçabilité des modifications pour des raisons de conformité aux normes et régulations.
  3. Collaboration : Dans les environnements collaboratifs où plusieurs intervenants modifient le contenu, la capacité de visualiser les changements précédents facilite la collaboration, réduit les malentendus et augmente l’efficacité. Chaque contributeur peut comprendre le contexte des modifications apportées par ses collègues, améliorant ainsi la cohésion de l’équipe et la qualité du contenu final.

Besoin fonctionnel du plugin History pour Strapi

Le développement du plugin History pour Strapi s’appuie sur deux principaux objectifs fonctionnels :

Flexibilité dans l’activation de l’historisation

La possibilité d’activer ou de désactiver sélectivement l’historisation des versions pour différents types de contenu est essentielle. Cette flexibilité laisse, aux gestionnaires de contenu, le choix de concentrer les ressources sur les contenus dynamiques ou sensibles, tels que les articles de blog ou les documents réglementaires. En intégrant cette capacité directement dans l’interface utilisateur de Strapi, le plugin assure une expérience utilisateur transparente, permettant aux administrateurs de facilement activer ou désactiver l’historisation au niveau granulaire de chaque type de contenu.

Consultation et comparaison des versions

Le second objectif majeur du plugin est de faciliter la consultation et la comparaison des différentes versions d’un contenu pour les contributeurs. Cette fonctionnalité vise à rendre le processus de révision et de validation du contenu non seulement plus efficace mais aussi plus intuitif. En autorisant les contributeurs à accéder facilement à l’historique complet des versions d’un contenu et de visualiser les différences spécifiques entre les versions, le plugin History facilite l’identification des modifications, la compréhension des évolutions du contenu et la prise de décisions éclairées concernant les révisions et les approbations. Cette capacité de comparaison détaillée est particulièrement utile dans les environnements de travail collaboratif où plusieurs intervenants apportent des modifications au contenu, car elle aide à prévenir les conflits de versions et à assurer la cohérence et la précision du contenu final.

option plugin strapi versioning

Défis techniques et solutions

Strapi, en tant que CMS headless moderne, offre une grande flexibilité et offre aux développeurs la possibilité de manipuler les contenus via des hooks et des API personnalisés. Cependant, la plateforme n’offre pas nativement un mécanisme pour comparer les états successifs d’un contenu.

Utilisation du Hook `useCMEditViewDataManager`

Nous nous sommes appuyés sur le hook `useCMEditViewDataManager`, un outil fourni par Strapi qui permet d’accéder au layout du type de contenu en cours d’édition. Ce hook a servi de point d’ancrage pour récupérer les structures de données nécessaires à la comparaison des versions. En exploitant cette fonctionnalité, nous pouvons accéder aux informations essentielles concernant le schéma du contenu, y compris ses champs, les types de champs, et les configurations spécifiques qui le définissent.

 

Récupération et comparaison des informations

L’étape suivante consiste à extraire les informations relatives aux composants associés, y compris les zones dynamiques qui permettent la création de structures de contenu flexibles et modulables dans Strapi. Cette récupération d’informations est nécessaire pour comprendre non seulement la structure des contenus mais également la manière dont les différents éléments et composants interagissent au sein de chaque version.

Avec ces informations en main, nous avons développé une logique de comparaison capable de mettre en évidence les différences entre les versions de manière claire et compréhensible. Cette fonctionnalité permet aux utilisateurs de voir précisément ce qui a changé d’une version à l’autre, facilitant ainsi le processus de révision et d’approbation des contenus. La comparaison détaillée aide également à résoudre les conflits potentiels dans les environnements de travail collaboratifs, en fournissant une base solide pour les discussions et les décisions concernant les modifications de contenu.

Mécanique

La mécanique du plugin repose sur un processus simple mais efficace. Lors de l’enregistrement d’une entrée dans un type de contenu, si l’historisation est activée, les informations saisies sont enregistrées dans un type de contenu dédié. Cette approche permet de conserver une trace de toutes les modifications, quel que soit le type de champ concerné. Dès que deux versions ou plus sont disponibles, un bouton de comparaison devient accessible, ouvrant une fenêtre modale qui permet aux utilisateurs de visualiser clairement les différences entre les versions. Un menu déroulant facilite la sélection des versions à comparer, rendant l’outil à la fois puissant et facile à utiliser.

Utilisation de l’EventHub de Strapi

L’EventHub de Strapi constitue une composante essentielle de sa flexibilité et de sa puissance, permettant une réactivité sans précédent face aux actions sur les contenus. En exploitant cet EventHub, le plugin History se branche sur des événements vitaux tels que `entry.create`, `entry.update`, et `entry.delete` pour activer une gestion réactive et automatisée des historiques de versions. Cette fonctionnalité clé assure une adaptation immédiate aux changements, jouant un rôle crucial dans la sécurisation des contenus, le maintien de la conformité, et la facilitation de la collaboration.

Installation et configuration du plugin History

Installation

L’installation du plugin History suit le processus standard des plugins Strapi, ce qui garantit une intégration transparente dans l’écosystème existant de la plateforme. Les utilisateurs doivent simplement activer le plugin dans le fichier de configuration `config/plugin.js` de Strapi, ce qui permet une mise en place rapide et sans complication.

Configuration

Bien que le plugin History ne nécessite pas de configuration spécifique, il offre néanmoins une flexibilité appréciable :

Les utilisateurs peuvent activer ou désactiver l’historisation des versions par type de contenu directement depuis la section settings de Strapi. Cette fonctionnalité assure que seuls les contenus nécessitant un suivi des versions soient concernés, optimisant ainsi les ressources et la performance.

Il est possible de définir le nombre de versions à conserver par type de contenu. Cela offre un équilibre entre la nécessité de conserver un historique complet et la gestion de l’espace de stockage de la base de données.
Les utilisateurs peuvent choisir de limiter le nombre de versions conservées pour éviter une surcharge de la base de données ou, à l’inverse, de ne poser aucune limite pour garder un historique complet de toutes les modifications.

general settings plugin strapi versioning

 

Le plugin History pour Strapi enrichit significativement la plateforme en termes de capacités de gestion de contenu

En offrant une solution aux défis de révision et de collaboration de contenu, ce plugin facilite les workflows des développeurs et des gestionnaires de contenu, permettant une gestion plus efficace et sécurisée des projets numériques.

Cette innovation reflète la capacité de Strapi à s’adapter et à répondre de manière proactive aux retours et aux besoins de sa base d’utilisateurs. Le plugin History témoigne de l’importance de l’écoute et de la collaboration au sein des écosystèmes open-source pour le développement de solutions innovantes et pertinentes.

François Demory

François Demory

Développeur Frontend

En tant que développeur Frontend passionné par l'écosystème JavaScript, je m'engage à créer des solutions innovantes et efficaces pour répondre aux besoins de nos clients. Travaillant étroitement avec eux, je m'assure que chaque projet reflète leurs objectifs et offre une expérience utilisateur optimale. Mes outils de prédilection incluent React.js, Vue.js, Next.js et Nuxt.js, qui me permettent de développer des applications web performantes et évolutives.

Commentaires

Ajouter un commentaire

Votre commentaire sera modéré par nos administrateurs

Vous avez un projet ? Nos équipes répondent à vos questions

Contactez-nous