[SPIP Zone] TODO mots_partout

hello,
je viens de voir passer, avec beaucoup de retard, TODO-bug.txt (zeraxp).
je ne suis pas sur la derniere version, j'en suis resté à avant l'arborescence, mais voici un retour, ca permettra d'identifier ce qui est de la regression de ce qui date d'avant.

> - ajouter des localisations, et les améliorer
pas compris...

> - faire une page pour creer les tables et ajouter une colonne dans spip_groupes_mots:
c'est la page ecrire/?exec=config_mots_partout

> * rendre l'installation actuelle plus interactive (choix des tables dont on a besoin)
c'est deja le cas

> * rendre l'installation actuelle générique
cad ?
il suffit d'ajouter une "chose_possible" pour pouvoir la manipuler (voir spipcarto)

> * avoir une interface pour mettre des oui/non dans les nouvelles tables spip_groupes_mots
donc ca c'est deja le cas

> - traduire l'article sur spip-contrib
oui...

> - faire des interfaces pour au moins tous les éléments SPIP (rubriques, breves, mots, ...)
ben il y a l'affectation de mots clés sur tout sauf documents dans ma version mais je crois que ca a été ajouté depuis (pas sur)

> - trouver une meilleure méthode pour l'authentification
pas compris...

> - revoir la logique du stricte, utiliser HAVING de mysql
oui

pour les bugs, :
n°1 : pas dans ma version (avant arborescence)
n°2 : l'interface d'affectation est buguée, il faut refaire les fonctions d'affichage sans pagination
n°3 : on a jamais tranché les histoires de securité / droit d'acces => passer par une autorisation specifique que chacun puisse adapter selon son fonctionnement
n°4 : par l'interface mots_partout ca marchait, en ajoutant la "boite" aux documents aussi mais c'est trop horrible au niveau ergonomie...
n°5 : chez moi ca marche
n°6 : chez moi ca marche

voila voila...

@++

MARNE Bertrand a écrit :

Je suis vraiment un béotien en MySQL... Il faut excuser mes question débiles:

Le 06/11/07, Stephane<stephane@rezo.net> a écrit :
  

MARNE Bertrand a écrit :
ah, heu, non, pas aux mots, c'est la limite du systeme "générique" : on
ne peut pas avoir de table spip_mots_mots (id_mot,id_mot)

Pourquoi ne peut-on pas avoir de table spip.mots.mots ???
  

le probleme n'est pas le nommage de la table mais que 2 champs d'une meme table ne peuvent pas avoir le meme nom.
la convention de nommage de Spip pour les relation n<->n est la suivante :
table 1 : spip_xxx (id_xxx, .... reste des champs)
table 2 : spip_yyy (id_yyy, .... reste des champs)
table de jointure : spip_xxx_yyy (id_xxx, id_yyy)

on ne peut donc pas associer une table à elle meme avec ce principe (on pourra sans doute quand on aura des "alias", mais ca implique quand meme de donner un sens à la relation, X,Y etant different de Y,X => relation parent/enfant et non pas simple association).

moi je fais des mots clés sur des groupes de mots (ce qui est le plus
proche)
    
C'est déjà pas mal...

Mon utilisation :
l'utilisateur selectionne des mots clés dans un groupe "principal".
à chaque mot clé séléctionnés, un ou plusieurs groupes associés lui sont proposés pour affiner sa description.
typiquement, j'ai un groupe de mots region et des groupes de mots departement contenant les villes de ces départements.
Quand je selectionne ma region, les 4 ou 5 listbox département apparaissent.
ais c'est surtout puissant pour de la catégorisation plus sémantique, un groupe pouvant etre associé à à des mots de divers groupes.

Mais les mots sur les mots serait carrément plus puissant.
  

oui mais c'est aussi plus compliqué à mettre en place et à maintenir.
déja en gérant ca au niveau des groupes, avec 2000 mots, c'est un joyeux bordel, j'ai du faire un squelette spécifique pour voir le résultat (en limitant la profondeur pour eviter les bouclages).

