Devoirs de vacances
le MEDIA de Indy
ça fait un moment que je ne suis pas satisfait de la façon dont on peut rechercher photos et autres fichiers media sur le site. Les modifications que je propose auront pour effet visible de mieux lister « tous les fichiers images et photos » ou « tous les fichiers sons », et même dans le contexte d'une sélection de page thématique. En test, ça marche!
Ceux qui aiment bien aussi savoir ce qui se passe « sous le capot » peuvent aussi lire la suite.
Aujourd'hui, par exemple, rubrique-photos.php3 est obligé de parcourir TOUS les articles à chaque demande pour voir s'il n'y a pas des fichiers (« documents » en langage spip) attachés aux articles, avec une extension .jpg, .png etc... et aussi (fonctionnalité unique au site) des LIENS vers des fichiers externes (sur d'autres sites), tout ça à l'aide puissantes expressions régulières (qui sont en partie à corriger d'ailleurs car elles donnent parfois des résultats erronés!).
Une solution qui me trottait dans la tête depuis un moment est d'attacher aux articles un mot-clef (encore un!) au moment du classement, si possible en automatique, de façon à ne faire ce travail qu'une fois, à la création, et pas chaque fois qu'on demande la liste. Dans le groupe « types de media » il y aurait donc Images (photos etc), Sons, Vidéos et Textes (éventuellement plus à l'avenir si nécessaire).
Au moment de les afficher, on utiliserait bêtement rubrique-articles.php3 avec au choix le mot-clef Images ou Sons... Cela serait plus rapide que de balayer tous les fichiers puisque la base de donnée serait capable de ne renvoyer qu'un extrait des articles, ceux qui ont le mot-clef Images (par ex.). Cela ferait aussi moins de programmes à maintenir (à la poubelle donc les rubrique-photos.php3, rubrique-sons.php3, rubrique-videos.php3...)
Restait une petite difficulté à éliminer : rubrique-article n'était capable de ne traiter qu'un seul mot-clef à la fois, or on veut pouvoir parcourir toutes les images du thème « guerre » par exemple. Cette difficulté a été éliminée (dans la limite de DEUX mot-clefs). Cette possibilité peut d'ailleurs être utilisé pour autre chose que les médias et on peut aussi lister tous les articles « guerre » qui ont été en « edito », etc.
Donc au total 3 nouveaux programmes
- verif_medias.php3 vient s'ajouter à article_classer_modifs.php3 pour attribuer automatiquement l'un des 4 mot-clefs « types de media » lorsqu'on classe un article.
- Rubrique-articles.php3 a été modifie pour traiter le deuxième mot-clef ET pour afficher la liste des medias d'un article
- enfin un programme pour attribuer ces mot-clefs aux ANCIENS articles (classés avant cette modification) : parcours tous les articles « publiés » et leur attribue un ou plusieurs des 4 mot-clefs : maj_medias.php3
- Et aussi une petite modification de indy_colgauche.php3 pour remplacer les anciens « rubrique_photos, _sons... » et y ajouter (ça manquait!) l'accès aux textes et documents (articles avec fichiers doc, pdf...)
Ce programme de travail me réservait une petite surprise (le diable est dans les détails) :
SPIP gère en interne une table des fichiers (« documents ») autorisés : spip_type_documents.
C'est une table qui liste les extensions autorisées : jpg, png, gif, mp3, ogg, pdf, doc ... et pour chacune indique si les gens peuvent ou non les télécharger. Si l'extension est absente de la table, ou si le champ « upload » est à « non », on ne peut pas télécharger le fichier ayant cette extension. A ces extensions de la table correspondent les icônes de ces types de documents dans le répertoire IMG/Icones... MAIS je n'ai pas trouvé dans l'interface d'administration de SPIP 1.4 la moindre outil permettant d'afficher cette table ou de la modifier. D'où 2 nouveaux programmes :
- liste_types_documents.php3 (à ajouter à l'interface d'adminitration (« privée ») du site
- modif_types_documents.php3 pour créer, modifier, supprimer des types de documents.
Une difficulté ici : certains types de documents devraient y être ajoutés, à mon avis : les traitements de texte « ouverts » comme Open Office et les extensions .odt, .sxw; aussi les playlists .m2u, .pls, etc...
Dernière difficulté : Cette table est une liste de types de fichiers, mais aucun effort n'est fait pour regrouper ceux-ci en types de MEDIA !
C'est donc pour l'instant une correspondance qui est codée directement dans les programmes, quelque chose qu'il faudra reprendre plus tard :
$media_list_images="jpg|png|gif|bmp|jpeg|psd|tif";
$media_list_sons="ogg|mp3|wav|mid|aiff|asf|ra|ram|rm";
$media_list_videos="mov|avi|mpg|qt|swf|wmv";
$media_list_textes="doc|pdf|ppt|xls|txt|rtf|xml|html|ps|eps|bz2|gz|sit|tgz|zip";
- 1.certaines de ces correspondances peuvent être erronées
- 2.certains sont problématiques : zip classé dans textes et documents mais le fichier zip pourrait très bien ne contenir que des images. Solutions possibles à l'avenir, voir ici : http://www.phpbuilder.com/manual/en/ref.zip.php
- 3.il faudrait que tous les admins puissent amender ces listes, pas juste ceux qui ont accès aux programmes. Une solution temporaire pourrait être d'utiliser le champ descriptif ou texte des mot-clefs.
A noter : ajouter des types d'extension à ces listes n'est pas juste affaire de compléter la table spip « spip_types_documents » : il peut être aussi question de compléter la configuration du serveur Apache qui « sert » ces fichiers!
Références utiles :
(ne contient pas les extension
OpenOffice ???)
Restent des petites difficultés non résolues sur les « vignettes »,
... et des idées à chercher pour faciliter l'utilisation des medias sur le site, en particulier lors de la création des articles,... et pas juste pour signaler les types autorisés ou non... C'est une autre histoire.
Juste un point pour finir : il ne s'agit évidemment pas de continuer à reconstruite spip de l'intérieur, un travail qui n'en finit pas... mais plutôt de s'en servir de territoire d'exploration des fonctionnalités que l'on souhaiterait pour un futur système.
--
JeppettO - 05 Jan 2006
to top