Ver Mensaje Individual
  #1 (permalink)  
Antiguo 28/05/2009, 08:33
c3sar0n
 
Fecha de Ingreso: mayo-2009
Mensajes: 9
Antigüedad: 15 años, 5 meses
Puntos: 0
Pregunta Guardar orden despues de hacer Drag and Drop de divs

Hola... soy nuevito en esto de trabajar con ajax, me gusta y es una herramienta muy potente si se sabe manejar (osea no para mi =) ).

Tengo un administrador de tareas el cual guarda en una base de datos las tareas que tiene cada uno pendiente con sus respectivas prioridades.

El problema es...
al momento de imprimir en pantalla las tareas pendientes lo hago usando unas librerias que encontre por la web, las cuales permiten hacer drag and drop de lo q esta en pantalla. Encontre el punto en el cual se suelta el mouse y ahi es donde deberia..
"tomar el orden de las tareas en pantalla una vez q se cambiaron de lugar" para modificar en la base de datos las nuevas prioridades.
Si alguien tiene una leve idea de como hacerlo se lo agradezco

Adjunto las tres librerias que usa para hacer el drag and drop.

Código PHP:
(function($) {
    
    
//If the UI scope is not available, add it
    
$.ui = $.ui || {};
    
    
//Add methods that are vital for all mouse interaction stuff (plugin registering)
    
$.extend($.ui, {
        
plugin: {
            
add: function(moduleoptionset) {
                var 
proto = $.ui[module].prototype;
                for(var 
i in set) {
                    
proto.plugins[i] = proto.plugins[i] || [];
                    
proto.plugins[i].push([optionset[i]]);
                }
            },
            
call: function(instancenamearguments) {
                var 
set instance.plugins[name]; if(!set) return;
                for (var 
0set.lengthi++) {
                    if (
instance.options[set[i][0]]) set[i][1].apply(instance.elementarguments);
                }
            }    
        },
        
cssCache: {},
        
css: function(name) {
            if ($.
ui.cssCache[name]) return $.ui.cssCache[name];
            
            var 
tmp = $('<div class="ui-resizable-gen">').addClass(name).css(
                {
position:'absolute'top:'-5000px'left:'-5000px'display:'block'}
            ).
appendTo('body');
            
            
//Opera and Safari set width and height to 0px instead of auto
            //Safari returns rgba(0,0,0,0) when bgcolor is not set
            
$.ui.cssCache[name] = !!(
                ((/^[
1-9]/).test(tmp.css('height')) || (/^[1-9]/).test(tmp.css('width')) || 
                !(/
none/).test(tmp.css('backgroundImage')) || !(/transparent|rgba(0000)/).test(tmp.css('backgroundColor')))
            );
            try { $(
'body').get(0).removeChild(tmp.get(0));    } catch(e){}
            return $.
ui.cssCache[name];
        },
        
disableSelection: function(e) {
            if (!
e) return;
            
e.unselectable "on";
            
e.onselectstart = function() {    return false; };
            if (
e.stylee.style.MozUserSelect "none";
        },
        
enableSelection: function(e) {
            if (!
e) return;
            
e.unselectable "off";
            
e.onselectstart = function() { return true; };
            if (
e.stylee.style.MozUserSelect "";
        }
    });
    
    
/*******************************************/
    
$.fn.extend({
        
mouseInteraction: function(o) {
            return 
this.each(function() {
                new $.
ui.mouseInteraction(thiso);
            });
        },
        
removeMouseInteraction: function(o) {
            return 
this.each(function() {
                if($.
data(this"ui-mouse"))
                    $.
data(this"ui-mouse").destroy();
            });
        }
    });
    
    
/*****************************/
    
    
$.ui.mouseInteraction = function(elementoptions) {
    
        var 
self this;
        
this.element element;
        $.
data(this.element"ui-mouse"this);
        
this.options = $.extend({}, options);
        
        $(
element).bind('mousedown.draggable', function() { return self.click.apply(selfarguments); });
        if($.
browser.msie) $(element).attr('unselectable''on'); //Prevent text selection in IE
        
    
};
    
    $.
extend($.ui.mouseInteraction.prototype, {
        
        
destroy: function() { $(this.element).unbind('mousedown.draggable'); },
        
trigger: function() { return this.click.apply(thisarguments); },
        
click: function(e) {
            
            if(
                   
e.which != //only left click starts dragging
                
|| $.inArray(e.target.nodeName.toLowerCase(), this.options.dragPrevention) != -// Prevent execution on defined elements
                
|| (this.options.condition && !this.options.condition.apply(this.options.executor || this, [ethis.element])) //Prevent execution on condition
            
) return true;
            
            var 
self this;
            var 
initialize = function() {
                
self._MP = { lefte.pageXtope.pageY }; // Store the click mouse position
                
$(document).bind('mouseup.draggable', function() { return self.stop.apply(selfarguments); });
                $(
document).bind('mousemove.draggable', function() { return self.drag.apply(selfarguments); });
            };

            if(
this.options.delay) {
                if(
this.timerclearInterval(this.timer);
                
this.timer setTimeout(initializethis.options.delay);
            } else {
                
initialize();
            }
            
            return 
false;
            
        },
        
stop: function(e) {            
            
            var 
this.options;
            if(!
this.initialized) return $(document).unbind('mouseup.draggable').unbind('mousemove.draggable');

            if(
this.options.stopthis.options.stop.call(this.options.executor || thisethis.element);
            $(
document).unbind('mouseup.draggable').unbind('mousemove.draggable');
            
this.initialized false;
    
            
alert("Aki esta el STOP !!! (cuando se suelta el mouse)  q(^.^)p ");

            return 
false;
            
        },
        
drag: function(e) {

            var 
this.options;
            if ($.
browser.msie && !e.button) return this.stop.apply(this, [e]); // IE mouseup check
            
            
if(!this.initialized && (Math.abs(this._MP.left-e.pageX) >= o.distance || Math.abs(this._MP.top-e.pageY) >= o.distance)) {
                if(
this.options.startthis.options.start.call(this.options.executor || thisethis.element);
                
this.initialized true;
            } else {
                if(!
this.initialized) return false;
            }
            if(
o.drago.drag.call(this.options.executor || thisethis.element);
            return 
false;
        }
    });
 })(
jQuery);