@++

Stephane a écrit :

hello,
je viens de voir passer, avec beaucoup de retard, TODO-bug.txt (zeraxp).
je ne suis pas sur la derniere version, j'en suis resté à avant l'arborescence, mais voici un retour, ca permettra d'identifier ce qui est de la regression de ce qui date d'avant.

> - ajouter des localisations, et les améliorer
pas compris...
  

certains textes sont soit directement en dur ( je pense pas qu'il en reste beacuoup en théorie c'est ok ca mais a vérifier), soit en utilisant le fichier de lang FR mais ne sont pas traduit dans d'autres langues

> - faire une page pour creer les tables et ajouter une colonne dans spip_groupes_mots:
c'est la page ecrire/?exec=config_mots_partout
  

c'était déjà dans le fichier ca il me semble ?

> * rendre l'installation actuelle plus interactive (choix des tables dont on a besoin)
c'est deja le cas
  

idem

> * rendre l'installation actuelle générique
cad ?
il suffit d'ajouter une "chose_possible" pour pouvoir la manipuler (voir spipcarto)
  

euh le but était plutot d'ajouter les champs necessaires a la gestionde l'arborescence mais ca a déjà été fait ...

> * avoir une interface pour mettre des oui/non dans les nouvelles tables spip_groupes_mots
donc ca c'est deja le cas
  
> - traduire l'article sur spip-contrib
oui...

> - faire des interfaces pour au moins tous les éléments SPIP (rubriques, breves, mots, ...)
ben il y a l'affectation de mots clés sur tout sauf documents dans ma version mais je crois que ca a été ajouté depuis (pas sur)
  

oui ca été ajouté depuis , mais dans legender, je compte réutiliser le plugin pour la 192 ( pipeline documents) pour gérer cela plus proprement

> - trouver une meilleure méthode pour l'authentification
pas compris...
  

j'ai pas écris ca moi ???

> - revoir la logique du stricte, utiliser HAVING de mysql
oui
  

si tu le dit :slight_smile: jusque la ca devait déjà etre dans le fichier todo

pour les bugs, :
n°1 : pas dans ma version (avant arborescence)
n°2 : l'interface d'affectation est buguée, il faut refaire les fonctions d'affichage sans pagination
n°3 : on a jamais tranché les histoires de securité / droit d'acces => passer par une autorisation specifique que chacun puisse adapter selon son fonctionnement
n°4 : par l'interface mots_partout ca marchait, en ajoutant la "boite" aux documents aussi mais c'est trop horrible au niveau ergonomie...
n°5 : chez moi ca marche
n°6 : chez moi ca marche
  

Je n'ai pas vérifier ces bugs , chez tout fonctionne ... mais je n'ai pas encore essayer de reproduire tout ca... je l'ai mis ici pour si quelqu'un voit leur résolution

voila voila...

@++
  

Je compte remettre tout ca a plat ce week end a clermont...
@+

Salut Yoann,
en fait, j'ai fait un svn update et j'ai vu passer ce fichier que je n'avais pas.
sur le coup, j'ai vu que ca avait été ajouté par zeraxp, j'avais pas fait le rapprochement...

Yoann NOGUES a écrit :

> - ajouter des localisations, et les améliorer
pas compris...
  

certains textes sont soit directement en dur ( je pense pas qu'il en reste beacuoup en théorie c'est ok ca mais a vérifier), soit en utilisant le fichier de lang FR mais ne sont pas traduit dans d'autres langues

ah, ok.
pour moi localisation = géolocalisation, ca j'appelle ca internationalisation (I18N), c'est pour ca que j'avais pas compris.

> - faire une page pour creer les tables et ajouter une colonne dans spip_groupes_mots:
c'est la page ecrire/?exec=config_mots_partout
  

c'était déjà dans le fichier ca il me semble ?

oui, depuis longtemps.
par contre il doit toujours y avoir un probleme avec forum, non ?
à verifier.

