Nouveau plugin : rang_mots // Questions diverses et problèmes

Bonjour à tous,

J’ai commencé à travailler à un plugin permettant d’ordonner les mots clés associés à un objet (testé uniquement sur les articles pour le moment) ; j’ai allègrement pillé le travail fait sur le plugin rang_auteurs (spip-contrib-extensions/rang_auteurs - rang_auteurs - SPIP on GIT)

Le plugin rang_mots est disponible ici : spip-contrib-extensions/rang_mots: Un plugin permettant de gérer manuellement l'ordre des mots associés à un objet éditorial. - rang_mots - SPIP on GIT Bien évidemment il reste beaucoup de boulot…

Plusieurs questions / problèmes :

  • j’ai allègrement pompé du côté du plugin media pour le glisser-déposer en javascript, histoire de ne pas dépendre de jquery-ui. Mais, lorsque l’on réalise le tri via le glisser-déposer (donc en javascript), l’affichage des lignes du tableau des mots liés n’est pas modifié, ou plutôt le contenu de la colonne du titre n’est pas modifiée.
    Par contre, si l’on utilise les boutons, aucun problème.
    Un problème dans spip-contrib-extensions/rang_mots: Un plugin permettant de gérer manuellement l'ordre des mots associés à un objet éditorial. - prive/objets/liste/mots_lies.html at master - rang_mots - SPIP on GIT ou plutôt dans le JS ?
  • j’ai été obligé d’ajouter la ligne 59 pour que le conteneur de l’animation disparaisse alors que media n’en a pas besoin.
  • un souci de conception : Sortable appelle l’action action_ordonner_liens_mots_dist() qui elle-même appelle la fonction action_ordonner_liens_dist() définie dans le plugin media… Je l’ai recopiée faute de savoir comment appeler cette fonction… un include_spip(plugins-dist/....) ferait-il l’affaire ?

Merci par avance pour vos tests, propositions, corrections, apports divers et variés !

Bonne journée :slight_smile:

Bonsoir à tous,

Alors, un peu de travail réalisé sur le plugin :

  • on recharge la liste des mots liés avec ajaxReload() afin que le #RANG affiché soit bien conforme à l’ordre affiché des mots (cf. ce commit).
  • on appelle les fonctions qui nous intéressent du plugin-dist medias avec un include_spip (cf. ce commit)

Je dois encore regarder de plus près le pipeline rang_mots_affiche_milieu pour limiter l’intégration du script aux seules pages « récapitulatives » des objets éditoriaux.

Merci par avance pour vos remarques, conseils, corrections !

À+

Bonjour,

Du coup, pour n’intégrer le javascript nécessaire que sur les pages où un formulaire d’association de mots clés est présent, on utilise la condition if(strpos($flux['data'], 'formulaire_editer_liens-mots')) dans le pipeline rang_mots_affiche_milieu (voir ici).

Il y a peut-être plus simple, plus propre… Je suis preneur de toute remarque !

Merci par avance pour vos retours :slight_smile:

Hello Bricebou,

Le plugin Rang_auteurs est la base pour ordonner des liaisons pour n’importe quel objets (auteurs, mots-clés, etc.)
Le seul mini défaut de ce plugin est peut être son nom. Rang_liens aurait sans doute été plus approprié.

Donc pour faire ce que tu veux il te suffit d’ajouter dans le plugin Rang_auteurs un fichier /prive/objets/liste /mots_lies.html en t’inspirant du code du fichier auteurs_lies.html dans le même répertoire.

Cheers

Si c’est bien cela, alors il faudrait surtout soit le renommer (y compris l’id du dépôt), soit le copier dans un fork, avec ce nom rang_liens effectivement. Par contre, tout comme l’autre plugin Rang non-liens, c’est toujours assez embêtant de devoir surcharger les squelettes du noyau (ou dist) pour « juste » rajouter un système de tri. On aurait dû profiter de SPIP 4.0 (sans attendre 4.1) pour dire que TOUS les squelettes d’admin de tableau listant des contenus devraient avoir sur chaque ligne des attributs data-truc permettant de récup expliictement l’objet et l’id_objet. Et donc pouvoir ensuite ajouter des trucs en JS sans jamais avoir à surcharger ces squelettes.

Faut le faire pour 4.1 du coup :slight_smile:

Si c’est bien cela

Oui, je te confirme que c’est bien ça. J’ai le squelette mot_lies.html à dispo si vous voulez.
J’ai également testé sur un plugin perso et ça marche bien.

les squelettes d’admin de tableau listant des contenus devraient avoir sur chaque ligne des attributs data-truc permettant de récup expliictement l’objet et l’id_objet. Et donc pouvoir ensuite ajouter des trucs en JS sans jamais avoir à surcharger ces squelettes.
Faut le faire pour 4.1 du coup

Ah yes !

Je suis pas trop sûr du coup de la marche à suivre.

Par contre, dans ce nouveau plugin rang_mots j’ai fait en sorte de ne pas utiliser le plugin jquery_ui, ce qu’utilise rang_auteurs il me semble.

Mais du coup, peut-être faut-il penser à quelque chose de bien générique, que puisse aussi utiliser le plugin média non ?

J’essaie de préciser…
L’idée ne serait-elle pas de proposer un plugin générique rang_liens dans le core, proposant un formulaire de configuration permettant de sélectionner les tables de liens pour lesquelles on souhaite pouvoir ordonner les liens, et de déclencher à l’enregistrement une fonction de modification des tables ?
Le plugin Media en dépendrait pour le coup.
Il s’agirait aussi de rendre plus générique le script utilisé par ce dernier plugin (il suffit je pense, au vu de ce que j’ai modifié pour rang_mots, d’ajouter une variable pour définir l’objet et sans doute d’ajouter un foreach pour déclencher sur autant de listes ayant un attribut donné) ?

Bonjour à tous,

Je me permets de déterrer un peu le sujet, afin d’avoir une sorte de « feuille de route ».

Merci par avance pour les retours !