diff options
author | Paul Arthur <flowerysong00@yahoo.com> | 2013-01-15 15:12:16 -0500 |
---|---|---|
committer | Paul Arthur <flowerysong00@yahoo.com> | 2013-01-15 15:12:16 -0500 |
commit | 19efa3adf757ef160d26aec1e6f15f6b10da1721 (patch) | |
tree | f7c90d196438e2ee71822c90f9d2a9e63a16eb55 | |
parent | 035fd9b1179c2d5659050327c6669a976f81335e (diff) | |
download | ampache-19efa3adf757ef160d26aec1e6f15f6b10da1721.tar.gz ampache-19efa3adf757ef160d26aec1e6f15f6b10da1721.tar.bz2 ampache-19efa3adf757ef160d26aec1e6f15f6b10da1721.zip |
Update prototype to git HEAD (4ce0b0f)
git://github.com/sstephenson/prototype.git
-rwxr-xr-x | docs/CHANGELOG | 1 | ||||
-rw-r--r-- | modules/prototype/prototype.js | 97 |
2 files changed, 61 insertions, 37 deletions
diff --git a/docs/CHANGELOG b/docs/CHANGELOG index 202c307e..0d957a65 100755 --- a/docs/CHANGELOG +++ b/docs/CHANGELOG @@ -4,6 +4,7 @@ -------------------------------------------------------------------------- v.3.6-FUTURE + - Updated Prototype to git HEAD (4ce0b0f) - Fixed bug that disclosed passwords for plugins to users that didn't have access to update the password (patch by Fred Thomsen) - Fixed streaming on Android devices and anything else that expects to diff --git a/modules/prototype/prototype.js b/modules/prototype/prototype.js index 37dd39ac..1b2efbcd 100644 --- a/modules/prototype/prototype.js +++ b/modules/prototype/prototype.js @@ -399,7 +399,7 @@ Object.extend(Function.prototype, (function() { var __method = this, args = slice.call(arguments, 1); var bound = function() { - var a = merge(args, arguments), c = context; + var a = merge(args, arguments); var c = this instanceof bound ? this : context; return __method.apply(c, a); }; @@ -577,7 +577,8 @@ Object.extend(String.prototype, (function() { } while (source.length > 0) { - if (match = source.match(pattern)) { + match = source.match(pattern) + if (match && match[0].length > 0) { result += source.slice(0, match.index); result += String.interpret(replacement(match)); source = source.slice(match.index + match[0].length); @@ -921,8 +922,8 @@ var Enumerable = (function() { } function include(object) { - if (Object.isFunction(this.indexOf)) - if (this.indexOf(object) != -1) return true; + if (Object.isFunction(this.indexOf) && this.indexOf(object) != -1) + return true; var found = false; this.each(function(value) { @@ -1406,11 +1407,13 @@ var Hash = Class.create(Enumerable, (function() { function _each(iterator, context) { + var i = 0; for (var key in this._object) { var value = this._object[key], pair = [key, value]; pair.key = key; pair.value = value; - iterator.call(context, pair); + iterator.call(context, pair, i); + i++; } } @@ -1464,7 +1467,7 @@ var Hash = Class.create(Enumerable, (function() { function toQueryPair(key, value) { if (Object.isUndefined(value)) return key; - var value = String.interpret(value); + value = String.interpret(value); value = value.gsub(/(\r)?\n/, '\r\n'); value = encodeURIComponent(value); @@ -1580,9 +1583,9 @@ var ObjectRange = Class.create(Enumerable, (function() { } function _each(iterator, context) { - var value = this.start; - while (this.include(value)) { - iterator.call(context, value); + var value = this.start, i; + for (i = 0; this.include(value); i++) { + iterator.call(context, value, i); value = value.succ(); } } @@ -1777,7 +1780,8 @@ Ajax.Request = Class.create(Ajax.Base, { } for (var name in headers) - this.transport.setRequestHeader(name, headers[name]); + if (headers[name] != null) + this.transport.setRequestHeader(name, headers[name]); }, success: function() { @@ -2628,6 +2632,7 @@ Ajax.PeriodicalUpdater = Class.create(Ajax.Base, { } function down(element, expression, index) { + if (arguments.length === 1) return firstDescendant(element); element = $(element), expression = expression || 0, index = index || 0; if (Object.isNumber(expression)) @@ -2783,7 +2788,7 @@ Ajax.PeriodicalUpdater = Class.create(Ajax.Base, { name = table.names[attr] || attr; value = attributes[attr]; if (table.values[attr]) - name = table.values[attr](element, value); + name = table.values[attr](element, value) || name; if (value === false || value === null) element.removeAttribute(name); else if (value === true) @@ -3104,7 +3109,7 @@ Ajax.PeriodicalUpdater = Class.create(Ajax.Base, { } function hasLayout_IE(element) { - if (!element.currentStyle.hasLayout) + if (!element.currentStyle || !element.currentStyle.hasLayout) element.style.zoom = 1; return element; } @@ -3157,7 +3162,7 @@ Ajax.PeriodicalUpdater = Class.create(Ajax.Base, { var filter = Element.getStyle(element, 'filter'); if (filter.length === 0) return 1.0; var match = (filter || '').match(/alpha\(opacity=(.*)\)/); - if (match[1]) return parseFloat(match[1]) / 100; + if (match && match[1]) return parseFloat(match[1]) / 100; return 1.0; } @@ -3432,6 +3437,14 @@ Ajax.PeriodicalUpdater = Class.create(Ajax.Base, { Element.addMethods(methods); + function destroyCache_IE() { + DIV = null; + ELEMENT_CACHE = null; + } + + if (window.attachEvent) + window.attachEvent('onunload', destroyCache_IE); + })(this); (function() { @@ -4066,7 +4079,8 @@ Ajax.PeriodicalUpdater = Class.create(Ajax.Base, { function viewportOffset(forElement) { var valueT = 0, valueL = 0, docBody = document.body; - var element = $(forElement); + forElement = $(forElement); + var element = forElement; do { valueT += element.offsetTop || 0; valueL += element.offsetLeft || 0; @@ -4099,10 +4113,11 @@ Ajax.PeriodicalUpdater = Class.create(Ajax.Base, { var layout = element.getLayout(); element.store('prototype_absolutize_original_styles', { - left: element.getStyle('left'), - top: element.getStyle('top'), - width: element.getStyle('width'), - height: element.getStyle('height') + position: element.getStyle('position'), + left: element.getStyle('left'), + top: element.getStyle('top'), + width: element.getStyle('width'), + height: element.getStyle('height') }); element.setStyle({ @@ -5799,18 +5814,23 @@ var Form = { accumulator = function(result, key, value) { if (key in result) { if (!Object.isArray(result[key])) result[key] = [result[key]]; - result[key].push(value); + result[key] = result[key].concat(value); } else result[key] = value; return result; }; } else { initial = ''; - accumulator = function(result, key, value) { - value = value.gsub(/(\r)?\n/, '\r\n'); - value = encodeURIComponent(value); - value = value.gsub(/%20/, '+'); - return result + (result ? '&' : '') + encodeURIComponent(key) + '=' + value; - } + accumulator = function(result, key, values) { + if (!Object.isArray(values)) {values = [values];} + if (!values.length) {return result;} + var encodedKey = encodeURIComponent(key).gsub(/%20/, '+'); + return result + (result ? "&" : "") + values.map(function (value) { + value = value.gsub(/(\r)?\n/, '\r\n'); + value = encodeURIComponent(value); + value = value.gsub(/%20/, '+'); + return encodedKey + "=" + value; + }).join("&"); + }; } return elements.inject(initial, function(result, element) { @@ -6244,17 +6264,14 @@ Form.EventObserver = Class.create(Abstract.EventObserver, { node = currentTarget; } - if (node.nodeType == Node.TEXT_NODE) - node = node.parentNode; - - return Element.extend(node); + return node.nodeType == Node.TEXT_NODE ? node.parentNode : node; } function findElement(event, expression) { - var element = _element(event), match = Prototype.Selector.match; + var element = _element(event), selector = Prototype.Selector; if (!expression) return Element.extend(element); while (element) { - if (Object.isElement(element) && match(element, expression)) + if (Object.isElement(element) && selector.match(element, expression)) return Element.extend(element); element = element.parentNode; } @@ -6535,8 +6552,8 @@ Form.EventObserver = Class.create(Abstract.EventObserver, { function stopObservingElement(element) { - var uid = getUniqueElementID(element), - registry = getRegistryForElement(element, uid); + var uid = getUniqueElementID(element), registry = GLOBAL.Event.cache[uid]; + if (!registry) return; destroyRegistryForElement(element, uid); @@ -6716,9 +6733,9 @@ Form.EventObserver = Class.create(Abstract.EventObserver, { return createMouseEnterLeaveResponder(uid, eventName, handler); return function(event) { - var cacheEntry = Event.cache[uid]; - var element = cacheEntry.element; + if (!Event.cache) return; + var element = Event.cache[uid].element; Event.extend(event, element); handler.call(element, event); }; @@ -6726,7 +6743,7 @@ Form.EventObserver = Class.create(Abstract.EventObserver, { function createResponderForCustomEvent(uid, eventName, handler) { return function(event) { - var cacheEntry = Event.cache[uid], element = cacheEntry.element; + var element = Event.cache[uid].element; if (Object.isUndefined(event.eventName)) return false; @@ -6741,7 +6758,7 @@ Form.EventObserver = Class.create(Abstract.EventObserver, { function createMouseEnterLeaveResponder(uid, eventName, handler) { return function(event) { - var cacheEntry = Event.cache[uid], element = cacheEntry.element; + var element = Event.cache[uid].element; Event.extend(event, element); var parent = event.relatedTarget; @@ -6791,6 +6808,12 @@ Form.EventObserver = Class.create(Abstract.EventObserver, { fireContentLoadedEvent(); } + + if (document.readyState === 'complete') { + fireContentLoadedEvent(); + return; + } + if (document.addEventListener) { document.addEventListener('DOMContentLoaded', fireContentLoadedEvent, false); } else { |