Sélecteur générique avec autocomplétion

Ce plugin fournit une API pour simplifier l’utilisation d’une aide d’autocomplétion lors du remplissage d’un champ texte (input ou textarea). Il propose donc une méthode pour décrire d’où viendra l’autocomplétion (un squelette SPIP ou une fonction PHP), à appliquer dans les attributs HTML du champ voulu (data-).

Installation

Important Le .htaccess du site doit être activé (car l’appel des données se fait via le url réécrite /selecteur.api)

Utilisation

Pour ajouter un nouveau sélecteur, suivre les étapes suivantes :

  • Créer un squelette dans le répertoire selecteurs/monselecteur.html
  • Ce fichier doit retourner une liste de résultats au format JSON :
    [
        {"label":"Titre 1", "value":"valeur1"},
        {"label":"Titre 2", "value":"valeur2"}
    ]

    Le label est ce qui sera affiché dans la liste déroulante, tandis que la valeur est ce qui sera réellement utilisé pour remplir le champ. Quand les deux sont pareil, l’élément peut être directement une chaine plutôt qu’un objet.

  • le champ connecté au selecteur doit posséder l’attribut data-selecteur, la valeur associée est le nom du sélecteur :
     <input type="text" value="" data-selecteur="monselecteur" /> 

Pour plus d’information voyez le commentaire de commit

Discussion

