[spip-dev]Médias : forcer l'unicité des documents dans les boucles qui utilisent (documents_liens)

From : rastapopoulos@... , the 28th avril 2015 12:20
  • 2015-04-28 12:20:57 — rastapopoulos@... - [spip-dev]Médias : forcer l'unicité des documents dans les boucles qui utilisent (documents_liens)

## Le problème Le plugin Médias utilise parfois des boucles avec (documents_liens). Cela pose problème lorsqu'on ajoute au moins un champ de plus à la clé  primaire de spip_documents : notamment pour ajouter des Rôles aux  documents (comme pour les rôles d'auteurs). On a alors potentiellement plusieurs lignes pour une même liaison  document-contenu : si j'ai deux rôles pour un document, j'ai alors trois  lignes dans spip_documents_liens. Le plugin Médias affiche alors parfois  plusieurs fois le même document dès qu'il utilise des boucles avec la  table de liaison, plutôt que la boucle DOCUMENTS seule. - Notamment "colonne-documents" qui a    `(documents_liens){id_objet}{objet}` - Et "document_case" qui a    `(DOCUMENTS documents_liens)` Et vu que les deux sont liées, si on a trois lignes pour un même  document, il est alors affiché NEUF fois dans la colonne d'édition ! :D ## Dans le code Alors déjà, maintenant que SPIP sait fait des jointures  {objet}{id_objet} tout seul avec les liens génériques, quel intérêt ? Par exemple dans "colonne-documents" : `(documents_liens){id_objet}{objet}` peut parfaitement être remplacé par `(DOCUMENTS){id_objet}{objet}` ce qui renvoie la même chose, sauf qu'on est sûr qu'il ne sort qu'une  seule fois le même document ! Sauf qu'ensuite dans le #MODELE{document_case}, là on a : `(DOCUMENTS documents_liens)` donc il faudrait expliciter ici qu'on en veut qu'un seul : `(DOCUMENTS documents_liens){fusion id_document}` Mais il y a sûrement d'autres cas comme ça de ce genre, dans Médias,  dans les squelettes de médiathèque, etc. (Aussi, un truc que je ne comprends pas, c'est que dans la vue des  contenus, dans la liste des documents joints, ça utilise le squelette  "document_desc" qui a la MÊME boucle que "document_case" : et pourtant  là ça ne bien qu'une seule fois chaque document ! Pourquoi ?!) Bref, avez-vous d'autres idées pour résoudre ces problèmes de  multiplication de petits docs ? --  RastaPopoulos