> - faire des interfaces pour au moins tous les éléments SPIP (rubriques, breves, mots, ...)
ben il y a l'affectation de mots clés sur tout sauf documents dans ma version mais je crois que ca a été ajouté depuis (pas sur)
  

oui ca été ajouté depuis , mais dans legender, je compte réutiliser le plugin pour la 192 ( pipeline documents) pour gérer cela plus proprement

OK

> - trouver une meilleure méthode pour l'authentification
pas compris...
  

j'ai pas écris ca moi ???

ben c'est dans le fichier...
c'est peut etre moi, en voulant dire qu'il fallait des autorisations pour pouvoir gerer qui accède à quoi et le changer facilement sans modifier le plugin.

> - revoir la logique du stricte, utiliser HAVING de mysql
oui
  

si tu le dit :slight_smile: jusque la ca devait déjà etre dans le fichier todo

ah, ben ca doit etre Pierre (mortimer) qui avait marqué ca alors.
effectivement, le strict n'a jamais été clean.

Je compte remettre tout ca a plat ce week end a clermont...

cool, on regarde tout ca devant une bière alors.
:slight_smile:

@++

Merci pour les explications détaillées.

Il va encore falloir excuser ma grande naïveté et mon ignorance (mais
grâce à vous je progresse !):

Le 06/11/07, Stephane<stephane@rezo.net> a écrit :

> Pourquoi ne peut-on pas avoir de table spip.mots.mots ???
>
le probleme n'est pas le nommage de la table mais que 2 champs d'une
meme table ne peuvent pas avoir le meme nom.
la convention de nommage de Spip pour les relation n<->n est la suivante :
table 1 : spip_xxx (id_xxx, .... reste des champs)
table 2 : spip_yyy (id_yyy, .... reste des champs)
table de jointure : spip_xxx_yyy (id_xxx, id_yyy)

on ne peut donc pas associer une table à elle meme avec ce principe (on
pourra sans doute quand on aura des "alias", mais ca implique quand meme
de donner un sens à la relation, X,Y etant different de Y,X => relation
parent/enfant et non pas simple association).

Ne peut-on pas déroger à cette convention de nommage en créant, par
exemple, une jointure nommée «spip_mot_mot_parent» (et donc si je
comprends bien un critère «id_mot_parent» pour les boucles MOTS) ?

> Mais les mots sur les mots serait carrément plus puissant.
>
oui mais c'est aussi plus compliqué à mettre en place et à maintenir.
déja en gérant ca au niveau des groupes, avec 2000 mots, c'est un joyeux
bordel, j'ai du faire un squelette spécifique pour voir le résultat (en
limitant la profondeur pour eviter les bouclages).

C'est peut-être plus simple d'éviter les bouclages avec des mots sur
les mots eux-mêmes que sur les groupes de mots. Il suffit d'exclure le
mot X de la liste des mots à attacher au mot X dans l'interface, non ?

@+

--
MARNE Bertrand

MARNE Bertrand a écrit :

le probleme n'est pas le nommage de la table mais que 2 champs d'une
meme table ne peuvent pas avoir le meme nom.
la convention de nommage de Spip pour les relation n<->n est la suivante :
table 1 : spip_xxx (id_xxx, .... reste des champs)
table 2 : spip_yyy (id_yyy, .... reste des champs)
table de jointure : spip_xxx_yyy (id_xxx, id_yyy)

on ne peut donc pas associer une table à elle meme avec ce principe (on
pourra sans doute quand on aura des "alias", mais ca implique quand meme
de donner un sens à la relation, X,Y etant different de Y,X => relation
parent/enfant et non pas simple association).
    
Ne peut-on pas déroger à cette convention de nommage en créant, par
exemple, une jointure nommée «spip_mot_mot_parent» (et donc si je
comprends bien un critère «id_mot_parent» pour les boucles MOTS) ?
  
non, non, le probleme n'est pas vraiment la.