23 discussions

  • Bonjour,
    Après avoir testé le plugin, j’ai vu qu’il affiche l’auto-completion.

    Mais quand je clique un item, il rempli l’input de la boite recherche avec id_article ou id_rubrique. et puis
    quand je clique sur le bouton recherche, il recherche cet ID. c’est dommage.

    Je voudrais créer un $_GET[’rubrique78’] avec le lien du site comme « spip.php ?rubrique78 ». Si non Je voudrais avoir un solution pour modifier ce plugin.

    ça serait plus si qqn me laisser un conceil sur ce plugin pour qu’il marche

    Répondre à ce message

  • Bonjour,

    à noter que dans le cas d’une utilisation coté publique des selecteurs génériques, il faut ajouter a mes_options.php

    define('_SELECTEUR_GENERIQUE_ACTIVER_PUBLIC', true);

    Répondre à ce message

  • 10

    J’ai installé le plugin sur mon SPIP 3.0.5 [19081] mais il ne change pas le comportement de mon ajout de mot clef à un article, alors que j’ai bien plus de 50 mots clefs…

    Il y a quelque chose à faire en plus de l’activation du plugin ?

    • Même question...
      Par contre ma config est un peu différente : spip 3.0.5 19905, 6 mots-clés ( c’est un site de test ) mais avec

      // Nombre de mots clé dans les liste espace privé spip
      define('_MAX_MOTS_LISTE', '1');

      dans config/mes_options.php pour avoir le sélecteur avec si peu de mots-clés.

      Au fait, sélecteur générique 0.8.5 - test

    • il faut aussi que le htaccess soit activé.

    • J’ai bien ça dans mon .htaccess :

      RewriteRule ^([\w]+)\.api(/(.*))?$ spip.php?action=api_$1&amp;arg=$3 [QSA,L]
    • Pareil pour moi, plein de mot-clés, mais ça ne fonctionne pas.

      Peut-être la version de JQuery ?

    • Remarque
      Le .htacess plus juste est :

      RewriteRule ^([\w]+)\.api(/(.*))?$ spip.php?action=api_$1&arg=$2 [QSA,L]
    • Pas mieux.

      C’est bien le formulaire d’ajout de mot clef dans un article qui devrait changer ?

    • Je pense oui… Mais malgré les conseils, aucun changement chez moi non plus…

    • Ciao

      Que donne le profileur réseau du navigateur ? Normalement si le champ est bien pris en charge pas le selecteur générique, une requete HTTP est lancée dans la foulée sur spip.php ?action=api_selecteur

      Au moins cela devrait faire une 404.

    • Aucune requête n’est lancée tant que je ne clique pas sur le bouton « Rechercher », qui recharge tout le bloc de l’article.

    • il faut ajouter data-selecteur="mot" sur le input text dans :

      plugins-dist/mots/prive/objets/liste/mots_associer-recherche.html 

      le mieux étant de surcharger le fichier en question...

      Dans la console firebug j’ai bien les requetes ajax sur l’api selecteur.

      Par contre je le css n’est pas OP, j’ai pas encore la boite déroulante de suggestion.

    Répondre à ce message

  • Teenoo

    Bonjour,

    j’essaie de faire fonctionner le sélecteur générique côté publique (formulaire de recherche). Mais pour y arriver encore faudrait il qu’il fonctionne sur le backoffice.

    Le .htaccess est bien activé (je teste en ligne), en revanche il n’y a pas de réécriture de selecteur.api. Comment faire ?

    Merci pour votre réponse.

    Répondre à ce message

  • Stéphane Santon

    Bonjour,

    Pas une petite ligne de la syntaxe à utiliser pour insérer le sélecteur dans un squelette ?

    Répondre à ce message

  • 1

    Le plugin « sélecteur générique » (utilisé dans mon cas pour « spipicious ») fout en l’air la création d’auteur sur la page privée d’un article : sur un site avec beaucoup d’auteurs, on peut encore sélectionner un auteur s’il existe, en bénéficiant des facilités de saisie du sélecteur générique, mais il n’y a plus le lien qui permet normalement de créer un auteur on the fly en l’associant à l’article.

    D’autres personnes confirment ou voient comment régler ça ?

    Répondre à ce message

  • (Excusez mon mauvais français, svp)

    Je voudrais utiliser ce plugin sur mon SPIP2.1

    J’ai installé le plugin « ettiquettes », que racommande l’installation de ce plugin « Selecteur » et aussi de plugin « Nuage ». Tout va bien, tout marche.

    Un seule « ptit problem » : quand j’installe le Selecteur, il change la maniére de selectioner des Rubriques dans l’espace privé.

    Mes redacteurs sont habitués a l’ancienne selecteur (menu depliant). Ils trouvaint pas les rubriques comme ça, maintenant.

    Ma question :

    Est-ce je peux fair le selecteur fonctioner seulement pour le mots-clef du plugin Ettiquetes mais pas por les rubriques dans l’espace privée ??

    Ça serait parfait !

    Merçi Beaucoup pour le plugin, c’est genial quand meme.

     : )

    Répondre à ce message

  • Ce plugin est agréable à utiliser dans l’espace privé mais il y a une anicroche avec la sélection d’auteur pour un article et avec SPIP 2.1 : si je clique à gauche le nom de l’auteur proposé, la zone de saisie ne se remplit pas exactement avec le nom de l’auteur, mais avec :

    <img src='../prive/images/visit-12.gif'alt="Visiteur" title="Visiteur"  width='12' height='12' />  (emaildu@visit.eur)

    Répondre à ce message

  • 3
    Pierre-Jean

    Bonjour,

    Avez-vous une piste pour adapter le plugin sur un autre plugin...

    Je cherche à disposer d’un sélecteur générique en autocomplétion pour sélectionner l’une des 36000 communes françaises de la table spip_villes du plugin que je suis en train de réaliser...

    Mon plugin déclare un nouvelle objet spip : « ville »
    Cela devrait donc faciliter d’étendre le sélecteur générique à ce nouvel objet... Mais comment ?

    Des idées ? Bouts de code ? ...

    Pierre-Jean

    • Les bouts de code sont variables et fonction de chaque type de page de l’espace privé ; c’est un peu dommage qu’on ne le rende pas plus générique en effet — en mettant des classes bien pensées sur les formulaires on pourrait sans doute faire beaucoup mieux. N’hésite pas à venir contribuer !

    • Pierrot

      Bonjour,

      Moi aussi je cherche une piste de départ pour faire ceci :

      Dans le plugin Agenda il y a un champ « lieu ». J’aimerai activer « sélecteur générique » pour ce champ et lui permettre de lister les sous-rubriques d’une rubrique Annuaire.

      Pour l’instant je n’arrive pas vraiment à identifier ce que je dois faire ... Il me semble que je dois rajouter un « lieu.html » dans un dossier « selecteurs » ... soit dans « Agenda » soit dans « Selecteur générique » (je penche pour le 1er).

      Ensuite comment « Selecteur générique » prend-t-il en compte ce nouveau selecteur ?

      Dans Agenda je devrai à priori ensuite lier le plugin « Selecteur générique » (pas idée comment, pipeline ?).

      Ensuite je pige pas vraiment comment est fait le lien entre un champ avec un nom, « lieu » par ex, et le fait que le plugin s’active dessus et utilise le selecteur approprié ...

      Si quelqu’un avait quelques pistes, un exemple (j’ai essayé d’analyser « Grappes », mais c’est chaud pour comprendre tout le process).

      Merci d’avance ! Pierre.

    • olivier

      bonjour,

      j’ai genere une table de mots cle comportant les 36000 communes francaises (je n’utilise que le nom et le CP). j’ai teste la selection d’une ville avec le plugin etiquettes+selecteur generique+crayons : ca fonctionne plutot bien. la reactivite est tout a fait correcte.
      par contre j’ai rencontre un probleme dans l’espace prive sur cette table. quand j’associe un mot cle commune a un article, la requete n’aboutit pas. en creusant un peu je me suis apercu que c’est l’appel a « formulaire_mot_remplace » qui ne repond pas. visiblement ca genere une requete trop grosse. je n’ai pas eu le temps d’analyser davantage. je m’en suis sorti pour l’instant en commentant l’appel a formulaire_mot_remplace.
      ca ne concerne pas directement le selecteur generique, mais c’est pour signaler qu’il y a potentiellement un probleme avec les grosses tables de mots cles.

    Répondre à ce message

  • 2

    Etrange, depuis mon passage en 2.1.2, j’ai l’impression que ce plugin ne réagit plus pareil.

    Auparavant, en tapant par exemple « géné » ... le sélecteur me proposait par exemple « sélecteur générique » ... maintenant, il ne me propose plus que les mots clés qui commence par « géné ». Quelqu’un peut me confirmer si c’est le fonctionnement normal ou pas ?

    • C’est défini dans un squelette que tu peux modifier ou améliorer. Normalement on teste d’abord « qui commence » puis, dans un second temps, « qui contient ». Enfin sauf erreur...

    • Bien vu fil, j’avais déjà essayé de bricoler l’un de ces squelettes (dans mon cas selecteurs/mot.html) mais sans résultat ni conviction.

      Je viens d’y retourner et en fait, c’est bel et bien là que ça coince.
      L’écriture qui ne fonctionne pas chez moi

      <BOUCLE_s1(MOTS){recherche (#ENV*{q})*}
      	        {id_groupe IN #ENV{groupes}|explode{','}}
      	        {0,20}{!par points}{doublons}{tous}>

      alors que ça

      <BOUCLE_s1(MOTS){titre LIKE %(#ENV{q})%}
      	{id_groupe IN #ENV{groupes}|explode{','}}
      	{0,20}{par titre}{doublons}{tous}>

      retourne bien des résultats supplémentaires « qui contient ». Pourquoi n’aime-t-il pas le critère recherche, j’en sais fichtre rien.

      Voilà ce que je peux dire, je reste dispo si il y a besoin de plus de détails.

    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