j'avais posté un message sur la mailing-list spip mais je me rends
compte que j'aurai plutôt dû le poster ici:
Je suis tombé sur un comportement bizarre de Spip 1.6: j'ai essayé
d'attacher des documents à une rubrique. J'avais déjà effectué ce genre
de manip et je l'utilisais pour récupérer, depuis les squelettes, un
logo spécifique pour certaines rubriques.
Seulement à partir du moment où j'ai commencé à référencer le document
dans le texte de la rubrique (avec emb, doc ou img), Spip est parti en
live. A savoir que le document apparait bien lors de la consultation du
site (ainsi que dans la liste des documents attachés aux rubriques),
mais qu'il n'apparait plus dans l'interface d'administration du site
comme document attaché à la rubrique.
J'ai vérifié dans les tables MySQL et tout semblait bon: le document est
bien présent dans la table spip_document et bien référencé dans la table
d'association spip_rubrique_document. Un comparatif des champs avec une
association qui fonctionne encore ne montre aucune différence.
Si je supprime la référence au document dans le texte de la rubrique,
alors le document réapparait auto-magiquement comme attaché à la
rubrique lors de sa visualisation.
En parcourant rapidement le code de naviguer.php je me suis posé la
question de la quantité de documents que l'on pouvait attacher à une
rubrique et en particulier si cela n'était pas restreint à un unique
document ? Je pense par exemple à une requête donc je n'arrive pas à
saisir l'interêt, cette requête étant du style (désolé je n'ai pas le
code sous les yeux):
SELECT * from spip_rubrique_document where id_document=$id_document and
id_rubrique=$id_rubrique;
alors que la table spip_rubrique_document ne contient justement que deux
champs id_rubrique et id_document. Enfin j'étais un peu fatigué et il
est possible que j'ai mal saisi le code sur le coup.
La deuxième question est de savoir pourquoi, sur un document attaché à
une rubrique, il n'y a aucun moyen de connaitre l'id de ce document
(pour pouvoir le référencer par exemple) sans faire une pirouette (à
savoir passer la souris sur "supprimer le document" pour voir l'id) ?
Parce que sans l'id je ne comprends pas comment on peut référencer le
document dans un article.
Je me permets d'en remettre une couche vu que le premier message n'a pas
passionné grand monde et que la seule réponse que j'ai eu semble
indiquer que j'avais mal expliqué mon problème.
J'utilise donc SPIP 1.6 et je veux attacher des documents (des images
gif ou jpg) à des rubriques (et non pas des articles).
Lorsque je suis sur la page de propriétés d'une rubrique (et non pas la
page d'édition d'une rubrique); je peux publier un document dans cette
rubrique (on peut aussi le faire dans un article d'ailleurs).
Ensuite le document apparait bien (toujours sur la même page) sauf qu'il
est impossible de savoir quel est son identificant à part en passant la
souris sur le lien "Supprimer le document" et regarder l'id_document
dans l'url:
Quand je reviens à ma page de propriétés de la rubrique, le petit
tableau de référence au document a disparu et le document apparait bien
dans le texte de la rubrique:
Si j'enlève la référence au document dans le texte de la rubrique alors
celui-ci réapparait bien sur la page des propriétés de la rubrique.
On retrouve le même comportement sur les articles où il est possible
d'attacher des documents sur la page de propriétés de l'article; à la
différence près que dans la page d'édition de l'article on retrouve la
liste des documents attachés (aussi bien lors de l'édition de l'article
que depuis la page des propriétés de l'article).
Je me permets d'en remettre une couche vu que le premier message n'a pas
passionné grand monde et que la seule réponse que j'ai eu semble
indiquer que j'avais mal expliqué mon problème.
En ce qui me concerne, je vois pas trop ce que tu demandes.
Qu'est-ce qui te dérange au juste ?
JLuc
Eh bien déjà j'aimerais savoir si le comportement est normal.
Ce qui me dérange c'est que si je veux modifier les propriétés du
document (le titre ou la description par exemple), je suis obligé
d'éditer le texte de la rubrique, désactiver toutes les références à
tous les documents attachés (la référence du document à éditer ne suffit
pas), valider, modifier les propriétés de mon documents, rééditer le
texte de la rubrique pour réactiver toutes les références à tous les
documents attachés.
Ce qui me dérange c'est que si je veux modifier les propriétés du
document (le titre ou la description par exemple), je suis obligé
d'éditer le texte de la rubrique, désactiver toutes les références à
tous les documents attachés (la référence du document à éditer ne suffit
pas), valider, modifier les propriétés de mon documents, rééditer le
texte de la rubrique pour réactiver toutes les références à tous les
documents attachés.
Cette manip n'est pas pratique du tout !
En effet.
Surtout que si le document est employé dans d'autres pages
il faut de désincarcérer de toutes les pages ou il apparait
pour qu'il redevienne qualifiable en partie privée...
JLuc
Effectivement je n'avais pas bien compris avant de poster ma première réponse.
On dirait que c'est un comportement normal de la page d'édition de la rubrique.
En consultant naviguer.php3, on trouve cette fonction -> afficher_documents_non_inclus($id_article, $type = "article", $flag_modif) à l'endroit ou la liste des documents avec leurs tableaux respectifs devraient s'afficher.
Cette fonction est en fait déclarée dans inc_documents.php3, lui-même inclus dans naviguer.php3
Elle sert pour les articles et pour les rubriques.
En fait la page de rubrique dans l'admin se comporte comme un squelette contenant une BOUCLE(DOCUMENTS) à laquelle on aurait passé le paramètre {doublons} pour n'afficher que les documents non inclus dans le #TEXTE.
Ca ne m'étonnerait pas que ce soit cette même fonction qui intervient lors de la création des pages PHP dans le cache, après création de ce type de boucle dans un squelette.
Pour "patcher" ce problème, il suffirait de faire une copie de la fonction dans inc_documents.php3, l'appeler par exemple afficher_tous_documents(), modifier la requete SQL, puis modifier naviguer.php3 pour faire appel à la nouvelle fonction.
Je viens de tester cette manip et effectivement cela fonctionne.
J'ai même regardé pour ajouter le panel gauche d'attachement de
documents dans la page d'édition d'une rubrique.
Mais j'en arrive à me poser la question: est-ce fonctionnel ?
Pourquoi peut-on attacher des documents et des images dans les articles
sur la page de propriétés _et_ sur la page d'édition des articles alors
que pour une rubrique on ne peut que l'attacher sur la page de
propriétés et finalement plus ou moins l'utiliser dans la page
d'édition.
Est-ce voulu ?
Est-ce un bug ?
Est-ce une fonctionnalité rajoutée à la va-vite et non terminée ?