= 1.2RC1 == FEATURES - Added view helpers (active_scaffold_javascripts, active_scaffold_stylesheets, active_scaffold_ie_stylesheets) to help with asset cacheing (Alexander Semyonov) - Works with Rails 2.1 (2.0 / 1.2.x will continue to be supported by version 1.1) == FIXES - Javascript compatibility with FF3 / Safari 3.1 (Mike Dalessio) see http://groups.google.com/group/activescaffold/browse_thread/thread/d37afa3f2ac687f2/b34ebf62d767bee3 - Avoid ruby deprecation warning in config/list.rb (Dustin Sallings) - Fixes bug where template overrides are ignored when placed in Engines plugins (Mike Dalessio) - Fixed in_place_editor to work with latest control.js - Fixed infinite recursion bug when creating a new record with a new association - Subform action name conflict fix - Helpful warning message if record_select is not on a column with an association = 1.1.1 == FIXES * rendering for rails 1.2.x = 1.1.0 == FEATURES * `render :super' now accepts a :locals option * parameter-based conditions now support arrays of values (e.g. users?name[]=bob&name[]=fred becomes "name IN ('bob', 'fred')") == FIXES * `render :super' now works from active_scaffold_overrides without endlessly looping * `render :super' no longer assumes that the *immediate* caller was the override template file * `render :super' works better with windows file names (e.g. c:/...) * reload_if_empty() javascript now uses GET * inplace_edit now uses POST instead of GET * adding time and date fields to ignore list for determining whether subform row is empty. previously only datetime was ignored. * closed a potential internet explorer security issue in dhtml_history.js library = 1.1.0 RC1 == FEATURES === LIST * row class: new helper method (list_row_class) gets called for each record in the list and returns a CSS class. * automatically link to the :show action of singular associations. this is similar to the nested scaffolds for plural associations. * column.list_ui: good for when you want to render multiple columns the same way. * * built-in list interface options: * * * for inplace edits - checkbox * Support :joins_for_collection in column_calculation * inplace_edit option on list columns. currently works for text boxes and booleans === CREATE/UPDATE * file uploads - largely taken care of by file_column bridge. * * automatically detects if FileColumn is installed. If so, uses it, and sets the form_ui for file columns to be file upload fields * * sets multipart? on config.create and config.update if file_columns are used on the target model * * Posts through iframe to give ajax-style file uploads * * Image columns are recognized and previewed as such * * Ability to delete a file * form_ui * * form interface options are now supported through helper method named active_scaffold_input_#{form_ui}. if you want a different form interface than activescaffold normally provides, you may configure the form_ui for that column to use one of these methods. you can easily define your own, too. * * built-in form interface options: * * * for associations - singular_association, plural_association, select, record_select * * * others - select, checkbox, country, password, textarea, usa_state, virtual, boolean * * subforms respect form_ui settings. but if form_ui is empty, it will be set to :select to disable subform nesting. * boolean columns: when the database column allows nil, we now add a third option to the dropdown so you don't *have* to pick true or false. * new :params option for a column lets you specify additional parameters to accept when the given column is on the form. this is for when a column needs to submit multiple values to work. * improved support for associations in parameters. for simply selecting/deselecting associations, activescaffold will now recognize `:user => 5' or `:users => [1, 2, 5]'. * Supply a unique id from active_scaffold_input_options for form fields. * added after_update_save controller override method === EMBEDDING * `render :active_scaffold' now accepts a :conditions option, which is a weaker but more flexible variation of :constraints * active_scaffold_includes now accepts a frontend name. this is necessary so you can include the proper assets even if active_scaffold isn't configured on the current controller (it's embedded). * polymorphic constraints are now supported, assuming params[:parent_model].to_s is the proper content for the polymorphic _type field. * Beefing up the constraint system so it can handle has_one/belongs_to. Specifically, it can now disassociate a previous relationship before setting a new one. For example, Bear has_one Den. If creating a new Den, constrained to a certain Bear, the constraints system will now disassociate any previous Den from the Bear before associating the new one. === NESTING * :through associations may now be nested * nested#shallow_delete === SEARCH * fieldsearch module handles booleans better - provides third option so you don't *have* to search on a boolean column * In field search lock_version is the only magic column. May want to search by :id or date fields. === GENERAL * use #human_name for the column label when possible. * merge_conditions now supports hash conditions (and should forever support every conditions style that ActiveRecord supports) * action links may now remove an action link with #clear_link * action links have a new :controller option, so you don't have to sneak it into :params anymore * dhtml history may now be disabled * authorized_for? in ActiveRecordPermissions now calls respond_to? only as much as needed * removing an assert_valid_keys? call in active_record_permissions#authorized_for?. it just wasn't worth the CPU time. * render :super is now extension-agnostic. ex: `render :super` in list.html.erb will properly find list.rhtml as the "parent" template. * Auto-bridge loading mechanism. Bridges integrated into core. * inherited_view_paths: ability to specify other folders to look for if missing view occurs == FIXES === LIST * the calculation row now updates on edit/create/destroy. * list now returns to page 1 if the current page has no records. * list will now try to reload the scaffold on a previous page if you delete the last entry on the current page. * if there were no end-of-line record actions, then any column actions would not use ajax. this was because the loading indicator was missing, which messed up the action link javascript. * theme == :default no longer attempts to use Rico.Corner * column_empty? now treats any values equal to list.empty_field_text as empty, too. * better :method handling for action links. * the ' ' fix for ie6 was failing for value types that weren't nil and didn't respond to empty? * if someone sets singular columns to link to the 'nested' action, the link will now render with the appropriate id parameter. * do not propagate params[:search] through action links that link to other controllers. closes issue #447. * reworked rendering of pagination links for IE === CREATE/UPDATE * constraints are now applied to a record during the #new action, in case any custom form rendering depends on the constrained column * the default options_for_association_conditions now returns nil for :through associations * will not update a record attribute if the value hasn't changed. this is a workaround for an activerecord bug with has_one associations. * attributes_hash_is_empty? didn't handle multi-parameter attribute names like 'created_at(5i)', which resulted in extra records being created from subforms. * Hide hidden column header labels - like lock_version - in sub-forms. * configuring url_for to not escape ampersands for the add_new_url in association footers (the 'create another' button's url) * attribute_params.rb#attributes_hash_is_empty now checks defaults by converting them to strings to match the parameter values. === NESTING * no longer trying to nest a polymorphic association (there's no consistent model to list) * fixed :conditions generation for nested/embedded scaffolds - was causing a bind variable mismatch. === SEARCH * search/livesearch should no longer choke on virtual columns * the search/live_search forms will now ignore params[:search] when generating the submit url === GENERAL * no longer blow up on data strings with unintentional % characters. as_() was sprintf'ing too frequently. * link_to no longer blows up on controller symbols * activescaffold no longer loses information on columns - `config.columns.add', `config.columns = [...]', and `config.columns.exclude' all now affect the *inheritability* of a column by the other modules (list, create, update, etc.), but all columns remain in config.columns. this also makes _id columns behave better. * dhtml history no longer saves null:null:null history bookmark. * if there aren't any columns to search on, then activescaffold no longer creates an empty WHERE clause * render :update was failing in some cases because activescaffold wasn't expecting blocks to the render call. * quoting the scaffold id for report_500_response() * adding :update_column => :post to the RESTful routing. closes issue #448. == MISC * reorganized the helpers and extensions * ui_type is now only an alias for form_ui * improvements to exception messages * when initializing in production mode, activescaffold now recovers gracefully if it can't copy asset files * RESTful routing is now accomplished in a way that'll let other add-ons extend the meaning of :active_scaffold => true. * fixes for edge rails compatibility * small improvements for localization accessibility * minor string renaming (will affect localization tables, though) * closed a few XSS holes