Configuration des traitements de Formidable

Une fois le formulaire et les champs créés formidable propose de « configurer les traitements ». Cet article vise à préciser ou compléter quand ça semble nécessaire certains choix présents.

Les fonctions listées sont valable avec la version 4.4.0 du plugin.

Le premier choix consiste à savoir si on veut :

  • « Enregistrer les résultats du formulaire dans la base de données »
  • « Poster par courriel le résultat du formulaire à une liste de destinataires »,
  • Les choix ne sont pas exclusifs.

Enregistrer les résultats du formulaire dans la base de données

Une fois cette case cochée, un certain nombre d’options s’affichent. Il est notamment possible de rendre les réponses au formulaire :
-  Multiples : une même personne peut répondre plusieurs fois.
-  Modifiables : les visiteurs peuvent modifier leurs réponses après coup.

Méthode d’identification

Dans le cas ou votre formulaire comprend des réponses modifiables ou uniques, un encart apparaîtra afin de définir une méthode d’identification des réponses :

-  Soit par cookie. L’identification dépendra du navigateur sur lequel l’utilisateur rempli le formulaire. Si celui-ci n’autorise pas les cookies, l’identifiant de la personne authentifiée et la méthode d’identification par variable de connexion PHP seront utilisées à la place de cette méthode.
-  Soit par identifiant de la personne identifiée. Utile pour les formulaires nécessitant la création d’un compte à priori. Si l’utilisateur n’est pas connecté, la méthode d’identification par cookie sera utilisée à la place de cette méthode, ou a défaut la variable de connexion PHP (sauf en cas d’anonymisation des identifiants).
-  Soit par identifiant de la réponse passée explicitement lors de l’appel au formulaire dans un squelette. Cette méthode permet de forcer l’affichage d’une réponse particulière.
-  Soit par variable de connexion PHP. L’identification dépendra d’une variable d’environnement fournie par l’utilisateur. Si celle-ci n’existe pas, l’identifiant de la personne authentifiée et l’identification par cookies seront utilisées à la place de cette méthode.

Protection des données personnelles

Il est également possible de paramétrer la protection des données personnelles des utilisateurs :

-  En ne conservant pas l’identifiant de la personne connectée. Si la méthode d’identification est justement cet identifiant, celui-ci sera d’abord crypté avant d’être stocké en base).
-  En demandant l’effacement des résultats les plus anciens de la table. Une fois la case cochée, il sera possible de définir le nombre de jours pendant lesquels on garde l’enregistrement avant d’effacer.
-  En choisissant d’enregistrer ou non les IPs des utilisateurs. Ces IP seront hashés après un délai de garde.

Autres options disponibles

Elles concernent :

  • La modération de l’enregistrement :
    • à priori, les réponses sont modérées automatiquement, sauf pour les administrateurtrices (mais on peut ajouter une option pour modérer aussi pour ces personnes) ;
    • à posteriori, les réponses sont à modérer manuellement.
    • L’exclusion des champs de l’analyse des résultats proposée par formidable.
    • Le rafraîchissement du cache à chaque enregistrement de réponses. Utile si les réponses sont publiques ou si on veut afficher publiquement le nombre de réponses.

Poster par courriel le résultat du formulaire à une liste de destinataires.

Une fois coché ce choix une série de champs est proposée, répartis en cinq groupes :

Destinataires du courriel

  • Sujet du courriel
  • Contenu du courriel
  • Destinataires du courriel
  • Expéditeur du courriel
  • Accusé de réception

Sujet du courriel

Il est possible de personnaliser le Sujet du courriel avec les @raccourcis@ (sinon il sera construit automatiquement) et de choisir de n’y mettre que des Valeurs brutes si le mail doit être traité par un robot et non un humain.

Contenu du courriel

Possibilités de personnalisation :
-  *Champs à exclure du contenu du message ;
-  * Faut-il « Joindre les fichiers dans le courriel »,
-  * « Masquer les liens d’administration dans le courriel »
-  * « Envoyer l’adresse IP de l’envoyeur aux destinataires »
-  * Masquer les champs vide

Concernant les Champs à exclure du contenu du message, comme indiqué dans le placeholder les champs doivent être exclus sous la forme « input_3,selection_2 »
Depuis la révision 110166 il est possible d’exclure les champs sous la forme @raccourcis@

