Je tente désespérément d'adapter le script de Dotclear qui sert à changer l'ordre des catégories (sur la page dotclear/ecrire/cat_list.php par défaut)
Je voudrais que le "drag and drop" ne s'effectue que lorsqu'on a la souris sur la double flèche à gauche de chaque catégorie, pour pouvoir mettre d'autres évènements javascript sur le contenu du div (onClick, onSelect, etc)
var group = this.group; var mouse = event.windowCoordinate; var nwOffset = Coordinates.northwestOffset(group, true); var nwPosition = Coordinates.northwestPosition(group); var sePosition = Coordinates.southeastPosition(group); var seOffset = Coordinates.southeastOffset(group, true);
group.originalOpacity = group.style.opacity;
group.originalZIndex = group.style.zIndex;
group.initialWindowCoordinate = mouse; // TODO: need a better name, but don't yet understand how it // participates in the magic while dragging
group.dragCoordinate = mouse;
onMouseMove : function(event){
event = Drag.fixEvent(event); var group = Drag.group; var mouse = event.windowCoordinate; var nwOffset = Coordinates.northwestOffset(group, true); var nwPosition = Coordinates.northwestPosition(group); var sePosition = Coordinates.southeastPosition(group); var seOffset = Coordinates.southeastOffset(group, true);
// TODO: need better constraint API var adjusted = mouse.constrain(group.mouseMin, group.mouseMax);
nwPosition = nwPosition.plus(adjusted.minus(group.dragCoordinate));
nwPosition.reposition(group);
group.dragCoordinate = adjusted;
// once dragging has started, the position of the group // relative to the mouse should stay fixed. They can get out // of sync if the DOM is manipulated while dragging, so we // correct the error here // // TODO: what we really want to do is find the offset from // our corner to the mouse coordinate and adjust to keep it // the same var offsetBefore = Coordinates.northwestOffset(group);
group.onDrag(nwPosition, sePosition, nwOffset, seOffset); var offsetAfter = Coordinates.northwestOffset(group);
if(!offsetBefore.equals(offsetAfter)){ var errorDelta = offsetBefore.minus(offsetAfter);
nwPosition = Coordinates.northwestPosition(group).plus(errorDelta);
nwPosition.reposition(group); }
returnfalse; },
onMouseUp : function(event){
event = Drag.fixEvent(event); var group = Drag.group;
var mouse = event.windowCoordinate; var nwOffset = Coordinates.northwestOffset(group, true); var nwPosition = Coordinates.northwestPosition(group); var sePosition = Coordinates.southeastPosition(group); var seOffset = Coordinates.southeastOffset(group, true);
// TODO: refactor away duplicationg in DragSort and DragSortX var dragSort = {
getSortableItems : function(e){ var items = e.getElementsByTagName('div'); var res = Array(); for(var i = 0; i < items.length; i++){ if(items[i].className.match(/(^|\s)sort(\s|$)/)){
res.push(items[i]); } } return res; },
getOrder : function(e){ var items = dragSort.getSortableItems(e); var res = ''; for(var i = 0; i< items.length; i++){
res += items[i].id+';'; }
return res.replace(/;$/,''); },
makeElementSortable : function(e){ var items = dragSort.getSortableItems(e); for(var i = 0; i < items.length; i++){
dragSort.makeItemSortable(items[i]); } },
... et donc, moi je voudrais que chaque div ne soit déplaçable que si on fait un cliquer-déplacer sur l'icone updown, pour que je puisse mettre des évènements onClick et onBlur (entre autres) sur les <p> contenus dans ces divs
Merci d'avance
Adaptation problématique d'un script de Dotclear
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.