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

root/spinoffs/prototype/branches/documentation/CHANGELOG

Revision 8948, 57.2 kB (checked in by tobie, 6 months ago)

prototype: mark Hash.toJSON() as removed.

Line 
1 * deprecation extension: mark Hash.toJSON() as removed. [Tobie Langel]
2
3 * deprecation extension: mark Class.create() used without arguments as deprecated. [Tobie Langel]
4
5 * deprecation extension: mark Event.unloadCache as removed rather than deprecated. [Tobie Langel]
6
7 * deprecation extension: log everything *but* deprecations with console.error. [Tobie Langel]
8
9 * Change deprecation extension to use Firebug's console.warn and console.error. [Andrew Dupont, Tobie Langel]
10
11 * Make tagName comparisons XHTML-compliant. Closes #11012, #11013, #11014. [cfis, Tobie Langel]
12
13 * Avoid breaking Element.prototype in browsers which support it. Closes #11004. [cfis, Tobie Langel]
14
15 * Prevent Element#cumulativeOffset, Element#getOffsetParent, Element#positionedOffset, Element#viewportOffset and Element#clonePosition from throwing an error in IE when called on a parent-less element. Closes #9416, #10192, #10248. [ronstoney, psiborg, kangax]
16
17 * Prevent Enumerable#eachSlice from entering into an endless loop if passed an argument smaller than 1. Closes #10665. [kangax, Tobie Langel]
18
19 * Allow Selector to correctly detect the presence of namespaced attributes. Closes #10987. [Samuel Lebeau, Tobie Langel]
20
21 * Make Element#absolutize and Element#relativize always return element. Closes #10983. [kangax]
22
23 * Add deprecation extension. [Tobie Langel]
24
25 *1.6.0.2* (January 25, 2008)
26
27 * Update the list of officially supported browsers in the README.  [sam]
28
29 * Add tests for Element#descendantOf that deal with dynamically-created elements. [Andrew Dupont]
30
31 * Ensure positionedOffset properly considers "position: fixed" elements. Also ensures IE reports offsets correctly by triggering hasLayout when a "static" element has a "fixed" element as an offset parent. Closes #10644. [heygrady, kangax, Andrew Dupont]
32
33 * Roll back the fix for #9609, since it does not work in Opera. Instead, avoid using "valueOf" or "toString" as field names in forms.
34
35 * Prevent DOM node expandos _countedByPrototype and _prototypeEventID from being serialized into (inner|outer)HTML in IE. Closes #10909. [dcpedit, Tobie Langel, Andrew Dupont]
36
37 * Make Ajax.Request#isSameOrigin JavaScript Lint compliant. [Andrew Dupont]
38
39 * Properly serialize form fields with names that collide with built-in JS properties (like "length" or "toString"). Closes #9609. [gryn, kangax]
40
41 * Make Object.isArray correctly identify arrays created in another frame. Closes #10374. [pointy, Dean Edwards, Andrew Dupont, Tobie Langel]
42
43 * Fixed issue where Element#match failed on attribute selectors with single or double quotes. Closes #10067. [Cezary Okupski, Andrew Dupont]
44
45 * Add tests for Element#match.  [Tobie Langel]
46
47 * Fix Element#writeAttribute to work with 'cellspacing' and 'cellpadding' attributes in IE. Closes #9983. [/dev/urandom, Tobie Langel]
48
49 * Prevent a potential security issue for cross-site ajax requests. [Alexey Feldgendler, sam, Tobie Langel]
50
51 * Test for attribute existence before applying more complex CSS3 selectors. Closes #10870. [arty, Tobie Langel]
52
53 * Fix "function $A" declaration inside of a conditional (confuses IE). Closes #10882. [Jacco, Andrew Dupont]
54
55 * Fixed selector parsing so that "#foo [bar=baz]" is treated the same way as "#foo *[bar=baz]". Closes #10734. [jlukas, kangax, Andrew Dupont]
56
57 * Fix Element#descendantOf logic in IE. Closes #10413. [martymix, kamil.szot]
58
59 * Fix missing "var" in Element#insert. Closes #10838. [Lantash]
60
61 * Add Test.Unit.MessageTemplate class. Add flunk, buildMessage and assertBlock methods to Test.Unit.Assertions. Refactor accordingly. [Tobie Langel]
62
63 * Remove useless binding in Template#evaluate. [Tobie Langel]
64
65 * Make Object.inspect more robust. [Tobie Langel]
66
67 * Add a description to :test and :dist rake tasks. [Christoph Sturm]
68
69 * Fix Selector.matchElements to allow for coma-separated selectors in Element#up/next/previous and Event#findElement. [Samuel Lebeau, Tobie Langel]
70
71 * Test.Unit refactoring. Allow running multiple instances of Test.Unit.Runner on the same page. Allow rake to run specific testcases (e.g.: rake test BROWSERS=firefox TESTS=array TESTCASES=testUniq,test$w). Closes #10704, #10705, #10706. [nicwilliams, Tobie Langel]
72
73 * Optimize property detection of outerHTML. Avoids triggering FOUC in Safari 3.0.4. Closes #10702. [subimage, Tobie Langel]
74
75 * Add document.loaded, a boolean that is set to true once dom:loaded is fired. Setting document.loaded to true before the document is loaded prevents dom:loaded from being fired. [Tobie Langel]
76
77 * Make Element#insert standard-compliant. Fixes an issue in FF3b2 when inserting HTML or text inside DOM nodes which aren't (yet) appended to the document. [Tobie Langel]
78
79 * Add some missing semicolons to the source tree.  Closes #10659.  [Richard Quadling]
80
81 * Ensure Ajax.Response#getHeader returns null for missing headers in Opera. [Tobie Langel]
82
83 * Allow WEBrick to simulate slow or dropped connections and to ease Ajax request inspection. [Tobie Langel]
84
85 * Ensure Ajax.Response#getHeader returns null for missing headers. [Tobie Langel]
86
87 * Ensure $A creates an empty array when its argument's length is undefined. Closes #10574. [henryju, Tobie Langel]
88
89 * Fix incorrect variable declaration in Event.fire. Closes #10329. [rubley]
90
91 * Fix the way Selector handles [pseudoclass + combinator] with no space in between. Closes #9696. [kangax, fearphage, Andrew Dupont]
92
93 * Optimize Element#up/down/next/previous. Closes #10353. [Dylan Bruzenak, Nick Stackenburg, Andrew Dupont]
94
95 * Handle case-sensitivity in Selector tag names better. Closes #5052. [mexx, Andrew Dupont]
96
97 *1.6.0.1* (December 4, 2007)
98
99 * Change document.viewport.getDimensions to exclude scrollbars in all cases. Closes #10148, #9288. [Nick Stackenburg]
100
101 * Add logic to Element#getStyle in Opera that fixes inaccurate reporting of computed 'width' and 'height' properties. [Andrew Dupont]
102
103 * Ensure that an Ajax.Request's parameters option can be a Hash.  Closes #10172.  [kangax, sam]
104
105 * Ensure no comment nodes are returned in Selector queries (IE improperly returns comment nodes on getElementsByTagName("*")). Change Element#descendants to use Element#getElementsBySelector in order to avoid this issue. Closes #10220. [Jeff Gobel, Andrew Dupont]
106
107 * Re-enable the XPath approach in Selector for Safari 3. Falls back to the non-XPath version when it sees a problematic token. [Andrew Dupont]
108
109 * Fix a bug in the IE-specific Element#descendantOf logic. [Nicholas, Andrew Dupont]
110
111 * Make Ajax.Updater clone its options hash before modifying it. Prevents memory leaks in Ajax.PeriodicalUpdater. Closes #10049 [Mislav Marohnić, Tobie Langel].
112
113 * Remove useless variable in Selector.handlers.child. Closes #10006 [kuriyama]
114
115 * Don't redeclare previously declared variables. Closes #10007 [kuriyama]
116
117 * For consistency: use Object.isUndefined where possible. [Tobie Langel]
118
119 * Make String#isJSON return false for empty or blank strings. Make Ajax.Response#responseJSON null when Ajax.Response#responseText is empty or blank. [Andrew Dupont, Thomas Fuchs, Tobie Langel]
120
121 * Make Ajax.Response#_getResponseJSON use Ajax.Response#responseText. [Tobie Langel]
122
123 * Remove the forked declaration of Hash#_each. As we are now systematically cloning the object upon instantiation, preventing iteration of shadowed properties is no longer required. [Tobie Langel]
124
125 * Performance optimizations for Event#findElement. Make Event#findElement's expression argument optional, in which case the extended target element is returned (same as Event#element). [Tobie Langel]
126
127 * Ensure Event#fire always returns an extended event. [Tobie Langel]
128
129 *1.6.0* (November 6, 2007)
130
131 * Fix Class#addMethods for "toString" and "valueOf" methods in Internet Explorer.  Closes #9901.  [sam]
132
133 * Exclude Opera from using the sourceIndex approach in Element#descendantOf. [Tobie Langel, Andrew Dupont]
134
135 * Ensure Element#hasClassName always returns a boolean. Closes #10075. [ronnylovtangen, Tobie Langel]
136
137 * Ensure selectors of the form "[href]" (attribute token with no preceding tag name) work properly. Closes #8870. [chao, kangax, Andrew Dupont]
138
139 * Performance optimizations for Element#descendantOf. Costliness should no longer be dependent on the difference in depth between the parent and the child. [Andrew Dupont]
140
141 * Apply the workaround for the Firefox "blinking element" opacity=1 bug only to Firefox 1.5.  [Thomas Fuchs]
142
143 * Add event.stopped, a boolean that is set to `true` when Event#stop is called. [Andrew Dupont, sam]
144
145 * Reset the browser's dimensions to their original settings after running the DOM viewport tests.  [sam]
146
147 * Fix the test runner for Firefox in Leopard.  [sam]
148
149 * Use String#include wherever possible.
150
151 * In IE, allow opacity to be set on elements not yet attached to the document. Closes #9904. [Thomas Fuchs, dcpedit, Tobie Langel]
152
153 * Avoid the try..catch block in Ajax.Response#_getResponseJSON unless required. [Tobie Langel]
154
155 * Add more tests to Element.update. Closes #9327. [Tobie Langel]
156
157 * Make the Ajax.Response#headerJSON property correctly decode unicode characters. Closes #9285. [Marius Feraru, Tobie Langel]
158
159 * Make sure Event and Event.extend are defined before wrapping events and calling their handler. Prevents a known Firefox bug from throwing errors on page load/unload (cf.: https://bugzilla.mozilla.org/show_bug.cgi?id=361271). Closes #5393, #9421. [staaky, John Resig, sam, Tobie Langel]
160
161 * Minor cosmetic changes to the display of unit tests in terminal. [Tobie Langel]
162
163 * Make submitting forms work in Opera < 9.1. Closes #9917, #9463, #8260. [kangax]
164
165 * Fix template evaluation with empty replacements.  Closes #9692.  [Ryan McGeary]
166
167 * Hash#toTemplateReplacements is an alias for Hash#toObject so you can once again pass hashes to Template#evaluate and String#interpolate.  [sam]
168
169 * Fix Event#is(Left|Middle|Right)Click in IE.  Closes #7520 (again).  [Mislav Marohnić]
170
171 *1.6.0_rc1* (October 16, 2007)
172
173 * Ensure Event.* generic methods work in IE, even when the event is not extended. [Viktor Kojouharov, Andrew Dupont]
174
175 * Don't translate "keypress" events into "keydown" events.  [sam]
176   Note: "keypress" is broken in Safari <= 2.x, but Event#stop has no effect on "keydown" events.
177
178 * Changed Element#makeClipping to remember the original overflow value, even if it's a non-inline style. [Andrew Dupont]
179
180 * Cross-browser Event#isLeftClick with the addition of is(Middle|Right)Click.  Closes #7520.  [Christophe Porteneuve, Richard Quadling, Mislav Marohnić]
181
182 * Changed Selector to use the non-XPath approach for Safari 3 because of bugs in its version of document.evaluate. [Andrew Dupont]
183
184 * Changed the Selector regex that tests whether the selector can be expressed in XPath; added :checked, since XPath can't detect all scenarios in which an <input> is checked. Fixes #9776. [StelardActek, kangax, Andrew Dupont]
185
186 * Changed Selector pattern match so that descendant combinators after pseudoclass tokens are properly handled. Fixes #9696. [wiktor, kangax, Andrew Dupont]
187
188 * Make sure $w always returns an array. [Andrew Dupont, Tobie Langel]
189
190 * Add more tests to Hash. [Mislav Marohnić]
191
192 * Performance enhancements to $A. Closes #9464. [Samuel Lebeau]
193
194 * Make Function#argumentNames work with named functions. Closes #9826. [Samuel Lebeau]
195
196 * Add Object.isHash. [Tobie Langel]
197
198 * Performance improvements to String#times. [Martin Ström]
199
200 * Make Ajax.Response#getHeaderJSON and Ajax.Response#getResponseJSON pseudo private instance methods. [Tobie Langel]
201
202 * Make ObjectRange use the new Class.create syntax. [Mislav Marohnić]
203
204 * Fix a failing ClassCreate test case in IE. [Tobie Langel]
205
206 * Complete rewrite of the Hash class.
207
208   !! BACKWARDS COMPATIBILITY CHANGE !! This new version of Hash is NOT backwards compatible with the former Hash class.
209  
210   Properties are now hidden away in an private store to prevent the risk of collision with Hash's instance and mixed-in methods.
211   This implies that properties of the hash can no longer be set, accessed or deleted directly: use the new Hash#get(key), Hash#set(key, value) and Hash#unset(key) instance methods instead.
212  
213   - Make $H(object) equivalent to new Hash(object). Both now return a new (cloned) instance of Hash in all circumstances.
214   - Make Hash#merge non-destructive.
215  
216   - Add Hash#update (a destructive version of Hash#merge).
217   - Add Hash#clone (returns a new, cloned instance of Hash).
218   - Add Hash#toObject (returns a clone of the contained object).
219   - Add Hash#get(key) (returns the value of the specified property).
220   - Add Hash#set(key, value) (sets the value of the given property. returns the value).
221   - Add Hash#unset(key) (deletes the specified property and returns its value).
222   - Add Hash.from as a alias to $H for consistency with Array.from.
223   - Add Object.toQueryString.
224
225   - Deprecate Hash.toQueryString (use Object.toQueryString or the instance method Hash#toQueryString instead).
226
227   - Remove Hash#remove (use Hash#unset instead).
228   - Remove Hash.toJSON (use Object.toJSON or the instance method Hash#toJSON instead). [sam, Tobie Langel]
229
230 * Element#wrap now returns the wrapper instead of the element being wrapped.  [sam]
231
232 * Namespace all custom event names to avoid conflicts with native DOM events.  [sam]
233   - All custom event names MUST include a namespace.  Prefix custom event names for observe, stopObserving, and fire with the namespace followed by a colon.  E.g. document.fire("widget:activated")
234   - The "contentloaded" event is now "dom:loaded".
235   - The Event.DOMEvents array is no longer present.  If an event name does not include a namespace, the event is treated as a native event.
236
237 * Clean up the new class API.  [sam, Tobie Langel]
238   - Add Class#addMethods for adding instance methods to classes. 
239   - Remove Class.extend and Class.mixin. 
240   - Class.create now takes a variable number of arguments: if the first argument is a class, the newly created class inherits from that class; all other arguments are treated as successive calls to addMethods.
241
242 * Fix contentloaded event initialization in IE.  Closes #9457, #9488, #9707.  [Mislav Marohnić]
243
244 * Deprecate document.getElementsByClassName and Element#getElementsByClassName since native versions return a NodeList and we can only return an Array.  Please use $$ or Element#select instead.  [sam]
245   For more information see https://bugzilla.mozilla.org/show_bug.cgi?id=390411
246
247 * Fix missing "var" in selector.js.  Closes #9761.  [Tobie Langel]
248
249 * Date#toJSON now returns times in UTC for better compatibility with json.js.  Closes #9332.  [Tobie Langel]
250
251 * Ensure document._getElementsByXPath extends the elements it returns; fixes $$ not returning extended elements in Opera 9.2.  Closes #8843.  [jdalton]
252
253 * Update Prototype.Browser.MobileSafari for iPod touch compatibility.  [sam]
254
255 * Add tests for Object.extend and Object.clone.  [Tobie Langel]
256
257 * Add a test for Form.Observer.  [Christoph Sturm]
258
259 * Make sure setting opacity works on elements that have "no layout" in IE.  [Thomas Fuchs]
260
261 * Simplify Class.create by establishing a prototype chain when subclassing.  Closes #9342.  [Ben Newman]
262
263 * Fix Ajax.PeriodicalUpdater for compatibility with Ajax.Response.  Closes #9321.  [kampers]
264
265 * Ensure that classes always have an initialize method.  [Mislav Marohnić]
266
267 * Update Template, Selector, Ajax.*, and ObjectRange classes to use the new class system.  [Mislav Marohnić]
268
269 * 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ć]
270
271 * Fix Class.mixin to extend the class's prototype.  [Mislav Marohnić]
272
273 * Fix superclass method call breakage from [7337].  [Mislav Marohnić, sam]
274
275 * Change Class.extend to allow for superclass method resolution and remove Class.inherit.  Closes #9274.  [Samuel Lebeau]
276
277 * Event handlers are now bound to the observed element, not the event's target element.  [Dan Webb]
278
279 * Define Node constants conditionally after checking for Node.ELEMENT_NODE presence.  Add unit test to check the values of all constants.  Closes #7625.  [Mislav Marohnić]
280
281 * Make sure Enumerable#include doesn't do type comparision.  [Mislav Marohnić]
282
283 * Add contextmenu to Event.DOMEvents.  [Thomas Fuchs]
284
285 *1.6.0_rc0* (August 15, 2007)
286
287 * Fix readAttribute-related failure in form.html in IE.  [sam, Andrew Dupont]
288
289 * Fix failing dom.html and selector.html tests in IE.  [Tobie Langel, Andrew Dupont]
290
291 * Make sure the WebKit redefinition of Element#cumulativeOffset uses Element._returnOffset.  Closes #9245.  [mdaines]
292
293 * Make sure Element#observe and Element#stopObserving are always chainable.  [sam]
294
295 * Event.fire/Element#fire now returns the newly-fired event instead of the event's target element.  [sam]
296
297 * Restrict Event.DOMEvents to include only events that can be supported in all browsers.  [sam]
298
299 * Fix a failing test in base.html in Safari 2.  [Tobie Langel]
300
301 * Fix Element#positionedOffset and Element#getOffsetParent for static elements on IE.  [Thomas Fuchs]
302
303 * Make sure event handlers and their wrappers are removed from the cache by Event.stopObserving.  [sam, Severin Heiniger]
304
305 * Add line numbers to failures when unit testing in Firefox.  Closes #9231.  [John Resig]
306
307 * Fix Function#argumentNames for Opera and IE.  [Thomas Fuchs]
308
309 * Add Object.isString, Object.isNumber, and Object.isUndefined, and clean up the source to make use of Object.isXXX where possible.  [sam]
310
311 * Add the document.viewport object for querying dimensions and scroll offsets of the browser viewport.  [Andrew Dupont, Thomas Fuchs, sam]
312   Example:
313     document.viewport.getDimensions()     // { width: 1149, height: 923 }
314     document.viewport.getWidth()          // 1149
315     document.viewport.getHeight()         // 923
316     document.viewport.getScrollOffsets()  // { left: 0, top: 1592 }
317
318 * Add support for brackets in quoted attribute value selectors.  Closes #9157.  [Ken Snyder]
319
320 * Add some missing semicolons to the source tree.  Closes #9140.  [jdalton]
321
322 * Fix event extensions and custom events firing for Safari 2.0.  [Thomas Fuchs]
323
324 * Add RegExp.escape for escaping regular expression strings.  Closes #9094.  [Ken Snyder]
325
326 * Make the eventName and handler arguments to Event.stopObserving optional.  If no handler is specified, all handlers for the given event are unregistered.  If no event name is specified, all observed events on the element are unregistered.  [sam]
327
328 * Add cross-support for the DOMContentLoaded event through a Prototype custom event on document called "contentloaded".  The DOMContentLoaded event fires before window.load, when the entire HTML document, but not necessarily its images, stylesheets or other assets, has loaded.  Based on [6596].  [sam, Mislav Marohnić]
329   Example:
330     document.observe("contentloaded", function() {
331       $$("a").invoke("identify"); // give all <a> tags an ID
332     });
333
334 * Add Event.fire and Element.Methods.fire for firing custom events.  Prototype custom events piggyback on a real DOM event ("ondataavailable"), so they bubble and cancel.  You can fire custom events from any element, or fire global events on the document object.  Observe custom events just as you'd observe a regular DOM event.  [sam, Seth Dillingham]
335
336 * Extend the event object with methods from Event.Methods and normalize it in IE.  [sam, Mislav Marohnić]
337
338 * Remove support for observing the capturing phase of DOM events, since we can't support it in all browsers.  [sam]
339
340 * Add Ajax.Response object which supports the following methods: responseJSON, headerJSON, getHeader, getAllHeaders and handles browser discrepancies in the other response methods. Add sanitizeJSON, evalJS and evalJSON to Ajax.Request. Closes #8122, #8006, #7295. [Tobie Langel]
341
342 * Add an isRunningFromRake property to unit tests. [Tobie Langel]
343
344 * Add support for Opera browser in jstest.rb. [Tobie Langel]
345
346 * Inheritance branch merged to trunk; robust inheritance support for Class.create. Closes #5459. [Dean Edwards, Alex Arnell, Andrew Dupont, Mislav Mahronic]
347  - To access a method's superclass method, add "$super" as the first argument. (The naming is significant.) Works like Function#wrap.
348  - Class.create now takes two optional arguments. The first is an existing class to subclass; the second is an object literal defining the instance properties/methods. Either can be omitted. Backwards-compatible with old Class.create.
349  - Added Class.extend for dynamically adding methods to existing classes (while preserving inheritance chain). Can also be used for mixins.
350  - The 'constructor' property of a class instance always points back to the proper class. Class objects themselves have two special properties: 'superclass' and 'subclasses' (which default to 'null' and '[]', respectively). Allows for powerful introspection.
351  - Added Object.isFunction [sam]
352  
353 * Add Function#argumentNames, which returns an ordered array of the function's named arguments.  [sam]
354
355 * Prevent a crash in Safari 1.3 on String#stripScripts and String#extractScripts. Closes #8332. [grant, Tobie Langel]
356
357 * Add Prototype.Browser.MobileSafari which evaluates to true on the iPhone's browser.  [sam]
358
359 * Optimize Selector#match and Element#match for simple selectors.  Closes #9082.  [Andrew Dupont]
360
361 * Remove the dependency on Element.ClassNames from Element#addClassName/removeClassName/toggleClassName, and deprecate Element.ClassNames. Closes #9073. [Tobie Langel]
362
363 * Make Element#wrap accept a second argument for setting attributes on the wrapper. Allow wrapping elements which are not part of the document. Closes #9071. [Tobie Langel]
364
365 * Improvements for Element#replace, Element#update and Element#insert.  Closes #7429, #9060.  [Tobie Langel]
366   - Element#replace/update/insert uses the argument's toElement or toHTML method if present (toElement has precedence if both are present).
367   - Element#replace and Element#update now also accept DOM elements.
368   - Element#replace better handles table-related elements in IE and Opera.
369  
370 * Add Object.isArray and Object.isElement (returns true if the object is a DOM node of type 1). [Tobie Langel]
371
372 * Add Object.toHTML (uses the object's toHTML method if present or else passes the object to String.interpret). [Tobie Langel]
373
374 * Make Element#setStyle accept a string argument of CSS rules. Deprecate uncamelized style property names when setting styles using an object (for performance reasons).  Closes #9059.  [Tobie Langel]
375   Examples:
376     $('id').setStyle('font-size: 12px; float: left; opacity: 0.5');
377     $('id').setStyle({fontSize: '12px', cssFloat: 'left', opacity: 0.5});
378
379   !! BACKWARDS COMPATIBILITY CHANGE !!
380  
381   If you have code that looks like this:
382     $('id').setStyle({'font-size': '12px'});
383   You need to replace it with either of the following:
384     $('id').setStyle({fontSize: '12px'});
385     $('id').setStyle('font-size: 12px;');
386
387 * Add Element#identify, which returns the element's ID if it exists, or sets and returns a unique, auto-generated ID (of the form "anonymous_element_" + auto-incremented digit) otherwise.  Use this when you need to ensure an element has an ID.  Closes #9012.  [Jeff Watkins, sam, Tobie Langel]
388
389 * Make Element#readAttribute work for cloned elements in IE. Closes #8481. [chem, Tobie Langel]
390
391 * Template enhancements.  Closes #8166.  [Christophe Porteneuve]
392   - Added String#interpolate as a shortcut for new Template(...).evaluate(...).
393   - If you pass String#interpolate or Template#evaluate an object with a toTemplateReplacements() method, the return value of that method will be used as the replacement object.
394   - You can now substitute properties of template replacement values in template strings, using dot or bracket notation (or both).  Example:
395     "#{name.last}, #{name.first[0]}. (#{location})".interpolate({
396       name: { first: "Christophe", last: "Porteneuve" }, location: "Paris"
397     }) // "Porteneuve, C. (Paris)"
398
399 * Extended grep semantics.  The first argument to Enumerable#grep is now a "filter" (an object with a match() method) so you can now e.g. filter an array of DOM nodes by CSS selector.  RegExp#match is now an alias to RegExp#test, so grep can still be used to filter an array of strings with a regular expression.  Closes #7596.  [Christophe Porteneuve, sam]
400
401 * Make String#scan explicitly return a string. This prevents possible issues with methods expecting input data that is typeof == 'string'. Closes #6350. [AndrewRev, Tobie Langel]
402
403 * Add Array#intersect for set intersection. Returns a new array containing all items common to the array and the argument, with duplicates removed (clone of the Ruby & method).   [Thomas Fuchs]
404   Example:
405     [1,1,3,5].intersect([1,2,3]) -> [1,3]
406
407 * Rename Element#getElementsBySelector to Element#select and add alias for Element#getElementsBySelector.  [Thomas Fuchs]
408
409 * Add Element#adjacent as a shortcut to selecting all adjacent nodes (and their children) that match a CSS selector.  [Thomas Fuchs]
410
411 * Enhance the Enumerable and Array APIs to more closely match those of JavaScript 1.6 as implemented in Firefox 1.5.  Closes #6650, #8409.  [Mislav Marohnić, Sylvain Zimmer]
412   - Add Array#lastIndexOf, and change Array#indexOf not to overwrite the native method.
413   - Make Enumerable use Array.prototype.forEach instead of _each when possible (slight speed increase).
414   - Add "filter", "entries", "every", and "some" Array aliases.
415   - All Enumerable methods now have an additional parameter, "context", which, if present, specifies the object to which the iterators' "this" is bound.
416   - Function#bind and #curry now return the receiving function if the binding object is undefined.
417
418 * Temporary workaround for Prototype.BrowserFeatures.SpecificElementExtensions incorrectly evaluating to true on iPhone. (needs further investigation)  [sam]
419
420 * The action for Form#request defaults to the current URL if the "action" attribute is empty. (This is what most of the major browsers do.) Fixes #8483. [Tomas, Mislav Marohnić]
421
422 * In form serialization, change the way submit buttons are handled. Previously all submit buttons were serialized; now Prototype serializes only the first one. Change Form#serialize and Form.serializeElements to accept a params hash. With the "hash: false" option, a serialized string is returned instead of the hash data object. With the "submit: 'foo'" option, only the submit button with the name "foo" is serialized.  References #5031.  [Mislav Marohnić]
423   Examples:
424     $('form').serialize({ submit: 'delete' })
425     $('form').serialize({ hash: false }) //-> equivalent to $('form').serialize()
426
427 * Form#findFirstElement respects HTML tabindexes.  Closes #7595.  [Christophe Porteneuve]
428
429 * Added Form.Element#setValue method for setting values on various form controls. Checkboxes and radio buttons respond to a boolean and multiple select boxes expect an array of values.  Closes #5902.  [Jonathan Viney, Mislav Marohnić]
430   Examples:
431     $('text_input').setValue('hello world!')
432     $('remember_me').setValue(true)
433     $('attend_classes').setValue(['cheese rolling', 'evil chemistry'])
434
435 * Make document.getElementsByClassName match a subset of the WHATWG Web Applications 1.0 specification which was adopted in Firefox 3 (http://www.whatwg.org/specs/web-apps/current-work/#getelementsbyclassname). It now supports multiple class names given as a whitespace-separated list in a string. Array argument is not supported. The method will only return the nodes that match all the class names. In browsers that implement the method natively it will not be overwritten.  Closes #8401.  [Mislav Marohnić]
436   Example:
437     document.getElementsByClassName('foo bar')
438
439 * Fix a Safari rendering issue when floating elements could temporarily disappear when opacity was set to 1.  Closes #7063.  References #3044, #3813, #6706.  [Thomas Fuchs, davidjrice]
440
441 * Prevent a crash in Safari when calling String#evalJSON(true) on very large strings. Add String#isJSON.  Closes #7834.  [Tobie Langel]
442
443 * Prevent a crash in Safari 1.3 on String#stripScripts and String#extractScripts.  Closes #8332.  [grant, Tobie Langel]
444
445 * Allow JSON data to contain line breaks.  Closes #8271.  [pijyster, Tobie Langel]
446
447 * Add Hash.prototype.index which returns the first found property that has a specific value.  Closes #8528.  [Thomas Fuchs, slusarz, Mislav Marohnić]
448   Examples:
449     var hash = $H({a:1,b:'2'});
450     hash.index(1)   // -> 'a'
451     hash.index('1') // -> undefined
452
453 * Ensure HTMLElement exists before creating Element.extend.  [Tobie Langel]
454
455 * Add Number.prototype.round/ceil/floor/abs as an aliases to the respective methods in Math. Refactor to seperate number extensions from base.js.  [Thomas Fuchs]
456
457 * Make Element#absolutize and Element#relativize properly use Element#getStyle.  Closes #8580.  [Christophe Porteneuve]
458
459 * Test library fixes: make rake dist work on Windows, only teardown if a browser is supported.  Closes #8463, #8498.  [Mislav Marohnić, grant]
460
461 * Change Element.insert syntax to allow multiple positions.  [Thomas Fuchs]
462   Examples:
463     Element.insert('foo', {top:'bar', bottom:'baz'});
464     $('foo').insert({after: new Element('p').update('bar')});
465     Element.insert('foo', new Element('p').update('bar')); // defaults to bottom
466     Element.insert('foo', 'bar'); // defaults to bottom
467
468 * String.prototype.truncate now explicitly converts its return value into a string if no truncation takes place. This prevents possible issues with methods expecting input data that is typeof == 'string'.  [Thomas Fuchs, Tobie Langel, Sam Stephenson]
469
470 * Event.findElement behaves as expected when the element passed matches the given selector.  Closes #8395.  [Mislav Marohnić, Tobie Langel]
471
472 * Element.setOpacity now calls removeAttribute on the filter style on IE if no more filters remain, which makes Cleartype work properly.  Closes #8376.  [alexdemi, Thomas Fuchs]
473
474 * Event.findElement now uses Element#up (and as a result can take a CSS selector instead of just a tag name).  [Tobie Langel]
475
476 * Minor cleanup of the position methods  [sam]
477
478 * Fix Element#clonePosition to call viewportOffset.  Closes #8372.  [graemenelson, Christophe Porteneuve]
479
480 * Prevent an error being thrown by $$ when #id does not exist in $$("div #id").  Closes #8325.  [Tobie Langel, ecke]
481
482 * Make Prototype.ScriptFragment behave when including Prototype inline.  [Christophe Porteneuve]
483
484 * Deprecate Position (kept for backwards compatibility). Add Element#cumulativeOffset, Element#positionedOffset, Element#absolutize, Element#relativize, Element#cumulativeScrollOffset, Element#getOffsetParent, Element#viewportOffset and Element#clonePosition. [Christophe Porteneuve]
485
486 * Make Element#update and Element#insert work for SELECT tags in IE and Opera. [Tobie Langel]
487
488 * Make Element#insert and Element#update better handle TABLE related elements in IE and Opera. Closes #7776, #8040, #7550, #7776, #7938. [Tobie Langel]
489
490 * Make Element#readAttribute('title') work in Opera. [Tobie Langel]
491
492 * Make Element#replace work with form elements in Firefox and Safari. Closes #8010, #7989. [dsl239, Tobie Langel]
493
494 * Add Element#wrap which wraps the element inside a new one. Closes #5732. [P. Vande, Tobie Langel]
495
496 * Make Element into a constructor: new Element(tagName, attributes). Add Element#writeAttribute which accepts a hash of attributes or a name/value pair. Closes #7476. [Mislav Marohnić, haraldmartin, Tobie Langel]
497
498 * Insertion overhaul: Add Element.insert(content[, position = 'bottom']). Deprecate Insertion (kept for backwards compatibility). Make Ajax.Updater option.insertion accept both Insertion.Top or the now preferred 'top'. Closes #7907. [Tobie Langel]
499
500 * Refactor Element.extend and eliminate Element.extend.cache.  [sam]
501
502 * Add Function#curry, Function#delay, Function#defer, and Function#wrap.  Closes #8134.  [Andrew Dupont, Tobie Langel, sam]
503
504 *1.5.1* (May 1, 2007)
505
506 * Don't duplicate the event argument in Function#bindAsEventListener.  Closes #6497.  [wiktor]
507
508 * Fix Selector :not-clause chaining.  [Andrew Dupont]
509
510 *1.5.1_rc4* (April 27, 2007)
511
512 * Fix $F breakage from [6598].  [sam]
513
514 * Set window.$continue to an Error with a helpful message for anyone who may still be using "throw $continue".  [sam]
515
516 * Fix jstest.rb IE support so you don't have to close the IE window after each test (yay!).  Closes #8207.  [Ryan Schuft]
517
518 * Fix jstest.rb Konqueror support.  Closes #7140.  [Christophe Porteneuve]
519
520 * Fix regression in which no-argument calls to Element.addMethods() would not add the methods defined in Form.Methods and Form.Element.Methods.  Closes #8206.  [Tobie Langel, fwittekind]
521
522 * Fix Element#readAttribute to work with the 'type' attribute in IE.  Closes #8160.  [Tobie Langel, Wiktor Ihárosi]
523
524 *1.5.1_rc3* (April 24, 2007)
525
526 * Add Element#childElements as an alias for Element#immediateDescendants.  [Tobie Langel]
527
528 * Optimize DOM navigation methods (Element#up, Element#down, Element#previous, Element#next) for no-argument calls.  Closes #7848.  [haraldmartin, sam]
529
530 * Add Element#firstDescendant to retrieve the first non-text child node of an element.  [sam]
531
532 * Element.addMethods should add methods to Element as well as Element.Methods.  Closes #7888.  [Andrew Dupont]
533
534 * Add support for per-request onCreate callbacks to Ajax.Request.  Closes #8011.  [Andrew Dupont]
535
536 * Don't call evalResponse() when an Ajax response has no Content-type header.  Closes #7827.  [Tobie Langel]
537
538 * Automatically strip security delimiter comments from JSON strings before evaling them.  The default delimiter is '/*-secure- ... */' or you can specify your own with the Prototype.JSONFilter regular expression.  If you wrap your JSON response bodies in this delimiter on the server side, rogue external sites can't hijack potentially sensitive data via <script> tags.  Closes #7910.  [Tobie Langel]
539   For more details on potential security problems, see: http://www.fortifysoftware.com/servlet/downloads/public/JavaScript_Hijacking.pdf
540
541 * Add extra spacing so Array#toJSON and Hash#toJSON generate YAML-loadable JSON.  Closes #7883.  [Andrew Dupont]
542
543 * Fix Form.request for forms containing an input element with name="action".  Closes #8063.  [Thomas Fuchs, Mislav Marohnić]
544
545 * Make Event.element extend the returned element.  Closes #7870.  [Thomas Fuchs]
546
547 * Prevent a crash on Safari on String.prototype.stripScripts and extractScripts with large <script> tags.  [Thomas Fuchs]
548
549 * Prevent linefeed normalisation in String.prototype.escapeHTML and unescapeHTML on IE for consistency with other browsers. Speed optimizations for Safari and IE.  [Thomas Fuchs]
550
551 * Make Hash.toQueryString serialize undefined values. Ensure consistency with String.prototype.toQueryParams.  Closes #7806.  [Mislav Marohnić]
552   Examples:
553     $H({a:'b',c:undefined}).toQueryString()      -> 'a=b&c'
554     $H({a:'b',c:null}).toQueryString()           -> 'a=b&c='
555     $H('a=b&c'.toQueryParams()).toQueryString()  -> 'a=b&c'
556     $H('a=b&c='.toQueryParams()).toQueryString() -> 'a=b&c='
557    
558 * Fix issues with Selector an+b logic, :not support, attribute selector double quotes, plus performance improvements.  Closes #7873, #7901.  [Andrew Dupont]
559
560 * Fix Form.disable to work again on non-form elements.  Closes #6887.  [Mislav Marohnić]
561
562 * Fix an issue with String.prototype.endsWith.  Closes #7822.  [altblue]
563
564 *1.5.1_rc2* (March 12, 2007)
565
566 * Add a tab character via innerHTML to the selector whitespace test.  [Christophe Porteneuve]
567
568 * Add an attribution to YUI-Ext's DomQuery in selector.js.
569
570 * Make Element.extend work on IE for Nodes with the same ID that where discarded.  Closes #7497.  [Mislav Marohnić, Thomas Fuchs]
571
572 * Make Selector correctly extend the first element it returns on IE.  [Thomas Fuchs]
573
574 * Prevent a crash in Safari when using $A() on NodeList objects that contain text nodes.  [Thomas Fuchs]
575
576 * Fix Element.Methods.descendants() to properly extend elements on IE.  [Thomas Fuchs]
577
578 *1.5.1_rc1* (March 9, 2007)
579
580 * Fix readAttribute for IE7. [Andrew Dupont]
581
582 *1.5.1_rc0* (March 8, 2007)
583
584 * Merge the selector branch into trunk, bringing vast performance improvements, bug fixes, and near-complete CSS3 compliance to $$ and Selector.  Closes #7568.  [Andrew Dupont]
585   Selector speed test: http://andrewdupont.net/test/double-dollar/
586
587 * Add support for JSON encoding and decoding.  Closes #7427.  [Tobie Langel]
588
589 * Fix double escaping of query parameters in Hash.prototype.toQueryString, and prevent Safari from iterating over shadowed properties when creating hashes.  Closes #7421.  [Tobie Langel, Mislav Marohnić]
590
591 * Fix simulated attribute reading for IE for "href", "src" and boolean attributes.  [Mislav Marohnić, Thomas Fuchs]
592
593 * Form.Element.disable() will now call blur(), removed blur() call from Form.Element.enable().  Closes #6034.  [tdd]
594
595 * Optimize document.getElementsByClassName and finalize DOM performance optimization refactoring.  Closes #6696.  [Mislav Marohnić]
596
597 * Fix an issue with serializing empty array inputs.  Closes #7516.  [stakadush, Mislav Marohnić]
598
599 * Add optional third parameter "camelized" to Element.setStyle, for optimized performance if style names are known to be camelCased.  [Thomas Fuchs]
600
601 * Fix a bug in the simulated hasAttribute for IE due to getAttributeNode sometimes returning null.  [sam]
602
603 * Optimize Element.getStyle and add new Element.getOpacity method. Special case IE and Opera getStyle methods.  Closes #7648.  [Tobie Langel, Thomas Fuchs]
604
605 * Optimize Element.setStyle and add new Element.setOpacity method, special case IE and Gecko opacity methods.  Closes #7585.  [savetheclocktower]
606
607 * Add unified Browser detection by providing Prototype.Browser.(IE|Gecko|WebKit|Opera) booleans.  Closes #6800.  [savetheclocktower]
608
609 * Add String.prototype.empty and String.prototype.blank (tests if empty or whitespace-only).  Closes #7016.  [Jonathan Viney, Thomas Fuchs]
610
611 * Update README to reflect new URLs, update LICENSE copyright years.  Closes #7426.  [Tobie Langel]
612
613 * Array.prototype.uniq optimization.  Closes #7417.  [Christophe Porteneuve]
614
615 * String.prototype.endsWith should not fail on multiple occurrences.  Closes #7416.  [Christophe Porteneuve]
616
617 * Add Form.Methods.request as a convenience method for serializing and submitting a form via Ajax.Request to the URL in the form's action attribute.  [sam]
618
619   Options passed to request() are intelligently merged with the underlying Ajax.Request options:
620   - If the form has a method attribute, its value is used for the Ajax.Request method option.  If a method option is passed to request(), it takes precedence over the form's method attribute.  If neither is specified, method defaults to "post".
621   - Key/value pairs specified in the parameters option (either as a query string or as a hash) will be merged with (and take precedence over) the serialized form parameters.
622
623 * Fix $(form).serialize() in Safari and add support for extending specific tags to Element.addMethods.  Closes #7358.  [Andrew Dupont]
624
625 * Add String.prototype.startsWith, String.prototype.endsWith, and String.prototype.include.  Closes #7075.  [Tobie Langel]
626
627 * Improve performance of String.prototype.escapeHTML by using a cached div and text node.  Closes #6937.  [altblue]
628
629 * Make setStyle() with opacity: 0 in Internet Explorer work correctly.  [Thomas Fuchs]
630
631 * Form.Element.activate shouldn't raise an exception when the form or field is hidden.  [sam]
632
633 * Remove support for "throw $continue" in Enumerable.  Use "return" instead.  [sam]
634
635 * Update HEADER to reflect new URL.  [sam]
636
637 *1.5.0* (January 18, 2007)
638
639 * Add test to ensure Content-type header is set for simulated verbs.  [sam]
640
641 * Fix Content-Type header for HTTP methods simulated with POST not defaulting to application/x-www-form-urlencoded.  [Thomas Fuchs]
642
643 * Simplify form serialization and add support for fields with the same name as Hash methods.  Closes #6649.  [Mislav Marohnić]
644
645 * Fix attribute selectors for IE.  Closes #5170.  [Tobie Langel, Andrew Dupont]
646
647 * A slew of dom.js improvements.  Closes #4217, #6589, #7001.  [Tobie]
648   - Fix Element.getDimensions() for hidden elements, make Element.getHeight() use .getDimensions()
649   - Add Element.getWidth()
650   - Make Element.replace() call .toString() on the html argument (alike .update())
651   - Fix an issue with Element.get/setStyle() and Safari with 'float'
652   - Add a bunch of missing unit tests
653
654 * Fix an issue with Element.setStyle({opacity:''}) setting the opacity to 0 instead of removing the set inline opacity style.  [Thomas Fuchs]
655
656 * Ensure Ajax.Request's evalResponse is called before onComplete so that onComplete can reference any elements created during the response.  Closes #6727.  [jonathan]
657
658 * Ensure the WEBrick test runner sets the correct Content-Type for tests and fixtures. [sam]
659
660 * Form.serialize once again works with non-form elements.  This is a temporary change to prevent the Rails link_to_remote regression described in #6898.  Prototype 1.5.1 will introduce an API for working with collections of arbitrary form elements.  References #6887.  Closes #6898.  [sam]
661
662 * Make selectors match forms that have an element with name="id" correctly, fixes #5759 [mislav]
663
664 * Remove support for HTTP authorization in Ajax calls introduced with #6366.  Closes #6638 [jmecham]
665
666 * Add Enumerable.size() to count elements in an enumerable and the corresponding Array.size() method, fixes #6710 [ZenCocoon]
667
668 * Add String.succ() method to allow for String ranges, fixes #6037 [Cory Hudson, mislav]
669   Examples:
670     'abcd'.succ();                                   -> 'abce'
671     $R('a','d').map(function(char){ return char; }); -> ['a','b','c','d']
672
673 * Make Element.scrollTo() correctly consider offsets of parent DOM nodes, fixes #6625 [ohader, savetheclocktower]
674
675 * Fix Enumerable.inGroupsOf() to correctly work with fill values that evaluate to false, fixes #6782 [hawk]
676
677 * Remove/cleanup redundant $() calls in dom.js, fixes #6817 [Tobie]
678
679 * Don't cache files in automatic unit tests, fixes #6218 [voidlock]
680
681 * Add $w() to easily create arrays from strings like Ruby's %w, fixes #5682 [glazedginger, brendon.aaron]
682
683 * Add Element.toggleClassName() to toggle CSS classes on elements, fixes #6759 [Tobie]
684
685 * Make Form.getInputs always return an array for consistency, fixes #6475 [Justin Gehtland, savetheclocktower]
686
687 * Make TimedObserver work correctly for SELECT MULTIPLE elements, fixes #6593 [clemos, tdd]
688
689 * Fix Template.prototype.evaluate to correctly interpret 0 and false values, add String.interpret() for safely interpreting and converting values to strings, fixes #6675 [hawk]
690
691 * Make Element.getStyle() work with camelCased argument, fixes #6686 [Tobie]
692
693 * Fix a redundant check in Array.prototype.compact, fixes #4739 [wlodarcz, mislav]
694
695 * Fix $() to correctly pass back the results of document.getElementById(), notably returning "null" on elements not found, fixes #6582 [adsmart]
696
697 * Change/add assertNull, assertUndefined, assertNullOrUndefined and not-* variants in unittest.js, fixes #6582 [adsmart]
698
699 * Cleanup String.prototype.camelize, fix an issue with String.prototype.underscore, fixes #4714, #6685 [Tobie, Thomas Fuchs]
700
701 * Add String.prototype.capitalize, which returns a string with the first character in upper case, fixes #6666 [Tobie]
702
703 * Make Element.getStyle() and Element.setStyle() handle the CSS 'opacity' property transparently in IE, fixes #6093 [brandon.aaron, Tobie]
704
705 * Fix handling of CSS 'float' property for Element.getStyle() and Element.setStyle(), fixes #4160 [Thomas Fuchs, ericf]
706
707 * Fix that onComplete would be called twice with synchronous Ajax requests on Safari (provides units tests for #5756) [Thomas Fuchs]
708
709 * Fix Form.Field.activate to not select text on buttons in IE, fixes #2653 [sutch, mislav, Thomas Fuchs]
710
711 * Fix String.unescapeHTML() on Firefox for strings that are longer than 2048 bytes, fixes #5789 [Paul Moers, Thomas Fuchs]
712
713 * Redefine Array.prototype.concat for Opera, as the native implemenation doesn't work correctly [Thomas Fuchs]
714
715 * Add unit tests for Function.prototype.bind() [Thomas Fuchs]
716
717 * Add String.prototype.underscore and String.prototype.dasherize [Thomas Fuchs]
718   Examples:
719     'Hello_World'.dasherize()                    -> 'Hello-World'
720     'borderBottomWidth'.underscore()             -> 'border_bottom_width'
721     'borderBottomWidth'.underscore().dasherize() -> 'border-bottom-width'
722
723 *1.5.0_rc2* (November 11, 2006)
724
725 * Ensure that existing DOM properties take precedence over extended element methods in all browsers.  Closes #5115.  [Sean Kleinjung, sam]
726
727 * Add Element.Methods.readAttribute as a simple wrapper around getAttribute (which isn't a "real" function and doesn't have .apply or .call in Safari and IE).  Useful in conjunction with Enumerable.invoke for extracting the values of a custom attribute from a collection of elements.  [sam]
728   Example:
729     <div id="widgets">
730       <div class="widget" widget_id="7">...</div>
731       <div class="widget" widget_id="8">...</div>
732       <div class="widget" widget_id="9">...</div>
733     </div>
734    
735     $$('div.widget').invoke('readAttribute', 'widget_id')
736     // ["7", "8", "9"]
737
738 * Add Element.Methods.immediateDescendants, like $A($(element).childNodes) but without text nodes.  [sam]
739
740 * More consistency.  Closes #6573.  [Bob Silva]
741
742 * String.prototype.toQueryParams and Hash.prototype.toQueryString now properly serialize arrays as multiple values.  Closes #4436.  [mislav, altblue, L`OcuS]
743
744 * Fix Form.serialize for options with empty values.  Closes #5033. [tdd, Thomas Fuchs, sam]
745
746 * Add Element.Methods.Simulated for simulating HTMLElement methods in lesser browsers.  Add hasAttribute as the first simulated method.  [tdd, Thomas Fuchs, sam]
747
748 * Add a "retry with throw" button for test error messages. [sam]
749
750 * rake test now runs test/unit/*.html by default.  Additionally, you can specify individual tests to run with the TESTS environment variable, and you can restrict the tests to particular browsers using the BROWSERS environment variable. [sam]
751
752   Examples:
753     % BROWSERS=safari,firefox rake test
754     % TESTS=dom rake test
755
756 * Element.hasClassName now bypasses the Element.ClassNames API for performance.  [sam]
757
758 * Pick some low-hanging performance and DRYness fruit.  [sam]
759   - Inline length property accesses in for loops
760   - Enumerable-ize for loops where it makes sense
761   - Make better use of Element.Methods and Form.Methods/Form.Element.Methods
762
763 * A slew of Ajax improvements.  Closes #6366.  [mislav, sam]
764  
765   Public-facing changes include:
766   - HTTP method can be specified in either lowercase or uppercase, and uppercase is always used when opening the XHR connection
767   - Added 'encoding' option (for POST) with a default of 'UTF-8'
768   - Ajax.Request now recognizes all the JavaScript MIME types we're aware of
769   - PUT body support with the 'postBody' option
770   - HTTP authentication support with the 'username' and 'password' options
771   - Query parameters can be passed as a string or as a hash
772   - Fixed both String.toQueryParams and Hash.toQueryString when handling empty values
773   - Request headers can now be specified as a hash with the 'requestHeaders' option
774
775 * Improve performance of the common case where $ is called with a single argument. Closes #6347. [sam, rvermillion, mislav]
776
777 * Fix Object.inspect to correctly distinguish between null and undefined, fixes #5941 [tdd, mislav]
778
779 * Don't serialize disabled form elements, fixes #4586 [tdd]
780
781 * Make HTML element classes extension mechanism for Safari not throw errors on WebKit beta versions [Thomas Fuchs]
782
783 * Add support for using Element.update() with no or a non-string parameter [Thomas Fuchs]
784
785   Example:
786     $('empty_me').update()          -> clears the element
787     $('easy_as').update(123)        -> set element content to '123'
788
789 * Add unit tests for hashes, fixes #6344 [Tobie Langel]
790
791 * Add clone() method to arrays, fixes #6338 [Tobie Langel]
792
793 * Backing out of [5194] (Element.clear) because of issues with IE on certain elements, #6051
794
795 * Add Element.clear for easily emptying out elements, fixes #6051 [brandon.aaron@gmail.com]
796
797 * Enumerable.each now returns the enumerable to allow for method chaining, fixes #6250 [eventualbuddha]
798
799 * Make makeClipping and undoClipping always return their element to stay chainable
800
801 * Fix an issue with certain Element chain calls not correctly extending elements with Prototype element methods on IE [Thomas Fuchs]
802
803 * Add Enumerable.eachSlice and Enumerable.inGroupsOf, fixes #6046 [rails@tddsworld.com, Thomas Fuchs]
804
805   Example:
806     [1,2,3,4,5].inGroupsOf(3)       -> [[1,2,3],[4,5,null]]
807     [1,2,3].inGroupsOf(4,'x')       -> [[1,2,3,'x']]
808
809 * Complete unit tests for array.js and string.js [Thomas Fuchs]
810
811 * Performance improvements for document.getElementsByClassName, including querying with XPath in supported browsers. [Andrew Dupont]
812
813 * Make Form.getElements() return elements in the correct order, fix broken Form.serialize return, fixes #4249, #6172 [lars@pinds.com, Thomas Fuchs, john]
814
815 * Add various DOM unit tests, fixes #6176, #6177 [tdd]
816
817 * Split Form.serialize into Form.serialize and Form.serializeElements. The latter can be used stand-alone to serialize an array of elements you pass in, instead of the entire form [DHH]
818
819 * Form.Element.disable() and .enable() will now work correctly, fixes #6034 [dresselm@businesslogic.com]
820
821 * Fix IE and Safari issues with Position.positionedOffset, add position.html unit tests, fixes #5621 [renggli@iam.unibe.ch]
822
823 * Fix an issue with Element.undoClipping and IE [Thomas Fuchs]
824
825 * Element.cleanWhitespace now correctly removes consecutive empty text nodes, fixes #3209 [livier.duroselle@gmail.com]
826
827 * Element.extend now does not try to extend text nodes, fixes #4642 [siegfried.puchbauer@gmail.com]
828
829 *1.5.0_rc1* (September 4, 2006)
830
831 * bindAsEventListener now passes along any provided arguments after the event argument.  Closes #5508.  [todd.fisher@revolution.com]
832
833 * Fix makeClipping and undoClipping with local overflow style values other than visible and hidden, fixes #3672  [Thomas Fuchs]
834
835 * Add Element.up, Element.down, Element.previous, and Element.next for easily traversing the DOM.  (Inspired by Thomas Fuchs' original implementation of Element.up: http://pastie.caboo.se/7702) [sam]
836
837   Examples:
838     <div id="sidebar">                  -> $('nav').up() or $('menu').up('div')
839       <ul id="nav">                     -> $('sidebar').down()  or $('sidebar').down('ul') or $('menu').previous()
840         <li>...</li>                    -> $('sidebar').down(1) or $('sidebar').down('li')
841         <li>...</li>                    -> $('sidebar').down(2) or $('sidebar').down('li', 2) or $('sidebar').down('li').next('li')
842         <li class="selected">...</li>   -> $('sidebar').down('li.selected')
843       </ul>                             
844       <ul id="menu">                    -> $('sidebar').down('ul').next()
845         ...
846
847 * Refactor $$ and Element.getElementsBySelector into Selector.findChildElements. [sam]
848
849 * Add Element.match, which takes a single CSS selector expression and returns true if it matches the element. [sam]
850
851 * Add Element.ancestors, Element.descendants, Element.previousSiblings, Element.nextSiblings, and Element.siblings. [sam]
852
853 * Add Element.inspect for better DOM debugging. [sam]
854
855 * Add an optional boolean argument to String.prototype.inspect which, when true, makes the string double-quoted instead of single-quoted. [sam]
856
857 * Add the uniq() method to Arrays, which returns a new Array with duplicates removed, fixes #3810 [secondlife]
858
859 * Add stop() method to PeriodicalExecutor, fixes #4801 [Jon Evans]
860
861 * Fix issues with Enumerable.any, ObjectRange.toArray, added unit tests, fixes #4419 [miyamuko, Thomas Fuchs]
862
863 * Fix two instances of unneccesarily redeclared variables, fixes #5229 [Thomas Fuchs]
864
865 * Fix a loop in Element.extend to properly use local variable, fixes #5128 [arrix]
866
867 * Add constants for additional keys in Event, fixes #5411, #5795 [simone_b]
868
869 * Workaround a DOM API bug in Opera in Position.page(), fixes #2407, #5848 [Thomas Fuchs]
870
871 * Remove duplicate definition of Position.clone(), fixes #3765 [Thomas Fuchs]
872
873 * Make destructive Element, Form, and Form.Element methods return their first argument, so that multiple calls can be chained together. [sam]
874
875   ex. $("sidebar").addClassName("selected").show();
876
877   The following methods now return their first argument: Element.toggle, Element.hide, Element.show, Element.remove, Element.update, Element.replace, Element.addClassName, Element.removeClassName, Element.observe, Element.stopObserving, Element.cleanWhitespace, Element.scrollTo, Element.setStyle, Element.makePositioned, Element.undoPositioned, Element.makeClipping, Element.undoClipping, Form.reset, Form.disable, Form.enable, Form.focusFirstElement, Form.Element.focus, Form.Element.select, Form.Element.clear, Form.Element.activate, Form.Element.disable, Form.Element.enable.
878
879 * For consistency, Element.toggle, Element.show, Element.hide, Field.clear, and Field.present no longer take an arbitrary number of arguments. [sam]
880  
881   !! BACKWARDS COMPATIBILITY CHANGE !!
882  
883   If you have code that looks like this:
884     Element.show('page', 'sidebar', 'content');
885   You need to replace it with code like this:
886     ['page', 'sidebar', 'content'].each(Element.show);
887
888 * Mix in Form and Form.Element methods to forms and form field elements with $() and $$(). Closes #4448. [Dan Webb, sam]
889
890 * Add Object.clone [sam]
891
892 * Add Form.Element.disable and Form.Element.enable. Closes #4943. [jan@prima.de]
893
894 * Field is now simply an alias for Form.Element. [sam]
895
896 * Add Element.Methods.getElementsByClassName and Element.Methods.getElementsBySelector. Closes #4669. [Andrew Dupont, DHH, sam]
897
898 * Avoid race condition when stopping an Ajax.PeriodicalUpdater. Closes #4809. [e98cuenc@gmail.com]
899
900 * Improve support for synchronous requests. Closes #5916. [sam, jthrom@gmail.com]
901
902 * Add serialization and observation support for input type=search. Closes #4096. [rpnielsen@gmail.com]
903
904 * Properly decode query components in String.prototype.toQueryParams. Closes #3487. [sam]
905
906 * Add Array.prototype.reduce [sam]:
907   [1, 2].reduce()   // [1, 2]
908   [1].reduce()      // 1
909   [].reduce()       // undefined
910
911 * Add Object.keys and Object.values [sam]
912
913 * Simulate non-GET/POST requests by POSTing with a _method parameter set to the actual verb [DHH]
914
915 * Make Element.update() handle TABLE-related elements with the DOM API because of IE's missing .innerHTML property on them [Thomas Fuchs, thx to Rick Olson]
916
917 * Sync to script.aculo.us unittest.js library as of 2006/08/29 [Thomas Fuchs]
918
919 * Add additional unit tests to test/unit/dom.html for testing Element.update and $().update in various enviroments [Thomas Fuchs]
920
921 * Prevent possible exceptions on unloading the page in IE [Thomas Fuchs]
922
923 *1.5.0_rc0* (April 5, 2006)
924
925 * Modify HTMLElement.prototype and short-circuit Element.extend where possible. Closes #4477. [Thomas Fuchs]
926
927 * Only observe window.onunload in IE for Mozilla bfcache support. Closes #3726. [Mike A. Owens]
928
929 * Don't redefine Array.prototype.shift. Closes #4138. [leeo]
930
931 * Prevent redefining Array.prototype.reverse more than once. Closes #3951. [brettdgibson@gmail.com]
932
933 * Fix Enumerable.min/Enumerable.max to recognize the value 0. Closes #3847, #4190. [rubyonrails@brainsick.com, Martin Bialasinski]
934
935 * Change Ajax.getTransport to prefer XMLHttpRequest in anticipation of IE 7. Closes #3688. [jschrab@malicstower.org, sam]
936
937 * Make Array.prototype.flatten more robust. Closes #3453. [Martin Bialasinski, sam]
938
939 * Fix evalScripts from crashing Firefox if script includes 'var'. Closes #3288, #4165. [rahul@ntag.com, sam]
940
941 * Scope iterators locally. Closes #4589. [sam]
942
943 * Support Insertion.Before/Insertion.After for <tr> elements in IE. Closes #3925. [rails-venkatp@sneakemail.com]
944
945 * Add a contentType option for overriding application/x-www-form-urlencoded in Ajax.Request. Closes #3564. [avif@arc90.com, sam]
946
947 * Surround values in the X-JSON header in parenthesis for better compatibility with Firefox. Closes #4118. [bigsmoke@gmail.com]
948
949 * Fix Form.serialize to properly encode option values in multiple selects in IE. Closes #3291. [rubyonrails@brainsick.com]
950
951 * Cache methods added to DOM elements with Element.extend to prevent memory leaks in IE. Closes #4465. [jaen@laborint.com, sam]
952
953 * 1.5.0_pre1* (March 26, 2006)
954
955 * Add attribute selector support for Selector (and $$). Closes #4368. [devslashnull@gmail.com]
956   Example:
957     $$('form#foo input[type=text]').each(function(input) {
958       input.setStyle({color: 'red'});
959     });
960  
961 * Send Accept header containing 'text/javascript, text/html, application/xml, text/xml */*'' to inform Rails that we prefer RJS, but we'll take HTML or XML or whatever if you can't deliver the goods [DHH]
962
963 * Make $$ work in IE. Closes #3715. [rubyonrails@brainsick.com]
964
965 * Add test/browser.html, which provides a simple object browser for the Prototype source (Firefox/Safari only). [sam]
966
967 * Add Element.extend, which mixes Element methods into a single HTML element.  This means you can now write $('foo').show() instead of Element.show('foo').  $, $$ and document.getElementsByClassName automatically call Element.extend on any returned elements. [sam]
968
969 * Add Element.replace as a cross-browser implementation of the "outerHTML" property. References #3246. [tom@craz8.com]
970
971 * Fix Enumerable.zip iterator behavior. [Marcin Kaszynski, sam]
972
973 *1.5.0_pre0* (January 18, 2006)
974
975 * Add String.prototype.truncate to complement the Action View truncate helper. [sam]
976
977 * Add String.prototype.gsub, String.prototype.sub, and String.prototype.scan, all of which take a pattern and an iterator (or a pattern and a replacement template string in the case of gsub and sub). [sam]
978
979 * Add a Template class for interpolating named keys from an object in a string. [sam]
980
981 * Add the $$ function for finding DOM elements by simple CSS selector strings. [sam]
982   Example: Find all <img> elements inside <p> elements with class "summary", all inside
983            the <div> with id "page". Hide each matched <img> tag.
984              $$('div#page p.summary img').each(Element.hide)
985      
986 * Add a Selector class for matching elements by single CSS selector tokens. [sam]
987
988 * Add Test.Unit.Assertions.assertEnumEqual for comparing Enumerables in tests. [sam]
989
990 * Add Element.childOf(element, ancestor) which returns true when element is a child of ancestor. [sam]
991
992 * Fix escaping in String.prototype.inspect. [sam]
993
994 * Add String.prototype.strip to remove leading and trailing whitespace from a string. [sam]
995
996 * Move Prototype to Rails SVN. [sam]
997   http://dev.rubyonrails.org/svn/rails/spinoffs/prototype/
998  
999 * Make the console nicer. [sam]
1000
1001 * Prune the source tree. [sam]
Note: See TracBrowser for help on using the browser.