Formidable Tablesorter — afficher, trier et filtrer vos réponses

Le plugin Formidable Tablesorter, s’appuyant sur la librairie JS éponyme, permet d’afficher les réponses à un formulaire Formidable sous la forme d’un tableau, triable, filtrable, imprimable et exportable.

La présente documentation est valable à partir de la version 2.0 du plugin.

Installation

Le plugin nécessite, outre Formidable, le plugin Tablesorter dans sa version 2.0 ou supérieure.

Par défaut, le plugin Tablesorter intègre la librairie Tablesorter sur toutes les pages publiques et privées du site. Si l’usage est uniquement pour Formidable Tablesorter, il est recommandé de désactiver, via la configuration du plugin, cette insertion.

Accès au tableau

Une fois le plugin installé, un lien apparaît dans l’espace privé à gauche de la liste des réponses d’un formulaire, ainsi qu’à côté de la page du formulaire.

Lien vers le tableau de réponse

En suivant l’un de ces liens, nous accédons au tableau à double entrée.

Par défaut, celui-ci affiche :

  • tout d’abord, les onglets permettant de filtrer les réponses selon le statut;
  • puis des boutons d’action et une aide contextuel
  • de haut en bas : toutes les réponses du statut sélectionné
  • de gauche à droite :
    • l’identifiant et la date de chaque réponse
    • les champs extras éventuels associés à la réponse
    • les champs de la réponse

Il sera possible par la suite de masquer des colonnes et des lignes.

Le nombre de lignes est limité à 100 par pages, mais une pagination est proposée au delà.

Exemple de tableau

Tri du tableau

Les entêtes de colonnes permettent de trier le tableau selon la valeur d’une colonne.

Attention : le tri se fait côté serveur, il faut donc parfois patienter un peu

Masquage et déplacement de colonnes / de champs

Selon le besoin, il est possible de masquer certaines colonnes. En cliquant sur le bouton “choix des colonnes”, la liste des colonnes apparaît. Il suffit de décocher les colonnes que l’on veut masquer.

Il est possible de déplacer des colonnes, en cliquant sur sur les flèches en haut des colonnes.
Attention, le réordonnancement se fait côté serveur, et peut donc prendre du temps.

Formulaire de masquage de colonne

Filtrage des lignes / des réponses

Il est possible de filtrer les réponses selon la valeur des champs. En dessous de chaque entête de colonne se trouve un champ de saisie. Il suffit d’y mettre la valeur que l’on veut conserver, puis de faire un retour ligne : seules les lignes contenant la valeur saisie s’afficheront désormais.

Le filtrage est souple :

  • pour des champs de type numérique, il est possible d’utiliser les opérateurs de comparaison. Mettre <10 pour afficher uniquement les réponses donnant une valeur inférieure à 10.
  • pour des champs de type texte, ne seront affichés que les réponses contenant la valeur saisie, mais il n’est pas nécessaire que la valeur du champ soit strictement identique à cette valeur. Ainsi, écrire “janvier” permettra d’afficher les réponses ayant “janvier 2019” comme “janvier 2020”.
  • pour en savoir plus, sachez que le plugin utilise la syntaxe des tests des affichages conditionnel du plugin Saisies, en omettant simplement le @@ initial.

Attention : le filtrage se fait côté serveur, il faut donc parfois patienter un peu

Sauvegarde des réglages

Les paramètres de filtres, de masquages, de tri de colonne, etc., sont conservés sur le serveur. Ils sont associés au compte pour les personnes connectés, stockés en sessions anonymes pour les personnes non connectées.

Dans les version antérieur à 4.0, les réglages étaient stockés en local (webstorage). Aucune migration des réglages n’est prévue entre la 3.x et la 4.0.

Adresse IP

Une colonne “Auteurtrice” est présente. La colonne “Adresse IP” n’est présente que si l’option “Exporter les adresses IP” est activée dans la configuration de formidable.

Export

Des boutons permettent d’exporter le tableau filtré, sans les colonnes et les lignes masquées, dans des formats lisibles par les principaux tableurs du marché.

Réinitialisation

Deux boutons permettent de réinitialiser :

  1. Uniquement les filtres
  2. L’ensemble des réglages

Affichage côté public

Il est possible d’afficher le tableur côté public, en insérant dans un article le modèle <formidable_ts|id_formulaire=xxx>, où xxx est le numéro du formulaire.

Par mesure de sécurité, seul les personnes ayant le droit côté privé de voir les réponses peuvent voir les réponses.
Si vous voulez rendre cela public, il vous faudra surcharger vos autorisations. Pour rendre accessible l’ensemble des réponses de l’ensemble des formulaires, mettez dans votre fichiers mes_options.php le code suivant :

$GLOBALS['spip_pipeline']['autoriser'] .= "|mes_autorisations";

