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

root/tags/rel_1-1-6/actionpack/CHANGELOG

Revision 4746, 125.4 kB (checked in by david, 2 years ago)

Prepare for release of 1.1.6

Line 
1 *1.12.5* (August 10th, 2006)
2
3 * Updated security fix
4
5
6 *1.12.4* (August 8th, 2006)
7
8 * Documentation fix: integration test scripts don't require integration_test.  #4914 [Frederick Ros <sl33p3r@free.fr>]
9
10 * ActionController::Base Summary documentation rewrite.  #4900 [kevin.clark@gmail.com]
11
12 * Fix text_helper.rb documentation rendering.  #4725 [Frederick Ros]
13
14 * Fixes bad rendering of JavaScriptMacrosHelper rdoc.  #4910 [Frederick Ros]
15
16 * Enhance documentation for setting headers in integration tests. Skip auto HTTP prepending when its already there.  #4079 [Rick Olson]
17
18 * Documentation for AbstractRequest.  #4895 [kevin.clark@gmail.com]
19
20 * Remove all remaining references to @params in the documentation. [Marcel Molina Jr.]
21
22 * Add documentation for redirect_to :back's RedirectBackError exception.  [Marcel Molina Jr.]
23
24 * Update layout and content_for documentation to use yield rather than magic @content_for instance variables. [Marcel Molina Jr.]
25
26 * Cache CgiRequest#request_parameters so that multiple calls don't re-parse multipart data. [Rick]
27
28 * Fixed that remote_form_for can leave out the object parameter and default to the instance variable of the object_name, just like form_for [DHH]
29
30 * Added ActionController.filter_parameter_logging that makes it easy to remove passwords, credit card numbers, and other sensitive information from being logged when a request is handled.  #1897 [jeremye@bsa.ca.gov]
31
32 * Fixed that real files and symlinks should be treated the same when compiling templates.  #5438 [zachary@panandscan.com]
33
34 * Add :status option to send_data and send_file. Defaults to '200 OK'.  #5243 [Manfred Stienstra <m.stienstra@fngtps.com>]
35
36 * Update documentation for erb trim syntax. #5651 [matt@mattmargolis.net]
37
38 * Short documentation to mention use of Mime::Type.register. #5710 [choonkeat@gmail.com]
39
40
41 *1.12.3* (June 28th, 2006)
42
43 * Fix broken traverse_to_controller. We now:
44   Look for a _controller.rb file under RAILS_ROOT to load.
45   If we find it, we require_dependency it and return the controller it defined. (If none was defined we stop looking.)
46   If we don't find it, we look for a .rb file under RAILS_ROOT to load. If we find it, and it loads a constant we keep looking.
47   Otherwise we check to see if a directory of the same name exists, and if it does we create a module for it.
48
49
50 *1.12.2* (June 27th, 2006)
51
52 * Refinement to avoid exceptions in traverse_to_controller.
53
54 * (Hackish) Fix loading of arbitrary files in Ruby's load path by traverse_to_controller. [Nicholas Seckar]
55
56
57 *1.12.1* (April 6th, 2006)
58
59 * Fixed that template extensions would be cached development mode #4624 [Stefan Kaes]
60
61 * Update to Prototype 1.5.0_rc0 [Sam Stephenson]
62
63 * Honor skipping filters conditionally for only certain actions even when the parent class sets that filter to conditionally be executed only for the same actions. #4522 [Marcel Molina Jr.]
64
65 * Delegate xml_http_request in integration tests to the session instance. [Jamis Buck]
66
67 * Update the diagnostics template skip the useless '<controller not set>' text. [Nicholas Seckar]
68
69 * CHANGED DEFAULT: Don't parse YAML input by default, but keep it available as an easy option [DHH]
70
71 * Add additional autocompleter options [aballai, Thomas Fuchs]
72
73 * Fixed fragment caching of binary data on Windows #4493 [bellis@deepthought.org]
74
75 * Applied Prototype $() performance patches (#4465, #4477) and updated script.aculo.us [Sam Stephenson, Thomas Fuchs]
76
77 * Added automated timestamping to AssetTagHelper methods for stylesheets, javascripts, and images when Action Controller is run under Rails [DHH]. Example:
78
79     image_tag("rails.png") # => '<img alt="Rails" src="/images/rails.png?1143664135" />'
80  
81   ...to avoid frequent stats (not a problem for most people), you can set RAILS_ASSET_ID in the ENV to avoid stats:
82
83     ENV["RAILS_ASSET_ID"] = "2345"
84     image_tag("rails.png") # => '<img alt="Rails" src="/images/rails.png?2345" />'
85
86   This can be used by deployment managers to set the asset id by application revision
87
88
89 *1.12.0* (March 27th, 2006)
90
91 * Add documentation for respond_to. [Jamis Buck]
92
93 * Fixed require of bluecloth and redcloth when gems haven't been loaded #4446 [murphy@cYcnus.de]
94
95 * Update to Prototype 1.5.0_pre1 [Sam Stephenson]
96
97 * Change #form_for and #fields_for so that the second argument is not required [Dave Thomas]
98
99     <% form_for :post, @post, :url => { :action => 'create' } do |f| -%>
100    
101   becomes...
102  
103     <% form_for :post, :url => { :action => 'create' } do |f| -%>
104
105 * Update to script.aculo.us 1.6 [Thomas Fuchs]
106
107 * Enable application/x-yaml processing by default [Jamis Buck]
108
109 * Fix double url escaping of remote_function. Add :escape => false option to ActionView's url_for. [Nicholas Seckar]
110
111 * Add :script option to in_place_editor to support evalScripts (closes #4194) [codyfauser@gmail.com]
112
113 * Fix mixed case enumerable methods in the JavaScript Collection Proxy (closes #4314) [codyfauser@gmail.com]
114
115 * Undo accidental escaping for mail_to; add regression test. [Nicholas Seckar]
116
117 * Added nicer message for assert_redirected_to (closes #4294) [court3nay]
118
119     assert_redirected_to :action => 'other_host', :only_path => false
120    
121   when it was expecting...
122  
123     redirected_to :action => 'other_host', :only_path => true, :host => 'other.test.host'
124  
125   gives the error message...
126
127     response is not a redirection to all of the options supplied (redirection is <{:only_path=>false, :host=>"other.test.host", :action=>"other_host"}>), difference: <{:only_path=>"true", :host=>"other.test.host"}>
128
129 * Change url_for to escape the resulting URLs when called from a view. [Nicholas Seckar, coffee2code]
130
131 * Added easy support for testing file uploads with fixture_file_upload #4105 [turnip@turnipspatch.com]. Example:
132
133     # Looks in Test::Unit::TestCase.fixture_path + '/files/spongebob.png'
134     post :change_avatar, :avatar => fixture_file_upload('/files/spongebob.png', 'image/png')
135
136 * Fixed UrlHelper#current_page? to behave even when url-escaped entities are present #3929 [jeremy@planetargon.com]
137
138 * Add ability for relative_url_root to be specified via an environment variable RAILS_RELATIVE_URL_ROOT. [isaac@reuben.com, Nicholas Seckar]
139
140 * Fixed link_to "somewhere", :post => true to produce valid XHTML by using the parentnode instead of document.body for the instant form #3007 [Bob Silva]
141
142 * Added :function option to PrototypeHelper#observe_field/observe_form that allows you to call a function instead of submitting an ajax call as the trigger #4268 [jonathan@daikini.com]
143
144 * Make Mime::Type.parse consider q values (if any) [Jamis Buck]
145
146 * XML-formatted requests are typecast according to "type" attributes for :xml_simple [Jamis Buck]
147
148 * Added protection against proxy setups treating requests as local even when they're not #3898 [stephen_purcell@yahoo.com]
149
150 * Added TestRequest#raw_post that simulate raw_post from CgiRequest #3042 [francois.beausoleil@gmail.com]
151
152 * Underscore dasherized keys in formatted requests [Jamis Buck]
153
154 * Add MimeResponds::Responder#any for managing multiple types with identical responses [Jamis Buck]
155
156 * Make the xml_http_request testing method set the HTTP_ACCEPT header [Jamis Buck]
157
158 * Add Verification to scaffolds.   Prevent destructive actions using GET [Michael Koziarski]
159
160 * Avoid hitting the filesystem when using layouts by using a File.directory? cache. [Stefan Kaes, Nicholas Seckar]
161
162 * Simplify ActionController::Base#controller_path [Nicholas Seckar]
163
164 * Added simple alert() notifications for RJS exceptions when config.action_view.debug_rjs = true. [Sam Stephenson]
165
166 * Added :content_type option to render, so you can change the content type on the fly [DHH]. Example: render :action => "atom.rxml", :content_type => "application/atom+xml"
167
168 * CHANGED DEFAULT: The default content type for .rxml is now application/xml instead of type/xml, see http://www.xml.com/pub/a/2004/07/21/dive.html for reason [DHH]
169
170 * Added option to render action/template/file of a specific extension (and here by template type). This means you can have multiple templates with the same name but a different extension [DHH]. Example:
171  
172     class WeblogController < ActionController::Base
173       def index
174         @posts = Post.find :all
175  
176         respond_to do |type|
177           type.html # using defaults, which will render weblog/index.rhtml
178           type.xml  { render :action => "index.rxml" }
179           type.js   { render :action => "index.rjs" }
180         end
181       end
182     end
183
184 * Added better support for using the same actions to output for different sources depending on the Accept header [DHH]. Example:
185
186     class WeblogController < ActionController::Base
187       def create
188         @post = Post.create(params[:post])
189      
190         respond_to do |type|
191           type.js   { render }  # renders create.rjs
192           type.html { redirect_to :action => "index" }
193           type.xml  do
194             headers["Location"] = url_for(:action => "show", :id => @post)
195             render(:nothing, :status => "201 Created")
196           end
197         end
198       end
199     end
200
201 * Added Base#render(:xml => xml) that works just like Base#render(:text => text), but sets the content-type to text/xml and the charset to UTF-8 [DHH]
202
203 * Integration test's url_for now runs in the context of the last request (if any) so after post /products/show/1 url_for :action => 'new' will yield /product/new  [Tobias Luetke]
204
205 * Re-added mixed-in helper methods for the JavascriptGenerator.  Moved JavascriptGenerators methods to a module that is mixed in after the helpers are added.  Also fixed that variables set in the enumeration methods like #collect are set correctly.  Documentation added for the enumeration methods [Rick Olson].  Examples:
206
207     page.select('#items li').collect('items') do |element|
208       element.hide
209     end
210     # => var items = $$('#items li').collect(function(value, index) { return value.hide(); });
211
212 * Added plugin support for parameter parsers, which allows for better support for REST web services. By default, posts submitted with the application/xml content type is handled by creating a XmlSimple hash with the same name as the root element of the submitted xml. More handlers can easily be registered like this:
213
214     # Assign a new param parser to a new content type
215     ActionController::Base.param_parsers['application/atom+xml'] = Proc.new do |data|
216       node = REXML::Document.new(post)
217      { node.root.name => node.root }
218     end
219
220     # Assign the default XmlSimple to a new content type
221     ActionController::Base.param_parsers['application/backpack+xml'] = :xml_simple
222  
223 Default YAML web services were retired, ActionController::Base.param_parsers carries an example which shows how to get this functionality back. As part of this new plugin support, request.[formatted_post?, xml_post?, yaml_post? and post_format] were all deprecated in favor of request.content_type [Tobias Luetke]
224  
225 * Fixed Effect.Appear in effects.js to work with floats in Safari #3524, #3813, #3044 [Thomas Fuchs]
226
227 * Fixed that default image extension was not appended when using a full URL with AssetTagHelper#image_tag #4032, #3728 [rubyonrails@beautifulpixel.com]
228
229 * Added that page caching will only happen if the response code is less than 400 #4033 [g.bucher@teti.ch]
230
231 * Add ActionController::IntegrationTest to allow high-level testing of the way the controllers and routes all work together [Jamis Buck]
232
233 * Added support to AssetTagHelper#javascript_include_tag for having :defaults appear anywhere in the list, so you can now make one call ala javascript_include_tag(:defaults, "my_scripts") or javascript_include_tag("my_scripts", :defaults) depending on how you want the load order #3506 [Bob Silva]
234
235 * Added support for visual effects scoped queues to the visual_effect helper #3530 [Abdur-Rahman Advany]
236
237 * Added .rxml (and any non-rhtml template, really) supportfor CaptureHelper#content_for and CaptureHelper#capture #3287 [Brian Takita]
238
239 * Added script.aculo.us drag and drop helpers to RJS [Thomas Fuchs]. Examples:
240
241     page.draggable 'product-1'
242     page.drop_receiving 'wastebasket', :url => { :action => 'delete' }
243     page.sortable 'todolist', :url => { action => 'change_order' }
244
245 * Fixed that form elements would strip the trailing [] from the first parameter #3545 [ruby@bobsilva.com]
246
247 * During controller resolution, update the NameError suppression to check for the expected constant. [Nicholas Seckar]
248
249 * Update script.aculo.us to V1.5.3 [Thomas Fuchs]
250
251 * Added various InPlaceEditor options, #3746, #3891, #3896, #3906 [Bill Burcham, ruairi, sl33p3r]
252
253 * Added :count option to pagination that'll make it possible for the ActiveRecord::Base.count call to using something else than * for the count. Especially important for count queries using DISTINCT #3839 [skaes]
254
255 * Update script.aculo.us to V1.5.2 [Thomas Fuchs]
256
257 * Added element and collection proxies to RJS [DHH]. Examples:
258
259     page['blank_slate']                  # => $('blank_slate');
260     page['blank_slate'].show             # => $('blank_slate').show();
261     page['blank_slate'].show('first').up # => $('blank_slate').show('first').up();
262    
263     page.select('p')                      # => $$('p');
264     page.select('p.welcome b').first      # => $$('p.welcome b').first();
265     page.select('p.welcome b').first.hide # => $$('p.welcome b').first().hide();
266
267 * Add JavaScriptGenerator#replace for replacing an element's "outer HTML". #3246 [tom@craz8.com, Sam Stephenson]
268
269 * Remove over-engineered form_for code for a leaner implementation. [Nicholas Seckar]
270
271 * Document form_for's :html option. [Nicholas Seckar]
272
273 * Major components cleanup and speedup.  #3527 [Stefan Kaes]
274
275 * Fix problems with pagination and :include.  [Kevin Clark]
276
277 * Add ActiveRecordTestCase for testing AR integration. [Kevin Clark]
278
279 * Add Unit Tests for pagination [Kevin Clark]
280
281 * Add :html option for specifying form tag options in form_for. [Sam Stephenson]
282
283 * Replace dubious controller parent class in filter docs. #3655, #3722  [info@rhalff.com, eigentone@gmail.com]
284
285 * Don't interpret the :value option on text_area as an html attribute. Set the text_area's value. #3752 [gabriel@gironda.org]
286
287 * Fix remote_form_for creates a non-ajax form. [Rick Olson]
288
289 * Don't let arbitrary classes match as controllers -- a potentially dangerous bug. [Nicholas Seckar]
290
291 * Fix Routing tests. Fix routing where failing to match a controller would prevent the rest of routes from being attempted. [Nicholas Seckar]
292
293 * Add :builder => option to form_for and friends. [Nicholas Seckar, Rick Olson]
294
295 * Fix controller resolution to avoid accidentally inheriting a controller from a parent module. [Nicholas Seckar]
296
297 * Set sweeper's @controller to nil after a request so that the controller may be collected between requests. [Nicholas Seckar]
298
299 * Subclasses of ActionController::Caching::Sweeper should be Reloadable. [Rick Olson]
300
301 * Document the :xhr option for verifications. #3666 [leeo]
302
303 * Added :only and :except controls to skip_before/after_filter just like for when you add filters [DHH]
304
305 * Ensure that the instance variables are copied to the template when performing render :update. [Nicholas Seckar]
306
307 * Add the ability to call JavaScriptGenerator methods from helpers called in update blocks. [Sam Stephenson]  Example:
308   module ApplicationHelper
309     def update_time
310       page.replace_html 'time', Time.now.to_s(:db)
311       page.visual_effect :highlight, 'time'
312     end
313   end
314
315   class UserController < ApplicationController
316     def poll
317       render :update { |page| page.update_time }
318     end
319   end
320
321 * Add render(:update) to ActionView::Base. [Sam Stephenson]
322
323 * Fix render(:update) to not render layouts. [Sam Stephenson]
324
325 * Fixed that SSL would not correctly be detected when running lighttpd/fcgi behind lighttpd w/mod_proxy #3548 [stephen_purcell@yahoo.com]
326
327 * Added the possibility to specify atomatic expiration for the memcachd session container #3571 [Stefan Kaes]
328
329 * Change layout discovery to take into account the change in semantics with File.join and nil arguments. [Marcel Molina Jr.]
330
331 * Raise a RedirectBackError if redirect_to :back is called when there's no HTTP_REFERER defined #3049 [kevin.clark@gmail.com]
332
333 * Treat timestamps like datetimes for scaffolding purposes #3388 [Maik Schmidt]
334
335 * Fix IE bug with link_to "something", :post => true #3443 [Justin Palmer]
336
337 * Extract Test::Unit::TestCase test process behavior into an ActionController::TestProcess module. [Sam Stephenson]
338
339 * Pass along blocks from render_to_string to render. [Sam Stephenson]
340
341 * Add render :update for inline RJS. [Sam Stephenson]  Example:
342   class UserController < ApplicationController
343     def refresh
344       render :update do |page|
345         page.replace_html  'user_list', :partial => 'user', :collection => @users
346         page.visual_effect :highlight, 'user_list'
347       end
348     end
349   end
350
351 * allow nil objects for error_messages_for [Michael Koziarski]
352
353 * Refactor human_size to exclude decimal place if it is zero. [Marcel Molina Jr.]
354
355 * Update to Prototype 1.5.0_pre0 [Sam Stephenson]
356
357 * Automatically discover layouts when a controller is namespaced. #2199, #3424 [me@jonnii.com rails@jeffcole.net Marcel Molina Jr.]
358
359 * Add support for multiple proxy servers to CgiRequest#host [gaetanot@comcast.net]
360
361 * Documentation typo fix. #2367 [Blair Zajac]
362
363 * Remove Upload Progress. #2871 [Sean Treadway]
364
365 * Fix typo in function name mapping in auto_complete_field. #2929 #3446 [doppler@gmail.com phil.ross@gmail.com]
366
367 *  Allow auto-discovery of third party template library layouts. [Marcel Molina Jr.]
368
369 * Have the form builder output radio button, not check box, when calling the radio button helper. #3331 [LouisStAmour@gmail.com]
370
371 * Added assignment of the Autocompleter object created by JavaScriptMacroHelper#auto_complete_field to a local javascript variables [DHH]
372
373 * Added :on option for PrototypeHelper#observe_field that allows you to specify a different callback hook to have the observer trigger on [DHH]
374
375 * Added JavaScriptHelper#button_to_function that works just like JavaScriptHelper#link_to_function but uses a button instead of a href [DHH]
376
377 * Added that JavaScriptHelper#link_to_function will honor existing :onclick definitions when adding the function call [DHH]
378
379 * Added :disable_with option to FormTagHelper#submit_tag to allow for easily disabled submit buttons with different text [DHH]
380
381 * Make auto_link handle nil by returning quickly if blank? [Scott Barron]
382
383 * Make auto_link match urls with a port number specified. [Marcel Molina Jr.]
384
385 * Added support for toggling visual effects to ScriptaculousHelper::visual_effect, #3323. [Thomas Fuchs]
386
387 * Update to script.aculo.us to 1.5.0 rev. 3343 [Thomas Fuchs]
388
389 * Added :select option for JavaScriptMacroHelper#auto_complete_field that makes it easier to only use part of the auto-complete suggestion as the value for insertion [Thomas Fuchs]
390
391 * Added delayed execution of Javascript from within RJS #3264 [devslashnull@gmail.com]. Example:
392
393     page.delay(20) do
394       page.visual_effect :fade, 'notice'
395     end
396
397 * Add session ID to default logging, but remove the verbose description of every step [DHH]
398
399 * Add the following RJS methods: [Sam Stephenson]
400  
401     * alert - Displays an alert() dialog
402     * redirect_to - Changes window.location.href to simulate a browser redirect
403     * call - Calls a JavaScript function
404     * assign - Assigns to a JavaScript variable
405     * << - Inserts an arbitrary JavaScript string
406
407 * Fix incorrect documentation for form_for [Nicholas Seckar]
408
409 * Don't include a layout when rendering an rjs template using render's :template option. [Marcel Molina Jr.]
410
411 *1.1.2* (December 13th, 2005)
412
413 * Become part of Rails 1.0
414
415 * Update to script.aculo.us 1.5.0 final (equals 1.5.0_rc6) [Thomas Fuchs]
416
417 * Update to Prototype 1.4.0 final [Sam Stephenson]
418
419 * Added form_remote_for (form_for meets form_remote_tag) [DHH]
420
421 * Update to script.aculo.us 1.5.0_rc6
422
423 * More robust relative url root discovery for SCGI compatibility.  This solves the 'SCGI routes problem' -- you no longer need to prefix all your routes with the name of the SCGI mountpoint.  #3070 [Dave Ringoen]
424
425 * Fix docs for text_area_tag. #3083. [Christopher Cotton]
426
427 * Change form_for and fields_for method signatures to take object name and object as separate arguments rather than as a Hash. [DHH]
428
429 * Introduce :selected option to the select helper.  Allows you to specify a selection other than the current value of object.method.  Specify :selected => nil to leave all options unselected.  #2991 [Jonathan Viney <jonathan@bluewire.net.nz>]
430
431 * Initialize @optional in routing code to avoid warnings about uninitialized access to an instance variable. [Nicholas Seckar]
432
433 * Make ActionController's render honor the :locals option when rendering a :file. #1665. [Emanuel Borsboom, Marcel Molina Jr.]
434
435 * Allow assert_tag(:conditions) to match the empty string when a tag has no children. Closes #2959. [Jamis Buck]
436
437 * Update html-scanner to handle CDATA sections better. Closes #2970. [Jamis Buck]
438
439 * Don't put flash in session if sessions are disabled.  [Jeremy Kemper]
440
441 * Strip out trailing &_= for raw post bodies. Closes #2868. [Sam Stephenson]
442
443 * Pass multiple arguments to Element.show and Element.hide in JavaScriptGenerator instead of using iterators. [Sam Stephenson]
444
445 * Improve expire_fragment documentation.  #2966 [court3nay@gmail.com]
446
447 * Correct docs for automatic layout assignment. #2610. [Charles M. Gerungan]
448
449 * Always create new AR sessions rather than trying too hard to avoid database traffic.  #2731 [Jeremy Kemper]
450
451 * Update to Prototype 1.4.0_rc4. Closes #2943 (old Array.prototype.reverse behavior can be obtained by passing false as an argument). [Sam Stephenson]
452
453 * Use Element.update('id', 'html') instead of $('id').innerHTML = 'html' in JavaScriptGenerator#replace_html so that script tags are evaluated. [Sam Stephenson]
454
455 * Make rjs templates always implicitly skip out on layouts. [Marcel Molina Jr.]
456
457 * Correct length for the truncate text helper.  #2913 [Stefan Kaes]
458
459 * Update to Prototype 1.4.0_rc3. Closes #1893, #2505, #2550, #2748, #2783. [Sam Stephenson]
460
461 * Add support for new rjs templates which wrap an update_page block. [Marcel Molina Jr.]
462
463 * Rename Version constant to VERSION. #2802 [Marcel Molina Jr.]
464
465 * Correct time_zone_options_for_select docs.  #2892 [pudeyo@rpi.com]
466
467 * Remove the unused, slow response_dump and session_dump variables from error pages.  #1222 [lmarlow@yahoo.com]
468
469 * Performance tweaks: use Set instead of Array to speed up prototype helper include? calls.  Avoid logging code if logger is nil.  Inline commonly-called template presence checks.  #2880, #2881, #2882, #2883 [Stefan Kaes]
470
471 * MemCache store may be given multiple addresses.  #2869 [Ryan Carver <ryan@fivesevensix.com>]
472
473 * Handle cookie parsing irregularity for certain Nokia phones.  #2530 [zaitzow@gmail.com]
474
475 * Added PrototypeHelper::JavaScriptGenerator and PrototypeHelper#update_page for easily modifying multiple elements in an Ajax response. [Sam Stephenson]  Example:
476
477     update_page do |page|
478       page.insert_html :bottom, 'list', '<li>Last item</li>'
479       page.visual_effect :highlight, 'list'
480       page.hide 'status-indicator', 'cancel-link'
481     end
482  
483   generates the following JavaScript:
484  
485     new Insertion.Bottom("list", "<li>Last item</li>");
486     new Effect.Highlight("list");
487     ["status-indicator", "cancel-link"].each(Element.hide);
488  
489 * Refactored JavaScriptHelper into PrototypeHelper and ScriptaculousHelper [Sam Stephenson]
490
491 * Update to latest script.aculo.us version (as of [3031])
492
493 * Updated docs for in_place_editor, fixes a couple bugs and offers extended support for external controls [Justin Palmer]
494
495 * Update documentation for render :file.  #2858 [Tom Werner]
496
497 * Only include builtin filters whose filenames match /^[a-z][a-z_]*_helper.rb$/ to avoid including operating system metadata such as ._foo_helper.rb.  #2855 [court3nay@gmail.com]
498
499 * Added FormHelper#form_for and FormHelper#fields_for that makes it easier to work with forms for single objects also if they don't reside in instance variables [DHH]. Examples:
500
501   <% form_for :person, @person, :url => { :action => "update" } do |f| %>
502     First name: <%= f.text_field :first_name %>
503     Last name : <%= f.text_field :last_name %>
504     Biography : <%= f.text_area :biography %>
505     Admin?    : <%= f.check_box :admin %>
506   <% end %>
507
508   <% form_for :person, person, :url => { :action => "update" } do |person_form| %>
509     First name: <%= person_form.text_field :first_name %>
510     Last name : <%= person_form.text_field :last_name %>
511    
512     <% fields_for :permission => person.permission do |permission_fields| %>
513       Admin?  : <%= permission_fields.check_box :admin %>
514     <% end %>
515   <% end %>
516  
517 * options_for_select allows any objects which respond_to? :first and :last rather than restricting to Array and Range.  #2824 [Jacob Robbins <jrobbins@cmj.com>, Jeremy Kemper]
518
519 * The auto_link text helper accepts an optional block to format the link text for each url and email address.  Example: auto_link(post.body) { |text| truncate(text, 10) }  [Jeremy Kemper]
520
521 * assert_tag uses exact matches for string conditions, instead of partial matches. Use regex to do partial matches. #2799 [Jamis Buck]
522
523 * CGI::Session::ActiveRecordStore.data_column_name = 'foobar' to use a different session data column than the 'data' default.  [nbpwie102@sneakemail.com]
524
525 * Do not raise an exception when default helper is missing; log a debug message instead.  It's nice to delete empty helpers.  [Jeremy Kemper]
526
527 * Controllers with acronyms in their names (e.g. PDFController) require the correct default helper (PDFHelper in file pdf_helper.rb).  #2262 [jeff@opendbms.com]
528
529
530 *1.11.0* (November 7th, 2005)
531
532 * Added request as instance method to views, so you can do <%= request.env["HTTP_REFERER"] %>, just like you can already access response, session, and the likes [DHH]
533
534 * Fix conflict with assert_tag and Glue gem #2255 [david.felstead@gmail.com]
535
536 * Add documentation to assert_tag indicating that it only works with well-formed XHTML #1937, #2570 [Jamis Buck]
537
538 * Added action_pack.rb stub so that ActionPack::Version loads properly [Sam Stephenson]
539
540 * Added short-hand to assert_tag so assert_tag :tag => "span" can be written as assert_tag "span" [DHH]
541
542 * Added skip_before_filter/skip_after_filter for easier control of the filter chain in inheritance hierachies [DHH]. Example:
543
544     class ApplicationController < ActionController::Base
545       before_filter :authenticate
546     end
547    
548     class WeblogController < ApplicationController
549       # will run the :authenticate filter
550     end
551    
552     class SignupController < ActionController::Base
553       # will not run the :authenticate filter
554       skip_before_filter :authenticate
555     end
556
557 * Added redirect_to :back as a short-hand for redirect_to(request.env["HTTP_REFERER"]) [DHH]
558
559 * Change javascript_include_tag :defaults to not use script.aculo.us loader, which facilitates the use of plugins for future script.aculo.us and third party javascript extensions, and provide register_javascript_include_default for plugins to specify additional JavaScript files to load. Removed slider.js and builder.js from actionpack. [Thomas Fuchs]
560
561 * Fix problem where redirecting components can cause an infinite loop [Rick Olson]
562
563 * Added support for the queue option on visual_effect [Thomas Fuchs]
564
565 * Update script.aculo.us to V1.5_rc4 [Thomas Fuchs]
566
567 * Fix that render :text didn't interpolate instance variables #2629, #2626 [skaes]
568
569 * Fix line number detection and escape RAILS_ROOT in backtrace Regexp [Nicholas Seckar]
570
571 * Fixed document.getElementsByClassName from Prototype to be speedy again [Sam Stephenson]
572
573 * Recognize ./#{RAILS_ROOT} as RAILS_ROOT in error traces [Nicholas Seckar]
574
575 * Remove ARStore session fingerprinting [Nicholas Seckar]
576
577 * Fix obscure bug in ARStore [Nicholas Seckar]
578
579 * Added TextHelper#strip_tags for removing HTML tags from a string (using HTMLTokenizer) #2229 [marcin@junkheap.net]
580
581 * Added a reader for flash.now, so it's possible to do stuff like flash.now[:alert] ||= 'New if not set' #2422 [Caio Chassot]
582
583
584 *1.10.2* (October 26th, 2005)
585
586 * Reset template variables after using render_to_string [skaes@web.de]
587
588 * Expose the session model backing CGI::Session
589
590 * Abbreviate RAILS_ROOT in traces
591
592
593 *1.10.1* (October 19th, 2005)
594
595 * Update error trace templates [Nicholas Seckar]
596
597 * Stop showing generated routing code in application traces [Nicholas Seckar]
598
599
600 *1.10.0* (October 16th, 2005)
601
602 * Make string-keys locals assigns optional. Add documentation describing depreciated state [skaes@web.de]
603
604 * Improve line number detection for template errors [Nicholas Seckar]
605
606 * Update/clean up documentation (rdoc)
607
608 * Upgrade to Prototype 1.4.0_rc0 [Sam Stephenson]
609
610 * Added assert_vaild. Reports the proper AR error messages as fail message when the passed record is invalid [Tobias Luetke]
611
612 * Add temporary support for passing locals to render using string keys [Nicholas Seckar]
613
614 * Clean up error pages by providing better backtraces [Nicholas Seckar]
615
616 * Raise an exception if an attempt is made to insert more session data into the ActiveRecordStore data column than the column can hold. #2234.  [justin@textdrive.com]
617
618 * Removed references to assertions.rb from actionpack assert's backtraces. Makes error reports in functional unit tests much less noisy. [Tobias Luetke]
619
620 * Updated and clarified documentation for JavaScriptHelper to be more concise about the various options for including the JavaScript libs. [Thomas Fuchs]
621
622 * Hide "Retry with Breakpoint" button on error pages until feature is functional. [DHH]
623
624 * Fix Request#host_with_port to use the standard port when Rails is behind a proxy. [Nicholas Seckar]
625
626 * Escape query strings in the href attribute of URLs created by url_helper.  #2333 [Michael Schuerig <michael@schuerig.de>]
627
628 * Improved line number reporting for template errors [Nicholas Seckar]
629
630 * Added :locals support for render :inline #2463 [mdabney@cavoksolutions.com]
631
632 * Unset the X-Requested-With header when using the xhr wrapper in functional tests so that future requests aren't accidentally xhr'ed #2352 [me@julik.nl, Sam Stephenson]
633
634 * Unescape paths before writing cache to file system. #1877. [Damien Pollet]
635
636 * Wrap javascript_tag contents in a CDATA section and add a cdata_section method to TagHelper #1691 [Michael Schuerig, Sam Stephenson]
637
638 * Misc doc fixes (typos/grammar/etc). #2445. [coffee2code]
639
640 * Speed improvement for session_options. #2287. [skaes@web.de]
641
642 * Make cacheing binary files friendly with Windows. #1975. [Rich Olson]
643
644 * Convert boolean form options form the tag_helper. #809. [Michael Schuerig <michael@schuerig.de>]
645
646 * Fixed that an instance variable with the same name as a partial should be implicitly passed as the partial :object #2269 [court3nay]
647
648 * Update Prototype to V1.4.0_pre11, script.aculo.us to [2502] [Thomas Fuchs]
649
650 * Make assert_tag :children count appropriately. Closes #2181. [jamie@bravenet.com]
651
652 * Forced newer versions of RedCloth to use hard breaks [DHH]
653
654 * Added new scriptaculous options for auto_complete_field #2343 [m.stienstra@fngtps.com]
655
656 * Don't prepend the asset host if the string is already a fully-qualified URL
657
658 * Updated to script.aculo.us V1.5.0_rc2 and Prototype to V1.4.0_pre7 [Thomas Fuchs]
659
660 * Undo condition change made in [2345] to prevent normal parameters arriving as StringIO.
661
662 * Tolerate consecutive delimiters in query parameters.  #2295 [darashi@gmail.com]
663
664 * Streamline render process, code cleaning. Closes #2294. [skae]
665
666 * Keep flash after components are rendered. #2291 [Rick Olson, Scott]
667
668 * Shorten IE file upload path to filename only to match other browsers.  #1507 [court3nay@gmail.com]
669
670 * Fix open/save dialog in IE not opening files send with send_file/send_data, #2279 [Thomas Fuchs]
671
672 * Fixed that auto_discovery_link_tag couldn't take a string as the URL [DHH]
673
674 * Fixed problem with send_file and WEBrick using stdout #1812 [DHH]
675
676 * Optimized tag_options to not sort keys, which is no longer necessary when assert_dom_equal and friend is available #1995 [skae]
677
678 * Added assert_dom_equal and assert_dom_not_equal to compare tags generated by the helpers in an order-indifferent manner #1995 [skae]
679
680 * Fixed that Request#domain caused an exception if the domain header wasn't set in the original http request #1795 [Michael Koziarski]
681
682 * Make the truncate() helper multi-byte safe (assuming $KCODE has been set to something other than "NONE") #2103
683
684 * Add routing tests from #1945 [ben@groovie.org]
685
686 * Add a routing test case covering #2101 [Nicholas Seckar]
687
688 * Cache relative_url_root for all webservers, not just Apache #2193 [skae]
689
690 * Speed up cookie use by decreasing string copying #2194 [skae]
691
692 * Fixed access to "Host" header with requests made by crappy old HTTP/1.0 clients #2124 [Marcel Molina]
693
694 * Added easy assignment of fragment cache store through use of symbols for included stores (old way still works too)
695
696   Before:
697     ActionController::Base.fragment_cache_store =
698       ActionController::Base::Caching::Fragments::FileStore.new("/path/to/cache/directory")
699
700   After:
701     ActionController::Base.fragment_cache_store = :file_store, "/path/to/cache/directory"
702
703 * Added ActionController::Base.session_store=, session_store, and session_options to make it easier to tweak the session options (instead of going straight to ActionController::CgiRequest::DEFAULT_SESSION_OPTIONS)
704
705 * Added TextHelper#cycle to cycle over an array of values on each hit (useful for alternating row colors etc) #2154 [dave-ml@dribin.org]
706
707 * Ensure that request.path never returns nil. Closes #1675 [Nicholas Seckar]
708
709 * Add ability to specify Route Regexps for controllers. Closes #1917. [Sebastian Kanthak]
710
711 * Provide Named Route's hash methods as helper methods. Closes #1744. [Nicholas Seckar, Steve Purcell]
712
713 * Added :multipart option to ActiveRecordHelper#form to make it possible to add file input fields #2034 [jstirk@oobleyboo.com]
714
715 * Moved auto-completion and in-place editing into the Macros module and their helper counterparts into JavaScriptMacrosHelper
716
717 * Added in-place editing support in the spirit of auto complete with ActionController::Base.in_place_edit_for, JavascriptHelper#in_place_editor_field, and Javascript support from script.aculo.us #2038 [Jon Tirsen]
718
719 * Added :disabled option to all data selects that'll make the elements inaccessible for change #2167, #253 [eigentone]
720
721 * Fixed that TextHelper#auto_link_urls would include punctuation in the links #2166, #1671 [eigentone]
722
723 * Fixed that number_to_currency(1000, {:precision => 0})) should return "$1,000", instead of "$1,000." #2122 [sd@notso.net]
724
725 * Allow link_to_remote to use any DOM-element as the parent of the form elements to be submitted #2137 [erik@ruby-lang.nl]. Example:
726
727     <tr id="row023">
728       <td><input name="foo"/></td>
729       <td><input name="bar"/></td>
730       <td><%= link_to_remote 'Save', :update => "row023",
731             :submit => "row023", :url => {:action => 'save_row'} %></td>
732     </tr>
733
734 * Fixed that render :partial would fail when :object was a Hash (due to backwards compatibility issues) #2148 [Sam Stephenson]
735
736 * Fixed JavascriptHelper#auto_complete_for to only include unique items #2153 [Thomas Fuchs]
737
738 * Fixed all AssetHelper methods to work with relative paths, such that javascript_include_tag('stdlib/standard') will look in /javascripts/stdlib/standard instead of '/stdlib/standard/' #1963
739
740 * Avoid extending view instance with helper modules each request. Closes #1979
741
742 * Performance improvements to CGI methods. Closes #1980 [Skaes]
743
744 * Added :post option to UrlHelper#link_to that makes it possible to do POST requests through normal ahref links using Javascript
745
746 * Fixed overwrite_params
747
748 * Added ActionController::Base.benchmark and ActionController::Base.silence to allow for easy benchmarking and turning off the log
749
750 * Updated vendor copy of html-scanner to support better xml parsing
751
752 * Added :popup option to UrlHelper#link_to #1996 [gabriel.gironda@gmail.com]. Examples:
753
754     link_to "Help", { :action => "help" }, :popup => true
755     link_to "Busy loop", { :action => "busy" }, :popup => ['new_window', 'height=300,width=600']
756
757 * Drop trailing \000 if present on RAW_POST_DATA (works around bug in Safari Ajax implementation) #918
758
759 * Fix observe_field to fall back to event-based observation if frequency <= 0 #1916 [michael@schubert.cx]
760
761 * Allow use of the :with option for submit_to_remote #1936 [jon@instance-design.co.uk]
762
763 * AbstractRequest#domain returns nil when host is an ip address #2012 [kevin.clark@gmail.com]
764
765 * ActionController documentation update #2051 [fbeausoleil@ftml.net]
766
767 * Yield @content_for_ variables to templates #2058 [Sam Stephenson]
768
769 * Make rendering an empty partial collection behave like :nothing => true #2080 [Sam Stephenson]
770
771 * Add option to specify the singular name used by pagination.
772
773 * Use string key to obtain action value. Allows indifferent hashes to be disabled.
774
775 * Added ActionView::Base.cache_template_loading back.
776
777 * Rewrote compiled templates to decrease code complexity. Removed template load caching in favour of compiled caching. Fixed template error messages. [Nicholas Seckar]
778
779 * Fix Routing to handle :some_param => nil better. [Nicholas Seckar, Luminas]
780
781 * Add support for :include with pagination (subject to existing constraints for :include with :limit and :offset) #1478 [michael@schubert.cx]
782
783 * Prevent the benchmark module from blowing up if a non-HTTP/1.1 request is processed
784
785 * Added :use_short_month option to select_month helper to show month names as abbreviations
786
787 * Make link_to escape the javascript in the confirm option #1964 [nicolas.pouillard@gmail.com]
788
789 * Make assert_redirected_to properly check URL's passed as strings #1910 [Scott Barron]
790
791 * Make sure :layout => false is always used when rendering inside a layout
792
793 * Use raise instead of assert_not_nil in Test::Unit::TestCase#process to ensure that the test variables (controller, request, response) have been set
794
795 * Make sure assigns are built for every request when testing #1866
796
797 * Allow remote_addr to be queried on TestRequest #1668
798
799 * Fixed bug when a partial render was passing a local with the same name as the partial
800
801 * Improved performance of test app req/sec with ~10% refactoring the render method #1823 [Stefan Kaes]
802
803 * Improved performance of test app req/sec with 5-30% through a series of Action Pack optimizations #1811 [Stefan Kaes]
804
805 * Changed caching/expiration/hit to report using the DEBUG log level and errors to use the ERROR log level instead of both using INFO
806
807 * Added support for per-action session management #1763
808
809 * Improved rendering speed on complicated templates by up to 100% (the more complex the templates, the higher the speedup) #1234 [Stephan Kaes]. This did necessasitate a change to the internals of ActionView#render_template that now has four parameters. Developers of custom view handlers (like Amrita) need to update for that.
810
811 * Added options hash as third argument to FormHelper#input, so you can do input('person', 'zip', :size=>10) #1719 [jeremye@bsa.ca.gov]
812
813 * Added Base#expires_in(seconds)/Base#expires_now to control HTTP content cache headers #1755 [Thomas Fuchs]
814
815 * Fixed line number reporting for Builder template errors #1753 [piotr]
816
817 * Fixed assert_routing so that testing controllers in modules works as expected [Nicholas Seckar, Rick Olson]
818
819 * Fixed bug with :success/:failure callbacks for the JavaScriptHelper methods #1730 [court3nay/Thomas Fuchs]
820
821 * Added named_route method to RouteSet instances so that RouteSet instance methods do not prevent certain names from being used. [Nicholas Seckar]
822
823 * Fixed routes so that routes which do not specify :action in the path or in the requirements have a default of :action => 'index', In addition, fixed url generation so that :action => 'index' does not need to be provided for such urls. [Nicholas Seckar, Markjuh]
824
825 * Worked around a Safari bug where it wouldn't pass headers through if the response was zero length by having render :nothing return ' ' instead of ''
826
827 * Fixed Request#subdomains to handle "foo.foo.com" correctly
828
829
830 *1.9.1* (11 July, 2005)
831
832 * Fixed that auto_complete_for didn't force the input string to lower case even as the db comparison was
833
834 * Fixed that Action View should always use the included Builder, never attempt to require the gem, to ensure compatibility
835
836 * Added that nil options are not included in tags, so tag("p", :ignore => nil) now returns <p /> not <p ignore="" />  but that tag("p", :ignore => "") still includes it #1465 [michael@schuerig.de]
837
838 * Fixed that UrlHelper#link_to_unless/link_to_if used html_escape on the name if no link was to be applied. This is unnecessary and breaks its use with images #1649 [joergd@pobox.com]
839
840 * Improved error message for DoubleRenderError
841
842 * Fixed routing to allow for testing of *path components #1650 [Nicholas Seckar]
843
844 * Added :handle as an option to sortable_element to restrict the drag handle to a given class #1642 [thejohnny]
845
846 * Added a bunch of script.aculo.us features #1644, #1677, #1695 [Thomas Fuchs]
847   * Effect.ScrollTo, to smoothly scroll the page to an element
848   * Better Firefox flickering handling on SlideUp/SlideDown
849   * Removed a possible memory leak in IE with draggables
850   * Added support for cancelling dragging my hitting ESC
851   * Added capability to remove draggables/droppables and redeclare sortables in dragdrop.js (this makes it possible to call sortable_element on the same element more than once, e.g. in AJAX returns that modify the sortable element. all current sortable 'stuff' on the element will be discarded and the sortable will be rebuilt)
852   * Always reset background color on Effect.Highlight; this make change backwards-compatibility, to be sure include style="background-color:(target-color)" on your elements or else elements will fall back to their CSS rules (which is a good thing in most circumstances)
853   * Removed circular references from element to prevent memory leaks (still not completely gone in IE)
854   * Changes to class extension in effects.js
855   * Make Effect.Highlight restore any previously set background color when finishing (makes effect work with CSS classes that set a background color)
856   * Fixed myriads of memory leaks in IE and Gecko-based browsers [David ZÃŒlke]
857   * Added incremental and local autocompleting and loads of documentation to controls.js [Ivan Krstic]
858   * Extended the auto_complete_field helper to accept tokens option
859   * Changed object extension mechanism to favor Object.extend to make script.aculo.us easily adaptable to support 3rd party libs like IE7.js [David ZÃŒlke]
860  
861 * Fixed that named routes didn't use the default values for action and possible other parameters #1534 [Nicholas Seckar]
862
863 * Fixed JavascriptHelper#visual_effect to use camelize such that :blind_up will work #1639 [pelletierm@eastmedia.net]
864
865 * Fixed that a SessionRestoreError was thrown if a model object was placed in the session that wasn't available to all controllers. This means that it's no longer necessary to use the 'model :post' work-around in ApplicationController to have a Post model in your session.
866
867
868 *1.9.0* (6 July, 2005)
869
870 * Added logging of the request URI in the benchmark statement (makes it easy to grep for slow actions)
871
872 * Added javascript_include_tag :defaults shortcut that'll include all the default javascripts included with Action Pack (prototype, effects, controls, dragdrop)
873
874 * Cache several controller variables that are expensive to calculate #1229 [skaes@web.de]
875
876 * The session class backing CGI::Session::ActiveRecordStore may be replaced with any class that duck-types with a subset of Active Record.  See docs for details #1238 [skaes@web.de]
877
878 * Fixed that hashes was not working properly when passed by GET to lighttpd #849 [Nicholas Seckar]
879
880 * Fixed assert_template nil will be true when no template was rendered #1565 [maceywj@telus.net]
881
882 * Added :prompt option to FormOptions#select (and the users of it, like FormOptions#select_country etc) to create "Please select" style descriptors #1181 [Michael Schuerig]
883
884 * Added JavascriptHelper#update_element_function, which returns a Javascript function (or expression) that'll update a DOM element according to the options passed #933 [mortonda@dgrmm.net]. Examples:
885
886     <%= update_element_function("products", :action => :insert, :position => :bottom, :content => "<p>New product!</p>") %>
887
888     <% update_element_function("products", :action => :replace, :binding => binding) do %>
889       <p>Product 1</p>
890       <p>Product 2</p>
891     <% end %>
892
893 * Added :field_name option to DateHelper#select_(year|month|day) to deviate from the year/month/day defaults #1266 [Marcel Molina]
894
895 * Added JavascriptHelper#draggable_element and JavascriptHelper#drop_receiving_element to facilitate easy dragging and dropping through the script.aculo.us libraries #1578 [Thomas Fuchs]
896
897 * Added that UrlHelper#mail_to will now also encode the default link title #749 [f.svehla@gmail.com]
898
899 * Removed the default option of wrap=virtual on FormHelper#text_area to ensure XHTML compatibility #1300 [thomas@columbus.rr.com]
900
901 * Adds the ability to include XML CDATA tags using Builder #1563 [Josh Knowles]. Example:
902
903     xml.cdata! "some text" # => <![CDATA[some text]]>
904
905 * Added evaluation of <SCRIPT> blocks in content returned to Ajax calls #1577 [Thomas Fuchs/court3nay/Sean Treadway]
906
907 * Directly generate paths with a leading slash instead of tacking it on later.  #1543 [Nicholas Seckar]
908
909 * Fixed errant parameter modification in functional tests.  #1542 [Nicholas Seckar]
910
911 * Routes fail with leading slash #1540 [Nicholas Seckar]
912
913 * Added support for graceful error handling of Ajax calls #1217 [Jamis Buck/Thomas Fuchs]. Example:
914
915     link_to_remote(
916       "test",
917       :url => { :action => "faulty" },
918       :update => { :success => "good", :failure => "bad" },
919       403 => "alert('Forbidden- got ya!')",
920       404 => "alert('Nothing there...?')",
921       :failure => "alert('Unkown error ' + request.status)")
922  
923 * Attempt to explicitly flush the output at the end of CgiProcess#out
924
925 * Fixed assert_redirected_to to handle absolute controller paths properly #1472 [Rick Olson/Nicholas Seckar]
926
927 * Added event-based observations when frequency is not set on observe_field/form #1474 [flash@vanklinkenbergsoftware.nl]
928
929 * Added script.aculo.us Javascripts (controls.js, dragdrop.js, effects.js) (NEEDS MORE DESCRIPTION) #1509 [Thomas Fuchs]
930
931 * Fixed prototype to consider all fields it doesn't know as text (such as Safari's search) just like the browser in its serialization #1497 [Sean Treadway]
932
933 * Improved performance of Routes generation by a factor of 5 #1434 [Nicholas Seckar]
934
935 * Added named routes (NEEDS BETTER DESCRIPTION) #1434 [Nicholas Seckar]
936
937 * Improved AbstractRequest documentation #1483 [court3nay@gmail.com]
938
939 * Added ActionController::Base.allow_concurrency to control whether the application is thread-safe, so multi-threaded servers like WEBrick knows whether to apply a mutex around the performance of each action. Turned off by default. EXPERIMENTAL FEATURE.
940
941 * Added TextHelper#word_wrap(text, line_length = 80) #1449 [tuxie@dekadance.se]
942
943 * Added a fall-through action for form_remote_tag that'll be used in case Javascript is unavailable #1459 [Scott Barron]. Example:
944
945     form_remote_tag :html => { :action => url_for(:controller => "some", :action => "place") }
946
947 * Added :xhr => true/false option to verify so you can ensure that a request is coming from an Ajax call or not #1464 [Thomas Fuchs]
948
949 * Added tag_options as a third parameter to AssetHelper#auto_discovery_link_tag to control options like the title of the link #1430 [kevin.clark@gmail.com]
950
951 * Added option to pass in parameters to CaptureHelper#capture, so you can create more advanced view helper methods #1466 [duane.johnson@gmail.com]. Example:
952
953     <% show_calendar(:year => 2005, :month => 6) do |day, options| %>
954       <% options[:bgcolor] = '#dfd' if 10..15.include? day %>
955       [<%= day %>]
956     <% end %>
957
958 * Changed the default name of the input tag generated by FormTagHelper#submit_tag from "submit" to "commit" so it doesn't clash with form.submit() calls in Javascript #1271
959
960 * Fixed relative urls support for lighttpd #1048 [Nicholas Seckar/maznawak@nerim.net]
961
962 * Correct distance_of_time_in_words for integer arguments and make the second arg optional, treating the first arg as a duration in seconds.  #1458 [madrobby <thomas@fesch.at>]
963
964 * Fixed query parser to deal gracefully with equal signs inside keys and values #1345 [gorou].
965   Example: /?sig=abcdef=:foobar=&x=y will pass now.
966
967 * Added Cuba to country list #1351 [todd]
968
969 * Fixed radio_button to work with numeric values #1352 [demetrius]
970
971 * Added :extension option to NumberHelper#number_to_phone #1361 [delynnb]
972
973 * Added button_to as a form-based solution to deal with harmful actions that should be hidden behind POSTs. This makes it just as easy as link_to to create a safe trigger for actions like destroy, although it's limited by being a block element, the fixed look, and a no-no inside other forms. #1371 [tom@moertel.com]
974
975 * Fixed image_tag so an exception is not thrown just because the image is missing and alt value can't be generated #1395 [Marcel]
976
977 * Added a third parameter to TextHelper#auto_link called href_options for specifying additional tag options on the links generated #1401 [tyler.kovacs@gmail.com]. Example: auto_link(text, :all, { :target => "_blank" }) to have all the generated links open in a new window.
978
979 * Fixed TextHelper#highlight to return the text, not nil, if the phrase is blank #1409 [patrick@lenz.sh]
980
981 * Fixed TagHelper such that :name and 'name' keys in the options doesn't result in two attributes #1455 [take_tk]
982
983 * Ensure that helpers are only available to the controllers where they are defined and their subclasses.  #1394 [kdole@tamu.edu]
984
985 * render("foo/bar") works with a layout again
986
987 * Fixed double-singularization on scaffolded pagination call (Address would be turned into Addres) #1216, #1404 [nilsga]
988
989 * Removed the require hack used by functional testing to work around an earlier bug in rake.
990
991 * Allow distance_of_time_in_words to work with any value that responds to #to_time (like dates) #969
992
993 * Support :render option for :verify #1440 [TobiasLuetke]
994
995 * Updated vendor copy of html-scanner lib to 0.5.2, for bug fixes and optimizations. The :content option may be used as expected--to find a tag whose textual content is a particular value--in assert_tag, now.
996
997 * Changed test requests to come from 0.0.0.0 instead of 127.0.0.1 such that they don't trigger debugging screens on exceptions, but instead call rescue_action_in_public
998
999 * Modernize scaffolding to match the generator: use the new render method and change style from the warty @params["id"] to the sleek params[:id].  #1367
1000
1001 * Include :id in the action generated by the form helper method.  Then, for example, the controller can do Model.find(params[:id]) for both edit and update actions.  Updated scaffolding to take advantage.  #1367
1002
1003 * Add assertions with friendly messages to TestCase#process to ensure that @controller, @request, and @response are set.  #1367
1004
1005 * Arrays, hashes sent via multipart posts are converted to strings #1032 [dj@omelia.org, me@julik.nl]
1006
1007 * render(:layout => true) is a synonym for render(:layout => nil)
1008
1009 * Make sure the benchmarking render method always returns the output of the render.
1010
1011 * render(:action), render(:template) and render() are the only three calls that default to using a layout. All other render calls assume :layout => false. This also fixes send_file, which was applying a layout if one existed for the current action.
1012
1013 * verify with :redirect_to won't redirect if a redirect or render has already been performed #1350
1014
1015 * render(:partial => true) is identical to the behavior of the deprecated render_partial()
1016
1017 * Fixed render(:partial => "...") to use an empty Hash for the local assigns #1365
1018
1019 * Fixed Caching::Fragments::FileStore.delete to not raise an exception if the delete fails.
1020
1021 * Deprecated all render_* methods in favor of consolidating all rendering behavior in Base#render(options). This enables more natural use of combining options, such as layouts. Examples:
1022
1023     +---------------------------------------------------------------+-------------------------------------------------------+
1024     | BEFORE                                                        | AFTER                                                 |
1025     +---------------------------------------------------------------+-------------------------------------------------------+
1026     | render_with_layout "weblog/show", "200 OK", "layouts/dialog"  | render :action => "show", :layout => "dialog"         |
1027     | render_without_layout "weblog/show"                           | render :action => "show", :layout => false            |
1028     | render_action "error", "404 Not Found"                        | render :action => "error", :status => "404 Not Found" |
1029     | render_template "xml.div('stuff')", "200 OK", :rxml           | render :inline => "xml.div('stuff')", :type => :rxml  |
1030     | render_text "hello world!"                                    | render :text => "hello world!"                        |
1031     | render_partial_collection "person", @people, nil, :a => 1     | render :partial => "person", :collection => @people,  |
1032     |                                                               |        :locals => { :a => 1 }                         |
1033     +---------------------------------------------------------------+-------------------------------------------------------+     
1034
1035 * Deprecated redirect_to_path and redirect_to_url in favor of letting redirect_to do the right thing when passed either a path or url.
1036
1037 * Fixed use of an integer as return code for renders, so render_text "hello world", 404 now works #1327
1038
1039 * Fixed assert_redirect_to to work with redirect_to_path #869 [Nicholas Seckar]
1040
1041 * Fixed escaping of :method option in remote_form_tag #1218 [Rick Olson]
1042
1043 * Added Serbia and Montenegro to the country_select #1239 [todd@robotcoop.com]
1044
1045 * Fixed Request#remote_ip in testing #1251 [Jeremy Kemper]
1046
1047 * Fixed that compute_public_path should recognize external URLs, so image_tag("http://www.example.com/images/icon.gif") is not prefixed with the relative url path #1254 [victor-ronr-trac@carotena.net]
1048
1049 * Added support for descending year values in DateHelper#select_year, like select_year(Date.today, :start_year => 2005, :end_year => 1900), which would count down from 2005 to 1900 instead of the other way #1274 [nwoods@mail.com]
1050
1051 * Fixed that FormHelper#checkbox should return a checked checkbox if the value is the same as checked_value #1286 [Florian Weber]
1052
1053 * Fixed Form.disable in Prototype #1317 [Wintermute]
1054
1055 * Added accessors to logger, params, response, session, flash, and headers from the view, so you can write <% logger.info "stuff" %> instead of <% @logger.info "others" %> -- more consistent with the preferred way of accessing these attributes and collections from the controller
1056
1057 * Added support for POST data in form of YAML or XML, which is controller through the Content-Type header. Example request:
1058
1059     Content-Type: application/xml
1060     <request><item><content>HelloWorld</content></item></request>
1061  
1062   ...is the same as:
1063
1064     Content-Type: application/x-yaml
1065     ---
1066     item:
1067       content: HelloWorld
1068
1069   ...is the same as:
1070  
1071     item[content]=HelloWorld
1072  
1073   Which in the end turns into { "item" => { "content" => "HelloWorld" } }. This makes it a lot easier to publish REST web services on top of your regular actions (as they won't care).
1074  
1075   Example Curl call:
1076
1077     curl -H 'Content-Type: application/xml' -d '<request><item><content>KillMeMore</content></item></request>' http://www.example.com/service
1078 </