Gestion des mots-clés par arbreUn code-source est à présent disponible - et selon une approche différente et plus dynamique que celle proposée dans Spip-Agora - pour la gestion d’une arborescence pour les mots-clés. En effet la méthode de gestion peut devenir un « enfer » dans certains cas utilisateurs, en imaginant un webmestre de site qui lui a besoin d’une foultitude de mots-clés. Par exemple, la gestion d’une bibliothèque - avec en plus des raffinements - certains mots-clés finalements intégrés dans d’autres pour gérer ses bouquins). Pardon aussi à Spip-Agora, mais je n’ai pas trouvé la méthode proposée très commode d’utilisation, ne parvenant personnellement pas à ressentir ou même à voir clairement une manipulation facile et compréhensible en comparaison de l’admin SPIP originelle. Ces choix furent globalement différents ; J. Pyrat m’a recommandé la gestion d’un arbre par représentation intervallaire et c’est vrai que c’est ce qu’il y a de plus commode à utiliser.
E. Le Bescond de CleverAge m’a recommandé d’utiliser DB_NestedSet (une classe de PEAR) qui est un outil complet, mais trop lourd à intégrer pour ce simple usage ; après avoir parcouru le code, je pense que le framework complet de Nested, bien qu’un état de l’art dans une gestion d’arbre récursif, n’apporte rien pour une simple gestion d’arborescence de mots-clés. De plus la reintégration de code de Spip-Agora, basé sur Spip 1.7 qu’il à progressé n’apporte aussi rien àmha et autant d’utiliser Spip-Agora dans ce cas ;). Devant ce dilème, la philosophie de programmation de Spip m’a paru avoir ses propres méthodes de développement, j’ai fait le choix d’ajouter quelques briques nouvelles pour cette gestion.
Pour l’interface j’ai retenu la vision simple que tout le monde maîtrise, du moins connait, une vue en 2 blocs à la façon explorateur classique. De quoi toucher concrètement donc 95% des utilisateurs finaux. L’interface se veut donc simple et proposant un unique submit afin d’alleger tout le processus de demande serveur.
la liste des mots est composée ainsi :
On sélectionne le parent dans l’arbre, on sélectionne un mot ou un groupe dans cette liste, on clicke sur "Transférer" et l’élément se voit ainsi ajouté dans l’arbre en tant que fils. Tous les éléments du groupe, dans le cas ou l’on clique sur un champ de groupe. Tous les intitulés des groupes représentés par une couleur distincte. Cela se fait via l’utilisation d’une bibliothèque Javascript développée originelement par nimai, finalement agrementée de méthodes nombreuses afin d’assurer la gestion de cet arbre, pour gérer notamment l’indentation, les déplacements, suppression.. Et donc l’avantage de ne jamais recharger la page jusqu’à Validation de sa page. L’installation ou non de l’arborescence dans les mots clés se fait via l’interface d’administration :
Gestion des mots-clés, Version 2Après la première version d’interface de gestion des mots-clés, qui lui permettait de melanger les mots et les groupes entre eux, cette 2e version s’intègre à présent fonctionnelement dans SPip. L’intégration dans les boucles est réalisée, l’utilisation fonctionnelle a été revue. Ainsi, chaque groupe de mots dispose de son propre arbre (ces arbres sont en fait des branches de l’arbre fondamental pour ne pas avoir eu à faire de fix et casser une structure centrale existante. Une méthode de Wharfs [1] permet d’ouvrir l’interface et présente la gestion de l’arborescence sous chaque groupe de mots. L’ajout d’une selectbox des groupes disponibles dans mots_tous.php avec retrait du while qui suivait afin de n’afficher que le groupe que l’on édite et "onselect" changer de groupe et de page, ce qui permet de pouvoir mieux gerer l’affichage de mot_tous en cas de grands nombres de mots. Enfin des méthodes nouvelles ont étés ajoutées à l’interface, notamment à mots_edit.php afin de pouvoir lors de la création d’un nouveau mot, ajouter celui ci dans un bout de l’arborescence. ajout des méthodes en tant que bouclecritères actuellement disponibles :
Soit le jeu de test suivant : Ce qui à été Réalisé :
A améliorer
[1] un Wharf est une puce ouvrante/fermante, nom qui provient de NextStep/Afterstep. http://www.tldp.org/FAQ/AfterStep-FAQ-6.html |
|||||||||||||||||






