Formidable, le générateur de formulaires

Un générateur de formulaires facilement configurable pour les non-informaticiens et facilement extensible pour les développeur⋅euses.

Introduction

Historiquement, deux plugins avaient déjà été développés précédemment pour gérer des formulaires :

  • Forms &Tables, qui n’a pas été complètement porté pour SPIP 2.
  • et spip-formulaire créé par artego mais qui n’était plus maintenu.

La question s’est donc posée : construire sur la base d’un des deux plugins ou repartir de zéro ?
Form &Table, très complet pour les utilisateurs, présentait l’inconvénient d’avoir un côté « fourre-tout » qui le rendait difficilement modifiable et difficile à personnaliser par les dévs.

Il a finalement été décidé de repartir de zéro pour proposer quelque chose :

  • de plus facile à utiliser pour les utilisateurs d’une part,
  • mais aussi de plus facile à personnaliser pour les développeur⋅euses.
    Avec le parti pris de se baser de préférence sur plusieurs petits plugins spécialisés et de tirer parti de la nouvelle norme CVT.

Interface utilisateur

L’utilisation basique de l’interface est abordée dans ce screencast : Mon premier formulaire pas à pas : c’est Formidable !

Appeler mon formulaire

Vous devez appeler le formulaire ayant le nom « formidable », en lui passant en paramètre l’identifiant de votre formulaire.

Dans un contenu
Utilisez le modèle <formulaire> classique : <formulaire|formidable|id=34> ou bien <formulaire|formidable|id=contact>

Dans un squelette
#FORMULAIRE_FORMIDABLE{34} ou bien #FORMULAIRE_FORMIDABLE{contact}

Afficher les résultats du formulaire

Dans un contenu
Utilisez le modèle <formulaire_analyse|id_formulaire=34>

Pré-remplir dynamiquement les champs d’un formulaire

À noter, vous avez la possibilité de surcharger dans l’appel, les valeurs par défaut des champs de votre formulaire. Pour cela, vous devez passer un tableau de nom=>valeur en deuxième paramètre. Vous pourrez trouver les noms de vos champs dans l’aide-mémoire situé sur la page de configuration des traitements.

Dans un contenu
Le tableau de valeurs dans un paramètre defaut sous forme d’une suite de chaînes « clé,valeur » séparée par des virgules :
<formulaire|formidable|id=contact|defaut=hidden1,valeur,input_5,autrevaleur>

Dans un squelette
Le tableau en deuxième paramètre :

  1. #FORMULAIRE_FORMIDABLE{contact, #ARRAY{nom_du_champ, Ma valeur}}

C’est particulièrement utile pour remplir un champ caché avec une valeur dynamique venant du squelette :

  1. #FORMULAIRE_FORMIDABLE{contact, #ARRAY{hidden_1, #ID_DOCUMENT}}

Pré remplir les champs depuis une ancienne réponse

Si les réponses sont enregistrées, on peut passer en troisième argument un identifiant de réponse.

  1. #FORMULAIRE_FORMIDABLE{contact,'',23}

pour modifier la réponse 23.

Champs oui-non et case unique

Pour rendre obligatoire la réponse « oui » à un champ de type oui-non ou case unique (pour la validation de conditions d’utilisation par exemple), il faut simplement rendre le champ obligatoire.

Courriels de notification

Une option des traitements proposés permet d’envoyer un mail de notification automatiquement, à chaque saisie d’un formulaire.

Le squelette par défaut employé pour la mise en forme de ces mails est plugins/formidable/notifications/formulaire_email.html. Vous pouvez le copier dans le répertoire ’notifications’ de votre squelette et l’y modifier à votre guise. Cette modification vaudra pour tous les formulaires.

Pour utiliser un squelette spécifique pour les mails de notification de l’un seulement des formulaires définis avec Formidable, il suffit d’ajouter son squelette dans le répertoire ’notifications’ de votre dossier squelettes, mais en ajoutant l’identifiant.

IDENTIFIANT étant l’identifiant du formulaire défini dans Formidable, les squelettes doivent se nommer :
formulaire_IDENTIFIANT_email.html pour le mail aux destinataires
formulaire_IDENTIFIANT_accuse.html pour l’accusé de réception du visiteur

Conservation des IP

