1
0
Fork 0
mirror of https://github.com/rails/rails.git synced 2022-11-09 12:12:34 -05:00

Sync Prototype; closes #1539

git-svn-id: http://svn-commit.rubyonrails.org/rails/trunk@1558 5ecf4fe2-1ee6-0310-87b1-e25e094e27de
This commit is contained in:
Sam Stephenson 2005-06-29 05:20:51 +00:00
parent 31e48939b1
commit a551ba2c01

View file

@ -1,4 +1,4 @@
/* Prototype: an object-oriented Javascript library, version 1.3.0 /* Prototype JavaScript framework, version 1.3.0
* (c) 2005 Sam Stephenson <sam@conio.net> * (c) 2005 Sam Stephenson <sam@conio.net>
* *
* THIS FILE IS AUTOMATICALLY GENERATED. When sending patches, please diff * THIS FILE IS AUTOMATICALLY GENERATED. When sending patches, please diff
@ -152,10 +152,17 @@ String.prototype.extend({
return this.replace(/<\/?[^>]+>/gi, ''); return this.replace(/<\/?[^>]+>/gi, '');
}, },
escapeHTML: function() {
var div = document.createElement('div');
var text = document.createTextNode(this);
div.appendChild(text);
return div.innerHTML;
},
unescapeHTML: function() { unescapeHTML: function() {
return this.replace(/&lt;/gi,"<").replace(/&gt;/gi,">"). var div = document.createElement('div');
replace(/&quot;/gi,'"').replace(/&apos;/gi,"'"). div.innerHTML = this.stripTags();
replace(/&amp;/gi,"&").replace(/[\n\r]/gi,""); return div.childNodes[0].nodeValue;
} }
}); });
@ -238,23 +245,24 @@ Ajax.Request.prototype = (new Ajax.Base()).extend({
var event = Ajax.Request.Events[readyState]; var event = Ajax.Request.Events[readyState];
if (event == 'Complete' && this.transport.status != 200) if (event == 'Complete' && this.transport.status != 200)
(this.options['on' + this.transport.status] || (this.options['on' + this.transport.status]
this.options.onFailure || || this.options.onFailure
Prototype.emptyFunction)(this.transport); || Prototype.emptyFunction)(this.transport);
(this.options['on' + event] || Prototype.emptyFunction)(this.transport); (this.options['on' + event] || Prototype.emptyFunction)(this.transport);
} }
}); });
Ajax.Updater = Class.create(); Ajax.Updater = Class.create();
Ajax.Updater.ScriptFragmentMatch = /<script.*?>((?:\n|.)*?)<\/script>/im;
Ajax.Updater.prototype = (new Ajax.Base()).extend({ Ajax.Updater.prototype = (new Ajax.Base()).extend({
initialize: function(container, url, options) { initialize: function(container, url, options) {
this.containers = { this.containers = {
success: container.success ? $(container.success) : $(container), success: container.success ? $(container.success) : $(container),
failure: container.failure ? $(container.failure) : null failure: container.failure ? $(container.failure) : null
} }
this.script_re = /<script.*?>((?:\n|.)*?)<\/script>/im;
this.setOptions(options); this.setOptions(options);
if (this.options.asynchronous) { if (this.options.asynchronous) {
@ -272,12 +280,12 @@ Ajax.Updater.prototype = (new Ajax.Base()).extend({
var receiver = var receiver =
(this.request.transport.status == 200) ? (this.request.transport.status == 200) ?
this.containers.success : this.containers.failure; this.containers.success : this.containers.failure;
var response = this.request.transport.responseText.replace( var response = this.request.transport.responseText.
this.script_re, ''); replace(Ajax.Updater.ScriptFragmentMatch, '');
var scripts = this.request.transport.responseText.match( var scripts = this.request.transport.responseText.
this.script_re); match(Ajax.Updater.ScriptFragmentMatch);
if (receiver) { if (receiver) {
if (this.options.insertion) { if (this.options.insertion) {
@ -288,13 +296,12 @@ Ajax.Updater.prototype = (new Ajax.Base()).extend({
} }
if (this.request.transport.status == 200) { if (this.request.transport.status == 200) {
if (this.onComplete) { if (this.onComplete)
setTimeout((function() {this.onComplete( setTimeout((function() {this.onComplete(
this.request.transport)}).bind(this), 10); this.request.transport)}).bind(this), 10);
}
if (this.options.script && scripts) { if (this.options.evalScripts && scripts)
setTimeout((function() { eval(scripts[1]) }).bind(this), 10); setTimeout((function() {eval(scripts[1])}).bind(this), 10);
}
} }
} }
}); });
@ -340,11 +347,8 @@ Ajax.PeriodicalUpdater.prototype = (new Ajax.Base()).extend({
onTimerEvent: function() { onTimerEvent: function() {
this.updater = new Ajax.Updater(this.container, this.url, this.options); this.updater = new Ajax.Updater(this.container, this.url, this.options);
} }
}); });
/*--------------------------------------------------------------------------*/
document.getElementsByClassName = function(className) { document.getElementsByClassName = function(className) {
var children = document.getElementsByTagName('*') || document.all; var children = document.getElementsByTagName('*') || document.all;
var elements = new Array(); var elements = new Array();
@ -855,31 +859,56 @@ Object.extend(Event, {
// node the event was triggered on; traverses the DOM upwards // node the event was triggered on; traverses the DOM upwards
findElement: function(event, tagName) { findElement: function(event, tagName) {
var element = Event.element(event); var element = Event.element(event);
while (element.parentNode && (!element.tagName || while (element.parentNode && (!element.tagName ||
(element.tagName.toUpperCase() != tagName.toUpperCase()))) (element.tagName.toUpperCase() != tagName.toUpperCase())))
element = element.parentNode; element = element.parentNode;
return element; return element;
}, },
observe: function(element, name, observer) { observe: function(element, name, observer, useCapture) {
var element = $(element); var element = $(element);
useCapture = useCapture || false;
if (name == 'keypress') { if (name == 'keypress') {
if (navigator.appVersion.indexOf('AppleWebKit') > 0) { if (navigator.appVersion.indexOf('AppleWebKit') > 0) {
element.addEventListener('keydown', observer, false); element.addEventListener('keydown', observer, useCapture);
return; return;
} }
if (element.addEventListener) { if (element.addEventListener) {
element.addEventListener('keypress', observer, false); element.addEventListener('keypress', observer, useCapture);
} else if (element.attachEvent) { } else if (element.attachEvent) {
element.attachEvent('onkeydown', observer); element.attachEvent('onkeydown', observer);
} }
} else { } else {
if (element.addEventListener) { if (element.addEventListener) {
element.addEventListener(name, observer, false); element.addEventListener(name, observer, useCapture);
} else if (element.attachEvent) { } else if (element.attachEvent) {
element.attachEvent('on' + name, observer); element.attachEvent('on' + name, observer);
} }
} }
},
stopObserving: function(element, name, observer, useCapture) {
var element = $(element);
useCapture = useCapture || false;
if (name == 'keypress') {
if (navigator.appVersion.indexOf('AppleWebKit') > 0) {
element.removeEventListener('keydown', observer, useCapture);
return;
}
if (element.removeEventListener) {
element.removeEventListener('keypress', observer, useCapture);
} else if (element.detachEvent) {
element.detachEvent('onkeydown', observer);
}
} else {
if (element.removeEventListener) {
element.removeEventListener(name, observer, useCapture);
} else if (element.detachEvent) {
element.detachEvent('on' + name, observer);
}
}
} }
}); });