diff --git a/CHANGELOG b/CHANGELOG index 2aefa54..5eef4dd 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -1,5 +1,7 @@ *SVN* +* Update Template, Selector, Ajax.*, and ObjectRange classes to use the new class system. [Mislav Marohnić] + * Change Abstract.TimedObserver to subclass PeriodicalExecuter and tweak its subclasses to use new inheritance functionality. TimedObserver can now be stopped the same way as PeriodicalExecuter. Closes #8589. [Mislav Marohnić] * Fix Class.mixin to extend the class's prototype. [Mislav Marohnić] diff --git a/src/ajax.js b/src/ajax.js index 1234768..e2a8998 100644 --- a/src/ajax.js +++ b/src/ajax.js @@ -40,17 +40,12 @@ Ajax.Responders = { Object.extend(Ajax.Responders, Enumerable); Ajax.Responders.register({ - onCreate: function() { - Ajax.activeRequestCount++; - }, - onComplete: function() { - Ajax.activeRequestCount--; - } + onCreate: function() { Ajax.activeRequestCount++ }, + onComplete: function() { Ajax.activeRequestCount-- } }); -Ajax.Base = function() { }; -Ajax.Base.prototype = { - setOptions: function(options) { +Ajax.Base = Class.create({ + initialize: function(options) { this.options = { method: 'post', asynchronous: true, @@ -66,18 +61,14 @@ Ajax.Base.prototype = { if (Object.isString(this.options.parameters)) this.options.parameters = this.options.parameters.toQueryParams(); } -}; +}); -Ajax.Request = Class.create(); -Ajax.Request.Events = - ['Uninitialized', 'Loading', 'Loaded', 'Interactive', 'Complete']; - -Ajax.Request.prototype = Object.extend(new Ajax.Base(), { +Ajax.Request = Class.create(Ajax.Base, { _complete: false, - initialize: function(url, options) { + initialize: function($super, url, options) { + $super(options); this.transport = Ajax.getTransport(); - this.setOptions(options); this.request(url); }, @@ -233,8 +224,10 @@ Ajax.Request.prototype = Object.extend(new Ajax.Base(), { } }); -Ajax.Response = Class.create(); -Ajax.Response.prototype = { +Ajax.Request.Events = + ['Uninitialized', 'Loading', 'Loaded', 'Interactive', 'Complete']; + +Ajax.Response = Class.create({ initialize: function(request){ this.request = request; var transport = this.transport = request.transport, @@ -301,27 +294,23 @@ Ajax.Response.prototype = { this.request.dispatchException(e); } } -}; +}); -Ajax.Updater = Class.create(); - -Object.extend(Object.extend(Ajax.Updater.prototype, Ajax.Request.prototype), { - initialize: function(container, url, options) { +Ajax.Updater = Class.create(Ajax.Request, { + initialize: function($super, container, url, options) { this.container = { success: (container.success || container), failure: (container.failure || (container.success ? null : container)) }; - - this.transport = Ajax.getTransport(); - this.setOptions(options); - var onComplete = this.options.onComplete || Prototype.emptyFunction; - this.options.onComplete = (function(response, param) { + options = options || { }; + var onComplete = options.onComplete; + options.onComplete = (function(response, param) { this.updateContent(response.responseText); - onComplete(response, param); + if (Object.isFunction(onComplete)) onComplete(response, param); }).bind(this); - this.request(url); + $super(url, options); }, updateContent: function(responseText) { @@ -347,10 +336,9 @@ Object.extend(Object.extend(Ajax.Updater.prototype, Ajax.Request.prototype), { } }); -Ajax.PeriodicalUpdater = Class.create(); -Ajax.PeriodicalUpdater.prototype = Object.extend(new Ajax.Base(), { - initialize: function(container, url, options) { - this.setOptions(options); +Ajax.PeriodicalUpdater = Class.create(Ajax.Base, { + initialize: function($super, container, url, options) { + $super(options); this.onComplete = this.options.onComplete; this.frequency = (this.options.frequency || 2); diff --git a/src/range.js b/src/range.js index 373d5b1..f971883 100644 --- a/src/range.js +++ b/src/range.js @@ -1,6 +1,4 @@ -ObjectRange = Class.create(); -Object.extend(ObjectRange.prototype, Enumerable); -Object.extend(ObjectRange.prototype, { +ObjectRange = Class.create({ initialize: function(start, end, exclusive) { this.start = start; this.end = end; @@ -13,17 +11,19 @@ Object.extend(ObjectRange.prototype, { iterator(value); value = value.succ(); } - }, - - include: function(value) { - if (value < this.start) - return false; - if (this.exclusive) - return value < this.end; - return value <= this.end; - } + } }); +Object.extend(ObjectRange.prototype, Enumerable); + +ObjectRange.prototype.include = function(value) { + if (value < this.start) + return false; + if (this.exclusive) + return value < this.end; + return value <= this.end; +}; + var $R = function(start, end, exclusive) { return new ObjectRange(start, end, exclusive); -}; \ No newline at end of file +}; diff --git a/src/selector.js b/src/selector.js index cdd922f..286f334 100644 --- a/src/selector.js +++ b/src/selector.js @@ -2,9 +2,7 @@ * part of YUI-Ext version 0.40, distributed under the terms of an MIT-style * license. Please see http://www.yui-ext.com/ for more information. */ -var Selector = Class.create(); - -Selector.prototype = { +var Selector = Class.create({ initialize: function(expression) { this.expression = expression.strip(); this.compileMatcher(); @@ -118,7 +116,7 @@ Selector.prototype = { inspect: function() { return "#"; } -}; +}); Object.extend(Selector, { _cache: { }, diff --git a/src/string.js b/src/string.js index 4dfb583..11f09ca 100644 --- a/src/string.js +++ b/src/string.js @@ -230,9 +230,7 @@ Object.extend(String.prototype.escapeHTML, { with (String.prototype.escapeHTML) div.appendChild(text); -var Template = Class.create(); -Template.Pattern = /(^|.|\r|\n)(#\{(.*?)\})/; -Template.prototype = { +var Template = Class.create({ initialize: function(template, pattern) { this.template = template.toString(); this.pattern = pattern || Template.Pattern; @@ -263,4 +261,5 @@ Template.prototype = { return before + String.interpret(ctx); }.bind(this)); } -}; +}); +Template.Pattern = /(^|.|\r|\n)(#\{(.*?)\})/;