Une contribution Drupal : le module Simple Petition Node - Drupal 8

petition-module-drupal-8
Dans le cadre d’une refonte du site www.cgt.fr avec Drupal 8, il a été demandé la mise en place d’une fonctionnalité de gestion de pétitions.

Le module contribué Poll ne répondant que partiellement à la demande, nous avons développé le module Simple Petition Node pour couvrir le besoin. Dans ce post, nous vous expliquons l’intérêt de ce module, dorénavant disponible pour la communauté Drupal !

Contexte 

La refonte du site www.cgt.fr avec Drupal 8 a nécessité la mise à disposition d’un module permettant la gestion de pétitions  (exemple : lutte contre les injustices sociales au travail). La CGT a pu collecter près de 2.500 de signatures vérifiées et confirmées. Le module SPN a rendu cette expérience facile, rapide et sécurisée aussi bien pour les internautes que pour les administrateurs de la CGT. 

Initialement, nous nous étions tournés vers le module Poll, prévu par défaut dans Drupal 8. Cependant, ce dernier ne répondait que partiellement au besoin. En effet, Poll offre une option de visualisation du sondage mais se limite à une seule question. Par ailleurs, aucun autre module Drupal 8 ne permettait une gestion simple de pétition, nous avons donc développé notre propre module, que nous avons partagé sur drupal.org. 

Fonctionnalités du module 

Le module SPN propose les principales fonctionnalités suivantes : 

  • Création d’une pétition (les blocs formulaire et résultats sont ajoutés à la liste des blocs Drupal) ;
  • Affichage du bloc de la pétition sur la page souhaitée ; 
  • Affichage en front-office des résultats pour chacune des question de la pétition (sous la forme d’un bloc avec le nombre total de signatures) ; 
  • Vérification et validation de l’adresse e-mail ayant servie pour la signature afin que la contribution soit comptabilisée, par le biais d’un envoi automatique d’e-mail de demande de validation ; 
  • Message de confirmation et de remerciement personnalisable, par une notification e-mail (par ailleurs, l’administrateur peut choisir entre 3 types de messages à afficher : message pour un lien expiré ou une adresse e-mail déjà utilisée, message de validation de la signature et message d’erreur général). 

De plus, les utilisateurs peuvent signer une pétition aussi bien en étant connectés ou anonymes. Pour valider la soumission, ils sont invités à renseigner les informations requises par le formulaire et à ajouter un commentaire si nécessaire. 

Développement du module et respect des standards Drupal 

Simple Petition Node (SPN) est un module sur-mesure développé en PHP et qui utilise Symfony2 / Twig pour le templating. Le module est disponible en version 8.x – 1.0. Nous avons utilisé le module reCAPTCHA pour sécuriser les soumissions de formulaire. 

La qualité du code étant un enjeu majeur pour la pérennité et la sécurité d’un site Drupal, nous avons développé le module SPN en respectant les standards Drupal : 

  • Le module utilise les entités de Drupal et implémente ces derniers ; 
  • Le module utilise la même méthode que Drupal pour l’envoi des courriels et des notifications avec une sécurisation des soumissions de formulaire ; 
  • D’une manière globale, le code suit les standards Drupal (nomenclatures des fonctions, variables, classes…)

Installation 

SPN peut être activé comme n'importe quelle autre extension du back-office Drupal: /admin/modules.
Lors de l'installation, le module crée un type de contenu "Pétition" avec des champs prédéfinis (champs Titre, Corps, e-mails de validation et de confirmation et leurs domaines correspondants) et ajoute deux blocs - formulaire de signature de pétition et bloc de résultats de pétition, pouvant être gérés dans le back-office de Drupal. 

Une page de configuration est disponible sur /admin/config/spn/notifications pour gérer les courriels et les notifications par défaut pour toutes les pétitions. Les jetons sont disponibles pour utiliser les variables liées à la pétition.

De plus, SPN ajoute deux tables au schéma de Drupal, "Signatures de pétition" et "Utilisateurs de pétition". Le premier contiendra des informations sur chaque signature faite sur une pétition et le dernier contiendra les informations des utilisateurs anonymes qui signent les pétitions.

Et après ? 

Notre équipe de développeurs souhaite faire évoluer le module pour proposer à terme des fonctionnalités plus avancées pour l’administrateur notamment pour la gestion des signatures (page / vue…). 

En attendant, testez-le et partagez votre avis !... Ou collaborez !