Destinataires du courriel

Trois choix possibles : Destinataires, Destinataires supplémentaires, Destinataires en fonction d’un champ.
Le premier choix Destinataires ne pourra comprendre que des champs de type « hidden » ou « destinataires ». Le type de champ Destinataires permet de choisir parmi une liste de rédacteurs du site quels seront ceux qui sont informés du remplissage du formulaire.

Le champ Destinataires supplémentaires permet, comme son nom l’indique, d’envoyer un formulaire à un ou plusieurs destinataires en fournissant des adresses directement dans le champ.

Enfin, Destinataires en fonction d’un champ permet d’envoyer le formulaire à des interlocuteurs différents en fonction des choix. Attention toutefois pour que ça fonctionne bien il faut que soit proposé un mail pour chaque choix, ou, s’il y a des choix non définis ici, qu’un destinataire soit défini par ailleurs.

Expéditeur du courriel

Trois champs possibles Courriel de l’envoyeur, faut-il « Insérer le courriel de l’envoyeur dans le champ « From » » et le Nom de l’envoyeur
Courriel de l’envoyeur : ne pas oublier de renseigner ce champ si on utilise le message de confirmation ou accusé de réception

Accusé de réception

L’accusé de réception ne peut être demandé que si le courriel de l’envoyeur est préalablement renseigné. Alors il devient possible de cocher Envoyer aussi un courriel à l’adresse de l’envoyeur avec un message de confirmation.
Il est ensuite possible de définir le Sujet de l’accusé de réception, de préciser un Courriel de l’accusé de réception et de forcer un Nom de l’expéditeur de l’accusé de réception

Discussion

