Publié par Jérémie Bresson dans les docs Jmini (http://docs.jmini.fr) à l’adresse (http://docs.jmini.fr/code/hack-xoops-ordre-image-manager).
Dernière mise à jour : Vendredi 27 juillet 2007
[HACK XOOPS] Ordre dans l’Image Manager
Ce Hack pour Xoops (2.0.x), permet de changer l’ordre d’affichage dans Image Manager. Comme tous les hacks (modification directe du code d’une application toute faite), il s’adresse à un public averti et la modification doit être refaite sur chaque mise à jour.
Par défaut, le manager d’image utilise le poids assigné à chaque image pour les classer. Cette fonctionnalité ne convenait pas du tout à la manière dont je me sers du manager. En effet, j’ajoute une photo pour mon article (ça la télécharge sur le site), et je m’en sers… Comme les derniers fichiers se retrouvaient toujours à la fin, cela ajoutait à chaque fois quelques clics avant d’avoir l’image en question. Je voulais donc avoir un tri par date d’upload, avec la plus récente en première.
Attention : l’installation de ce Hack est à vos risques et périls. N’oubliez pas de le remettre après une mise à jour de xoops.
Configuration de test :
- Xoops 2.0.16
- TinyEditor 1.0
Image Manager
Ma solution est simple :
Il faut ajouter deux lignes pour indiquer le tri désiré au moment de la requête SQL sur la base de données :
- le nom de la table sur lequel on fait le tri (voir ci-dessous toutes les possibilités, dans mon cas : ‘image_created’)
- si celui-ci est ascendant (‘ASC’) ou descendant (‘DESC’).
La requête SQL n’est pas écrite directement, mais à partir d’une instance ($criteria) de la classe : CriteriaCompo. Il faut donc se servir des méthodes setSort($sort) et setOrder($order) de l’objet.
Ce qui donne les deux lignes suivantes :
//HACK : ordre d'affichage : plus récente en premier
$criteria->setSort('image_created');
$criteria->setOrder('DESC');
//FIN_HACK
Ces lignes se placent au même niveau que les autres « $criteria->… » dans le fichier site_xoops/imagemanager.php. À savoir juste après la ligne 90 :
$criteria->setSort('image_created');
et avant :
$storetype = $imgcat->getVar('imgcat_storetype');
Image Manager dans TinyEditor
Si vous utilisez l’excellent éditeur WYSIWYG TinyEditor avec le manager d’image xoops, il faut savoir que celui-ci a été réécrit pour ce module. Les 2 lignes de code sont à insérer dans le fichier site_xoops/modules/tinyeditor/editor/plugins/ximagemanager/tinyedimagemanager.php, de la même manière : entre la ligne 114 :
$criteria->setSort('image_created');
et
$storetype = $imgcat->getVar('imgcat_storetype');
Critères de tri
La table qui stoque les images contiens les champs suivants (chacun d’entre eux est utilisable comme clé pour le tri) :
- image_id : clé unique de l’image (il s’agit d’un nombre entier donné dans l’ordre croissant au fur et à mesure des ajouts)
- image_name : nom de l’image (il est généré aléatoirement au moment du téléchargement sur le serveur)
- image_nicename : nom d’affichage de l’image (c’est celui qui est indiqué lors du téléchargement et qui correspond à la colonne de droite dans le manager)
- image_mimetype : type du fichier (image/gif, image/png, image/jpeg …)
- image_created : date de création (sous forme d’un timestamp unix)
- # image_display : 1 si l’image doit être affichée (aucun intérêt pour le tri, l’utilisateur ne voit de toute façon que les images dont le image_display est à 1 )
- image_weight : poids de l’image (sur ma configuration de test, ce champ n’est pas renseigné… S’agit-il d’un bug)
- # imgcat_id : identifiant de la catégorie à laquelle appartient l’image (aucun intérêt pour le tri, l’utilisateur ne voit de toute façon que les images dont la catégorie est celle qui a été choisie. )
Voir aussi
Les mots-clés de cet article : application web, hack, php, xoops
Cet article est dans la catégorie : Code