Changeset 648

Show
Ignore:
Timestamp:
03/30/06 12:53:38 (3 years ago)
Author:
therve@gmail.com
Message:

Upgrade to scriptaculous 1.6

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • mochikit/branches/scriptaculous/MochiKit/DragAndDrop.js

    r633 r648  
    207207 
    208208    isAccepted: function (element) { 
    209         return ((!this.accept) || MochiKit.Iter.some(this.accept, function (d) { 
    210             return MochiKit.Iter.some(element.className.split(' '), 
    211             function (c) { 
    212                 return c == d; 
    213             } 
    214         )})); 
     209        return ((!this.accept) || MochiKit.Iter.some(this.accept, function (c) { 
     210            return MochiKit.DOM.hasElementClass(element, c); 
     211        })); 
    215212    }, 
    216213 
     
    422419 
    423420        if (options.handle && (typeof(options.handle) == 'string')) { 
    424             this.handle = MochiKit.DOM.getElementsByTagAndClassName(null, 
    425                                        options.handle, this.element)[0]
     421            this.handle = MochiKit.DOM.getFirstElementByTagAndClassName(null, 
     422                                       options.handle, this.element)
    426423        } 
    427424        if (!this.handle) { 
     
    432429        } 
    433430 
    434         if (options.scroll) { 
     431        if (options.scroll && !options.scroll.scrollTo && !options.scroll.outerHTML) { 
    435432            options.scroll = MochiKit.DOM.getElement(options.scroll); 
    436433        } 
     
    509506 
    510507        if (this.options.scroll) { 
    511             this.originalScrollLeft = this.options.scroll.scrollLeft; 
    512             this.originalScrollTop = this.options.scroll.scrollTop; 
     508            if (this.options.scroll == window) { 
     509                var where = this._getWindowScroll(this.options.scroll); 
     510                this.originalScrollLeft = where.left; 
     511                this.originalScrollTop = where.top; 
     512            } else { 
     513                this.originalScrollLeft = this.options.scroll.scrollLeft; 
     514                this.originalScrollTop = this.options.scroll.scrollTop; 
     515            } 
    513516        } 
    514517 
     
    534537        if (this.options.scroll) { 
    535538            this.stopScrolling(); 
    536             var p = MochiKit.Position.page(this.options.scroll); 
    537             p[0] += this.options.scroll.scrollLeft; 
    538             p[1] += this.options.scroll.scrollTop; 
    539             p.push(p[0] + this.options.scroll.offsetWidth); 
    540             p.push(p[1] + this.options.scroll.offsetHeight); 
     539            var p; 
     540             if (this.options.scroll == window) { 
     541                var s = this._getWindowScroll(this.options.scroll); 
     542                p = [s.left, s.top, s.left+s.width, s.top+s.height]; 
     543            } else { 
     544                p = MochiKit.Position.page(this.options.scroll); 
     545                p[0] += this.options.scroll.scrollLeft; 
     546                p[1] += this.options.scroll.scrollTop; 
     547                p.push(p[0] + this.options.scroll.offsetWidth); 
     548                p.push(p[1] + this.options.scroll.offsetHeight); 
     549            } 
    541550            var speed = [0, 0]; 
    542551            if (pointer.page.x < (p[0] + this.options.scrollSensitivity)) { 
     
    633642        pos[1] -= d[1]; 
    634643 
    635         if (this.options.scroll) { 
     644        if (this.options.scroll && !this.options.scroll.scrollTo) { 
    636645            pos[0] -= this.options.scroll.scrollLeft - this.originalScrollLeft; 
    637646            pos[1] -= this.options.scroll.scrollTop - this.originalScrollTop; 
     
    691700        var delta = current - this.lastScrolled; 
    692701        this.lastScrolled = current; 
    693         this.options.scroll.scrollLeft += this.scrollSpeed[0] * delta / 1000; 
    694         this.options.scroll.scrollTop += this.scrollSpeed[1] * delta / 1000; 
     702         
     703        if (this.options.scroll == window) { 
     704            var s = this._getWindowScroll(this.options.scroll); 
     705            if (this.scrollSpeed[0] || this.scrollSpeed[1]) { 
     706                var d = delta / 1000; 
     707                this.options.scroll.scrollTo(s.left + d*this.scrollSpeed[0], s.top + d*this.scrollSpeed[1]); 
     708            } 
     709        } else { 
     710            this.options.scroll.scrollLeft += this.scrollSpeed[0] * delta / 1000; 
     711            this.options.scroll.scrollTop += this.scrollSpeed[1] * delta / 1000; 
     712        } 
     713         
    695714        MochiKit.Position.prepare(); 
    696715        MochiKit.DragAndDrop.Droppables.show(MochiKit.DragAndDrop.Draggables._lastPointer, this.element); 
     
    702721    }, 
    703722 
     723    _getWindowScroll: function (w) { 
     724        var T, L, W, H; 
     725        with (w.document) { 
     726            if (w.document.documentElement && documentElement.scrollTop) { 
     727                T = documentElement.scrollTop; 
     728                L = documentElement.scrollLeft; 
     729            } else if (w.document.body) { 
     730                T = body.scrollTop; 
     731                L = body.scrollLeft; 
     732            } 
     733            if (w.innerWidth) { 
     734                W = w.innerWidth; 
     735                H = w.innerHeight; 
     736            } else if (w.document.documentElement && documentElement.clientWidth) { 
     737                W = documentElement.clientWidth; 
     738                H = documentElement.clientHeight; 
     739            } else { 
     740                W = body.offsetWidth; 
     741                H = body.offsetHeight 
     742            } 
     743        } 
     744        return {top: T, left: L, width: W, height: H}; 
     745    }, 
     746 
    704747    repr: function () { 
    705748        return '[' + this.__class__.NAME + ", options:" + MochiKit.Base.repr(this.options) + "]"; 
  • mochikit/branches/scriptaculous/MochiKit/New.js

    r616 r648  
    165165            element.style.position = element.style.top = element.style.left = element.style.bottom = element.style.right = ''; 
    166166        } 
     167    }, 
     168 
     169    getFirstElementByTagAndClassName: function (tagName, className, 
     170            /* optional */parent) { 
     171        var self = MochiKit.DOM; 
     172        if (typeof(tagName) == 'undefined' || tagName === null) { 
     173            tagName = '*'; 
     174        } 
     175        if (typeof(parent) == 'undefined' || parent === null) { 
     176            parent = self._document; 
     177        } 
     178        parent = self.getElement(parent); 
     179        var children = (parent.getElementsByTagName(tagName) 
     180            || self._document.all); 
     181        if (typeof(className) == 'undefined' || className === null) { 
     182            return MochiKit.Base.extend(null, children); 
     183        } 
     184 
     185        for (var i = 0; i < children.length; i++) { 
     186            var child = children[i]; 
     187            var classNames = child.className.split(' '); 
     188            for (var j = 0; j < classNames.length; j++) { 
     189                if (classNames[j] == className) { 
     190                    return child; 
     191                } 
     192            } 
     193        } 
    167194    } 
    168195}); 
  • mochikit/branches/scriptaculous/MochiKit/Sortable.js

    r633 r648  
    136136            ghosting: false, 
    137137            scroll: false, 
     138            scrollSensitivity: 20, 
     139            scrollSpeed: 15, 
    138140            format: null, 
    139141            onChange: MochiKit.Base.emptyFunction, 
     
    149151            ghosting: options.ghosting, 
    150152            scroll: options.scroll, 
     153            scrollSensitivity: options.scrollSensitivity, 
     154            scrollSpeed: options.scrollSpeed, 
    151155            constraint: options.constraint, 
    152156            handle: options.handle 
     
    203207            // handles are per-draggable 
    204208            var handle = options.handle ? 
    205                 MochiKit.DOM.getElementsByTagAndClassName(null, 
    206                     options.handle, e)[0] : e; 
     209                MochiKit.DOM.getFirstElementByTagAndClassName(null, 
     210                    options.handle, e) : e; 
    207211            options.draggables.push( 
    208212                new MochiKit.DragAndDrop.Draggable(e, 
     
    231235                e.tagName.toUpperCase() == options.tag.toUpperCase() && 
    232236               (!options.only || 
    233                 (MochiKit.DOM.hasElementClass(e, options.only)))) { 
     237                MochiKit.Iter.some(option.only, function (c) { 
     238                    return MochiKit.DOM.hasElementClass(element, c); 
     239                }))) { 
    234240                elements.push(e); 
    235241            } 
     
    319325    }, 
    320326 
     327    setSequence: function (element, newSequence) { 
     328        element = MochiKit.DOM.getElement(element); 
     329        var options = MochiKit.Base.update(arguments[2] || {}, this.options(element)); 
     330 
     331        var nodeMap = {}; 
     332        MochiKit.Base.map(function (n) { 
     333            var m = n.id.match(options.format); 
     334            if (m) { 
     335                nodeMap[m[1]] = [n, n.parentNode]; 
     336            } 
     337            n.parentNode.removeChild(n); 
     338        }, this.findElements(element, options)); 
     339 
     340        MochiKit.Base.map(function (ident) { 
     341            var n = nodeMap[ident]; 
     342            if (n) { 
     343                n[1].appendChild(n[0]); 
     344                delete nodeMap[ident]; 
     345            } 
     346        }, newSequence); 
     347    }, 
     348 
    321349    serialize: function (element, options) { 
    322350        element = MochiKit.DOM.getElement(element); 
     
    328356            format: sortableOptions.format || /^[^_]*_(.*)$/ 
    329357        }, options || {}); 
     358 
    330359        return MochiKit.Base.map(function (item) { 
    331360          return (encodeURIComponent(options.name) + '[]=' + 
  • mochikit/branches/scriptaculous/MochiKit/Visual.js

    r620 r648  
    399399        } 
    400400    }); 
     401}; 
     402 
     403MochiKit.Visual.forceRerendering = function (element) { 
     404    try { 
     405        element = MochiKit.DOM.getElement(element); 
     406        var n = document.createTextNode(' '); 
     407        element.appendChild(n); 
     408        element.removeChild(n); 
     409    } catch(e) { 
     410    } 
    401411}; 
    402412 
     
    10981108               MochiKit.DOM.getOpacity(element) || 0.0), 
    10991109        to: 1.0, 
     1110        // force Safari to render floated elements properly 
     1111        afterFinishInternal: function(effect) { 
     1112            MochiKit.Visual.forceRerendering(effect.element); 
     1113        }, 
    11001114        beforeSetup: function (effect) { 
    11011115            MochiKit.DOM.setOpacity(effect.element, effect.options.from); 
     
    11641178    ***/ 
    11651179    element = MochiKit.DOM.getElement(element); 
    1166     var oldHeight = MochiKit.DOM.getStyle(element, 'height'); 
    11671180    var elementDimensions = MochiKit.DOM.elementDimensions(element); 
    11681181    options = MochiKit.Base.update({ 
     
    11801193        afterFinishInternal: function (effect) { 
    11811194            MochiKit.DOM.undoClipping(effect.element); 
    1182             MochiKit.DOM.setStyle(effect.element, {height: oldHeight}); 
    11831195        } 
    11841196    }, options || {});