23 discussions

  • Bonjour !
    Voulant créer un nouveau traitement pour mon formulaire j’ai créer un plugin en renseignant dans le paquet.xml la balise « necessite formidable »
    Puis j’ai ajouté à mon dossier plugin un dossier traiter et dedans j’y ai mis un fichier yaml avec un unique champ input et un fichier php avec ma fonction de traitement. J’ai activé le plugin dans mon spip mais malheureusement je ne vois pas le traitement dans la liste des traitements disponible pour le formulaire. Il faut en recréer un nouveau pour le voir ou il y a t’il une étape que j’ai manqué ?

    Merci beaucoup d’avance !

    Répondre à ce message

  • 10

    Bonjour,
    Est ce possible de créer un traitement personnalisé des soumissions d’un formulaire formidable.
    Le but étant pour moi de créer automatiquement des comptes de démo + associer à un abonnement/accès restreint suite au submit d’un formulaire.

    Une idée ou je passe par un cron pour faire cela de façon régulière mais pas automatique.

    Merci !

    • Oui c’est possible. Il faut créer dans ton dossier de plugin/squelette (mais le mieux en plugin) un dossier traiter, avec dedans :
      -  un .yaml qui gère la config du traitement
      -  un .php avec des fonctions qui gèrent le traitement.

      Tu peux regarder ce qu’il y dans le dossier traiter livrer avec le plugin pour t’en aspirer.

    • Merci pour ton retour.
      J’ai d’autres formulaires formidable, y a t-il une démarche pour ne pas altérer le fonctionnement des autres formulaires ? D’ailleurs j’aimerais conserver le stockage des données pour celui que je veux traiter, simplement ajouter un traitement supplémentaire.

    • bah chaque traitement est independant, donc il n’y a rien de spécifique à faire.

      Tu peux deja constater maintenant que tu peux avoir email ET/OU enregistrement en base, et tu as des tas de plugins qui rajoutent d’autres traitements.

    • C’est tout vu, Tu répondais déjà à toutes mes questions.
      merci ! Ce plugin est vraiment top ;-) !

    • Bonjour,

      Je n’ai pas trouvé s’il était possible d’interrompre la suite des traitements si l’un échoue.

      Plus spécifiquement je ne voudrais pas que le mail de confirmation soit envoyé s’il y a eu un problème avec l’upload d’un fichier.

      Merci !

    • J’ai trouver une solution : surcharger traiter_email_dist()

      function traiter_email($args, $retours) {
        if (isset($retours['message_erreur'])) {
      // sortire sans faire le traitement s'il y a une erreur
          $retours['traitements']['email'] = true;
          return $retours;
        }
      // appeller le traitment  email si pas d'erreur
      	return traiter_email_dist($args, $retours);
      }

      Merci SPIP tu es FORMIDABLE !!

    • C’est une solution évidemment, mais elle n’est pas terrible car elle ne permet pas de profiter des mises à jour des traitements.

      Il faudrait ouvrir un ticket pour proposer

      1. Soit d’avoir cette fonctionnalité en natif
      2. Soit d’avoir un système de pipeline pour gérer cela.

      Cependant la vrai question c’est : pourquoi est-ce que les enregistrement échouerait. Normalement cela ne doit pas arriver, sauf problème grave.

    • J’ai un traitement personnalisé qui upload des documents vers un espace de stockage dans les nuages. Je ne suis pas à l’abri d’un dépassement de quotas ou d’une indisponibilité temporaire du service. Donc la possibilité que ce traitement echoue existe. Le formulaire sert pour l’inscription des candidats à un concours interne. Il ne faut surtout pas que ceux-ci reçoivent un email de confirmation d’inscription si les documents demandés n’ont en fait pas été transmis.
      La solution de surcharge est juste une dérivation qui revient sur la fonction originale traiter_email_dist si le traitement doit avoir lieu, et profitera donc des améliorations apportées à cette fonction.
      Cela dit avoir la possibilité de contrôler l’exécution des différents traitements et tant qu’à faire le retour final de formidable serait l’idéal.

    • Bonjour !
      Voulant créer un nouveau traitement pour mon formulaire j’ai créer un plugin en renseignant dans le paquet.xml un
      Puis j’ai ajouté un dossier traiter et dedans j’y ai mis un fichier yaml avec un unique champ input et un fichier php avec ma fonction de traitement. J’ai activé le plugin dans mon spip mais malheureusement je ne vois pas le traitement dans la liste des traitements disponible pour le formulaire. Il faut en recréer un nouveau pour le voir ou il y a t’il une étape que j’ai manqué ?

      Merci beaucoup d’avance !

    • Bonjour,

      il doit y avoir une étape qui manque. Mais pouvez vous ouvrir un nouveau fil, en mettant également en copie vos fichier yaml et php ?

    Répondre à ce message

  • 3

    Bonjour, existe-t-il un moyen de rendre l’url complexe pour qu’elle ne soit pas lisible par autrui. Actuellement, j’affiche des informations à destination de l’auteur du formulaire à l’aide de l’url suivante : /spip.php ?page=info&id_article=1&id_formulaires_reponse=779. Mais n’importe qui peut en récupérant l’URL voir les infos des uns et des autres...

    /spip.php?page=info&id_article=1&id_formulaires_reponse=780
    /spip.php?page=info&id_article=1&id_formulaires_reponse=7
    /spip.php?page=info&id_article=1&id_formulaires_reponse=479
    • Heu, je sais pas comment tu a fait ton appel au formulaire, mais normalement non même avec l’id de la réponse, on ne peut pas voir les données (si on a bien demandé une authentification par cookies).

      Donc avant d’aller plus loins : peux tu nous dire
      1. La configuration exacte du traitement enregistrer
      2. La manière dont tu appelle ton formulaire

    • Voici les infos :
      -  Méthode d’authentification par cookie, oui.
      -  Dans formidable, je demande une adresse de redirection après validation qui est ;
      https://monsite.fr/spip.php?page=info&id_article=1

    • Oki.

      Bah du coup je viens de vérifier : pour peu que ce ne soit PAS le même navigateur, on ne peut effectivement pas récuperer les réponses de l’autres. Donc

      1. Vérifie en changeant de navigateur, pour faire comme si tu étais deux personnes différentes
      2. Si c’est toujours bugué, on tentera un debug pour voir d’où vient le problème.

    Répondre à ce message

  • 2

    Bonjour,
    Quand on ajoute une classe à un champ du formulaire – ce que je cherche à faire pour mes lignes de texte / @input@ correspondant au nom et au prénom – pour les forcer en text-transform : capitalize, ça fonctionne quand la personne écrit dans le champ, puis à l’affichage des résultats sur la page web, mais pas dans le mail qui envoie les résultats…
    Je suppose que c’est du côté de php que ça se passe, mais alors là… je suis zéro ^^
    Quelqu’un verrait-il un solution simple pour traiter un (plusieurs) champs définis de cette façon ?
    Ça ressemble à du chipotage, mais quand un client demande… ;p
    Cordialement

    • Je pense qu’il faudrait que tu surcharge les fichiers notificatons/formulaire_accuse.html et notifications/formulaire_email.html du plugin pour rajouter tes propres css.

      Cela étant je me demande si cela devrait pas être un truc qu’on pourait proposer en natif, d’ajouter des css aux traitements emails.

      Si tu as envie, ouvre un ticket.

    • Merci Maïeul pour cette réponse rapide !
      Je ne vois pas comment surcharger ces fichiers pour n’atteindre que les champs à qui j’ai appliqué une classe supplémentaire (et aussi sur le conteneur) dans l’édition du formulaire, ou bien cibler lesdits champs par leur identifiant @input_1@, @input_3@, etc.?
      Je veux bien ouvrir un ticket, chouette, mais c’est par où ? Pas ici ?
      Ceci-dit, si ça amène une mise à jour, c’est un site qui tourne encore en 3.2, et que je ne vais pas pouvoir passer en 4 immédiatement…
      Bonne journée

    Répondre à ce message

  • 2

    Bonjour,

    Il y a-t-il une possibilité d"envoyer le message à des destinataires en CC, en plus de A ?

    Merci,
    François

    Répondre à ce message

  • 3

    Bonjour,

    Je reçois bien les courriels envoyés depuis mon site mais coté internaute, les accusés de réception ne fonctionnent pas. Une piste ?

    • Problème de configuration du service mail de PHP ? Est-ce que cela le fait également si tu demande un AR vers un email du même domaine que ton site ?

    • Oui je viens de faire le test. L’accusé de réception fonctionne sur une adresse du même domaine :/

    • Il y a tout lieu de penser que l’hébergeur bloque l’envoi de mail vers un autre domaine. Il faudrait leur demander. A mon avis c’est une mesure de lutte contre le spam.

      S’ils ne veuleent /peuvent pas changer leur politique, alors il faudra configurer facteur pour utiliser un smtp externe.

    Répondre à ce message

  • 2

    Bonjour,

    est-ce que pour plus de praticité on a possibilité d’automatiquement intégrer dans les champs l’email d’un auteur connecté ? Et comment fait-on ?

    Merci

    • pour l’heure non. On pourrait imaginer

      1. Soit de créer une saisie spécificique
      2. Soit de modifier les saisies input/email pour ajouter ces options.

      Mais je me pose la question du cache sur ce genre de chose.

    • Merci de ta réponse :) C’était « au cas où » !

    Répondre à ce message

  • 4

    Bonjour,

    Je débute avec ce plugin déjà bien sophistiqué. Mais, je n’ai pas trouvé dans la doc si le formulaire formidable
    a ou non un mécanisme pour confirmer l’adresse du visiteur. Un peu comme pour l’inscription Spip.
    Le mail de confirmation vers le mail du visiteur aurait un lien qui s’il est cliqué va valider alors l’insertion en bdd.
    Ceci permet d’éviter l’accumulation de fausses adresses e-mail en bdd.
    Est-ce déjà fait, ou est-ce faisable avec un peu de code ?

    Merci

    • Non cela n’existe pas encore. C’est sans doute faisable avec un bout de code oui (tout est faisable avec des bouts de code, puisque c’est du logiciel libre). Le tout est d’avoir le temps de l’écrire ce bout de code, et de l’écrire proprement.

    • Merci beaucoup Maïeul,

      Je ne suggérais en aucun cas qu’on le code pour moi :-)
      Peut-être un champ extra à valider par une action avec un hash,
      ou le champ statut de la table spip_formulaires_reponses
      à mettre d’abord à non-verifié
      puis à publier après clic sur le lien .

      Je vais voir .

      Jack

    • Dans tout les cas, fait un PR.

      Je pense qu’un statut à part plutot que « proposé » serait mieux. Je crois que pour les auteurs c’est comme cela que ca marche, à moins que ce soit pour les petititions.

    • J’ai cru voir que formidable peut être associé à mailsubscribers qui a l’option double opt in.
      Donc crée des listes épurées
      Mais, ça oblige peut-être à utiliser mailshot. J’aimerais éviter et utiliser le mail de base.
      Je ne vais pas faire de mailing newsletters.

    Répondre à ce message

  • 2
    Creirwy

    Bonjour, actuellement je voudrais traiter un formulaire différemment selon la réponse à un champ (oui/non, radio, ou etc...). Pour l’instant mon formulaire envoie par mail le contenu du formulaire , mais j’aimerais que les formulaires avec une certaine réponse à un champ ne soient pas traités.
    est-ce que c’est aisément possible en faisant cela dans l’espace privé ? Si oui comment ?

    Je vous remercie d’avance,

    • Je commente pour rafraichir la demande. Je serais très intéressé aussi par une possibilité de ce type. La RGPD nous impose une validation avant Validation des formulaires de contact et donc un traitement selon une case à cocher. En l’état on ne peut plus utiliser ’Formidale’ c’est bien dommage.

    • @Olivier si on peut très bien faire du Formidable conforme RGPD

      La RGPD demande pas une case à cocher, elle demande un consentement explicite des gens sur le traitement des données. La case à cocher n’est qu’une manière de s’assurer du consentement. Mais ce qui compte pour la conformité c’est surtout l’explication sur ce que sera fait des données.

      Tu met une case à cocher obligatoire autorisant le traitement des données, en expliquant par un champ de type « commentaire » ce qu’il en est. Si les gens cochent pas la case à cocher, bah il y a un message d’erreur, et rien n’est envoyé. Comme cela tu sais que le consentement est explicite.

      Quel sens aurait-il du reste à envoyer un formulaire qui ne ferait aucun traitement ?

      @Creirwy faudrait préciser ton besoin, mais les interfaces de config des traitements sont deja bien chargé...

    Répondre à ce message

  • 1
    William

    Bonjour,

    Merci pour ce plugin qui m’a fait gagner du temps pour la conception d’un formulaire mais, j’en perds maintenant parce que les champs date et heure (arrivée et départ) s’affichent normalement en format français dans l’espace privé mais en format anglais dans l’espace public. Par ailleurs le si second accepte la saisie d’une heure mais il ne propose pas la liste déroulante des heures.

    J’ai supprimé les champs date, puis recréé les champs date sans succès.

    Le code source de la page de l’espace privé comporte les noms des jours et des mois en français

    Le site n’est pas multilingue

    Le reste du site fonctionne normalement.

    Rien trouvé sur le net, ni sur la doc de Formidable.

    Une idée où chercher encore ?
    Merci

    William

    • William

      Le probleme venait de fichiers javascript (date_picker et time_picker) installés par dessus les javascript de SPIP par une template.

      Suppression des fichiers , et tout va bien depuis

    Répondre à ce message

