Commit Graph

24 Commits (master)

Author SHA1 Message Date
Matthieu Marcillaud bee5eb6fde fix: erreur JS dans l’espace public en absence de config SPIP
Refs: #4
4 months ago
Matthieu Marcillaud 3098682753 fix: Ne pas recharger un sélecteur générique déjà actif 5 months ago
Matthieu Marcillaud 9a3cc4673b fix: Il semble que parfois un champ 'id' était utilisé dans le json des data (dans Grappes) 5 months ago
Matthieu Marcillaud 3f886325a0 fix: Retrouver l’option data-select-callback (avec des arguments différents cela dit) 5 months ago
Matthieu Marcillaud 1e298e6462 fix: suivre l’évolution du plugin Select2 5 months ago
Matthieu Marcillaud addf82f459 style: indentation JS 5 months ago
Matthieu Marcillaud 1c4397dd8c fix: correction suite à un renommage 5 months ago
Matthieu Marcillaud 2134b054be remove: Fichiers JS pour ui.autocomplete 5 months ago
Matthieu Marcillaud 67f899c862 feat: Utiliser Select2 sur les input[data-selecteur] à la place de ui.autocomplete 5 months ago
Matthieu Marcillaud b811472b9c feat: Indiquer en console si le format des data est déprécié 5 months ago
Matthieu Marcillaud 3bc24350ad feat: Utiliser select2 sur les formulaires d’édition de lien. 5 months ago
Matthieu Marcillaud 573d4d4f79 refactor: Déplacer les JS dans des fichiers dédiés 5 months ago
Matthieu Marcillaud 590668e6d2 feat: Autocomplete sur le formulaires d’ajout de mots clés 5 months ago
rastapopoulos@spip.org d2514ac6e3 For the first time in the SPIP world, let me introduce to you THE VERY FIRST AMAZING REAL GENERIC SELECTOR ! (blink blink)
Bon ok : ça ne marche qu'avec javascript. Donc pas encore accessible (mais j'y réfléchis).

Prend donc n'importe quel input text.
Ajoute lui les attributs suivants :
data-selecteur="generique"
data-select-php="oui"

Tape du texte. ET C'EST MAGIQUE.

Au passage un nouvel attribut est reconnu par le JS :
data-select-params="{objet JSON}"
et permet d'ajouter des choses dans le GET de l'action de sélection.

Pour le sélécteur "generique", deux paramètres supplémentaires sont alors reconnus :
"objets" => liste d'objets pour filtrer ceux qui seront sélectionnables
"objets_exclus" => l'inverse

Le plus lisible en squelette est de faire ça :
#SET{params, #ARRAY{objets_exclus, #LISTE{selections, selections_contenus}}|json_encode{1}|attribut_html}
et ensuite :
data-select-params="#GET{params}"

Real world example dans le plugin Sélections Éditoriales ensuite.
8 years ago
rastapopoulos@spip.org 68dd1e4730 On ajoute une nouvelle option data-select-php="oui" qui permet de dire qu'on veut chercher une fonction PHP au lieu d'un squelette. Dans ce cas ça va chercher charger_fonction(truc, 'selecteurs') au lieu de selecteurs/truc.html ! Il faut alors selecteurs/truc.php avec dedans function selecteurs_truc(). On passe en 1.0.0 parce que ça fait longtemps et que la base marche bien. 8 years ago
brunobergot@gmail.com 3c892144fc Mise à jour de jquery.ui.autocomplete.html.js pour éviter une erreur js
r89313 rétablissait l'insertion de jquery.ui.autocomplete.html.js mais ce script générait une erreur javascript, sa mise à jour fixe le bug
8 years ago
kent1@arscenic.info 13323981bf Je ne suis pas sûr que le renommage des plugins de jquery UI en 3.1 soit une bonne idée (ter)
Bien appeler les js de jquery ui en 3.1.x

Version 0.8.8
9 years ago
rastapopoulos@spip.org e98ae6050f Entourer de guillemets lors de l'insertion par défaut, lorsque la chaîne contient une virgule, puisque c'est le séparateur. 11 years ago
kent1@arscenic.info 614aa3b929 Je n'ai trouvé que cette méthode pour faire fonctionner le callback du select
à éprouver

Passage en 0.8.2
11 years ago
kent1@arscenic.info 9e8b7a59a9 Dans le public, éviter une erreur Reference machin chose car selecteurgenerique_test_espace_prive n'est pas défini 11 years ago
rastapopoulos@spip.org c420ccd590 Un premier jet à tester pour rendre le sélecteur générique *vraiment* générique, c'est-à-dire sans recoder un JS personnalisé à chaque fois.
Le principe est de déclarer le sélecteur à utiliser pour une autocomplétion directement dans le HTML avec un attribut personnalisé.

<input name="truc" data-selecteur="bidule" />
activera l'autocomplétion sur ce champ en utilisant le squelette "selecteurs/bidule.html".

Les sélecteurs utilisés avec ce système doivent renvoyer un tableau JSON comme l'indique la doc de UI.autocomplete : la liste contient des chaînes simples ou des tableaux avec les clés "label" et "value".

En sus, il est possible de gérer une liste multiple dans le champ texte en ajoutant l'attribut "multiple" au HTML : dans ce cas seul le dernier terme après la dernière virgule sera envoyé au sélecteur pour la recherche :
<input name="tags" data-selecteur="mes_tags" multiple="multiple" />

En sus de sus, il est possible de personnaliser le comportement qui s'activera lors de la sélection d'un élément dans la liste : il suffit alors de déclarer le nom de la fonction JS à appeler dans le HTML :
<input name="truc" data-selecteur="bidule" data-select-callback="ma_fonction_de_selection" />

Cette fonction reçoit les arguments (event, ui) et le tableau décrivant le résultat sélectionné se trouve dans "ui.item".
11 years ago
rastapopoulos@spip.org c23d6444b6 Le tableau n'était pas formaté comme l'attend la librairie JS utilisée déormais : "value" c'est pour la vraie valeur finale du champ, alors que dans la liste c'est "label" qui doit être affichée. Ça marchait car quand il n'y pas de label, c'était value qui était utilisé à la place. Quant aux scripts actuels ils utilisent la clé "result" qui ne correspond à rien dans autocomplete. Je laisse pour compat, mais il faudra changer tout ça. 11 years ago
kent1@arscenic.info bd636ace4e Des fichiers plus nécessaires normalement 11 years ago
kent1@arscenic.info 966db530d7 le trunk 11 years ago