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

AKI la ultima de las librerias ui.sortable.js

Código PHP:
((function($) {

    if (
window.Node && Node.prototype && !Node.prototype.contains) {
        
Node.prototype.contains = function (arg) {
            return !!(
this.compareDocumentPosition(arg) & 16);
        };
    }

    $.
fn.extend({
        
sortable: function(options) {
            
            var 
args = Array.prototype.slice.call(arguments1);
            
            if ( 
options == "serialize" )
                return $.
data(this[0], "ui-sortable").serialize(arguments[1]);
            
            return 
this.each(function() {
                if (
typeof options == "string") {
                    var 
sort = $.data(this"ui-sortable");
                    
sort[options].apply(sortargs);

                } else if(!$.
data(this"ui-sortable"))
                    new $.
ui.sortable(thisoptions);
            });
            
            
            
alert("Aki esta el Drag xD");
        }
            
    });
    
    
    $.
ui.sortable = function(elementoptions) {
        
//Initialize needed constants
        
var self this;
        
        
this.element = $(element);
        
        $.
data(element"ui-sortable"this);
        
this.element.addClass("ui-sortable");

        
//Prepare the passed options
        
this.options = $.extend({}, options);
        var 
this.options;
        $.
extend(o, {
            
itemsthis.options.items || '> *',
            
zIndexthis.options.zIndex || 1000,
            
startCondition: function() {
                return !
self.disabled;    
            }        
        });
        
        $(
element).bind("setData.sortable", function(eventkeyvalue){
            
self.options[key] = value;
        }).
bind("getData.sortable", function(eventkey){
            return 
self.options[key];
        });
        
        
//Get the items
        
this.refresh();

        
//Let's determine if the items are floating
        
this.floating = /left|right/.test(this.items[0].item.css('float'));
        
        
//Let's determine the parent's offset
        
if(!(/(relative|absolute|fixed)/).test(this.element.css('position'))) this.element.css('position''relative');
        
this.offset this.element.offset({ borderfalse });

        
//Initialize mouse events for interaction
        
this.element.mouseInteraction({
            
executorthis,
            
delayo.delay,
            
distanceo.distance || 0,
            
dragPreventiono.prevention o.prevention.toLowerCase().split(',') : ['input','textarea','button','select','option'],
            
startthis.start,
            
stopthis.stop,
            
dragthis.drag,
            
condition: function(e) {

                if(
this.disabled) return false;

                
//Find out if the clicked node (or one of its parents) is a actual item in this.items
                
var currentItem nullnodes = $(e.target).parents().andSelf().each(function() {
                    if($.
data(this'ui-sortable-item')) currentItem = $(this);
                });
                if(
currentItem && (!this.options.handle || $(e.target).parents().andSelf().is(this.options.handle))) {
                    
this.currentItem currentItem;
                    return 
true;
                } else return 
false

            }
        });

    };
    
    $.
extend($.ui.sortable.prototype, {
        
plugins: {},
        
ui: function() {
            return {
                
helperthis.helper,
                
placeholderthis.placeholder || $([]),
                
positionthis.position,
                
absolutePositionthis.positionAbs,
                
instancethis,
                
optionsthis.options
            
};        
        },
        
propagate: function(n,e) {
            $.
ui.plugin.call(thisn, [ethis.ui()]);
            
this.element.triggerHandler(== "sort" "sort"+n, [ethis.ui()], this.options[n]);
        },
        
serialize: function(o) {
            
            var 
items = $(this.options.itemsthis.element).not('.ui-sortable-helper'); //Only the items of the sortable itself
            
var str = [];
            
|| {};
            
            
items.each(function() {
                var 
res = (this.getAttribute(o.attribute || 'id') || '').match(o.expression || (/(.+)[-=_](.+)/));
                if(
resstr.push((o.key || res[1])+'[]='+(o.key res[1] : res[2]));                
            });
            
            return 
str.join('&');
            
        },
        
intersectsWith: function(item) {
            
            var 
x1 this.positionAbs.leftx2 x1 this.helperProportions.width,
                
y1 this.positionAbs.topy2 y1 this.helperProportions.height;
            var 
item.leftitem.width
                
item.top,  item.height;
            
            return (   
x1 + (this.helperProportions.width  2)        // Right Half
                
&&     x2 - (this.helperProportions.width  2) < r    // Left Half
                
&& y1 + (this.helperProportions.height 2)        // Bottom Half
                
&&     y2 - (this.helperProportions.height 2) < ); // Top Half
            
        
},