Ajouter un commentaire

Avant de faire part d’un problème sur un plugin X, merci de lire ce qui suit :

  • Désactiver tous les plugins que vous ne voulez pas tester afin de vous assurer que le bug vient bien du plugin X. Cela vous évitera d’écrire sur le forum d’une contribution qui n’est finalement pas en cause.
  • Cherchez et notez les numéros de version de tout ce qui est en place au moment du test :
    • version de SPIP, en bas de la partie privée
    • version du plugin testé et des éventuels plugins nécessités
    • version de PHP (exec=info en partie privée)
    • version de MySQL / SQLite
  • Si votre problème concerne la partie publique de votre site, donnez une URL où le bug est visible, pour que les gens puissent voir par eux-mêmes.
  • En cas de page blanche, merci d’activer l’affichage des erreurs, et d’indiquer ensuite l’erreur qui apparaît.

Merci d’avance pour les personnes qui vous aideront !

Par ailleurs, n’oubliez pas que les contributeurs et contributrices ont une vie en dehors de SPIP.

Qui êtes-vous ?
[Se connecter]

Pour afficher votre trombine avec votre message, enregistrez-la d’abord sur gravatar.com (gratuit et indolore) et n’oubliez pas d’indiquer votre adresse e-mail ici.

Ajoutez votre commentaire ici

Ce champ accepte les raccourcis SPIP {{gras}} {italique} -*liste [texte->url] <quote> <code> et le code HTML <q> <del> <ins>. Pour créer des paragraphes, laissez simplement des lignes vides.

Ajouter un document

Suivre les commentaires : RSS 2.0 | Atom