* The "Files & Images" (`AssetAdmin`) interface shows the file tree next to a flat list.
It lists images as thumbnails, and allows to search by file category.
* The CMS editor can insert multiple images as once, finds them more efficiently,
and shows better previews on what's being inserted.
* More extensible architecture for inserting media types other than images or flash objects.
* All interfaces expose their currently managed content structure as linked breadcrumbs,
aiding navigation and clarifying content hierachies of e.g. Pages or Group->Member relationships.
* Removed prototype.js/behaviour.js usage from nearly all core interfaces
### Framework ###
* New `Config` API to standardise configuration contained in objects (early stage)
* New `GridField` API to replace `TableListField` and `ComplexTableField`.
More decoupled architecture, using the new ORM.
* A `GridFieldDetailForm` interface allows editing of master/detail relationships,
including traversing nested relationships (which wasn't possible before due to popup-in-a-popup problem).
Detail forms fully support the TinyMCE editor, as they're loaded into the main CMS interface rather than a popup.
* Redesigned `ModelAdmin` interface building on top of `GridField`.
Search results show by default, clearer layout of interfaces managing multiple classes.
* Interfaces like `ModelAdmin` can make use of TinyMCE, including insertion of images and links.
* New `UploadField` API to replace `ImageField` and `FileIframeField`.
Allows for multiple file uploads through HTML5 (with fallbacks),
inline editing of file properties after upload, and management of has_many/many_many file relationships.
* The "Users' (`SecurityAdmin`) interface manages groups in a list rather than a tree,
and uses `GridField` to list users/groups/roles. Adding members to groups is now possible
with standard `GridField` autocomplete components. Roles and groups are assigned
via an inline autocomplete field, which is quicker and smaller than a dedicated table field.
* Overloadable templates for most form fields. `FormField->setAttribute()` to enable HTML5 attributes
## TODO ##
A non-exhaustive, high-level list of features we haven’t addressed yet:
* List view for pages
* Gallery view for files
* In-content file upload (and "insert from web")
* Widget editing in CMS (most likely separated into a module)
* New batch action system with interactive dialogs
* ReportAdmin
* Configurable two-level CMS menu
* SQL Server and PostgreSQL core support
* Performance fixes for Internet Explorer
## Upgrading ##
See [3.0.0](/changelogs/3.0.0) for previous details.
Note that you'll get PHP notice-level errors automatically
when using deprecated functionality (through the new `Deprecation` class).
## Changelog ##
### API Changes
* 2012-03-12 [2d151b8](https://github.com/silverstripe/sapphire/commit/2d151b8) Deprecated TableListField and ComplexTableField, use GridField instead (Ingo Schommer)
* 2012-03-10 [7de5bf5](https://github.com/silverstripe/sapphire/commit/7de5bf5) Updated throwExceptionOnBadDataType setter to be standard setThrowExceptionOnBadDataType(), added getThrowExceptionOnBadDataType(). (Sam Minnee)
* 2012-03-09 [e6be56e](https://github.com/silverstripe/sapphire/commit/e6be56e) Removed FormResponse class, use custom HTTP status codes to communicate state on text/html responses, or use text/json for more structured data responses (Ingo Schommer)
* 2012-03-09 [01b24da](https://github.com/silverstripe/sapphire/commit/01b24da) Removed Member::isAdmin(), use Permission::check('ADMIN') instead API CHANGE Removed Member->setByCheckboxes()/setByCheckboxSetField(), Use setByIdList() and/or a CheckboxSetField instead API CHANGE Removed Member->addManyByGroupID(), Use DataList->addMany() instead. API CHANGE Removed Member->removeManyByGroupID(). Use DataList->removeMany() instead. API CHANGE Removed Member->getGroupsFromIDs(). Use DataObject::get("Group")->byIds() instead. API CHANGE Removed Member->addManyByCodename()/removeManyByCodename(). Don\'t rely on codename (Ingo Schommer)
* 2012-03-09 [4216a09](https://github.com/silverstripe/sapphire/commit/4216a09) Removed BasicAuth::enable()/disable(), use protect_entire_site() (Ingo Schommer)
* 2012-03-09 [27fd3e5](https://github.com/silverstripe/sapphire/commit/27fd3e5) Removed Session::load_config() (no longer supported) (Ingo Schommer)
* 2012-03-09 [1f01e11](https://github.com/silverstripe/sapphire/commit/1f01e11) Removing ScaffoldingComplexTableField, using GridField instead to edit relationships through FormScaffolder and DataObject->scaffoldFormFields() (Ingo Schommer)
* 2012-03-09 [e12a3a4](https://github.com/silverstripe/sapphire/commit/e12a3a4) ModelAdmin uses GridField, DataList and new layout. Removed ModelAdmin_CollectionController, ModelAdmin_RecordController and related functionality. API CHANGE Removed ModelAdmin->ResultColumns()/ColumnSelectionField, selection of own fields no longer possible through the UI, to be replaced by a more generic GridField component (Ingo Schommer)
* 2012-03-09 [818c341](https://github.com/silverstripe/sapphire/commit/818c341) Created GridFieldAddNewButton, replacing the one that was previously hardcoded in GridFieldToolbarHeader (Sam Minnee)
* 2012-03-09 [12618e2](https://github.com/silverstripe/sapphire/commit/12618e2) Added targetFragment argument to GridFieldAddExistingAutocompleter, so that its location can be changed. Updated CSS and HTML to allow for this. (Sam Minnee)
* 2012-03-09 [d795a55](https://github.com/silverstripe/sapphire/commit/d795a55) Removed 'add new' button from GridFieldToolbarHeader, instead opting to include two HTML fragments: toolbar-header-left and toolbar-header-right. (Sam Minnee)
* 2012-03-09 [92a3535](https://github.com/silverstripe/sapphire/commit/92a3535) Added targetFragment argument to GridFieldExportButton to control button placement. Moved search fields to 2nd argument. (Sam Minnee)
* 2012-03-09 [2cb67ef](https://github.com/silverstripe/sapphire/commit/2cb67ef) DataObject::getComponents() should use default value for limit as NULL (Stig Lindqvist)
* 2012-03-09 [d0a0df0](https://github.com/silverstripe/sapphire/commit/d0a0df0) Removed Security::$useSalt static, please use a custom PasswordEncryptor instead (Sean Harvey)
* 2012-03-09 [71c2a22](https://github.com/silverstripe/sapphire/commit/71c2a22) Removed support for extraDBFields method in DataExtension, please ensure you are using extraStatics on your extension classes (Sean Harvey)
* 2012-03-09 [e9e7655](https://github.com/silverstripe/sapphire/commit/e9e7655) Added SS_Sortable, an extra interface to apply to SS_Lists. (Sam Minnee)
* 2012-03-09 [f000a47](https://github.com/silverstripe/sapphire/commit/f000a47) Added SS_Filterable, an extra interface to apply to lists. (Sam Minnee)
* 2012-03-09 [09d6fa7](https://github.com/silverstripe/sapphire/commit/09d6fa7) Renamed GridFieldDefaultColumns to GridFieldDataColumns #6921 (Stig Lindqvist)
* 2012-03-09 [a55e06f](https://github.com/silverstripe/sapphire/commit/a55e06f) Introduce SS_Limitable class for adding to SS_Lists that have limit capability. API CHANGE: Deprecated SS_List::getRange() in favour of SS_Limitable::limit(). API CHANGE: Introduce SS_Limitable::limit($limit, $offset = 0) as the only modern way of specifying limits; deprecate all others. (Sam Minnee)
* 2012-03-09 [6d0b0d6](https://github.com/silverstripe/sapphire/commit/6d0b0d6) Removing GridFieldDeleteAction and moved functionality into GridFieldRemoveButton #6921 (Stig Lindqvist)
* 2012-03-09 [8b82dae](https://github.com/silverstripe/sapphire/commit/8b82dae) Renaming of gridfield components #6921 (Stig Lindqvist)
* 2012-03-09 [c59c717](https://github.com/silverstripe/sapphire/commit/c59c717) Removed CustomRequiredFields, please use custom validation instead BUGFIX Ensure validators still used in ModelAdmin forms (Sean Harvey)
* 2012-03-09 [9f3344b](https://github.com/silverstripe/sapphire/commit/9f3344b) Removed built-in behaviour.js client-side form validation. This is no longer supported. Please use custom client-side validation instead. (see 3.0.0 changelog for more information) (Sean Harvey)
* 2012-03-09 [f86e53b](https://github.com/silverstripe/sapphire/commit/f86e53b) Removed Validator::showError(), Validator::getError() and Validator::getCombinedError(). Use Validator::getErrors() instead (Sean Harvey)
* 2012-03-08 [c117ef5](https://github.com/silverstripe/sapphire/commit/c117ef5) Removed LeftAndMain->RootForm(), concept no longer applies in 3.0 UI. Use EmptyForm() or EditForm() (Ingo Schommer)
* 2012-03-08 [5800db0](https://github.com/silverstripe/sapphire/commit/5800db0) Allow for the creation of custom GridField fragments. (#6911) (Sam Minnee)
* 2012-03-08 [1fd8d19](https://github.com/silverstripe/sapphire/commit/1fd8d19) FormAction::FieldHolder() now returns just the Field(), so that a FieldList::forTemplate() returns a sensible result for an action list. (Sam Minnee)
* 2012-03-08 [e4dbf80](https://github.com/silverstripe/sapphire/commit/e4dbf80) Added FieldList::forTemplate(), so that by default a FieldList will be rendered in its template as a concatenation of FieldHolder values. API CHANGE: Removed unnecessary HiddenFieldList class. (Sam Minnee)
* 2012-03-08 [ba93028](https://github.com/silverstripe/sapphire/commit/ba93028) Added Form::VisibleFields() and FieldList::VisibleFields(), which list everything except hidden fields, to assist with the creation of custom form layouts. (Sam Minnee)
* 2012-03-07 [feca839](https://github.com/silverstripe/sapphire/commit/feca839) Deprecated HasManyComplexTableField and ManyManyComplexTableField, use GridField with GridFieldConfig_RelationEditor instead (Ingo Schommer)
* 2012-03-07 [55a0fb1](https://github.com/silverstripe/sapphire/commit/55a0fb1) Deprecated FormField->describe(), use setDescription() instead. Actually use the description in form fields other than FormAction. (Ingo Schommer)
* 2012-03-05 [0117b32](https://github.com/silverstripe/sapphire/commit/0117b32) Removed MemberTableField, use GridField with GridFieldConfig_RelationEditor instead (Ingo Schommer)
* 2012-03-05 [3ef957b](https://github.com/silverstripe/sapphire/commit/3ef957b) SSF-53 : add ability to set an customised class of icons for a GridField_Action button (Normann Lou)
* 2012-03-02 [fda7a6a](https://github.com/silverstripe/sapphire/commit/fda7a6a) Remove custom File::instance_get(), use a custom DataQuery in case you want to exclude large File.Content fields from the query results (Ingo Schommer)
* 2012-03-02 [fb3c18d](https://github.com/silverstripe/sapphire/commit/fb3c18d) Remove File->uploadMetadataFields(), use new UploadField instead (Ingo Schommer)
* 2012-03-02 [424da6a](https://github.com/silverstripe/sapphire/commit/424da6a) Moved NZGovtPasswordValidator to new 'securityextras' module (Ingo Schommer)
* 2012-03-01 [0ab43cd](https://github.com/silverstripe/sapphire/commit/0ab43cd) Moved "IP Address restrictions for groups" feature to a new "ipaddress-restriction" module (SSF-53) (Ingo Schommer)
* 2012-02-21 [27cdc40](https://github.com/silverstripe/sapphire/commit/27cdc40) Moved AssetAdmin-specific fields from Folder->getCMSFields() to AssetAdmin->getEditForm(). For modifying those fields via DataExtension, please use AssetAdmin->updateEditForm() instead (Ingo Schommer)
* 2012-02-21 [374ed19](https://github.com/silverstripe/sapphire/commit/374ed19) Change variable expose method in TemplateGlobalProvider and TemplateIteratorProvider to (a) not clash with each other and, (b) be less generic (Hamish Friedlander)
* 2012-02-20 [fb246bd](https://github.com/silverstripe/sapphire/commit/fb246bd) Rename getExposedVariables to match coding conventions (Hamish Friedlander)
* 2012-02-16 [a196135](https://github.com/silverstripe/sapphire/commit/a196135) Replace jQuery.metadata in DateField markup with HTML5 data attributes (Ingo Schommer)
* 2012-02-16 [5911abc](https://github.com/silverstripe/sapphire/commit/5911abc) Removed prototype.js style $() alias usage for document.getElementById() to avoid confusion with the more common jQuery() alias. API CHANGE Removed several unsed JavaScript globals: sprintf(), Number.prototype.CURRENCIES, Number.prototype.toCurrency(), String.prototype.ucfirst(), jQuery.fn.clearFields(), jQuery.fn.clearInputs() MINOR Removed prototype_improvements.js and jquery_improvements.js files, now contained in individual component code (or removed altogether) (Ingo Schommer)
* 2012-02-09 [edf6cd6](https://github.com/silverstripe/sapphire/commit/edf6cd6) Remove ArrayData::forTemplate(), because it has little usefulness corrupts ViewableData customisation. (Dominik Beerbohm)
* 2012-02-03 [b8cc208](https://github.com/silverstripe/sapphire/commit/b8cc208) Deprecated FileIframeField and ImageField, use UploadField instead (Ingo Schommer)
* 2012-02-02 [9c0a606](https://github.com/silverstripe/sapphire/commit/9c0a606) Deprecated SimpleImageField, use FileField or UploadField with setAllowedExtensions() (Ingo Schommer)
* 2012-02-01 [d261f44](https://github.com/silverstripe/sapphire/commit/d261f44) silverstripe_version file now contains the plain version number, rather than an SVN path (Ingo Schommer)
* 2012-01-31 [6ecf7ff](https://github.com/silverstripe/sapphire/commit/6ecf7ff) Deprecated Text->EscapeXML(), use DBField->XML() instead (Ingo Schommer)
* 2012-01-31 [618d767](https://github.com/silverstripe/sapphire/commit/618d767) Removed XML escaping in DBField->LowerCase() and UpperCase(), in order to consistently allow SSViewer to deal with casting. Affects subclasses like Text, Varchar and HTMLText. API CHANGE Deprecated StringField->Lower() and Upper(), use String->LowerCase() and UpperCase() instead. Moved methods from DBField to StringField. (Ingo Schommer)
* 2012-01-30 [2d898ca](https://github.com/silverstripe/sapphire/commit/2d898ca) Added GridFieldExporter, a GridField component that adds export functionality, and added it to the security admin. (Sam Minnee)
* 2012-01-26 [7f09b69](https://github.com/silverstripe/sapphire/commit/7f09b69) DataList::subtract and DataQuery::subtract for subtracting a list from another list (Stig Lindqvist)
* 2012-01-25 [c396c2d](https://github.com/silverstripe/sapphire/commit/c396c2d) Security admin supports adding, removing and searching for members by relations via gridfield (Stig Lindqvist)
* 2012-01-24 [ed88952](https://github.com/silverstripe/sapphire/commit/ed88952) Added two predefined GridFieldConfigs and removal of unsused accessors (Stig Lindqvist)
* 2012-01-14 [9451993](https://github.com/silverstripe/sapphire/commit/9451993) Moved DataObject->writeWithoutVersion() to Versioned extension BUGFIX Don't create new version on related VirtualPage records in SiteTree->onAfterWrite() when the write was triggered through writeWithoutVersion(). Use a new $_nextWriteWithoutVersion flag replacing the -1 Version number for this purpose (AIR-97) (Ingo Schommer)
* 2011-12-22 [876f4c5](https://github.com/silverstripe/sapphire/commit/876f4c5) Modify extensions system to support new config system. Statics are now declared directly on extensions, and there is an add_to_class method extensions can hook into to modify class configuration (Hamish Friedlander)
* 2011-12-22 [0ab171d](https://github.com/silverstripe/sapphire/commit/0ab171d) Add config property on Object as shortcut to objects own properties (Hamish Friedlander)
* 2011-12-22 [1b05a33](https://github.com/silverstripe/sapphire/commit/1b05a33) Strip out old static accessors from Object (Hamish Friedlander)
### Features and Enhancements
* 2012-03-13 [5eef837](https://github.com/silverstripe/sapphire/commit/5eef837) Add count of backlinks to file details (Andrew O'Neil)
* 2012-03-12 [51ff400](https://github.com/silverstripe/sapphire/commit/51ff400) Allowing ajax responses on CMS form submissions to "break out" of the form element they were triggered through, by looking for existence of ".cms-content" node in response (Ingo Schommer)
* 2012-03-12 [f63497d](https://github.com/silverstripe/sapphire/commit/f63497d) Extension arguments are now passed through to add_to_class() static function on Extension classes. BUGFIX FulltextSearchable didn't pass through arguments, use now available $args parameter with FulltextSearchable::add_to_class() (Sean Harvey)
* 2012-03-12 [b8f7f4c](https://github.com/silverstripe/sapphire/commit/b8f7f4c) SSF-25 - removed find button when linking existing user - also made SCSS less specific so that it adds styling for the link existing button across the CMS. (jbridson)
* 2012-03-09 [dd517c4](https://github.com/silverstripe/sapphire/commit/dd517c4) Allowing to override importer instances in ModelAdmin (fixes #2982) (Ingo Schommer)
* 2012-03-09 [7125cd4](https://github.com/silverstripe/sapphire/commit/7125cd4) Piston in symfony yaml library (Hamish Friedlander)
* 2012-03-09 [1f7263e](https://github.com/silverstripe/sapphire/commit/1f7263e) Updated default many-many grid field to show "add existing" and "add new" side by side. (Sam Minnee)
* 2012-03-09 [426f167](https://github.com/silverstripe/sapphire/commit/426f167) GridFieldComponents will now use SS_Filterable, SS_Sortable, and SS_Limitable to determine which features are applicable to the List provided, and either throw an error, or silently disable the feature. API CHANGE: Added throwExceptionOnBadDataType() to GridFilterFilter, GridFieldPaginator, and GridFieldSortableHeader. (Sam Minnee)
* 2012-03-09 [49267db](https://github.com/silverstripe/sapphire/commit/49267db) Shortcodes now support commas as delimiter for attributes (thanks aoneil for help with the regex!) (trac #6868) BUGFIX HtmlEditorField not inserting shortcodes correctly (trac #6868) (Sean Harvey)
* 2012-03-08 [2ea7c8d](https://github.com/silverstripe/sapphire/commit/2ea7c8d) SSF-25 : remove GridField filter component for search result in ModelAdmin (Normann Lou)
* 2012-03-08 [d35d750](https://github.com/silverstripe/sapphire/commit/d35d750) SSF-25 : enable to remove component from a GridFieldConfig. (Normann Lou)
* 2012-03-08 [d24c2ef](https://github.com/silverstripe/sapphire/commit/d24c2ef) SSF-25 : change to use GridField for showing searched results in stead of TableListField (Normann Lou)
* 2012-03-08 [649d84a](https://github.com/silverstripe/sapphire/commit/649d84a) SSF-106 - styled the input for pagination and changed measurements to increments of $gf_grid_x and $gf_grid_y (jbridson)
* 2012-03-08 [bd85d03](https://github.com/silverstripe/sapphire/commit/bd85d03) SSF-53 - hid the find button from the link existing member field on users groups. (jbridson)
* 2012-03-08 [7673369](https://github.com/silverstripe/sapphire/commit/7673369) SSF-25 : use a title if users/devs has set one instead using a hard-coded one (Normann Lou)
* 2012-03-08 [fd828fc](https://github.com/silverstripe/sapphire/commit/fd828fc) SSF-53 : change the icon class for "Link Existing" button to 'chain--plus' (Normann Lou)
* 2012-03-08 [4ad7e8e](https://github.com/silverstripe/sapphire/commit/4ad7e8e) Input box for going to a page in gridfield (Andrew O'Neil)
* 2012-03-08 [6b910ca](https://github.com/silverstripe/sapphire/commit/6b910ca) Disable batch action selection unless we're in multiselect mode (no way to single select in tree), updating chosen.js and jquery.button state properly (Ingo Schommer)
* 2012-03-08 [c5a4279](https://github.com/silverstripe/sapphire/commit/c5a4279) SSF-53 - styled the label for the parent group input field on the users groups page. (jbridson)
* 2012-03-08 [7331a06](https://github.com/silverstripe/sapphire/commit/7331a06) SSF-53 : add gridfield-button-unlink to unlink button that removes a member from a group (Normann Lou)
* 2012-03-08 [1de30d5](https://github.com/silverstripe/sapphire/commit/1de30d5) SSF-53 : remove literal field for explanation text of Parent dropdown, use a right title for it, instead (Normann Lou)
* 2012-03-07 [69a8659](https://github.com/silverstripe/sapphire/commit/69a8659) Using 'autoresize' TinyMCE plugin in HTMLEditorField default config, in order to save space when no content is entered into the field (Ingo Schommer)
* 2012-03-07 [1facb50](https://github.com/silverstripe/sapphire/commit/1facb50) SSF-53 : Change the Labels for "Save" and "Delete" button for an "adding new form" of GridField to "Create" and "Cancel", apply different logic for Cancel (Normann Lou)
* 2012-03-07 [550cb7d](https://github.com/silverstripe/sapphire/commit/550cb7d) SSF-30 adding the ability to set the parent folder of a file. (Julian Seidenberg)
* 2012-03-07 [e5ee4c9](https://github.com/silverstripe/sapphire/commit/e5ee4c9) SSF-106 - styled first and last page buttons on datagrid pagination. (jbridson)
* 2012-03-07 [c0e1500](https://github.com/silverstripe/sapphire/commit/c0e1500) SSF-30 - changed the SCSS so that the styling on the view tabs is more specific to pages and files. (jbridson)
* 2012-03-07 [d28e32a](https://github.com/silverstripe/sapphire/commit/d28e32a) SSF-30 - moved some code so that the css doesn't override the negative text indent on the view tabs. (jbridson)
* 2012-03-06 [79d420f](https://github.com/silverstripe/sapphire/commit/79d420f) Member->DirectGroups() (to complement Group->DirectMembers(), and aid with relationship saving through Member->getCMSFields()) (Ingo Schommer)
* 2012-03-06 [4e9a4bd](https://github.com/silverstripe/sapphire/commit/4e9a4bd) Changed batch action logic, no longer updates applicable pages on batch action drop down selection, as this selection triggers the action itself. To be replaced with a more powerful dialog system in case the action is disallowed on some nodes (Ingo Schommer)
* 2012-03-06 [ea4bbe5](https://github.com/silverstripe/sapphire/commit/ea4bbe5) Allowing individual parent selection in tree, rather than auto-selecting children (precondition for applying batch actions independently) (Ingo Schommer)
* 2012-03-06 [51bae9e](https://github.com/silverstripe/sapphire/commit/51bae9e) Allowing to save ManyManyList with multiple foreign keys (e.g. required to add to an overloaded Group->Members() relationship) (Ingo Schommer)
* 2012-03-06 [bd1f652](https://github.com/silverstripe/sapphire/commit/bd1f652) Improved focus handling in GridField (Ingo Schommer)
* 2012-03-06 [ee37adb](https://github.com/silverstripe/sapphire/commit/ee37adb) SSF-33 Binding the 'cms-link-ajax' class to a javascript function that triggers a CMS ajax method and displays a status message (Julian Seidenberg)
* 2012-03-06 [597b12e](https://github.com/silverstripe/sapphire/commit/597b12e) SSF-53 - Styled the pagination and icons on export to CSV button on User datagrid. (jbridson)
* 2012-03-06 [ebf23ab](https://github.com/silverstripe/sapphire/commit/ebf23ab) SSF-33 always selecting the first tab (list view) when doing a search (Julian Seidenberg)
* 2012-03-06 [e0bd5d1](https://github.com/silverstripe/sapphire/commit/e0bd5d1) SSF-106 adding a "no items found" message when returning an empty grid field (Julian Seidenberg)
* 2012-03-06 [2552bae](https://github.com/silverstripe/sapphire/commit/2552bae) SSF-53 : add a 'filtered' class to filter button and reset button if its input field has filtering value (Normann Lou)
* 2012-03-06 [a715785](https://github.com/silverstripe/sapphire/commit/a715785) SSF-106 adding the ability to turn off and on the "add new" button on the GridFieldTitle (Julian Seidenberg)
* 2012-03-05 [6f71186](https://github.com/silverstripe/sapphire/commit/6f71186) Replaced SecurityAdmin tree view for groups with three top-level tabs: "Users", "Groups" and "Roles" (Ingo Schommer)
* 2012-03-05 [ad5cf1e](https://github.com/silverstripe/sapphire/commit/ad5cf1e) Using ListboxField/chosen.js to assign roles in Group->getCMSFields(). Improved explanation of groups in the user interface. (Ingo Schommer)
* 2012-03-05 [e9a2de3](https://github.com/silverstripe/sapphire/commit/e9a2de3) Using GridField to edit roles in SecurityAdmin (Ingo Schommer)
* 2012-03-05 [5d565dc](https://github.com/silverstripe/sapphire/commit/5d565dc) Added ListboxField->setDisabledItems() and setDefaultItems() (similar to CheckboxSetField API) (Ingo Schommer)
* 2012-03-05 [10a85f4](https://github.com/silverstripe/sapphire/commit/10a85f4) Scaffolding GridFieldRelationAdd->searchFields if required, making constructor argument optional (Ingo Schommer)
* 2012-03-05 [0762be9](https://github.com/silverstripe/sapphire/commit/0762be9) Renamed GridFieldConfig_ManyManyEditor to GridFieldConfig_RelationEditor, to be more in line with underlying component naming, and more accurate (as it allows editing has_many relations as well). Removed $fieldToSearch argument from its constructor to keep config API consistent, should use getComponentByType() for configuration. Added GridFieldConfig_RecordEditor (Ingo Schommer)
* 2012-03-05 [6e3ceef](https://github.com/silverstripe/sapphire/commit/6e3ceef) Relationship saving in ListboxField (preparing for chosen.js usage), escaping commas in payload when serialising multiple values into a single field (Ingo Schommer)
* 2012-03-05 [7a97b52](https://github.com/silverstripe/sapphire/commit/7a97b52) SSF-53 : add customised icon class for relational 'Export to CSV' button. (Normann Lou)
* 2012-03-05 [d26e68c](https://github.com/silverstripe/sapphire/commit/d26e68c) SSF-53 : add customised icon class for relational 'Find' button and 'Link Existing' button (Normann Lou)
* 2012-03-05 [79d52a2](https://github.com/silverstripe/sapphire/commit/79d52a2) SSF-53: put a unlink button in the "Actions" column rather than holding a separate column for easy styling (Normann Lou)
* 2012-03-02 [4662872](https://github.com/silverstripe/sapphire/commit/4662872) Using chosen.js for group selection in Member->getCMSFields() (Ingo Schommer)
* 2012-03-02 [8fa2664](https://github.com/silverstripe/sapphire/commit/8fa2664) Support numeric array values in CheckboxSetField (?Field[]=val1&Field[]=val2 instead of ?Field[val1]=1&Field[val2]=1) (Ingo Schommer)
* 2012-03-02 [98e1fed](https://github.com/silverstripe/sapphire/commit/98e1fed) File::$app_categories to replace switch statement in File->appCategory(), and expose data to other use cases (such as filter drop downs in AssetAdmin) (Ingo Schommer)
* 2012-03-02 [9f5e26d](https://github.com/silverstripe/sapphire/commit/9f5e26d) Generic search form uses loadPanel() rather than being tied to GridField (requires backend changes, see AssetAdmin), and uses jquery.form to do resets (Ingo Schommer)
* 2012-03-02 [1175c69](https://github.com/silverstripe/sapphire/commit/1175c69) SSF-53 : add ability to use translated button label for 'Add New' and 'Link Existing' (Normann Lou)
* 2012-03-02 [45927b9](https://github.com/silverstripe/sapphire/commit/45927b9) SSF-53: add customised class to Member's GridField in SecurityAdmin (Normann Lou)
* 2012-03-02 [5548c66](https://github.com/silverstripe/sapphire/commit/5548c66) SSF-53 reordering the components that added to group GridField in CMS so that it appears same as the landing view of SecurityAdmin (Normann Lou)
* 2012-03-02 [58ffbe8](https://github.com/silverstripe/sapphire/commit/58ffbe8) SSF-106 - added padding to non-sortable <th> on gridfield (jbridson)
* 2012-03-01 [a2afe4e](https://github.com/silverstripe/sapphire/commit/a2afe4e) Support multiple search fields in GridFieldRelationAdd, and allowing custom result formatting (SSF-53) (Ingo Schommer)
* 2012-03-01 [c3f4db1](https://github.com/silverstripe/sapphire/commit/c3f4db1) Using new UploadField in ForeignKey scaffolding, replacing deprecated ImageField/FileField classes (Ingo Schommer)
* 2012-03-01 [f5c4bc0](https://github.com/silverstripe/sapphire/commit/f5c4bc0) Ensure that broken File links receive an "ss-broken" class, just like broken SiteTree links (Sean Harvey)
* 2012-03-01 [898c8f5](https://github.com/silverstripe/sapphire/commit/898c8f5) [file_link id=n] shortcode support for file links in HtmlEditorField (Sean Harvey)
* 2012-03-01 [50119d2](https://github.com/silverstripe/sapphire/commit/50119d2) SSF-106 - added styling for the filter and reset buttons (jbridson)
* 2012-02-29 [c0f65bf](https://github.com/silverstripe/sapphire/commit/c0f65bf) SSF-106 - changed the edit and delete buttons to match the icons on the design (jbridson)
* 2012-02-28 [804e2da](https://github.com/silverstripe/sapphire/commit/804e2da) Breadcrumbs support in GridFieldPopupForms (CMS only) (Ingo Schommer)
* 2012-02-27 [3936909](https://github.com/silverstripe/sapphire/commit/3936909) working delete button (Julian Seidenberg)
* 2012-02-24 [58d4858](https://github.com/silverstripe/sapphire/commit/58d4858) Date::DayOfMonth() now supports ordinal argument, so you can get somehing like "10th" or "2nd". Also supported in Date::RangeString (Sean Harvey)
* 2012-02-24 [550f754](https://github.com/silverstripe/sapphire/commit/550f754) File and Image CMSFields styling (Julian Seidenberg)
* 2012-02-23 [7a755da](https://github.com/silverstripe/sapphire/commit/7a755da) Trigger event when new or edit link is clicked (Andrew O'Neil)
* 2012-02-22 [1ebd83d](https://github.com/silverstripe/sapphire/commit/1ebd83d) styled the header of the datagrid (SSF-106) (Felipe Skroski)
* 2012-02-21 [9df1487](https://github.com/silverstripe/sapphire/commit/9df1487) Allow to batch-add components via GridFieldConfig->addComponents() (Ingo Schommer)
* 2012-02-21 [abedf2a](https://github.com/silverstripe/sapphire/commit/abedf2a) Confirming deletion of records in GridField via JavaScript alert (Ingo Schommer)
* 2012-02-20 [0acaf39](https://github.com/silverstripe/sapphire/commit/0acaf39) "Add" for gridfield (Andrew O'Neil)
* 2012-02-17 [7602d08](https://github.com/silverstripe/sapphire/commit/7602d08) Fluent interface in Form API by returning instance from all setters (Ingo Schommer)
* 2012-02-17 [abfa16f](https://github.com/silverstripe/sapphire/commit/abfa16f) Using native jQuery UI buttons and icon styling for a less coupled implementation (e.g. assuming that a "constructive" button always has a specific icon, or one at all). All CMS UI buttons switched to use <button> markup, which allows for inline icons and correctly aligned multi-line button labels. (Ingo Schommer)
* 2012-02-16 [9190bc4](https://github.com/silverstripe/sapphire/commit/9190bc4) Support for <legend> tags in CompositeField (Ingo Schommer)
* 2012-02-16 [b417daf](https://github.com/silverstripe/sapphire/commit/b417daf) Custom tags for CompositeField, which allows for nesting <fieldset> elements (not possible through the toplevel-only FieldList/FieldSet class) (Ingo Schommer)
* 2012-02-15 [a1e9c0f](https://github.com/silverstripe/sapphire/commit/a1e9c0f) CMS panels restructured to use two new types of "tools" templates, fetched through LeftAndMain->Tools() and LeftAndMain->EditFormTools(). Requires less overloading of template markup. (Ingo Schommer)
* 2012-02-11 [741f104](https://github.com/silverstripe/sapphire/commit/741f104) Allow setting of constant CUSTOM_INCLUDE_PATH in _ss_enivronment.php which is prepended to the include path (Simon Welsh)
* 2012-02-11 [649f4ce](https://github.com/silverstripe/sapphire/commit/649f4ce) allow left column on LeftAndMain::getEditForm (Will Rossiter)
* 2012-02-09 [5220a46](https://github.com/silverstripe/sapphire/commit/5220a46) Inserting image via new dialog with ajax field retrieval and GridField file selection. Rewritten to jQuery.entwine and using the new HTML editor abstraction layer. (Ingo Schommer)
* 2012-02-09 [38bce79](https://github.com/silverstripe/sapphire/commit/38bce79) Add title component (Andrew O'Neil)
* 2012-02-08 [3866f56](https://github.com/silverstripe/sapphire/commit/3866f56) Using GridField for file selection in "insert image" dialog API CHANGE Combined HTMLEditorField_Toolbar->FlashForm() and ImageForm() into new MediaForm() to handle both file types (Ingo Schommer)
* 2012-02-08 [55ddbd3](https://github.com/silverstripe/sapphire/commit/55ddbd3) Replaced custom profile dialog JS with generic ssui-core.js functionality. Removed cookie state saving abilities for now, not a high priority to re-implement) (Ingo Schommer)
* 2012-02-08 [c00f040](https://github.com/silverstripe/sapphire/commit/c00f040) Attaching files from /assets through UploadField (Ingo Schommer)
* 2012-02-08 [df716ef](https://github.com/silverstripe/sapphire/commit/df716ef) Allow multiple column providers for a single column (Andrew O'Neil)
* 2012-02-07 [4126b95](https://github.com/silverstripe/sapphire/commit/4126b95) Allow selection of items in GridField (via JavaScript only) (Ingo Schommer)
* 2012-02-06 [24e2003](https://github.com/silverstripe/sapphire/commit/24e2003) Allow logging of extra data in SS_Log::log() (currently only displayed through SS_LogEmailWriter) (Ingo Schommer)
* 2012-02-03 [c0d1870](https://github.com/silverstripe/sapphire/commit/c0d1870) New UploadField class to replace FileIframeField, ImageField and SimpleImageField (Ingo Schommer)
* 2012-02-03 [041da99](https://github.com/silverstripe/sapphire/commit/041da99) Added generic 'small' form style (Ingo Schommer)
* 2012-02-03 [2648411](https://github.com/silverstripe/sapphire/commit/2648411) Ensure that forceSSL and protocol detection respects the X-Forwarded-Protocol header. (Sam Minnee)
* 2012-02-01 [a67c6ce](https://github.com/silverstripe/sapphire/commit/a67c6ce) Added section on security ratings, moved security process description from 'contributing' to 'release process' section (Philipp Krenn)
* 2012-01-30 [5fe86be](https://github.com/silverstripe/sapphire/commit/5fe86be) Added GridFieldConfig->getComponentsByType() and getComponentByType() (Ingo Schommer)
* 2012-01-23 [0444d4e](https://github.com/silverstripe/sapphire/commit/0444d4e) Buttonsets for CMS (fixes #6631), using new jQuery UI button() to style buttons in CMS, moved JavaScript to LeftAndMain.js as the button styles only apply with an .Actions container now (Wolf Vollprecht)
* 2012-01-10 [b260c63](https://github.com/silverstripe/sapphire/commit/b260c63) Use Folder's Form Tabs to provide the top 3 tabs in the CMS. (Sam Minnee)
* 2011-12-22 [d355cd5](https://github.com/silverstripe/sapphire/commit/d355cd5) Add config layer - the Config access class itself, and the ConfigManfiest builder which parses in the yaml config files (Hamish Friedlander)
* 2011-12-14 [30989b5](https://github.com/silverstripe/sapphire/commit/30989b5) Added path manipulation lib from jQuery.mobile, using it to ensure all URLs are made absolute (to fix IE issues) (Ingo Schommer)
* 2011-08-23 [d3be6ed](https://github.com/silverstripe/sapphire/commit/d3be6ed) Allowing string arguments in SS_Log::log() (Ingo Schommer)
### Bugfixes
* 2012-03-13 [7ff2732](https://github.com/silverstripe/sapphire/commit/7ff2732) fixed issues with overflow on model and security admin - made changes more specific. (jbridson)
* 2012-03-13 [3d26cb7](https://github.com/silverstripe/sapphire/commit/3d26cb7) SSF-106 - fixed uneven column widths and overflow issues with datagrid in ie7. (jbridson)
* 2012-03-13 [2f7fa90](https://github.com/silverstripe/sapphire/commit/2f7fa90) BASE_PATH was trimming trailing whitespace in paths rather than trailing DIRECTORY_SEPARATORs. (Simon Welsh)
* 2012-03-12 [95f1800](https://github.com/silverstripe/sapphire/commit/95f1800) Resolve local images correctly even with absolute URLs in HTMLEditorConfig_Toolbar, fixed display of remote images (don't try to format the thumbnail, which only works on local images) (fixes #6952) (Ingo Schommer)
* 2012-03-12 [bac23bc](https://github.com/silverstripe/sapphire/commit/bac23bc) Correctly set $BaseCSSClasses on LeftAndMain content container templates, not only on forms. Fixes $('.cms-menu') handling of "current id" updates (fixes #6997) (Ingo Schommer)
* 2012-03-12 [a73c8bc](https://github.com/silverstripe/sapphire/commit/a73c8bc) SSF-53 : apply a patch with fix chosen.js messed the width up if the select element is single select and having initial width as percentage (Normann Lou)
* 2012-03-12 [199dd64](https://github.com/silverstripe/sapphire/commit/199dd64) Fix errors submitting a credit card field (Andrew O'Neil)
* 2012-03-12 [b057315](https://github.com/silverstripe/sapphire/commit/b057315) SSF-25 - fixed styling of model admin filter in ie7 and ie8 (jbridson)
* 2012-03-12 [00d8188](https://github.com/silverstripe/sapphire/commit/00d8188) SSF-106 - fixed scss for export to csv button so that is more general to all datagrid (jbridson)
* 2012-03-11 [ab976a9](https://github.com/silverstripe/sapphire/commit/ab976a9) , API CHANGE: Enable setting the DB timezone from the environment. (Fred Condo)
* 2012-03-10 [d94048c](https://github.com/silverstripe/sapphire/commit/d94048c) Fixed back redirectBack() call in GroupImportForm::doImport (#6969) (Sam Minnee)
* 2012-03-09 [df050ed](https://github.com/silverstripe/sapphire/commit/df050ed) Correct testSetNullAndZeroValues() of DatetimeTest (Fred Condo)
* 2012-03-09 [5944484](https://github.com/silverstripe/sapphire/commit/5944484) Don't try to set the title if it hasn't been set for us. (Fred Condo)
* 2012-03-09 [4b8895c](https://github.com/silverstripe/sapphire/commit/4b8895c) Don't scaffold has_one relations into a DropdownField in ForeignKey->scaffoldFormField() if more than 100 records would be created, to avoid exceeding PHP memory (fixes #6776) (Ingo Schommer)
* 2012-03-09 [d04fe07](https://github.com/silverstripe/sapphire/commit/d04fe07) Renamed UploadField::$config to UploadField::$ufConfig to avoid conflicts with the config API. (Sam Minnee)
* 2012-03-09 [1535ce6](https://github.com/silverstripe/sapphire/commit/1535ce6) Removed used of lcfirst, as it's PHP 5.3 only (Sam Minnee)
* 2012-03-09 [a34f7cc](https://github.com/silverstripe/sapphire/commit/a34f7cc) Fixed SearchContext::getQuery() to avoid use of deprecated limit() call signature. (Sam Minnee)
* 2012-03-09 [68d83d1](https://github.com/silverstripe/sapphire/commit/68d83d1) PHP 5.2 doesn't allow calling a static method like $className::$staticMethod() (Stig Lindqvist)
* 2012-03-09 [d28da56](https://github.com/silverstripe/sapphire/commit/d28da56) Fixed regression where Member::PasswordEncryption field wouldn't be set to the default (Sean Harvey)
* 2012-03-09 [6d380cd](https://github.com/silverstripe/sapphire/commit/6d380cd) GridFieldPaginator did not work correctly after SS_Limitable was introduced (Stig Lindqvist)
* 2012-03-09 [9738641](https://github.com/silverstripe/sapphire/commit/9738641) SSF-106 - removed border that appeared after click in ie7 and ie8 (jbridson)
* 2012-03-09 [5ff095e](https://github.com/silverstripe/sapphire/commit/5ff095e) RequestHandler needs some tricks to make sure it knows when allowed_actions hasnt been provided on a class when it has been provided on an extension, now that statics from extensions isnt a feature specific hack (Hamish Friedlander)
* 2012-03-09 [bc3f5ac](https://github.com/silverstripe/sapphire/commit/bc3f5ac) DataObjectTest needs its extensions to use the new static-on-object method to keep the ordering as it expects (Hamish Friedlander)
* 2012-03-09 [c6d7301](https://github.com/silverstripe/sapphire/commit/c6d7301) Change to a page url segment doesn't get saved properly caused by 'disabled' attribute on the field, which is added by url segment suggestion function (ticket #6842) (Saophalkun Ponlu)
* 2012-03-09 [4bea594](https://github.com/silverstripe/sapphire/commit/4bea594) SSF-106 fixed overlapping edit and delete button on datagrid in ie7. (jbridson)
* 2012-03-09 [18adfb0](https://github.com/silverstripe/sapphire/commit/18adfb0) SSF-53 : avoid to use ":submit" pseudo class in a jQuery selector (Normann Lou)
* 2012-03-09 [2644cbb](https://github.com/silverstripe/sapphire/commit/2644cbb) Remove use of encryptPasswords; use PasswordEncryptor_None instead (Sean Harvey)
* 2012-03-09 [f048b7e](https://github.com/silverstripe/sapphire/commit/f048b7e) Support for gradients in editor in IE9 (Naomi Guyer)
* 2012-03-09 [627708e](https://github.com/silverstripe/sapphire/commit/627708e) add Director::isDev parameter so we can test if we know we're dev mode already without touching the database. Used in showqueries on MySQL, so that errors are avoided when showing queries on initial switch to dev move (#6856) (Mark Stephens)
* 2012-03-09 [050afdd](https://github.com/silverstripe/sapphire/commit/050afdd) Make Inputs in Input-Selects take up the whole select box (#6934) (Naomi Guyer)
* 2012-03-09 [b7f5f91](https://github.com/silverstripe/sapphire/commit/b7f5f91) Open new window for "Help" in CMS nav (Naomi Guyer)
* 2012-03-09 [64db811](https://github.com/silverstripe/sapphire/commit/64db811) Convert pages from DataList to ArrayList in CMSBatchActionHandler to avoid problems on merge() (Ingo Schommer)
* 2012-03-09 [63d5927](https://github.com/silverstripe/sapphire/commit/63d5927) Added TemplateGlobalProvider include to installer, as required by i18n. (Ryan O'Hara)
* 2012-03-09 [ed0e06c](https://github.com/silverstripe/sapphire/commit/ed0e06c) Fix a couple of rebasing-related bugs in GridField. (Sam Minnee)
* 2012-03-08 [f9323b3](https://github.com/silverstripe/sapphire/commit/f9323b3) Type-safe checks for Controller::join_links(), allowing arguments with a value of "0" (Ingo Schommer)
* 2012-03-08 [5e92c69](https://github.com/silverstripe/sapphire/commit/5e92c69) SSF-25 : remove CreateForm, using the GridField 'Add New" action, instead (Normann Lou)
* 2012-03-08 [292bd79](https://github.com/silverstripe/sapphire/commit/292bd79) SSF-53 - fixed filter and reset buttons in ie7 and ie8 plus fixed an array of other ie7/8 styling bugs (jbridson)
* 2012-03-08 [de69d09](https://github.com/silverstripe/sapphire/commit/de69d09) SSF-25 : $Form is not defined in the context, sine {$Form.Name} always give 'Form' string, we need just have 'Form' string there instead to use {$Form.Name} (Normann Lou)
* 2012-03-08 [c3a2938](https://github.com/silverstripe/sapphire/commit/c3a2938) SSF-53 - removed hover and active states from unlink button on users groups datagrid (jbridson)
* 2012-03-08 [4d39813](https://github.com/silverstripe/sapphire/commit/4d39813) SSF-30 - moved tabs SCSS from _style.scss to AssetAdmin.scss (jbridson)
* 2012-03-07 [5d4d0db](https://github.com/silverstripe/sapphire/commit/5d4d0db) SSF-53 - fixed floating filter and reset buttons on filter under users - roles - no card for this, just came across it. (jbridson)
* 2012-03-07 [febcff7](https://github.com/silverstripe/sapphire/commit/febcff7) SSF-30 redirect action that sends an edit form back to the root of assets after making a change like changing the parentID of a file, or deleting it. Basically, any action that makes the existing URL reference obsolete. (Julian Seidenberg)
* 2012-03-07 [676bcbe](https://github.com/silverstripe/sapphire/commit/676bcbe) SSF-30 adding check for null record in the GridFieldPopupForms request handler (Julian Seidenberg)
* 2012-03-07 [38db2c1](https://github.com/silverstripe/sapphire/commit/38db2c1) Fix state of gridfield pagination (Andrew O'Neil)
* 2012-03-07 [a284853](https://github.com/silverstripe/sapphire/commit/a284853) Fix pagination when there are no records (Andrew O'Neil)
* 2012-03-07 [829c768](https://github.com/silverstripe/sapphire/commit/829c768) Support for multilevel nested GridFieldPopupForm (in CMS only), fixed breadcrumb linkage (Ingo Schommer)
* 2012-03-06 [b43bdf3](https://github.com/silverstripe/sapphire/commit/b43bdf3) Allowing to save ListboxField and CheckboxSetField into custom relations (which don't return TRUE for has_many() or many_many()) (Ingo Schommer)
* 2012-03-06 [f396802](https://github.com/silverstripe/sapphire/commit/f396802) Fixed $('.cms-tree').getNodeByID(), was always returning tree instance instead of node because 'get_node' isn't a public method, hence ignored (Ingo Schommer)
* 2012-03-06 [723a848](https://github.com/silverstripe/sapphire/commit/723a848) Fixed Group->Members() overloaded relation getter to avoid filtering on zero-value foreign keys, producing empty rather than inherited results (important for the GridField used in Group->getCMSFields()) (Ingo Schommer)
* 2012-03-06 [dc83ace](https://github.com/silverstripe/sapphire/commit/dc83ace) Fixed CSV exporting on GridFieldExporter (was calling action via ajax, which doesn't allow HTTP download responses) (Ingo Schommer)
* 2012-03-06 [1201f6c](https://github.com/silverstripe/sapphire/commit/1201f6c) Saving records in ListboxField->saveInto() and PermissionCheckboxSetField->saveInto() so we have a database ID to relate to (was previously customised in MemberTableField->saveComplexTableField(), which is now deprecated) (Ingo Schommer)
* 2012-03-05 [bb6d4c5](https://github.com/silverstripe/sapphire/commit/bb6d4c5) Fixed HasManyList and ManyManyList queries for relationships on new records (was returning all available records due to the SQL filtering ignoring ID=0) (Ingo Schommer)
* 2012-03-06 [763e644](https://github.com/silverstripe/sapphire/commit/763e644) Dont need (and cant call) iteratorProperties calls as workaround any more (Hamish Friedlander)
* 2012-03-05 [2abb021](https://github.com/silverstripe/sapphire/commit/2abb021) Restored old permission code model, broken due to new controller structure. Introduced LeftAndMain::$required_permission_codes as a way to control permissions independently of subclasses, and "cluster" multiple classes under a single code. (Ingo Schommer)
* 2012-03-05 [a5e809b](https://github.com/silverstripe/sapphire/commit/a5e809b) Fixed dev/tests/startsession form action (Sam Minnee)
* 2012-03-04 [e8f9624](https://github.com/silverstripe/sapphire/commit/e8f9624) Moved window.beforeunload handler out of onmatch(), was applied multiple times and causing unsaved changes confirmation messages on forms which were no longer loaded (Ingo Schommer)
* 2012-03-03 [8de7b74](https://github.com/silverstripe/sapphire/commit/8de7b74) TinyMCE cache shouldn't be shared between projects. Add SCRIPT_NAME when generating a hash for the cache filename (Sean Harvey)
* 2012-03-02 [b242bfb](https://github.com/silverstripe/sapphire/commit/b242bfb) Include GET parameters of current URL in GridField on ajax reloads to retain view state (Ingo Schommer)
* 2012-03-02 [02e728f](https://github.com/silverstripe/sapphire/commit/02e728f) Fixed visibility of admin/myprofile for non-admins by moving it to a new CMSProfileController class and overloaded canView() (Ingo Schommer)
* 2012-03-02 [b58b281](https://github.com/silverstripe/sapphire/commit/b58b281) SSF-53 : remove the disabled status of 'add button' in according with its sitting environment, ie. does it initialed by jQuery UI. If not, simply remove its 'disabled' attribute (Normann Lou)
* 2012-03-02 [de75798](https://github.com/silverstripe/sapphire/commit/de75798) SSF-53 Pass through the parameter $itemsPerPage instead of reassign the default value (15) (Normann Lou)
* 2012-03-01 [e086875](https://github.com/silverstripe/sapphire/commit/e086875) SSF-53 make adding existing member works by enabling the add button correctly (Normann Lou)
* 2012-03-01 [2dfb414](https://github.com/silverstripe/sapphire/commit/2dfb414) SSF-53: fixed that raw html source appears for "Export to CSV" button(SSF-243) (Normann Lou)
* 2012-02-29 [e61a786](https://github.com/silverstripe/sapphire/commit/e61a786) changed the colour of the font on the default tabs to match the designs (jbridson)
* 2012-02-29 [e4496fe](https://github.com/silverstripe/sapphire/commit/e4496fe) SSF-106 added fix for no delete icons in ie7 (jbridson)
* 2012-02-29 [59df00d](https://github.com/silverstripe/sapphire/commit/59df00d) fixed position of back button in the cms-content-header - adapted design to work around the inclusion of tabs. (jbridson)
* 2012-02-28 [f67cca3](https://github.com/silverstripe/sapphire/commit/f67cca3) Using RequestHandler->urlParams rather than HTTPRequest->param() in LeftandMain->currentPageId() in order to avoid the wrong ID being chosen on nested controllers like GridField with their own "ID" parameters in the URL signature (Ingo Schommer)
* 2012-02-28 [34d3f29](https://github.com/silverstripe/sapphire/commit/34d3f29) Fixed TabSet.js initialisation with cookies, default to first tab rather than allowing tab deselects through an index of -1 (Ingo Schommer)
* 2012-02-28 [2457c4f](https://github.com/silverstripe/sapphire/commit/2457c4f) Eescape / in RegExp. (AngryPHPNerd)
* 2012-02-27 [f7030c5](https://github.com/silverstripe/sapphire/commit/f7030c5) Page tree node reflects any changes made to page (title, publication status) in its edit view, implemented on the level of cms-content dom element, rather than cms-edit-form level (Normann Lou)
* 2012-02-24 [587d195](https://github.com/silverstripe/sapphire/commit/587d195) Page tree node reflects any changes made to page (title, publication status) in its edit view (Normann Lou)
* 2012-02-24 [8fdc531](https://github.com/silverstripe/sapphire/commit/8fdc531) Ensure Date and Datetime field types actually set NULL, false, empty string values correctly instead of "1970-01-01" which gets saved to the database instead of NULL. BUGFIX Datetime::Nice() and casting methods return NULL when there is no value, to be consistent with Date::Nice() and so on (Sean Harvey)
* 2012-02-24 [f4a758e](https://github.com/silverstripe/sapphire/commit/f4a758e) DatetimeField allows non-US style dates with an empty time component to be saved correctly (Sean Harvey)
* 2012-02-23 [0bc6bff](https://github.com/silverstripe/sapphire/commit/0bc6bff) Changed CSS class structure of GridField to avoid duplication of ".ss-gridfield" selector in different contexts, and make selectors less verbose (no more "fieldset.ss-gridfield"). Added "field" class to GridField container to ensure it displays correctly alongside other form fields (mainly around margins and paddings) (Ingo Schommer)
* 2012-02-23 [df82dac](https://github.com/silverstripe/sapphire/commit/df82dac) Fallback to sapphire/silverstripe_version if there is no CMS (framework only) (Simon Welsh)
* 2012-02-22 [8790ba3](https://github.com/silverstripe/sapphire/commit/8790ba3) Retain editor focus when insert images, update attributes on existing image to avoid IE bugs through TinyMCE (Ingo Schommer)
* 2012-02-22 [5f635d8](https://github.com/silverstripe/sapphire/commit/5f635d8) Don't reload TreeDropdownField title via ajax if no value is set (which causes infinite loops) (Ingo Schommer)
* 2012-02-22 [9efcb9b](https://github.com/silverstripe/sapphire/commit/9efcb9b) fixed "add new" button outside of the datagrid's title bar in firefox(ssf-106) (Felipe Skroski)
* 2012-02-21 [c5a1d69](https://github.com/silverstripe/sapphire/commit/c5a1d69) AssetAdmin bugs out when trying to find Folders with ID = 0 when in /assets/ (Stig Lindqvist)
* 2012-02-21 [2c65d3a](https://github.com/silverstripe/sapphire/commit/2c65d3a) Add casting support to global and iterator variable injection (Hamish Friedlander)
* 2012-02-17 [76ddb3c](https://github.com/silverstripe/sapphire/commit/76ddb3c) fixed various styling issues in cms (raised in SSF-188) (jbridson)
* 2012-02-17 [e4675d7](https://github.com/silverstripe/sapphire/commit/e4675d7) Restore ability to pass injected variables right into SSViewer_DataPresenter (Hamish Friedlander)
* 2012-02-17 [156d222](https://github.com/silverstripe/sapphire/commit/156d222) Replaced deprecated DataObjectSet use with ArrayLists in SSViewerTest (Hamish Friedlander)
* 2012-02-16 [454b89f](https://github.com/silverstripe/sapphire/commit/454b89f) Fixed FormAction.ss template when used with <button> tag (Ingo Schommer)
* 2012-02-15 [4f49c45](https://github.com/silverstripe/sapphire/commit/4f49c45) Return zero file size for folders (mainly to avoid listing it in AssetAdmin tables, but also because it doesn't make sense for folders) (Ingo Schommer)
* 2012-02-15 [5d7aa8f](https://github.com/silverstripe/sapphire/commit/5d7aa8f) Allow PartialMatchFilter to use an array as search term (Stig Lindqvist)
* 2012-02-15 [5968205](https://github.com/silverstripe/sapphire/commit/5968205) SSViewer method call for GridFieldItemEditView.ss is not closed (Stig Lindqvist)
* 2012-02-15 [7658e90](https://github.com/silverstripe/sapphire/commit/7658e90) Convert::html2raw() not correctly stripping script and style tags (Simon Welsh)
* 2012-02-11 [f55c575](https://github.com/silverstripe/sapphire/commit/f55c575) allowing ssviewer to be called without function arguments (Hamish Friedlander)
* 2012-02-11 [5bf79f8](https://github.com/silverstripe/sapphire/commit/5bf79f8) Removed tinymce-advcode plugin which breaks with new TinyMCE and newer browsers. Both the plugin and the underlying 'codepress' engine are unmaintained. Fall back to standard (non-highlighted) TinyMCE <textarea> editing (fixes #6779) (Ingo Schommer)
* 2012-02-11 [591dd4e](https://github.com/silverstripe/sapphire/commit/591dd4e) SS_Map::keys() and SS_Map::values() are identical, keys() should return the *keys* not the values #6818 (Sean Harvey)
* 2012-02-10 [37156b0](https://github.com/silverstripe/sapphire/commit/37156b0) avoid error accessing Tab ID if TabSet has not been set (Will Rossiter)
* 2012-02-09 [23af606](https://github.com/silverstripe/sapphire/commit/23af606) Fix edit and delete actions on gridfield (Andrew O'Neil)
* 2012-02-09 [a76c9c3](https://github.com/silverstripe/sapphire/commit/a76c9c3) Fix checkFieldsForAction() when working with tabs (Andrew O'Neil)
* 2012-02-08 [d1a39b0](https://github.com/silverstripe/sapphire/commit/d1a39b0) Fixed operation of the onlyDeletedFromStage parameter of Hierarchy::liveChildren(). (Sam Minnee)
* 2012-02-07 [e7f9c2c](https://github.com/silverstripe/sapphire/commit/e7f9c2c) border radius on datagrid (Felipe Skroski)
* 2012-02-07 [f75537b](https://github.com/silverstripe/sapphire/commit/f75537b) border radius on datagrid (Felipe Skroski)
* 2012-02-02 [deee8a2](https://github.com/silverstripe/sapphire/commit/deee8a2) SSF-107, Filter bar should be collapsed by default, this fix works with fix of cms repo commit eec833215dcaa7a4510f7b4724413a39160d1ad7 (see gist https://gist.github.com/1720221) MINOR: correct in-line document (Normann Lou)
* 2012-02-01 [15a641a](https://github.com/silverstripe/sapphire/commit/15a641a) Clear requirements after running a unit test (Andrew O'Neil)
* 2012-01-31 [e1e5546](https://github.com/silverstripe/sapphire/commit/e1e5546) Casting return values on text helper methods in StringField, Text, Varchar (Ingo Schommer)
* 2012-01-30 [2485095](https://github.com/silverstripe/sapphire/commit/2485095) Fixed bug in sprintf syntax with GroupImportForm iframe (Sam Minnee)
* 2012-01-30 [0090009](https://github.com/silverstripe/sapphire/commit/0090009) Added default args to GridFieldPopupForms for AssetAdmin which was casing errors BUGFIX: Added GridFieldFilter() to new GridFieldConfig whuch adds filters and fixes the display MINOR: Added gridfield specific margins to form div to push GridField display down-page (due to GF's sort-fields which will be refactored from new designs) (Russell Michell)
* 2012-01-27 [056e564](https://github.com/silverstripe/sapphire/commit/056e564) Subtract should not add order by on subselect (Stig Lindqvist)
* 2012-01-24 [9b3af77](https://github.com/silverstripe/sapphire/commit/9b3af77) It is not possible to use more than one autosuggestion field from GridFieldRelationAdd per view (Stig Lindqvist)
* 2011-12-22 [7c94caa](https://github.com/silverstripe/sapphire/commit/7c94caa) Fix TokenisedRegularExpression when matching expressions first element is an array (Hamish Friedlander)
* 2011-12-22 [9c2ebc3](https://github.com/silverstripe/sapphire/commit/9c2ebc3) Replace deprecated extraStatics with new methods on Versioned and Hierarchy (Hamish Friedlander)
* 2011-12-22 [686b020](https://github.com/silverstripe/sapphire/commit/686b020) Cant use combined_static in FileFinder any more - it falls through to Config system, which doesnt yet exist (Hamish Friedlander)