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

2 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

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