Les adresse IP des personnes répondant aux formulaires sont stockées en base de donnée. Depuis la version 1.5 (SPIP 3) / 0.7 (SPIP < 3), elle sont automatiquement hashé, de manière à ce que l’IP ne soit plus reconnaissable, au bout de 124 jours (environ 4 mois).

Pour changer ce délai, vous pouvez redéfinir la constante _CNIL_PERIODE dans votre fichier mes_options.php.

Par exemple :

  1. define('_CNIL_PERIODE', 24*3600);

permet de hasher les IP toutes les 24 heures.

Si vous voulez désactiver le hashage, mettez la valeur à 0.

Envoi de fichiers

Lire l’article complémentaire : Envoyer des fichiers avec un formulaire Formidable.

Voir aussi sur le wiki


-  Complément de doc et exemples sur les boucles et balises de formidable
-  Exemples de stylage CSS d’un formulaire Formidable
-  todoFormidable
-  Formidable, présentation aux Grottes (2010)

Dernière modification de cette page le 28 mai 2019

Discussion

665 discussions

  • 12

    Bonjour,

    J’aimerai savoir si avec Formidable on peut créer un formulaire comme ce qui suit.

    À vrai dire, j’ai déjà créé le formulaire que je souhaite avec l’aide d’un intervenant du forum spip. Mais celui-ci ne fonctionne pas comme attendu.
    Il est visible ici : https://www.the-ghost-bassist.com/bootsy-collins-i-m-leavin-u
    Vous pouvez le tester avec toto@free.fr

    Il s’agit pour les visiteurs de remplir quelques champs pour voir apparaître une ligne lui permettant de télécharger un fichier (zip ou RAR).
    L’admin lui, devrait recevoir une alerte mail lui indiquant le nom du fichier télécharger, le nom et email du visiteur.

    Est ce possible !?

    Merci

    Chrys

    • Mince !
      Pas de piste pour ce type de formulaire ?

      Merci

    • bah ... je sais pas. Il s’agit d’un bete formulaire formidable. Je vois pas où tu éprouve une difficulté.

    • ah ! tu veux que les gens recoivent un fichier, et pas qu’ils l’envoie.

      formidable n’est pas fait pour cela. Tu pourrais créer ton propre formulaire cvt. Ou bien « tricher » : dans la la réponse envoyé au moment où une personne poste un formulaire, tu pourrais mettre un lien vers le fichier à telecharger.

    • Merci pour ta réponse,

      Oui c’est ce que j’ai tenté avec le binôme de fichier HTML et PHP en CVT.
      Visible à l’adresse sur mon ancien post.

      Mais cela ne fonctionne pas comme attendu.

    • Bah du coup
      1) ca concerne pas spécifiquement formidable, donc tu devrais plutot poser ta question sur la liste des utilisateur de spip
      2) sans code impossible de savoir pourquoi ca marche pas.

    • Oui ! je peux mettre les codes ici ?
      Bien que ça ne concerne pas Formidable ?

    • le mieux serait vraiment de demander sur la liste https://listes.rezo.net/mailman/listinfo/spip/
      ou bien passer sur l’irc irc.spip.net

    • Biensur, d’accord et merci :-)

    • Changelog.

      Bonjour,

      Quand une nouvelle version est publiée, je cherche souvent ce qui a été modifié. Serait-il possible d’avoir un fichier ou un paragraphe de changelog quelque part avec un minimum d’explication des changements ?

      Par exemple : je vois que la mise à jour recenté crée une dépendance avec NoSpam. En l’indiquant dans le changelog, on ne serait pas surpris et on ne suspecterait pas une faille.

      Merci en tout cas de cette extension très utile.

    • Bonjour,

      A droite de cette page, comme tout les plugins, tu as un lien vers le « Code source » ce qui te donne les informations de commit.

      C’est ce que tu cherches ?

    • Oui et non. Je recherche un résumé, si possible commenté, des changements comme on le voit dans les fichiers changelog des logiciels libres. Si c’est possible bien sûr.

    • C’est une politique qui n’a jamais été prise dans les plugins spip, mais c’est vrai qu’idéalement il faudrait.

      La dépendance à NoSPam a été mise pour éviter que des gens passent leurs temps à nous demander de mettre un anti spam. Rien à voir avec la sécurité.

    Répondre à ce message

  • Suggestion de fonctionnalité : autoriser plus largement la duplication

    Bonjour !

    Pour faciliter la création de formulaires par les rédacteurices du site que je gère, j’aimerais créer des modèles que ces personnes – admin restreintes – peuvent dupliquer et retoucher. Or elles ne peuvent pas le faire si elles ne sont pas (co)autrices.

    Serait-il possible de permettre ça soit globalement (via une option dans exec=configurer_formidable) soit au cas par cas ?

    Je sais que je pourrais mettre chaque personne comme coautrice du modèle mais ça me gêne :

    1. Je ne devrais pas oublier d’y ajouter chaque nouvelle personne.
    2. Je ne veux pas que, par erreur, elles puissent modifier le modèle.

    Merci d’avance.


    Question annexe : comment surcharger un squelette privé de plugin ?

    J’ai testé en modifiant la ligne 4 de ./prive/squelettes/extra/formulaire.html du plugin :

    1. [(#AUTORISER{editer, formulaire, #ID_FORMULAIRE}|oui)

    en

    1. [(#AUTORISER{voir, formulaire, #ID_FORMULAIRE}|oui)

    Ça fonctionne mais ce n’est bien sûr pas une solution : je devrais remodifier à chaque mise à jour.

    J’ai donc tenté (ce n’est pas une riche idée non plus mais ça peut faire l’affaire en attendant) de surcharger ce fichier dans mes squelettes, par exemple dans ./squelettes/prive/formidable/extra/, mais ça ne fonctionne pas.

    Pour des plugins, j’ai déjà surchargé des modèles, des feuilles de styles, des fichiers de langue… mais jamais de squelette privé et je n’arrive pas à voir si c’est possible. L’est-ce ? Si oui, quel est le chemin à utiliser ?

    Remerci d’avance.

    1138.

    Répondre à ce message

  • 7

    Bonjour à tous
    J’ai un petit soucis de calcul en utilisant des données d’un formulaire.
    Je souhaite faire une moyenne.
    Les info du formulaire sont par exemple :
    Nombre d’objets : ..... Poids moyen de l’objet : ....
    Je souhaite calculer le poids moyen de l’ensemble des objets avec la formule :
    (Nb objets A x Poids moyen A + Nb objets B x Poids moyen B + .....) / (Nb objets A + Nb objets B + ...)

    Pour l’instant, j’ai ce code (qui ne prend pas en compte le nombre d’objets). (Input 1 = poids moyen des objets ; textarea_3 = nombre d’objets)

    #SET{total,0}
    <BOUCLE_reponses(FORMULAIRES_REPONSES){id_formulaire=7}>
    #SET{total,#GET{total}|plus{#VOIR_REPONSE{input_1,brut}}}
    </BOUCLE_reponses>
    [(#GET{total}|div{#TOTAL_BOUCLE}|round{1})]
    </B_reponses>

    Quelqu’un peut-il m’aider s’il plait ?

    • on suppose que input_1 est le poid moyen de l’objet, et input_2 le nombre d’objets.

      Tu dois
      a) calculer le poid total
      b) calculer le nombre total d’objet
      c) calculer poidtotal/nombre_total

      #SET{poids,0}
      #SET{objets,0}
      <BOUCLE_reponses(FORMULAIRES_REPONSES){id_formulaire=7}>
      #SET{poids,#GET{poids}|plus{#VOIR_REPONSE{input_1,brut}|mult{#VOIR_REPONSE{input_2,brut}}}}
      #SET{objets,#GET{objets}|plus{#VOIR_REPONSE{input_2,brut}}}
      </BOUCLE_reponses>
      [(#GET{poifs}|div{#GET{objets}}|round{1})]
      </B_reponses>

      non testé

    • Bonjour
      Je tiens dans un premier temps à vous remercier pour la solution ci dessus qui fonctionne parfaitement.
      Je me trouve dans l’obligation de modifier le code proposé.
      A présent, je dois intégrer une condition dans mon calcul de moyenne.
      Dans le formulaire, l’une des saisies est le type d’objet (ex : fruit, légume, ...) : nom de la variable dans le questionnaire : textarea_1

      Je dois calculer le poids moyens de chaque type d’objet. et l’intégrer dans un tableau du genre première colonne : type d’objet ; seconde colonne : moyenne.
      Comment faire en sachant qu’il y a une 60aine d’objets possible ?

    • Si tu as un textarea, tu laisse libre aux gens de choisir le type d’objet > tu risque d’avoir des doublons du type « fruit » vs « fruits ».

      En tout cas, l’idée est d’utiliser une structure de #ARRAY pour faire les calculs (une entrée de tableau par type d’objet) et une boucle POUR pour afficher le résultat (sous forme de tableau)

    • L’histoire des doublons n’est pas possible car le textarea sera pré rempli.
      Ce qui me pose problème, c’est comment calculer la moyenne de l’ensemble des saisies pour un même produit.
      J’imagine qu’il faut mettre un « si », mais je ne vois pas comment faire.
      Voici le bout de code que j’utilise mais ça ne fonctionne pas :

      <BOUCLE_formidable_id_form2(FORMULAIRES_REPONSES){id_formulaire=13} {si textarea_1|=={fruit}}>
      
      
      
                      <td>#VOIR_REPONSE{textarea_1, valeur_uniquement, '' }</td>
                      <td>#VOIR_REPONSE{input_7, valeur_uniquement, '' }</td>
                      <td>#VOIR_REPONSE{input_1, valeur_uniquement, '' }</td>
      
      
      </BOUCLE_formidable_id_form2>        
    • même prempli, tu n’es pas sur qu’une personne ne modifiera pas la valeur. Il vaudrait mieux proposer une liste déroulante (aussi en terme d’ergonomie).

      Comme expliqué, il faut que tu utiliser un #ARRAY. Tu pourra stocker dans un même tableau (#ARRAY) le poid pour chaque type d’objet, et dans un autre tableau le nombre total d’objet, pour chaque objet.

    • Ok, merci. Je vais tenter ma chance. Pour l’instant, c’est du chinois pour moi.

    • En gros, dans ma réponse sur le cas simple, tu avais deux variables :
      -  une pour stocker le poids total
      -  une pour stocker le nombre total d’objet

      Là le problème est que tu a plusieurs types d’objet. Pour ce faire tu va devoir utiliser des « tableaux » (au sens informatique). Un tableau c’est un type de variable permettant d’associer des clés (ici le type) avec des valeurs (ici le poid total pour l’objet dans une première variable, ou le nombre total d’objet pour la seconde variable).

      En gros tu aura quelque chose du type :

      • poid :
        • Fruit -> 3
        • Legume -> 5
      • objets :
        • Fruit -> 2
        • Legume > 1

      Si tu as 3 fruit pesant 2 kg en tout (!) et 1 légume posant 5 kg en tout (!!!).

      Et concrètement, pour faire cela en SPIP, tu utilise la balise #ARRAY (doc sur programmer.spip.net / spip.net).

      Et à la fin pour l’affichage en tableau (HTML) tu utilisera une boucle POUR permettant de parcours les tableau.

    Répondre à ce message

  • 6

    Bonjour

    J’ai configuré le formulaire pour que le résultat me soit envoyé en y intégrant les fichiers téléversés. Si la taille max est dépassée, un lien est inséré à la place. OK.
    J’ai programmé dans connect.php pour que le lien soit valide 10j.

    J’ai reçu une réponse, il y a 3 jours, Quand je clique, cela ouvre une page de mon site avec le message : formidable_recuperer_fichier_par_email : Accès interdit
    Je suis pourtant bien connecté et webmaster.

    • dans connect.php ? normalement c’est mes_options.php

      une possibilité est que le lien soit coupé par le lecteur de mail.

      Il faudrait me transférer le mail en privé pour que je vois ce qu’il en est.
      En tout cas comme cela je n’ai pas d’outil explicatif.

    • Message privé envoyé.

    • Pour mémoire : on suspecte une interaction avec le plugin spip_thelia et son authentification unique.

    • J’ai le même problème.
      Le doc joint est récupérable dans l’admin du site dans la réponse au formulaire mais pas par le lien du mail qui est :

      Formulaire « Fête 2019 » posté le 18/06/2019 à 15:45:58.

      Fichier(s) : [Lien expirant dans 15j 0h 0min 0s] received_345391132790639.jpg (JPG - 24 ko) 
      https://www.site.fr/spip.php?action=formidable_recuperer_fichier_par_email&arg=a:4:%7bs:10:%22formulaire%22;s:1:%227%22;s:7:%22reponse%22;s:3:%22792%22;s:7:%22fichier%22;s:28:%22received_345391132790639.jpg%22;s:6:%22saisie%22;s:10:%22fichiers_1%22;%7d&hash=6b836b1cbfd35667a93c01b52bcc3eae924a9291

      message erreur sur le lien : « formidable_recuperer_fichier_par_email : Accès interdit » (je suis webmestre mais pour les autres admins c’est pareil)

      Il n’y a pas de Thélia sur le site

      Merci

    • difficile de dire comme cela. il faudrait voir les logs et autres...

    • Alors dans formidable_post.log j’ai ça qui correspond à la saisie par l’utilisateur :
      2019-06-18 15:45:57 92.167.184.55 (pid 6423) :Pub:!INFO: {"post":{"page":"evenement","id_evenement":2996,"formulaire_action":"formidable","formulaire_action_args":"QWb1uO1UbmAjZ6nluD2Y3fbJM0V2l0mXAs9\/ovHs6WtMAzuQyHyP26v\/mUlPWjTNm+Cg3GRRkwyyAtKrogE36JYK","id_formulaire":7,"formidable_afficher_apres":"rien","_jeton":"0e703f7a51fc46906d31ae7ef302ba068c9e9c07","input_1":"LC ","input_2":"G'h ","email_nobot":"","textarea_1":"56 rue","email_1":"ndy@hotmil.fr","mechantrobot":""},"files":{"fichiers_1":{"name":["received_345391132790639.jpg"],"type":["image\/jpeg"],"tmp_name":["\/home\/site\/www\/tmp\/cvtupload\/formidable_NmIrJ9.jpg"],"error":[0],"size":[24526]}}}

      S’il y a d’autres fichiers log sur le serveur pour l’erreur de lien dans l’email je n’y ai peut-être pas accès.

      Merci

    Répondre à ce message

  • 12

    Bonjour,

    Désolé de cette question de débutant, mais je n’ai pas trouvé moi-même la réponse :
    Le retour de formulaire que je reçois est visiblement en HTML, peu facile à lire (beacoup de lignes vides, pas d’alignement etc) et à exploiter (automatiquement), donc je pense que tout le monde a du modifier ce comportement par défaut ;-)

    J’utilisais avant (pas sous SPIP) un php qui faisait les traitements & verifs puis le POST et j’envoyais simplement en PLAINTEXT la liste des champs remplis (non vides) sous la forme :

    [nom_du_champ] [hor_tab] [Valeur_entrée] [NewLine]
    par exemple :
    Name Franck TOTO
    Email moi@truc.com
    Expert On
    CallMe On

    (et terminé par l’@ IP, mais grâce à RealET, c’est bon maintenant sous formidable)

    Ce qui me permettait facilement d’exploiter manuellement ou d’extraire automatiquement les infos (c’est déjà du CSV tab separated).
    Je suis sûr que c’est possible avec formidable mais j’ai du rater qq chose...

    Merci d’avance !

    • Je ne comprends pas vraiment ce que tu veux faire, et je ne vois pas de quel « retour de formulaire » tu parles. À mon avis, avant Formidable, tu devrais d’abord comprendre, l’API « CVT » des formulaires de SPIP.

    • Je veux juste recevoir un email résultant du remplissage du formulaire qui a la forme (en plain text) décrite ci-dessus. Par exemple :

      Name Franck TOTO
      Email moi@truc.com
      Expert On
      CallMe On

      Ce que je reçois pour l’instant n’a PAS cette forme
      mais (en html) :

      Form « Contact form » sent on 09/09/2016 at 11:24:05.
      From this page.

      Your Name
      Bert75

      Job Function
      CTO

      Company
      My Company

      Address
      (no data entered)
      City
      PARIS

      Zip code
      75000

      Country
      France

      Email address
      moi@hotmail.com

      Telephone
      0123456789

      Interested by :
      Intellectual Property blocks
      Training Coursess
      Design Services
      Your message
      (no data entered)
      — -

    • Bah tu surcharges le squelette d’email pour faire autre chose. Il y a un chapitre juste au-dessus qui parle des squelettes d’email en donnant le chemin…

    • Génial !
      Pile ce qu’il me fallait.
      J’en profiterai pour supprimer les champs vides (totalement inutiles).

    • Sauf que :
      D’une part, le notifications/formulaire_email.html contient un élément totalement obscur (une boite noire qui donne un résultat :

      1. #VOIR_SAISIES{#ENV*{saisies}, #ENV*{valeurs}}

      Et que d’autre part, le moyen de passer en plain-text le résultat est documenté où ?

    • « pile ce qu’il me fallait » était de l’humour, désolé !

      Et dans les features que j’aurais trouvé intéressantes :
      -  hook d’appel à script à la validation du formulaire
      -  captcha (oui, oui, je sais la religion de spip NOSPAM etc)
      -  insertions de textes custom dans l’email qui en facilite l’exploitation
      -  envoi à destinataire variable en fonction d’un champ
      -  champs conditionnels
      ...mais j’ai peut-être raté d’autres choses dans la doc.

    • Dans traiter/email.php j’ai vu qu’il y avait :

      		$corps = array(
      			'html' => $html,
      			'texte' => $texte,
      			'nom_envoyeur' => filtrer_entites($nom_envoyeur),
      		);

      En tentant de remplacer par :

      1.         $corps = $texte;

      À ce moment-là, SPIP 3.1 prend le pas et transforme quand même le message en multipart HTML/Txt

      Bref, comment forcer Formidable + SPIP 3.1 à envoyer en text/plain ?

    • Et dans les features que j’aurais trouvé intéressantes :
      -  hook d’appel à script à la validation du formulaire
      -  captcha (oui, oui, je sais la religion de spip NOSPAM etc)
      -  insertions de textes custom dans l’email qui en facilite l’exploitation
      -  envoi à destinataire variable en fonction d’un champ
      -  champs conditionnels
      ...mais j’ai peut-être raté d’autres choses dans la doc.

      Il y a déjà des champs conditionnels. Le captcha tu le codes si ça t’amuse, mais personne n’a envie de ça, la religion du respect des utilisateurices oui on peut dire ça, c’est plutôt une fierté.

      Il n’y a pas de système de choix de destinataires suivant des tests sur d’autres champs arbitraires, par contre il y a déjà une saisie Destinataires qui permet de choisir un ou plusieurs parmi les comptes utilisateurs (s’il s’agit d’autres gens qui ne sont pas déjà dedans, il suffit de créer des comptes sans login, même en statut visiteur peu importe).

      Pour le reste oui tu as oublié des choses dans la doc : tu as oublié la doc générale de l’API CVT de SPIP. Comme déjà dit précédemment. Si tu ne connais pas ça, je vois mal comment tu pourrais espérer modifier des choses complexes dans Formidable spécifiquement ou n’importe quel autre formulaire de SPIP. Il y a déjà tous les points d’entrées qu’il faut, et il y a déjà des sous-plugins qui modifient ou augmentent de manière conséquente Formidable, donc il n’y a à priori aucun problème majeur.

      @RealET, avec Facteur TOUS les emails sont envoyés avec une variante HTML par défaut, et avec une variante texte ensuite, qui dérive de la variante HTML. On pourrait imaginer que la variante texte vienne d’un squelette si il existe et sinon le générer à partir du HTML. Mais dans tous les cas il y aura la variante HTML (et ça vaut pour absolument tous les emails dès qu’on a Facteur). Mais quel est le but final d’absolument vouloir avoir des emails text/plain uniquement ?

    • Pour faire court : SPIP est visiblement complexe, c’est pour ça que je n’ai décidé de l’adopter qu’en m’appuyant entièrement sur RealET pour tout ce qui l’est pas le contenu et l’exploitation du site. Donc ce n’est pas à moi d’apprendre la doc SPIP ni de programmer dans son langage, mais j’essaie quand même d’en comprendre le fonctionnement et de voir si j’ai vraiment besoin pour quelque chose d’apparemment simple (que je faisais moi-même avant) de faire appel à un ou plusieurs spécialistes.
      Il me semblait aussi que la présentation par défaut des emails de soumission (les forms remplis) n’était franchement pas conviviale, ni optimisée (champs vides, interlignes inutiles...), ni facile à exploiter (je ne parle pas de les regarder sur un smartphone !).
      D’où ma question sur ce forum. Ca me semble une amélioration nécessaire. En tous cas SPIP+Formidable -je ne sais pas qui est le coupable original- représente de ce fait une régression pour moi.
      J’espère que RealET va trouver une solution.

    • Bééé, si c’est apparemment si simple d’avoir un système de téléformulaire où on peut construire un form à la souris et pouvoir le modifier quand on veut sans rien coder… c’est super ! :D Go go

      Pour ce qui est de réellement exploiter les résultats, de manière carrée et pérenne, on préférera quand même clairement enregistrer en base et pouvoir exploiter les tables (qui ont même déjà un export CSV dans l’admin…), que des emails qui sont là juste pour notifier, pour des humains.

    • L’affichage compact du mail est intégré : http://zone.spip.org/trac/spip-zone/changeset/99576

      C’est donc désactivé par défaut, et activable via mes_options.php :
      Ajout d’une option pour avoir un affichage compacte et sans les réponses vides (admin & mails de confirmation).
      Dans mes_options.php, rajouter :

      if (!defined('_SAISIES_AFFICHAGE_COMPACT'))
      	define('_SAISIES_AFFICHAGE_COMPACT', 'oui');
    • Merci realET
      Ce code pour compacter le contenu des emails est bien utile et m’évite d’avoir à coder une page formulaire_email.html (le client avait la demande pertinente de réduire le nombre de pages d’impression des réponses).

    Répondre à ce message

  • 12

    Sur un site en 2 langues je n’arrive pas à faire afficher le texte du bouton de validation d’un formulaire :
    Si je mets <multi>[fr]Envoyer[en]Submit</multi> dans la config des options globales il m’affiche
    <multi>[fr]Envoyer[en]Submit</multi> texto sur le site public

    Pour les autres champs du formulaire j’ai bien le bon texte de langue qui s’affiche.

    • La version 3.37.8 corrige cela.

    • Merci. Est-ce voulu si le texte du bouton de validation par défaut est « Enregistrer » et non plus « Envoyer » ?

    • C’était « valider » avant et pas « envoyer ». C’est le passage en multi etape/la réécriture du code pour les options globales qui a provoqué ce chagement de chaîne de langue. Je ne sais pas si c’est volontaire ou pas, mais je trouve ca pas plus mal, perso.

    • Ah oui désolé, c’est dans ce commit dans ce fichier :
      https://zone.spip.net/trac/spip-zone/changeset/114460/spip-zone/_plugins_/formidable/trunk#file4

      Avec du coup une reprise du code de ce qui était depuis des années dans la génération automatique faite par Saisies (quand on ne déclare qu’en PHP), et qui n’avait jamais été reporté dans Formidable.

    • Question bête : comment utiliser la fonction multi-étapes ?
      J’ai lu avec intérêt la phrase d’explication et coché l’option

      Lorsque cette option est active, chaque groupe de champs de premier niveau est transformé en étape du formulaire.

      Néanmoins, je ne vois pas à quel endroit je peux déterminer le niveau d’un groupe.
      J’ai pourtant créé plusieurs champs (texte/email) dans cet ordre
      -  groupe de champs « page 1 »
      -  champ 1
      -  champ 2
      -  groupe de champs « page 2 »
      -  champ 3
      -  champ 4

      Et tous les groupes & champs s’affichent sur une seule page au lieu de deux

      D’avance merci

    • Tu as posé ta question dans un fil existant qui n’a pas de rapport, ce n’est pas très pratique.

      Mais ya rien de plus à faire, et en plus si tu vois l’option c’est bien que tu es à jour de Saisies et de Formidable à priori. Tu crées des groupes, tu mets des champs dedans, puis tu coches l’option, et hop c’est tout, le formulaire est alors en étape.

      Après t’es peut-être pas repassé par admin_plugin entre temps pour que ça mette à jour les utilisations de pipelines, après tes mises à jour…

    • Merci pour ta réponse.
      Si mon message apparaît dans un fil c’est indépendant de ma volonté : hier j’allais vraiment répondre à ce fil et avais préparé du texte sans cliquer sur « confirmer l’envoi ». Aujourd’hui je suis revenu sur la page et suis allé sur la case commentaire en bas de page (comme si j’allais débuter un nouveau fil) qui était pré-remplie : j’ai effacé ce texte et remplacé par du nouveau mais mon commentaire s’est inséré au mauvais endroit. Une fois publié je ne peux rien faire, même pas supprimer mon commentaire pour le recréer au bon endroit.
      Je bidouille depuis un temps certain pour comprendre et je pense avoir trouvé en utilisant « position du champ ». La fonctionnalité est super, néanmoins sa mise en oeuvre est laborieuse...

    • Déjà 1) le champ position sert juste quand t’as pas JS, t’as bien vu que tu pouvais déplacer les champs en drag-n-drop déjà ?

      Et 2) quand tu crées un champ (et donc y compris les groupes de champs) ils sont déjà de base à la racine du formulaire, donc au quoi yorait à jouer avec ça ? Si t’as crées des groupes, ils sont déjà au bon endroit par défaut (ils sont pas à l’intérieur d’un autre groupe quoi, ya pas d’imbrication).

    • ça c’est la théorie. J’ai fait comme d’hab, à savoir créer mes champs & groupes dans le bon ordre et le résultat était que tous les champs était sur la même page au lieu d’être en plusieurs étapes.

      Le drag & drop place un champ sous un autre alors qu’il faut qu’il soit en décalé. Voir la partie gauche de ma copie d’écran. pour la parti droite elle reproduit ce qu’on voit en partie publique

    • Non non, on peut parfaitement déplacer un champ à l’intérieur d’un groupe de champ en drag-n-drop. Le rectangle cible n’est pas le même et on doit bien voir qu’il est décalé à l’intérieur du groupe.

    • Certes, néanmoins la nuance n’est identifiable que si on le sait.
      Si j’avais le temps j’essaierais d’améliorer le « mode d’emploi ». Un jour...

    Répondre à ce message

  • 1

    Bonjour et bravo pour tout ce boulot,
    J’ai fais un formulaire où il est important (mais ce n’est pas possible de le mettre en obligatoire) d’ajouter une photo de la plaque d’identité du matériel, pour une demande de pièces détachées.

    Pour la présentation du formulaire, je souhaiterais insérer une photo d’exemple avant le champ « Fichier »
    Ne dit-on pas :un petit schéma vaut mieux qu’un long discours !

    Merci de votre intérêt pour ma question, je pense que ça peut servir à d’autres
    Alain

    • En attendant, j’ai simplement inclus dans mon champ explication, de la même façon que dans un article, un doc déjà présents dans ma médiathèque.

      Comme quoi il faut rédiger la question pour y répondre soi-même...

      Mais si il y a une autre solution !!!

    Répondre à ce message

  • 2

    Bonjour,

    Je voudrais rendre permanent le fichier csv des réponses et le générer automatiquement, le rendre accessible de l’extérieur afin de géolocaliser les réponses.

    De même je voudrais déplacer les fichiers téléversés vers IMG par exemple.

    J’avoue patauger sur la méthode malgré mes recherches surtout que je suis un débutant en programmation SPIP.

    Auriez-vous une piste ?
    Cordialement.

    • Concernant le CSV, vous pourriez créer votre squelette qui le générerait.

      Concernant le déplacement vers IMG : c’est une fonction demandée plusieurs fois. Il est clair que pour des raisons de confidentialité, cela restera une option. Il faudrait trouver un peu de temps pour coder cela. Peut être en juin j’en aurait.

    • Merci beaucoup. Je vais suivre cette piste.

      Oui une option avec un avertissement sur le risque est la meilleure solution.
      Merci pour la proposition.

    Répondre à ce message

  • 3

    Bonjour

    Sans que je ne touche à quoi ce soit sur le site ou dans la définition du formulaire, soudainement mon formulaire ne veut plus prendre de réponse : Impossible de prendre en compte votre message. Merci de le soumettre à nouveau !

    Répondre à ce message

  • 2

    Bonjour

    Sur un site, une collègue a conçu un formulaire.
    Elle a configuré ce formulaire pour recevoir une notification à chaque réponse et ça fonctionne.
    Elle voudrait aussi que le visiteur qui répond reçoive un message de confirmation par mail (en plus du message de retour qui s’affiche). Il y a bien un champ « adresse mail » obligatoire dans ce formulaire.
    Est-ce possible ? Et si oui, comment ?

    Répondre à ce message

Ajouter un commentaire

Qui êtes-vous ?

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