[spip-dev] 1.4 alpha 1 - mots-clés sur les rubriques

Salut tout le monde,

J'attaque la version 1.4 alpha 1 (dans /devel).

Fichiers modifiés (par rapport à la 1.3.1, dont j'ai pas bien compris ce qu'elle contenait de nouveau):

/inc-calcul-squel.php3
/ecrire/inc.php3
/ecrire/mots_edit.php3
/ecrire/inc_mots.php3
/ecrire/naviguer.php3
/ecrire/inc_version.php3
/ecrire/inc_base.php3

Ca introduit une modification de la base (pour créer le lien entre les rubriques et les mots-clés).

Je déconseille de l'installer sur un site contributif en fonctionnement: l'arrivée des mots-clés dans les rubriques est un poil déroutant dans l'interface, car ça propose tous les mots-clés, initialement destinés aux articles et aux brèves (ça commence à faire un poil bizarre...).

De plus, les squelettes standards de SPIP n'incluent pas encore l'affichage de ces mots-clés de rubriques, donc ça fait bizarre d'ajouter des mots-clés dans le site privé sans que ça apparaisse nulle part sur le site public.

Cela dit, les critères des boucles peuvent désormais accepter ces nouveaux liens. C'est totalement identique à l'utilisation des mots-clés avec les autres types d'éléments:

<BOUCLE_hop(RUBRIQUES){id_mot}...>
<BOUCLE_hop2(RUBRIQUES){titre_mot=xxx}...>
<BOUCLE_hop3(MOTS){id_rubrique}...>

Prochaine étape: j'attaque la définition des groupes de mots-clés, ça permettra de rendre plus cohérent l'interface de l'espace privé...

ARNO*

Salut,

Comme il y a une nouvelle modif de base, j'installe une version 1.4 alpha 2 dans /devel.

Fichiers modifiés:
/ecrire/inc_version.php3
/ecrire/mots_tous.php3
/ecrire/mots_edit.php3
/ecrire/mots_type.php3
/ecrire/inc_base.php3

J'ai créé le système de configuration des groupes de mots-clés.

Attention: il n'existe plus de mots sans groupe, il faut créer au moins un groupe avant de créer de mots. Sinon, les "mots sans groupe", ça faisait des mots sans aucune configuration (pour articles, rubriques, brèves..., accessibles aux admins, aux rédacteurs, etc.), donc ingérable dans cette logique.

Attention encore: théoriquement, le passage vers le nouveau système se fait automatiquement. Mais, hum, c'est pas trop testé, et c'est assez violent. Donc à n'essayer que sur un compte de test, SURTOUT NE PAS INSTALLER SUR UN SITE EN FONCTIONNEMENT PUBLIC.

Enfin, notez que j'ai réalisé toute la partie de gestion de ces mots-clés (et des mots eux-mêmes), mais cette configuration n'est utilisée encore nulle part. Dans "Ajouter un mot-clé" (sous un article par exemple), c'est toujours l'ancienne méthode qui est utilisée, sans tenir compte des configurations des groupes. Mais comme j'ai fait pas mal de boulot, je préfère "sauvegarder" tout ça dans /devel.

Ah oui: la méthode utilisée est assez cochonne (mais elle l'était déjà énormément auparavant). Histoire de ne pas compliquer la gestion des boucles des squelettes (où l'on fait grand usage des mots-clés et des types de mots), j'ai créé une nouvelle table (spip_groupes_mots) pour gérer les groupes, mais le lien entre cette nouvelle table et la table spip_mots n'existe pas physiquement: c'est en jouant sur le titre des groupes dans les deux tableaux que ça fonctionne. Peut-être qu'une meilleure solution consisterait à bien mettre "id_groupe" dans l'ancienne table, mais en conservant toujours la colonne "type", récupérée automatiquement. Je vais voir ça...

Au passage, j'ai corrigé la gestion des apostrophes et des guillements anglais dans les titres de groupes, qui n'étaient pas bien gérés du tout.

ARNO*

Resalut,

Je viens de modifier légèrement le fonctionnement de la configuration des groupes de mots-clés. Fichiers modifiés:
/ecrire/mots_tous.php3
/ecrire/mots_edit.php3
/ecrire/inc_base.php3
/ecrire/inc_version.php3

J'ai ajouté une colonne "id_groupe" dans spip_mots, qui correspond à l'id_groupe de spip_groupes_mots. De cette façon, le système ne gère plus que des "$id_groupe", et plus de "$types" (dangereux). Le $type est, du coup, calculé automatiquement en fonction de l'$id_groupe. Comme ça, l'ensemble devient beaucoup plus propre et moins risqué.

ARNO*

@ Arno* <arno@scarabee.com> :

la 1.3.1, dont j'ai pas bien compris
ce qu'elle contenait de nouveau):

Juste la correction du bug qui fait qu'un rédacteur ne peut pas proposer
d'article depuis une rubrique, mais seulement depuis la racine du site.
(fichier articles_edit.php3) J'attendais un éventuel retour, car le code
mériterait à cet endroit précis (définition des droits) d'être mieux
documenté... On finit par oublier les cas particuliers...

-- Fil

Salut,

Modifs sur les fichiers:
/ecrire/mots_tous.php3
/ecrire/mots_type.php3

Dans la configuration des groupes, le terme "obligatoire" devient "important"; ainsi on gérera une indication insistante de ce groupe, mais pas une réellement obligation.

Surtout, modification de l'affichage de la liste de tous les mots-clés. Cela affiche désormais le nombre d'articles, le nombre de brèves, de sites et de rubriques liées à chaque mot. Ca n'est plus calculé par une requête à chaque mot, mais par une plus grosse requête en début de liste qui fait le calcul d'un coup pour tous les mots. Mine de rien, ça fait assez classieux cet affichage :-))

