Ruby on Rails | Screencasts | Download | Documentation | Weblog | Community | Source

Ticket #7050: dragdrop.diff

File dragdrop.diff, 1.5 kB (added by stakadush, 2 years ago)
  • -

    old new  
    2424 
    2525    // cache containers 
    2626    if(options.containment) { 
    27       options._containers = []; 
    28       var containment = options.containment; 
    29       if((typeof containment == 'object') &&  
    30         (containment.constructor == Array)) { 
    31         containment.each( function(c) { options._containers.push($(c)) }); 
    32       } else { 
    33         options._containers.push($(containment)); 
    34       } 
     27                        if (typeof options.containment == 'function') { // should be a functions returning an array of elements 
     28                                options._containers = options.containment; 
     29                        } else { 
     30                                options._containers = function() { 
     31                                        var containment = this; 
     32                                        var containers = []; 
     33                      if((typeof containment == 'object') &&  
     34                        (containment.constructor == Array)) { 
     35                        containment.each( function(c) { containers.push($(c)) }); 
     36                                        } else { 
     37                        containers.push($(containment)); 
     38                      } 
     39                                        return containers; 
     40                                }.bind(options.containment); // bind to make sure always get this containment 
     41                        } 
    3542    } 
    3643     
    3744    if(options.accept) options.accept = [options.accept].flatten(); 
     
    5966    } else { 
    6067      containmentNode = element.parentNode; 
    6168    } 
    62     return drop._containers.detect(function(c) { return containmentNode == c }); 
     69 
     70    return drop._containers().detect(function(c) { return containmentNode == c }); 
    6371  }, 
    6472   
    6573  isAffected: function(point, element, drop) {