Je suis actuellement en train de développer un module d'administration de galerie photos.
J'aimerai que l'administrateur puisse modifier l'ordre d'affichage des photos.
J'ai mis en place un système de drag and drop qui fonctionne mais ne modifie pas l'ordre des fichiers photo dans le dossier et je ne sais pas comment le faire...
Une idée svp ?
L'affichage des photos se fera avec SmoothGallery qui affiche les photos suivant leur ordre dans le dossier.
Merci.
Tu te bases sur l'ordre des photos dans le dossier ? ... pas top. L'idéal serait sans doute de coupler ça à une base de données avec un champs "chemin_image" et "num_ordre"
Merci pour ton conseil que j'ai suivi.
Il me reste une question :
Plutôt que de cliquer sur un bouton pour enregistrer l'ordre des images, j'aimerai que la fonction d'enregistrement se lance à la fin du drag and drop.
Y a t'il un événement qui détecte la fin du drag and drop ?
Merci
J'ai trouvé, il suffit d'ajouter une fonction ajax dans le script. Après chaque déplacement, cela va lancer la fonction et enregistrer l'ordre des fichiers.
Merci pour ton aide
ToolMan._junkdrawer = {
serializeList : function(list) {
var items = list.getElementsByTagName("li")
var array = new Array() for (var i 0, n items.length; i < n; i++) {
var item = items[i]
array.push(ToolMan.junkdrawer()._identifier(item))
}
// Fonction d'enregistrement du tri dans la BDD
var liste_img = array.join('|');
enregistrer_tri_images(liste_img);
},
restoreListOrder : function(listID) {
var list = document.getElementById(listID)
if (list == null) return
var cookie = ToolMan.cookies().get("list-" + listID)
if (!cookie) return;
var IDs = cookie.split('|')
var items = ToolMan.junkdrawer()._itemsByID(list)
for (var i 0, n IDs.length; i < n; i++) {
var itemID = IDs[i]
if (itemID in items) {
var item = items[itemID]
list.removeChild(item)
list.insertBefore(item, null)
}
}
},
_identifier : function(item) {
var trim = ToolMan.junkdrawer().trim
var identifier
// FIXME: strip out special chars or make this an MD5 hash or something
return trim(item.innerHTML)
},
_itemsByID : function(list) {
var array = new Array()
var items = list.getElementsByTagName('li')
var items = list.getElementsByTagName('li') for (var i 0, n items.length; i < n; i++) {
var item = items[i]
array[ToolMan.junkdrawer()._identifier(item)] = item
}
return array
},
trim : function(text) {
if (text == null) return null
return text.replace(/^(\s+)?(.*\S)(\s+)?$/, '$2')
}
}