le gestion des mots clés est "generique" (c'est le travail que j'ai fait sur ce plugin).
le principe est justement de s'appuyer sur la convention de nommage existante pour avoir des fonctionnalités qui marchent sur n'importe quelle table, pour peu qu'on respecte cette fameuse convention.
j'ai mis ca en place pour spipcarto initialement.
Il y a dans la gestion des mots clés de spip des "if table=breves", if table=articles ...
au lieu d'ajouter des ifs à chaque fois, on s'appuie directement sur les parametres, du coup, il suffit de "dire" à spip (en declarant une "chose_possible") qu'il y a des mots sur un type d'objet pour pouvoir utiliser la "boite" d'affectation, les criteres id_mots, type_mot, titre_mot...

1) pour affecter un mot clé, on passe le type d'objet sur lequel on affecte, l'id de l'objet et l'id du mot
pour les mots, ca donnerait donc type=mot&id_mot=X&id_mot=Y
dans le traitement, on ne récupèrerait que X OU Y, impossible d'avoir X ET Y

2) <BOUCLE_X(XXXS){id_mot=X}> est traduit par spip par une jointure sur la table spip_mots_xxx pour remonter tous les XXX ayant le mot X affecté.
mais <BOUCLE_MOT(MOTS){id_mot=X}>, c'est traduit par je veux LE mot dont l'id est X

3) comme je le disais, on ne peut pas avoir 2 champs de meme nom dans une table, or le repérage des jointure par Spip s'appuie sur la correspondance entre le nom de la clé primaire et le nom du champ dans la table de jointure

bref, pour pouvoir le faire, il faudrait
1- changer le systeme d'affectation des mots clé (en passant par exemple id_mot_lie au lieu de id_mot).
ca n'est pas le plus difficile, mais il y a peut etre des consequences importantes (pas trop sur spip lui meme normalement, mais par contre, ca risque de rendre le plugin incompatible avec d'autres qui exploiterait la gestion des mots clés)

2- traiter au moins un critere specifique pour pouvoir faire <BOUCLE_MOT(MOTS){id_mot=X}{id_mot_lie=Y}> et que spip ne se melange pas les pinceaux
ca, c'est plus compliqué qu'il n'y parait car on retombe sur les fonction generiques fabriquant les requetes d'insertion, il faudrait donc réintroduire du specifique, au moins pour le cas mots/mots

3- l'association aurait donc un sens (X affecté à Y different de Y affecté à X).
on pourrait eventuellement prevoir 2 criteres pour pouvoir ou non tenir compte du sens, mais pour ce qui est des "boite d'affectation", on serait obligé d'en tenir compte (il me semble)
du coup, il faut doubler, au moins pour mots (encore une exception...) la presentation des mots : ce mots est affecté à X,Y,Z ET les mots X, Y, Z lui sont affectés.

Conclusion : rien d'impossible, mais c'est du taf.
le truc potentiellement le plus problematique, c'est ce changement de fonctionnement de l'affectation qui risque d'amener des incompatibilités avec les plugins integrant des surcharges (agenda, F&T, peut etre d'autres...)
aujourd'hui, en passant avant (en 1.9.2, en nommant le plugin "_mots_partout), on reste compatible.
Donc pour le faire proprement, il faudrait egalement penser à ces plugins qui ont mis en place leur propre interface d'affectation.
Ca montre qu'il faut sans doute gerer 2 interfaces d'affectation : la "boite" classique, et une liste à choix multiple (pour les documents, peut etre les articles syndiqués, ca se justifie sans doute aussi)

voila mes 2 sous, de quoi alimenter un peu la discussion...

@++

Le 07/11/07, Stephane<stephane@rezo.net> a écrit :

voila mes 2 sous, de quoi alimenter un peu la discussion...

Deux sous qui valent de l'or !

C'est clair, mais il va falloir que je te relise encore une ou deux
fois pour être sûr d'avoir bien compris.

Quand j'aurai plus avancé sur le boulot que je fais sur mon premier
plugin j'essaierai de voir si je peux me lancer là dedans... Faudra
vraiment vraiment vraiment pas être pressé !

@+

--
MARNE Bertrand