Cette documentation est valable à partir de la version 6.1.0 de Formidable.
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 :
#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 :
#FORMULAIRE_FORMIDABLE{contact, #ARRAY{hidden_1, #ID_DOCUMENT}}
Autres options utilisable dans le squelette
Il est possible de passer des options comme troisième argument du formulaire, sous forme de tableau (#ARRAY
).
Nom de l’option | Fonction | Type |
---|---|---|
forcer_modif |
Permet de forcer la modification d’une réponse, même si non autorisé | Booléen |
id_formulaires_reponses |
Identifiant de la réponse à modifier | Entier |
no_ajax |
Désactiver l’ajax sur le formulaire | Booléen |
traiter_email_destinataires |
Destinataires pour le traitement | Tableau (#ARRAY ) d’emails ou liste d’emails séparés par des virgules |
traiter_email_destinataires_methode |
Indique si traiter_email_destinataires doit remplacer les emails déjà configurés dans le traitement ou les ajouter |
Au choix 'remplacer' ou 'ajouter' (valeur par défaut) |
url_redirect |
Url de redirection | Chaine |
Exemple d’un formulaire Formidable dont l’identifiant est contact_libre et dont l’email destinataire est dans le champ email de la table de votre objet #EMAIL de la table spip_contacts …
.
<div class="ajax">
#FORMULAIRE_FORMIDABLE{contact_libre,'',#ARRAY{traiter_email_destinataires,#EMAIL}}
</div>
Case unique
Pour rendre obligatoire la réponse oui à une 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 destinatairesformulaire_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 :
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.
Mise en forme des saisies
Le plugin ne prévoit aucun réglage de mise en forme des saisies : c’est à chaque squelette d’avoir ses styles. Il respecte cependant la convention d’écriture des formulaire SPIP. Il permet d’ajouter des classes spécifiques sur les saisies.
Affichage des réponses sous forme de tableau
Le plugin Formidable Tablesorter permet d’afficher sous forme de tableau les réponses, dans l’espace privé, avec possibilité de tri et de filtre.
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)
Discussions par date d’activité
166 discussions
Bonjour,
Je viens de créer mon premier formulaire, et c’est super bien.
J’ai un soucis avec le nom du bouton de validation à la fin du formulaire qui s’appelle « nom du p »
qui est le nom que j’avais mis sur mon premier champ avant de le changer.
Comment peut-on changer cela ?
hein ? nom du premier champ ? il n’y a pas d’affection du nom du premier champ au bouton de validation.
Lorsque tu modifie le formulaire tu a tout en haut une option « configurer les options globales ». C’est là où tu peux modifier le bouton de validation.
Un grand Merci. Je n’avais pas vu cette option que j’ai cherchée longtemps.
J’ai du faire une erreur lors de ma premier essai.
Merci aussi pour ce plugin formidable.
Peux-t-on faire avec une base indépendante de spip pour utiliser sur un ordinateur avec un navigateur ?
Cordialement
pas compris la question, mais formidable fonctionne avec SPIP uniquement (après il existe des logiciels spécialisé pour créer des formulaires en ligne, en dehors de tout site)
Répondre à ce message
Bonjour
Je rencontre un problème avec la configuration des traitements.
J’ai un formulaire dont les données sont modifiables et je ne coche pas la case « Ne pas envoyer d’email en cas de modification d’une réponse déjà enregistrée. »
Je m’attends donc à recevoir un email à chaque modification. Or je ne le reçois qu’à chaque premier remplissage, pas aux mises à jour.
Voilà le code du formulaire. Qu’ai-je mal renseigné ?
C’est un bug, qui sera corrigé avec la version 4.0.4 du plugin.
Super ! Je teste dès que la màj est dispo.
je confirme que le pb est corrigé. Merci pour le correctif rapide !
Répondre à ce message
Hello,
Juste pour signaler si vous rencontrez ce problème que le plugin Massicot fait planter l’affichage des formulaires dans l’espace privé.
il faudrait le signaler au dévellopeur de massicot alors :)
Répondre à ce message
Bonjour,
Je constate un problème avec l’export Excel des réponses, cela génère un CSV à la place. Avez-vous une idée ?
Bien à vous,
JuL
ca a toujours été un peu foireux ce truc. Il faudrait essayer voir si c’est mieux avec le plugin https://plugins.spip.net/spout_spipcsv.html?compatible_spip=3.2
Bonjour,
Merci pour le lien vers spout. Pour moi c’est mieux !
J’en profite pour poser une question qui me hante depuis que j’utilise Formidable : quel est le meilleur moyen (SPIP si possible) pour exporter des données de réponses Formidable concaténées (c’est à dire issues de plusieurs formulaires du même site) en un seul fichier csv ou xls ?
Genre exporter toutes les réponses d’un utilisateur X identifé.
J’ai vu qu’il y avait le plugin requeteur SQL mais si l’on change un champ du formulaire il faut refaire la requête.
Merci
Je vois mal comment ça serait possible car chaque formulaire peut avoir des champs différents donc des colonnes totalement différentes dans le tableur résultant.
Peut-on envisager de rétablir malgré tout l’export XLS, cela fonctionnait il y a quelques mois de cela.
Merci
Je ne connais pas comment il fonctionnait. Je vais voir avec une personne qui sait peut être.
Répondre à ce message
Bonjour,
Est-il possible d’automatiser la dépublication d’un formulaire lorsqu’un nombre maximum de réponses serait atteint ? J’ai vu qu’il existe un plugin de gestion d’inscriptions à un événement mais je n’ai pas besoin d’autant d’options.
Je pense qu’il faut conditionner l’intégration du formulaire dans le squelette directement en checkant le nombre de réponses mais il existe peut-être un moyen plus simple qui ne demande pas la personnalisation du squelette à ce seul formulaire ?
Pour le moment il n’existe pas d’options pour cela. Donc oui, la solution la plus simple est un squelette personnalisé.
Ok, merci pour cette réponse super rapide.
Dans le même ordre d’idée, je cherche un moyen simple d’envoyer une unique notification par mail juste après la publication de la 50e réponse.
C’est vraiment très spécifique là !
Du coup il faudrait créer votre propre traitement, et donc faire un peu de php.
C’est ce qu’il me semblait aussi. Merci pour la réponse une fois encore rapide et merci aussi pour ce plugin qui porte bien son nom !
Répondre à ce message
Bonjour à tous,
Je viens de mettre en ligne mon formulaire et je me rend compte que l’affichage est différent. Pas de contour gris pour les titres. Chaque choix sont à la ligne. Bref je n’ai aucune mise en forme tout est en brut à la ligne.
Si je fais f12 j’ai une erreur : bulles_blanches.png
Ce plugin ne s’occupe d’absolument rien de graphique, il ne fait que générer des formulaires en suivant la norme de structuration des formulaires de SPIP. Après c’est à ton thème graphique de styler les formulaires.
ok et le thème graphique est géré ou ?
Désolé mais cette question qui peut paraître simple mais je viens de récupérer la gestion du site et je ne connais du tout le fonctionnement de SPIP :)
Les thème graphiques sont la plupart du temps livrés avec le squelette (mais par fois c’est différent).
Celui-ci peut être distribué/installé de manières différentes, selon l’historicité de ton site et la capacité de la personne qui le gérait avant. Mais en gros
1. Soit c’est un plugin qui est installé
2. Soit c’est un contenu dans le dossier
squelettes
La vrai question qui se pose est : quelle indication faut-il te donner pour t’aider. Connus tu un peu de HTML/CSS ?
Et surtout pour nous aider à t’aider, un lien serait bienvenu.
Répondre à ce message
Grand merci pour les dernières modifications : la fonctionnalité de modification des réponses est vraiment très utile pour traiter et suivre la relation aux internautes (il semble que cette fonctionnalité vienne juste d’être ajoutée ?). Il reste semble-t-il toutefois une incompatibilité suite à ces derniers développements, avec l’extension de duplication des formulaires (je ne sais pas si vous l’avez remarqué).
Une future évolution qui serait également extraordinaire (sauf çà ce que ce soit moi qui ne sache pas faire en l’état de l’extension), serait de pouvoir envoyer par publipostage courriel des formulaires avec certains champs préremplis par des informations des inscrits aux listes de diffusion (nom, courriel). Là, nous toucherions à la perfection en matière d’outil de personnalisation de la relation !
Je n’ai compris ni le problème sur la duplication, ni la demande d’évolution
Pour la compatibilité, le message de l’interface privée est :
« Impossible d’activer le plugin ../plugins/auto/formifusion/v1.0.7
Nécessite le plugin FORMIDABLE en version ≤ 3.*.*. »
Pour l’évolution suggérée : Il s’agirait par exemple d’envoyer des courriels contenant un formulaire où l’adresse courriel ne serait plus à saisir, puisque cette information serait déjà préremplie avec l’adresse de destination du courriel, ce qui fait moins de saisie au destinataire.
Cela permettrait par exemple aussi de s’adresser à lui par son prénom, puisque nous pourrions afficher ce prénom dans une phrase inscrite dans un champ descriptif du formulaire.
Il s’agit de l’extension de fusion, pas de duplication de formulaire. C’est lié au changement de numéro de version dans formidable (qui implique spip 3.1 minimum désormais). J’ai modifié le plugin formidable_fusion pour dire qu’il est compatible avec la version 4.0.0. La nouvelle version sera disponible sous peu.
je ne comprend toujour pas le besoin. Il s’agit d’envoyer un lien vers un formulaire pre rempli ? ou bien de proposer de répondre par courriel avec des valeurs pré rempli. C’est vraiment pas clair du tout le besoin...
Il s’agit effectivement de proposer de répondre par courriel avec des valeurs pré-remplies (cela l’extension Formidable le propose déjà pour une valeur fixe en dur), mais paramétrable en fonction du destinataire du courriel (la valeur pré-remplie s’adapte à l’adresse courriel et au nom de l’inscrit à la lettre de diffusion qui reçoit le courriel).
Je n’y connais rien en terme de publipostage, mais dans tous les cas je commencerais par regarder du coté des outils de newlettrer de spip. Quoi qu’il en soit, je n’aurais pas le temps de dévelloper un tel outil.
Merci.
Je vous précise quand même en regardant votre travail, que vous avez déjà fait ce type de développement avec l’extension « Formidable : abonnements à des listes de diffusion », pour les inscriptions par Mailsubscribers. En effet, vous savez dans cette extension alimenter @email@ et @nom@ dans les inscriptions aux listes.
Pour la fonctionnalité que je propose, il « suffirait » (je sais, c’est plus facile à dire qu’à faire :-) de faire le chemin inverse : comme les variables @email@ et @nom@ sont déjà récupérables dans chaque courriel envoyé par liste de diffusion (ces variables affichent leur valeur lorsqu’elles sont insérées dans le corps d’une infolettre), il faudrait juste que les formulaires Formidables acceptent également de les interpréter (balise spécifique ?), lorsque le formulaire est édité dans le corps d’un publipostage.
Note : J’ai bien essayé en l’état mais cela ne fonctionne pas, car @email@ mis en valeur par défaut dans un champ de formulaires Formidables s’affiche alors ’@email@’ dans le courriel, et non par la valeur qui correspond au destinataire de l’infolettre.
Bonne journée !
On est d’accord que cette phrase ne veut rien dire ? À aucun moment un formulaire ne peut être utilisé dans un email…
Moi je n’ai toujours pas compris ce que tu cherches à faire (« répondre par courriel » ? là non plus ça ne veut rien dire, à quel moment on peut répondre à un formulaire par courriel ?)
RastaPopoulos,
Bah si : essaye d’insérer ta balise de formulaire formidable (
) dans une infolettre, tu verras que les destinataires reçoivent un message qui contient le formulaire :-)
Amicalement.
Ce n’est pas parce que tu le vois que ça peut MARCHER. Je le répète : à aucun moment un formulaire, censé être lié à des comportements PHP sur le serveur, ne peut marcher dans ton client email qui n’a RIEN à voir avec le serveur. Par ailleurs, ce n’est même pas forcément visible, car chacun reçoit les emails comme il le désire, et on peut très bien dire qu’on ne veut voir que les emails en mode texte, donc non le formulaire ne s’affiche même pas dans ce cas. Les emails c’est juste de la lecture.
Répondre à ce message
Bonjour ,
j’ai un soucis avec un champs type « grille de questions » : les cases cochées ne sont pas transmises (ni sauvées) (versions SPIP 3.2.5 [24404], formidable 3.47 et 48).
Et si on met ce champ « obligatoire », l’utilisateur ne peut pas envoyer son formulaire.
Sans doute lié, il est mis dans l’onglet « utilisation » que :
Vous devez indiquez un choix par ligne sous la forme « cle|Label du choix »
et si je mets des ’"’ en fin de ligne, ils apparaissent à l’écran. (voir copie écran.
merci de votre aide.
il ne faut pas mettre de guillemet (ni en fin, ni en début de ligne). de plus évitez les virgules et espaces dans vos clès, mettre plutot des
_
si vous devez séparer les choses.Merci Maieul et bonne année !
Cela marche parfaitement avec ces explications.
Je suggère de mettre dans la prochaine version de l’explication de l’onglet « utilisation » , corrigeant la terminaison aussi de ’indiquer’ (’z’ au lieu de ’r’) sur toutes les explications en passant :
Vous devez indiquer un choix par ligne sous la forme : cle_sans espaces|Label du choix
William
bah heu non, les guillemets par définition indiquent une citation, donc on n’est pas censé les reprendre
Répondre à ce message
J’ai un problème persistant : je coche sur la page ?exec=formulaire_edit&id_formulaire=2&configurer=traitements
Effacer régulièrement les résultats les plus anciens
et j’indique un nombre de jours ex
160
pour « Nombre de jours avant effacement »mais cela n’est pas pris en compte. Je suis obligée d’aller effacer les enregistrements dans la base et les fichiers joints sur le serveur (là par exemple j’ai 8 mois de réponse alors que je veux que les plus récentes de 160 jours.
Les réponses sont toutes à « proposées » car n’ont pas vocation à être publiques
Plugins à jour avec SPIP 3.2.7 [24473]
Merci
très étrange, il n’y a pas de raison que cela ne fonctionne pas. Peux tu me dire si dans « liste des travaux » (menu maintenance) tu a bien une tache « formidable_effacer_enregistrements » et qu’est-ce qu’il se passe si tu l’applique manuellement. Par ailleurs as tu des messages de logs PHP (niveau serveur) ?
(ps : tu peux aussi mettre les réponses à la corbeille, elles sont supprimées au bout de 24h)
Merci pour ta réponse rapide.
J’ai lancé les travaux du cron mais cela n’efface rien.
Je ne trouve pas de error.log
Je vais effacer les anciens enregistrements dans la base directement (il y en a plusieurs centaines).
non, efface les en mettant à la poubelle, pas directement dans la base, cela permet de s’assurer de la cohérence.
Du reste, si il y a un bug, il faut le résoudre. Peux tu m’envoyer l’export yaml de ton formulaire ? Peux tu activer temporairemnet l’affichage des erreurs et des warnings, puis faire un test par cron ?
Mon yaml est là : https://framadrop.org/r/ByvTk_R_DF#+6/orTBBZzRfcfcdrb/ikA+4//CyW0zxtXkCxoTkDnQ=
Peux-tu me dire quel fichier de log je dois regarder ?
J’ai par exemple dans dans jq.log :
et
HUM. En tout cas chez moi ca marche. Moi il me faudrait les logs de PHP. En gros on dirait qu’il y a un bug au niveau PHP, donc ces là que cela doit être logué. Eventuellement les logs sql.log.
Tu est en mysql ou sqlite ?
J’ai réussi : il y avait quelques réponses isolées de plus d’un an qui étaient toujours en base. Je les ai supprimées à la mano et maintenant le cron supprime bien les réponses de plus de 6 mois. Il devait y avoir un blocage quelque part.
Merci
j’avoue mal comprendre pourquoi des vieilles réponses bloquait le cron qui se contentait de faire un requete sql. Mais l’essentiel est que cela soit résolu
Répondre à ce message
Bonjour
Lors de l’utilisation d’un formulaire qui récupèrent les réponses à un sondage pour des paniers de légumes, les adhérents donnent un minimum de renseignements nom/courriel/type de panier.
Or je m’aperçois que dans l’interface d’administration seul les noms (+liens) des auteurs du site apparaissent dans le récapitulatif des réponses (cf copie écran), les autres réponses restent sans nom … il faut cliquer sur la réponse pour accéder à toutes les infos dont le nom.
Est ce normal ? ou j’ai omis de paramétrer quelque chose ?
Grand merci pour ce petit bijou de plug-in
Bertrand
Oui c’est normal : Formidable ne peut pas deviner tout seuls les champs pertinent à afficher.
Mais lors de la configuration de l’enregistrement, tu peux définir une option « affichage résumé de la réponse » pour dire quel champ afficher ici.
Génial !
Exactement ce que je voulais ! On peut même combiner plusieurs champs :-)
C’est le champ utilisateur/adresse IP qui me posait problème et que je cherchais à modifier. Je n’avais pas vu la subtilité « Affichage résumé de la réponse ».
Merci encore
PS : j’ai l’impression que j’ai un bug d’affichage ou bien c’est dans le plug-in ? (voir copie d’écran)
Dans l’écran de Configurer les traitements, la tête de chapitre Enregistrer les résultats est en dessous des réglages …
c’est plus ou moins un bug d’affichage, ca depend comment on voit les choses.
la flèche point le legend du fieldset, alors que le cercle entoure le pseudo label de la case. Du coup on a l’impression qul’info est dupliqué, alors qu’en fait nom. Il faudrait plutot supprimer ce qui est entouré dans le cercle, qui n’a guère de sens en terme d’accessibilité
Ben OK sauf que tout le reste du formulaire utilise une nomenclature ; tête de chapitre, puis réglages… donc ça me paraissait logique sauf là :-)
Bertrand
ca se discute. L’idée est qu’on choisi les traitement, puis on les règles, ce qui n’est pas le cas ailleurs. Techniquement on pourrait faire ainsi, mais c’est pas si simple.
ouais, ce serait possible, mais ca impliquerait une migration de la structure du formulaire et des données + des tests qui en découle. Bref un sacré sac de nœud avec des risques de bugs potentiels pour une plus value limitée.
Faut bien comprendre qu’il y a 2 étapes
1) le choix du traitement (ce que tu tappel « réglage »)
2) le réglage du traitement (ce qui amène une « tete de chapitre » a apparaite, si le traitement est coché)
Si je supprime ce qui est entouré en cercle, ca fait bizarre parce qu’on a des label hyper long. Si je déplace la case à cocher sous la « tete de chapitre », faut beaucoup de code pour ne pas afficher la suite des résultats. Bref, pas convaincu et pas envie de passer du temps sur ca.
Comme tu dis le faux label qui n’est pas de la case ne sert à rien. On pourrait l’enlever et mettre « pleine_largeur » sur la saisie, et du coup sans marge inutile sur le côté gauche. Et du coup aussi enlever la marge gauche non standard qu’il y a sur « .option_traiter ». Après avoir fait ça, pour mieux distinguer les lignes des traitements racines (les deux cases à cocher de base du départ), il faudrait peut-être les mettre avec un fond d’une autre couleur, un truc comme ça…
Cf capture. Je ne dis pas que c’est avec cette couleur qu’il faudrait mettre (et sans bordure je pense, juste le background), mais sur le principe, ça permet de bien mettre en avant du premier coup d’œil les choix « racines », de leur configuration respective, sans ajouter d’encadrement de partout (c’est mal, fuck les bordures et cadres partout).
oui j’avais testé d’enlever le faux label, mais j’était pas hyper convaincu en terme de rendu. Tu veux que je commite et que tu complète avec ta couleur ?
Voilou
https://zone.spip.net/trac/spip-zone/changeset/119202
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 :
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.
Suivre les commentaires : |