ARNO*

Salut,

Je viens d'envoyer de nouvelles modifs:

/ecrire/inc_mots.php3
/ecrire/mots_tous.php3
/ecrire/mots_type.php3

Sauf erreur de ma part, désormais l'affichage et la sélection des mots-clés dans les articles, les rubriques, les brèves et les sites référencés correspond à la configuration que l'on a effectué sur les groupes de mots.

Par exemple:

- seuls les groupes accessibles par cet élément apparaissent (par exemple: seuls les groupes configurés pour "Rubriques" apparaissent dans les rubriques);
- seuls les groupes accessibles aux admins/rédacteurs apparaissent selon les cas;
- les groupes "importants" provoquent un affichage spécifique: (1) si on n'a pas encore sélectionné un mot dans les groupes "importants", le menu de sélection des mots apparaît immédiatement déplié, (2) tant qu'on n'a pas sélectionné un mot d'un groupe "important", ce groupe apparaît en rouge, (3) une fois qu'on a sélectionné dans "important", ce groupe apparaît normalement;
- les groupes "un seul élément" disparaissent quand on a sélectionné un de leurs éléments; il faut donc retirer un mot déjà sélectionné dans la même catégorie pour le faire réapparaître. Je sais que c'est pas ce que souhaite Fil, mais c'est ce que j'ai trouvé de plus simple; c'est de toute façon la seule solution relativement simple pour gérer ces infos uniques quand on passe par la recherche de mot.

L'affichage global du pavé de mots-clés est un poil plus élaboré, puisqu'il vérifie s'il y a des mots sélectionnés pour l'élément et/ou des groupes sélectionnables.

Du coup, la recherche de mot (pour listes > 50 mots) est modifiée: il y a un champ pour chaque groupe concerné, avec le titre du groupe qui apparaît. De cette façon, ça permet de gérer directement les histoires de "groupe important" et surtout de "groupe à un seul élément sélectionnable", ainsi que les codes couleur associés. Par ailleurs,

Bon, c'est pas totalement terminé, mais je crois que ça commence à prendre sa cohérence. Et sauf bugs importants, c'est déjà exploitable en l'état.

ARNO*

Salut,

Modifs sur la 1.4a2:
/inc-forum.php3
/ecrire/controle_forum.php3
/ecrire/optimiser.php3
/ecrire/articles_forum.php3

Lors de l'envoi d'un message dans un forum public, on boucle désormais sur la même page, avec une prévisualisation de son message. On peut ainsi se relire et se corriger. On revient à la page d'origine seulement lors de la validation définitive.

Intérêt:
(1) Ben c'est tout de même mieux de pouvoir se relire avant d'envoyer un message...
(2) J'en ai besoin avant de pouvoir proposer des mots-clés aux visiteurs du site. (Ca c'est pas fait...) Possibles utilisations: "notez cet article" (ah ah!), "choisissez un smiley"... Mais aussi, dans l'exemple du site de jeu, permettre aux visiteurs de donner une note aux jeux commentés...

Attention, ça fait de grosses modifications dans inc-forum.php3, qui est un fichier assez sensible.

D'après mes premiers essais, ça a l'air de fonctionner correctement (m'enfin, les forums, c'est une plaie à gérer).

Salut,

Modifs dans la 1.4a2:

/inc-calcul-squel.php3
/inc-forum.php3
/ecrire/inc_version.php3
/ecrire/inc_base.php3

Modification de la base, au passage, avec apparition d'une table "spip_mots_forum".

Désormais, les groupes de mots pour lesquels on a indiqué qu'ils pouvaient être utilisés par les visiteurs du site public apparaissent dans les messages des forums du site public.

Vous pouvez voir ça à l'oeuvre sur mon site de tests:
http://rezo.net/~arno/
Vous allez dans le forum d'un article, et vous verrez bien. Par exemple:
http://rezo.net/~arno/article.php3?id_article=18

C'est entièrement automatique:
- il suffit de sélectionner "Utilisables par les visiteurs du site public" pour un groupe;
- ça ne prend que les groupes qui concernent l'élément auquel le forum est attaché (par exemple, pour le forum d'un article, uniquement les groupes attachés aux articles);
- la présentation est différente si on a coché "Un seul élément par groupe" ou non (boutons radio, ou checkbox).

Evidemment, modifications dans la langage de boucles, pour pouvoir gérer les mots-clés dans les boucles (FORUMS), et à l'inverse sélectionner dans une boucle (MOTS) en fonction du critère {id_forum}.

La prochaine étape, c'est de pouvoir passer des variables pour n'utiliser que certains groupes de mots ou même aucun (de cette façon, on pourra même activer/désactiver la sélection des mots-clés dans le forum d'un article en fonction des mots-clés associés à l'article lui-même; ça devient vraiment tripant!!!).

ARNO*

Salut,

La prochaine étape, c'est de pouvoir passer des variables pour
n'utiliser que certains groupes de mots ou même aucun (de cette
façon, on pourra même activer/désactiver la sélection des mots-clés
dans le forum d'un article en fonction des mots-clés associés à
l'article lui-même; ça devient vraiment tripant!!!).

Heu, oui, mais c'est quoi l'intérêt ? J'ai vraiment l'impression
que cette histoire de mots-clés commence sérieusement à revenir
à définir soi-même sa propre structure de base de données....
(comme quoi le schéma d'Erwan n'était certainement pas aussi
incompréhensible que tu veux bien le dire ;-))

a+

Antoine.