function mes_autorisations(){
	function autoriser_formulairesreponse_voir($faire, $type, $id, $qui, $opt) {
		return true;
	}
}

Il vous faudra également inclure les feuille de style CSS fournit par le plugin, mais qui ne sont présente que côté privée par défaut :

  • css/tablesorter.min.css;
  • css/formidable_ts.css ;
  • css/formidable_ts_prive_bloc_entete.css

Discussion

12 discussions

  • 11

    Bonjour et un grand merci pour ce superbe outil !

    J’aimerais donner l’accès aux résultats du formulaire et notamment au tableau des réponses à d’autres auteurs SPIP via l’espace privé. Y’a t’il un moyen de le faire via une gestion de droits dans le backoffice ou faut-il impérativement passer par une surcharge de mes_options.php ?

    Le cas échéant, n’étant pas expert, ou puis-je trouver de la ressource pour faire ça ?

    En vous remerciant par avance,

    • Il existe une option dans la configuration de formidable pour que les rédacteurices puissent voir les réponses de formulaire. Normalement cela devrait aussi s’appliquer à formidable tablesorter.

    • En effet, je n’avais pas vu cette option.
      Pour celles et ceux qui cherchent la même choses :
      Dans configurer formidable / généralités : cocher Attribuer une gestion des formulaires.
      Puis dans les formulaires, il devient alors possible de configurer des auteur.ice.s tout comme on configure le formulaire.

      En revanche, elle donne bien droit de visualiser le formulaire, j’aimerai que les rédacteur.ice.s puissent éditer le tableau. Est-ce qu’on peut changer ça d’une manière ou d’une autre ?

    • dans ce cas là il faut attribuer des auteurs aux formulaires (solution une)

      ca me parait pas hyper secure de donner le droit à tout les auteurs de modifier toutes les réponses. Il vaut mieux faire de l’attribution de formulaire par auteur.

      mais si tu y tiens surcharger les autorisations par défaut. en l’occurence l’autorisation

      autoriser_formulairesreponse_modifier()

      voir https://programmer.spip.net/Creer-ou-surcharger-des

    • Non mais je dis “les auteur.ice.s” mais en réalité je ne veux donner ce droit qu’à un seul auteur. J’ai donc ajouté l’auteur 39 comme auteur du formulaire en question.

      Puis je viens de surcharger config/mesoptions.php avec :

      <?php
      $GLOBALS['spip_pipeline']['autoriser'] .= "|mes_autorisations";
      
      function mes_autorisations() {
          include_spip('inc/mes_autorisations');
      }
      ?>

      Puis d’ajouté squelettes/inc/mes_autorisations.php avec le code suivant :

      <?php
      if (!defined('_ECRIRE_INC_VERSION')) {
          return;
      }
      
      function autoriser_formulairesreponse_modifier($faire, $type, $id, $qui, $opt) {
          if (isset($qui['id_auteur']) && $qui['id_auteur'] == 39) {
              return true;
          }
          return autoriser_par_defaut($faire, $type, $id, $qui, $opt);
      }
      ?>

      Mais pour l’instant aucun changement, quand l’auteur 39 tente de modifier le tableau, il obtient le message :

      formulaires_reponses_champ 9476: Non autorisé

      J’ai fais ça à l’arrache, je m’y repenche un peu plus tard...
      Merci pour ton aide en tout cas.

    • Ah bah si ton problème c’est que les auteuricess attribuées puissent modifier les réponses, et pas tout les auteurrices, c’est encore autre chose. Ca ca devrait être une fonctionnalité de base de formidable, et si ce n’est pas le cas actuellement c’est que c’est un bug (ce qui ne m’étonnerait pas outre mesure du reste). Donc je vais regarder cela et te revient tantôt.

    • Comme c’est un problème similaire à d’autres, j’ai tout mis dans une même MR.

      Il faudrait tester https://git.spip.net/spip-contrib-extensions/formidable/-/merge_requests/360#note_220896

    • Ah et il faut activer aussi “les personnes qui gèrent les formulaires peuvent modifier les réponses”.

    • Bonjour Maïeul, encore un grand merci pour tes réponses et investigation. Je ne suis pas certain d’être assez expérimenté pour tester le correctif. Il me semble plus sage d’attendre la prochaine version du plugin si elle intègre le correctif, alors je ferais le test.

    • Bon ok en fait c’est beaucoup plus simple que je ne l’imaginais et ça fonctionne !! Trop bien merci beaucoup.

      Par contre je constate encore 2 choses qui semblent être des bugs :
      -  Quand l’auteur modifie la réponse de la colonne “col x”, celle-ci est bien prise en compte, mais la cellule modifiée affiche alors

      col x nouveau texte

      au lieu de n’afficher que le texte modifié. Mais il suffit d’actualiser pour que tout revienne dans l’ordre.

      -  Quand un auteur modifie une réponse, cela modifie la date d’envoi en plus de la date de modification, les 2 se trouvent donc identiques après modification d’une réponse.

      Sinon le reste semble fonctionner à merveille.

      Pour finir, si j’ai bien compris, ma version “beta” sera remplacée automatiquement par une “RC” dès la prochaine mise à jour du plugin ?

    • Pour le premier point c’est un oubli de ma part lorsque j’ai codé cela il y a un certains temps. Et personne ne s’en est plein. mais je vais corriger, ca sera dans la prochaine version de formidable.

      Pour le second point, ce n’est pas un bug, c’est une fonctionnalité. Oui je sais ca peut paraitre contre intuitif, mais en fait il y 3 dates associés à une réponse, ce que l’on peut voir en se rendant sur la fiche de la réponse.

      -  Date d’envoi : c’est la date du premier envoi de la réponse
      -  Date : c’est la date du dernière envoi de la réponse (si la réponse est modifié après coup dans l’espace privé ou via des liens publiques)
      -  Dernière modification : c’est la date de modification de la réponse, que ce soit au niveau de son contenu, de son statut ou des meta données associées (si par exemple tu utilise des champs extras)

      Modifier un champ avec un crayon ou via une modification de la réponse étant structurellement la même chose (on transforme ce que l’internaute a fourni) c’est normal que modifier via le crayon (le tableau) modifie la date. Sinon on perd en cohérence dans le suivi.

    • Super merci pour tes réponses !

      en effet, j’avais cru que date et date d’envoi étaient identiques mais c’est moi qui ai regardé trop vite.

      c’est parfait merci beaucoup pour ces évolutions et corrections 😉

    Reply to this message

  • 1

    bonsoir,

    dans un usage classique de pétition, il est utile de pouvoir afficher la liste dans l’espace public, mais en sélectionnant certains champs... Si je comprends bien, il faudrait pour cela surcharger des autorisations, ajouter des css...

    je ne comprends pas bien pourquoi ce n’est pas considéré comme une fonction de base ?

    • Parce que j’ai codé ce plugin pas pour des pétitions et encore moins pour un affichage public.

    Reply to this message

  • 1

    Bonjour,
    le tableau marche bien dans l’espace privée, et aussi sur une page web dans l’espace public (en étant connecté). (spip 3.2.19 et Tablesorter 2.1.4 + Tablesorter pour Formidable 2.0.20)
    Super !

    Dans l’espace privé, page du tableau des réponses, y a juste un truc bizarre qui s’affiche : “( ” à la fin du tableau. Mais ça fonctionne quand même.

    -  Ensuite, pour voir le tableau sur une page publique en étant non connecté, j’ai mis le code php indiqué dans mes_options.php, mais j’ai une erreur :
    Notice: Undefined index: autoriser in /var/www/htdocs/monsiteweb/public/config/mes_options.php on line 26 (pareil en étant connecté, message visible aussi dans l’espace privé)
    Sur la page web publique, la structure du tableau s’affiche, mais avec “uncaught error: OK [200]”

    peut-être que ça vient de la version spip “trop vieille” ?
    merci par avance pour le suivi

    • Peut être oui. En tout cas je n’assure plus de service après don pour ces vieilles versions de SPIP plus maintenues ni du plugin lui même.

      Revenez vers moi si le bug est toujours là après mise à jour.

    Reply to this message

  • 3

    Bonjour,

    Lors de l’affichage du tableau de réponses ou d’un export CSV, le fichier contient bien :

    • tous les champs Formidable
    • le statut de la réponse
    • la date d’enregistrement du formulaire
    • le #ID_FORMULAIRE_REPONSE
    • mais pas l’Utilisateur / Adresse IP / Auteur

    On pourrait contourner ce manque en ajoutant un champ caché dans le formulaire qui enregistrerait l’Utilisateur / Adresse IP, mais quelle est la syntaxe qui permettrait de la faire : genre @nom_auteur@ ?

    Merci,
    François

    Reply to this message

  • 3

    Bonjour et merci pour cet excellent plugin...

    J’ai un soucis pour exporter l’ensemble du tableau en excel... Il n’exporte que les 100 ligne affichées...

    J’ai lu plus haut : Le nombre de lignes est limité à 100 par pages, mais une pagination est proposée au delà.

    Est-il possible d’y remédier ?

    Merci

    • Ok, j’ai trouvé l’occurrence à modifier dans le fichier du plugin /formidable_ts/v3.1.0/javascript/formidable_ts.js

      ligne 62 : pager_size: 100,//Nombre de lignes par page → Il suffit de modifier la pagination selon vos besoins. Ce serait bien d’inclure cette fonction dans un fichier de configuration ;-)

      Bonne journée

    • Non la future version du plugin exportera tout, quelque ce soit le nombre de page affichées effectivement.

    • La version 4.0 exporte tout les résultats, et plus page par page.

    Reply to this message

  • 3

    Bonjour,

    Merci pour ce plugin vraiment très utile. Je n’arrive pas à faire fonctionner les filtres mathématiques (opérateurs de comparaison) : quelles sont les conditions pour qu’un champ d’un formulaire Formidable soit reconnu de type numérique par Tablesorter ?

    Voici la définition du champ dans le fichier .yaml

    18:
        options: { label: 'Montant total', defaut: '0', autocomplete: defaut, obligatoire: on, info_obligatoire: '*', nom: input_7 }
        verifier: { type: entier, options: { min: '0', max: '5000' } }
        identifiant: '@627e79d6700a0'
        saisie: input

    Merci !

    • En théorie, il n’y a rien de spécial à faire, la reconnaissance est automatique. Cela étant, je me rend compte qu’en ce moment c’est cassé.

      Pourrais tu ouvrir un ticket ? je ne suis pas très disponible en ce moment pour du debugage, donc il faudrait que je garde une trace...

    • Merci beaucoup pour cette réponse très rapide.
      Je vais donc ouvrir un ticket, dès que ma demande de création de compte sur git.spip.net sera validée !

    • La version 4, qui devrait sortir sous peu, semble résoudre ce problème. Si ce n’est pas le cas après la sortie de la v4, rouvrir un ticket.

    Reply to this message

  • 4

    J’ai un parsererror 200 sur les tableaux.

    Vous savez d’où cela vient?

    • Un truc qui s’affiche ainsi au chargement du tableau ?

      probablement un bug au niveau du json produit. Il faudrait aller dans l’inspecteur firefox pour obtenir celui-ci.

    • Effectivement le tableau n’est pas chargé.

      Pour le reste, cela dépasse mes compétences.

    • Avec un accès admin à l’espace privé (monprenom@monprenom) je pourrais regarder et voir la cause du problème, au moins en première approche. Ensuite il faudra voir selon la nature du problème si j’ai besoin de plus de droit

    • J’envoie en MP

    Reply to this message

  • 5

    Bonjour,
    dans le cas :

    Par mesure de sécurité, seul les personnes ayant le droit côté privé de voir les réponses peuvent voir les réponses.

    Déconnecté, je n’ai pas les réponse, OK, mais j’ai quand même les boutons et le tableau ?
    J’aurais souhaité que l’ensemble ne s’affiche que lorsque l’on est identifié; ai-je loupé une étape ?, Merci Alain

    • Effectivement, c’est sans doute un bug. Pouvez vous ouvrir un ticket ?

    • Merci de la réponse, il me faudrait également savoir comment on ouvre un ticket...

    • 1. Demande un accès à la forge via le lien “S’inscrire pour contribuer”
      2. pour (quasi) chaque plugin sur contrib, tu as à droite un lien vers l’espace de tickets de ce plugin

    • Bon, entretemps il se trouve que j’ai du bosser sur le plugin, donc j’ai intégré cela dans la v2.0.19.

      Cependant la méthode reste valable, et c’est bien pour rapporter des bugs.

    • Merci beaucoup,
      je n’ai pas pris le temps pour faire remonter l’info sur la forge, mais je ferais le nécessaire la prochaine fois.

    Reply to this message

  • 4

    Sur un site en SPIP 3.2.13

    avec Tablesorter 2.1.3 - stable
    et
    Tablesorter pour Formidable 2.0.11 - stable

    les tableaux sont bloqués quelque part : je les vois, le contenu des réponses y est mais le tableau est grisé avec le spin qui mouline et “Chargement” en rouge.

    Je joins une capture

    A priori sur un site en SPIP 4.0.0 cela fonctionne.

    Merci

    Reply to this message

  • Bonjour et bravo pour le travail.,
    J’utilise ce plugin pour des inscriptions à 2 journées par bouton radio, donc soit l’une soit l’autre.
    Et un nombre de participants par inscrit soit “Dupont” : “2” participants
    C’est géographique, donc une inscription voit TOUS ces participants à la même journée

    J’aimerai juste un récapitulatif (total de participants par journée) pour les autres membres (affichage sur une page à part sans autorisation spécifique sauf l’adresse, ça je gère) :
    Journée 1 Total de participants : xx
    Journée 2 Total de participants : xx
    Comment puis-je faire ?
    par avance, merci
    Alain.

    Reply to this message

Add a comment

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.

Who are you?
[Log in]

To show your avatar with your message, register it first on gravatar.com (free et painless) and don’t forget to indicate your Email addresse here.

Enter your comment here

This form accepts SPIP shortcuts {{bold}} {italic} -*list [text->url] <quote> <code> and HTML code <q> <del> <ins>. To create paragraphs, just leave empty lines.

Add a document

Follow the comments: RSS 2.0 | Atom