SilverStripe ChangeLog 2.2.1 (21 Dec 2007) New Features - Translations - Added Italian translation - Added Russian translation - Added Slovak translation - Added Turkish translation - Added Bulgarian translation - Added Czech translation - Added Hungarian translation - Added Portuguese (Brazil) translation - Added Swedish translation - Added Chinese (Taiwan) translation - Added support for sapphire to Portuguese (Portugal) translation Developer Tools - Added augmentDefaultRecords(), so DataObjectDecorators can extend requireDefaultRecords Bug fixes - Sapphire - Hardcoded array of encryption algorithims in Security::get_encryption_algorithms(), as a bug in MySQL causes corruption in dumps with enums with commas - Fixed bug with google sitemap on translated sites - Removed title from SecurityID fields, as some forms show labels on HiddenFields - Fixed Object::uninherited() for PHP 5.1.2 - Added empty array to member so that roles can add their own has_one relations - CMS - Added SecurityAdmin_rightbottom.ss - Javascript - Upgraded TinyMCE to 2.1.3 2.2.0 (28 Nov 2007) New Features - New look for CMS - Support for authentification by OpenID (auth_openid module included with installer) - Google Sitemaps support - Internationalisation support - German translation - Dutch translation - Chinese (simplified) translation - Spanish translation - French translation - Croatian translation - Polish translation - Portuguese (Portugal) translation - Support for multilingual content - Added a Statistics area showing the following reports - Page views - User activity - Trends - Operating Systems - Browsers - Added an image editor, allowing a user to rotate, crop and resize an image from within the CMS - Added profile popup in CMS - Added a 'Sent Status Report' tab to Newsletters with the following reports - Sending to the following recipients failed - Sending to the following recipients bounced - The newsletter has never been sent to following subscribers - Sending to the following recipients was successful - Sending to the following recipients did not occur because they are blackListed - Add 'Send to only people not previously sent to' option for sending newsletters - Added SWFUpload library as default method of uploading files - Added photo upload in from the Site Content section - Added the ability to search the Site Content tree - Added the ability to publish selected pages - Added a list of unused assets in the Files & Images section, and the ability to delete unused thumbnails - Usability improvements - Move action buttons to bottom right of screen - Moved insert image/flash/link to pane on right - Removed right frame headers as the buttons have been moved and they only contain redundant information - Use a javascript dialog box for confirming unsaved changes instead of the slow loading model one - Reworked the tabs in the Newsletter section to be less confusing - Cancel button added to Send Newsletter window - External logo link opens in a new window - Left sections in Site Content 'Site Tree', 'History' and 'Reports' now use expandable sections rather than tabs - Relabeled 'Site Tree' to 'Site Content & Structure', 'History' to 'Page Version History' and 'Reports' to 'Site Reports' in left sections of Site Content - Relabeled 'Files & Images' left frame to 'Folders' - Added tooltips to site content tree, showing the page type - In the 'Page Version History', use a checkbox lable 'Compare mode (click 2 below)' instead of a dropdown - Renamed 'Save draft' button to 'Save' - The 'Save' button text changes to 'Saving...', and the 'Publish' button text changes to 'Publishing...' when they are clicked - Added save indicator to all 'Save' buttons, the 'Save & Publish' button and the 'Unpublish' button while they are being submitted - Added a go button to the 'Site Reports' dropdown - Relabeled 'Name' field to 'Folder Name' in Files & Images section - Renamed the 'Save' button to 'Save folder name' in Files & Images section - Relabeled 'Send newsletters from' field to 'From email address' in Newsletter section - Removed the 'Move Files' button from Files & Images section, implemented multi-file drag & drop moving - Add 'Newsletter Settings' tab to Newsletter type edit form for consistency with other forms - Make the status message shown after sending a newsletter always include the # of emails sent - Added delete confirmation for items in Newsletter left tree - Added delete confirmation for items in Security left tree - Make 'Add new draft' the default action for 'Create...' in the Newsletter section - Replace the 'reorganise' button with 'Allowing drag & drog reordering' checkbox - Delete and Unpublish buttons turn red on hover - Added the ability to align images 'left on their own' Developer Tools - New classes - Authenticator, allowing multiple authentification methods - ConfirmPasswordField - DropdownTimeField - i18n, for internationalisation - LanguageDropdownField - LoginForm, base class for login forms for each authentification method - MemberAuthenticator, providing username/password authentification - MemberLoginForm, refactored from old LoginForm form - PopupDateTimeField - ToggleField - OpenIDAuthenticatedRole, which is an extension to Member that adds OpenID authentification columns - OpenIDAuthenticator, providing OpenID authentification - OpenIDLoginForm, providing OpenID sign in - PageView, which saves the details of each page view for statistics - Statistics, which provides static methods for statistics - Translatable, for multilingual content - New third party libraries - PHP OpenID (http://openidenabled.com/php-openid/) - Browscap (http://garetjax.info/projects/browscap/) - Plotr (http://www.solutoire.com/plotr/) - SWFUpload (http://profandesign.se/swfupload/) - Improved classes - CalendarDateField - Refactored part of Field() into HTMLField() so it can be used in PopupDateTimeField - ComplexTableField - Improved pagination in popup - Better transformation of save-button (replaced indicator with "saving..." label) - CompositeField - Added SmallFieldHolder() to properly render fields in a FieldGroup - Added insertBeforeRecursive() - Allow empty children - Added Field() - Added linebreaks for HTML - ConfirmedFormAction - Respect $extraClass - ContentController - Save statistics on page views - Added LangAttributes(), for use in XML header - Draft/Archived content can only be viewed by users with permission to access the CMS - Core - Added _t() for internationalisation - Check if TEMP_FOLDER is already defined before defining it, allowing the user to set the temporary folder themself - DataObject - Added merge() - Director - Added extend_site(), which allows modules to register a function that will be run on every page load - redirectBack() now redirects to the base URL if neither the referrer nor the _REDIRECT_BACK_URL is set - Added support for translatable URLs - Added is_cli() - Added set_status_code() and get_status_code() - Email - Define 'EMAIL_BOUNCEHANDLER_KEY' in sapphire/_config.php and require its value to be sent as 'Key' $_GET var in pings to /Email_BounceHandler to prevent fake email bounce pings - Display an error on duplicate bounce logs instead of a blank screen - If the contents of the X-SilverStripeMessageID header is sent to /Email_BounceHandler in the 'SilverStripeMessageID' _GET variable, then it will be logged in the Newsletter_SentRecipient table so that the bounce report will show up on the 'Sent Status Report' tab of the Newsletter - Bounced newsletter recipient emails and blacklisted by default - FieldSet - Added insertBeforeRecursive() - FileSystem - Added $file_create_mask and $folder_create_mask, which are used whenever creating new files/folders in sapphire - Form - All Forms now have a hidden SecurityID field to prevent CSRF attacks - Added disableSecurityToken() to disable the SecurityID field - Added securityTokenEnabled() - Changed

to

- Renamed PureName() to Name() - GD - Added rotate() - Added rotatePixelByPixel(), allowing rotation where the imagerotate function is unavailable - Added crop() - Added getWidth() - Added getHeight() - Hierachy - Versioned now automatically add suffixes, so Hierachy no longer needs to - HTTP - Added register_modification_timestamp() - Added register_etag() - ImageField - Improved layout - Int - Added support for default value - ManifestBuilder - Refactored getClassManifest() for clearer ignore rules - Ignore i18n language files - Ignore folders that have a '_manifest_exclude' file - Member - Automatically login user if the 'remember login' cookie is set - Added createNewPassword(), which generates a random password, optionally using a word list - Added support for password encryption - Added Locale field to store user preferred language - Added the ability for Member decorators to augment MemberFormFields() - MemberLoginForm (refactored from old LoginForm) - Save the email address in the session to reuse when the login fails - ModelAsController - Added support for translatable URLs - Object - Added require_developer_login(), which allows you to check if the user has permission to use URL debugging tools - ?debugmethods=1 now requires developer login - PageComment - Added the ability to have BBCode in comments (disabled by default) - PasswordField - Always show five stars in performReadonlyTransformation(), so it is impossible to use the information of the password length for brute-force attacks - Permission - Added declare_permissions() - Added get_declared_permissions_list() - Added traverse_declared_permissions() - Added Permission_Group class, used to group permissions together for showing on an interface - Added $admin_implies_all, if this is false then the 'ADMIN' permission doesn't imply all permissions - Refactored Permission::checkMember(), should be faster now because the non-strict checking is now only executed if the user doesn't has the permission - Added deny(), giving the ability to define 'deny permissions' - RecipientImportField - Added default 'GenericEmail.ss' template - RestfulService - Added caching - RSSFeed - Added support for conditional GETs - Security - Added support for password encryption - Added set_word_list() and get_word_list(), to set the location of the word list used in Member::generateNewPassword() - Session - Added save(), which copies the current controllers session to $_SESSION - SiteTree - Changed references to 'stage site' to 'draft site' in TreeTitle() - Use Translatable interface by default - Add content language in MetaTags() - Add delete class to unpublish and rollback buttons - SSViewer - Added support for internationalisation in templates, using <% _t() %> - Added $Iteration in templates, which keeps track of the number of iterations in a control block - TableListField - Prevent onclick event in td.markingcheckbox from showing the popup - TabSet - Remove tabset div to reduce wasted space on tabs - Added insertBeforeRecursive() - ToggleCompositeField - Refactored from TogglePanel - Added icons and used 'cursor: pointer' to make it obvious that it is clickable - Versioned - Added the ability to versionise suffixed tables that have names that are not DataObject descendants - Added canBeVersioned() - Added extendWithSuffix() - Added hasVersionField() Bug Fixes - Sapphire - E_NOTICE fixes - Fixed incorrect deprecated message in Convert::raw2xml() - Don't show and error message and quit the script when @ is used to suppress the error - Changed width of HTMLEditorFields to prevent horizontal scrollbars in IE7 - Added checks in DataObjectSet::First() and DataObjectSet::Last() to prevent errors on an empty $items array - Fixed incorrect treatment of Member::logout() as a static method in Security::logout() - Ensure Priority is set in SiteTree::onBeforeWrite(), otherwise an invalid SQL statement will be generated when the page is published - Only highlight broken links in HTMLEditorFields once, to prevent execution timeouts when there are lots of identical broken links - Fixed bug "Fatal error: Access to undeclared static property: Controller::$db in ../sapphire/core/Object.php(282) : eval()'d code on line 1" - Fixed DataObjectDecorators not supporting indexes and defaults - Fixed ReportField generating invalid HTML - In Member::setBlacklistedEmail() call this->write() so that the BlacklistedEmail field state will be saved to the Member database table - Fix Email_BlackList::isBlocked() to check the BlockedEmail field instead of non-existant Email field so that it will actaully return true when an email is blocked - Fix layout problems with search box in IE by only generating a label tag if TItle is set in FormField::FieldHolder() - Fixed Permission::check() not p[assing $strict to Permission::checkMember() - Fixed HTTP::gmt_date() - Fix validation of Member extensions - Removed DriversLicense references from LoginForm (project specific clutter) - Added check for existence of #sitetree in RelationComplexTableField.js - Fixed VirtualPage creation - Fixed lighttpd flushing bug - Fixed CustomRequiredFields - Fix bugs with ComplexTableField when it is used outside of the CMS - Fixed error saving when value is undefined in HasOneComplexTableField and HasManyComplexTableField - Fixed saving error in FileIFrameField - Added a security fix for Security::check_default_admin() - Fixed caching in DataObject::getManyManyComponents() to take into account different SQL parameters - Geop::ip2country() now throws an E_USER_NOTICE instead of an error when it cannot run geoiplookup - Added if() check around a foreach loop that was causing errors when there were no entries in an RSS feed - Fix inheritance in ManyManyComplexTableField - Fixed FormField::setRightTitle() not showing because of a typo - Create assets folder if doesn't eixts on ErrorPage publish - Fixed submission of ImageField when no file was selected - Catch errors in ContentController::deleteinstallfiles() - Fix generation of group codes on creation of a Group - Fix title on LabelledLiteralField - Fix ImageField deleting the Image instead of unlinking it from the page - Set TimeField value to null when a bad value is passed - Don't return a span when the Title doesn't exist in DropdownField - Fix bug where NumericField couldn't have 0 as a default value - Call Page_Controller->init() when rendering Security/changepassword etc to respect any Requirements called in there - Fixed an error when a CheckboxSetField is submitted with no checkboxes ticked - Fixed exporting of TableListField to use commas for CSV files - ?previewwrite no longer works on live sites - Fixed incorrect CSS in TableListField.css - Fixed incorrect namespacing in TableListField::BaseLink() - If a CreditCardField is completely blank, then it's not invalid. Required-fields should be used to check for values. - CMS - E_NOTICE fixes - New pages are created in the database straight away, which solves a number of issues - Fixed Email link not working in page history - Unsaved changes detection now works in Security section member tables - Fix typo in LeftAndMain::addTreeNodeJS() by renaming 'select' parameter to 'selected' because 'selected' is what is used in the method body - Delete image thumbnails after deleting an image - Use 'html>body' instead of just 'html>' so that #sitetree correctly gets assigned width:auto on Mozilla browsers (prevents Folders being selected from 500px away on file drag and drop) - Display a useful error message if getCMSFields() returns null - When 'Duplicate this page' is clicked, first silently (without confirmation) save the page, then duplicate it so the new page is identical to the other page - Fix errors when importing recipients to newsletter mailing list - Fixed blocking during resize in IE6 - Don't show a 'No template selected' error when sending a test Newsletter if no template has been selected since templates for Emails are optional - Fixed bug 'for newly created newsletter drafts, content of newsletter sent is not what is shown on screen' - Don't save new Newsletter drafts as soon as they are created to prevent TinyMCE Javascript errors in IE - Add if((typeof tinyMCE != 'undefined')) statement around call to tinyMCE.init() to prevent "Error: 'tinyMCE' is undefined" error in IE7 on Newsletter Recipient import - Don't allow a deleted draft to be edited in the Newsletter section - Fix a bug where newsletter drafts will be added, but not show up in the left tree (because of a Javascript error), if no selection has been made - If there are no newsletter types, and 'Add new draft' is chosen, create a newsletter type to prevent errors - Fix changed icon only showing after Save button is clicked twice - Fixed VirtualPage creation - Fix 'Sort subpages' not working correctly - Use classes instead of the align tag to align images 2.1.1 (2 Nov 2007) Bug Fixes - CMS - BBCode help link now works inside CMS - Fixed invalid 'cursor: normal' CSS in cms_left.css - Ensure ComplexTableField CSS is loaded in CMS - Fixed blank comments showing in Comment Admin - Ensure behaviour is applied correctly to new fields in a UserDefinedForm - Fixed fatal error in Newsletter Admin on some servers - Sapphire - Fix infinite redirects when upgrading from 2.0.2 - Use the hostname, not the ip address, in dev/test mode tests - Changed the include of the BBCodeParser so it works on more systems - Fixed saving of HasOneComplexTableField and HasManyComplexTableField when value is undefined - Removed extra comma in TableListField.js - Fixed redirection of login when login fails - Fixed bug where removing a comment via ajax removed all comments from display - Fix $_SESSION not saving correctly on some servers 2.1.0 (2 Oct 2007) New Features - Comment administration section, and comment moderation - Allow CMS users to limit view/edit access to a page - Show an rss link for page comments on each page Developer Tools - Theme support - Widget support - Better extension API - Unit testing framework - More API documentation - Added support for __ss_environment.php files - New classes - BankAccountField - BBCodeParser - HasManyComplexTableField - HasOneComplexTableField - ManyManyComplexTableField - NewsletterType - RestfulService (from mashups module) - Improved classes - ComplexTableField - Validation in popup - ContentController - Added project() - Controller - Added redirectedTo() - Convert - Added raw2htmlatt() - Added raw2mailto() - DatabaseAdmin - Drastically improved database build performance - DataObject - Added ID,ID,ID syntax for populating many-many joins - DataObjectDecorator - Allow member CMS fields to be added - DataObjectSet - Added getRange() - Date - Added past_date() - Director - Added set_dev_servers() - Added set_test_servers() - Added redirected_to() - Refactored CMS page-URL accessing to use ->AbsoluteLink(), which can be overridden by defining alternateAbsoluteLink() - Debug - Optionally hide backtrace-headers in message() and show() (applied in 'showqueries') - Email - MimeType-fallback (from /etc/mime.types) - Improved validation in is_valid_address() - FieldSet - Added insertAfter() - Form - Automatic filesystem backup of POST-data - FormField - Support for right-aligned titles - Custom CSS-classes by addExtraClass() and removeExtraClass() - Group - Added Description field - HtmlEditorField - Allow classes other than 'typography' to be set - Image - Added PaddedImage() - ImageField - Added readonly transformation - PageCommentInterface - Added anchors to page comments, and made rss feed link to them - Permission - Added $strict flag to check() - Allow passing of an array of permission codes to get_members_by_permission() - Added get_groups_by_permission() - PhoneNumberField - Improved validation - Security - Added basicauthlogin() - SecurityAdmin - Added EDIT_PERMISSIONS permission code - TableField - Validation and RequiredFields - TableListField - Added sorting, highlighting, formatting - Improved styling - TreeDropdownField - Improved styling - Varchar - Added RTF() - ViewableData - Added '<% if HasPerm(PERM_CODE() %>' for templates - Javascript - Implemented showIndicator() and hideIndicator() - Improved statusMessage() to clear manually instead of fixed interval - Added hideStatusMessage() Bug Fixes - CMS - Fix specific newsletter bug - Don't show classes user doesn't have permissions to change to in class dropdown - Fix reading of Live pages in CMSMain - Fix double page reading after changing the class - Fix insert flash - Fix version regex for release candidates - Fix delete in Files and Images section - Fixed saving root folder causes error - Fixed "non-numeric ID" error that occurs when visiting newsletter section for a newsletter that doesn't exist (caused by session sometimes) - Fixed CMS sort subpages bug - Sapphire - Improved spam detection - Support for running SilverStripe in safe mode and under open_basedir restrictions - PHP notice fixes - Use normal authentification rather than basicauth for db/build - Fix CSS of profiler pop-up - Changed DropdownField $emptyString syntax from '0' to '' - Fixed IE6 DOM-parsing bug caused by FormResponse::load_form() - Triggering previewwrite for 'delete' and 'replace' SQL-actions - Changed record-insertion in DataObject - Boolean accepts database-default - Fixed Permission::get_members_by_permission() - Added memory_limit to publishall() - Fix many-many component set relation setting - The Link for a RedirectorPage points to its target - Add SQL_ prefix in place it was missing in Email - Added a check to make sure record exists before calling hasMethod on it in CheckboxSetField - Fixed bug in DataObject::addStaticVars() - Check for string 'true' as well as boolean in SiteTree::MetaTags() - Fix AllNewsletters value not being passed to OptionSetField in SubscribeForm - Improved the encapsulation of ErrorPage publication - Fix redirect back after failing login - Fixed renaming of .tar.gz and .tar.bz2 files - Fixed validation of DateField, EmailField and NumericField - Fix livesite bug for visibility handling difference between PHP5.2.0 and PHP5.1.6 - Changed colouring of db/build to be more appropriate for the actual meaning of the messages - Fixed redirection from /home/ to /./ in IE6 - Use the homepage as a model for the security base-page, so that things like the current subsite are factored in - Sorted permission codes in Permission::get_codes - Changes to support gallery module - Added missing has_many in DataObjectDecorator - Replace empty strings in SQL queries with NULL - JSParty - TinyMCE has been updated to 2.1.1.1 Installer - New installer look based on BlackCandy - Use the new theme system - Add first and last name fields - Added ability to set servers that will be in dev mode - When the posix module isn't present, throw a warning instead of dying - Warn if PHP version is less that 5.2.0 in support of GoPHP5 (http://www.gophp5.org) - Added favicon to installer and default template - Optional reporting of version information to SilverStripe - Installer now runs with short tags disabled - open_basedir and safe mode fixes 2.0.2 (14 Jul 2007) New Features - BlackCandy is the new default theme - Added pagination for page comments - Updated date field in CMS-edited forms to use CalendarDateField - Added 'open in new window' checkbox to link inserter - Added dimension fields when inserting images Developer Tools - Much more API Documentation - Modules must now have _config.php files in order to be loaded - New Classes - PermissionProvider - Improved Classes - CalendarDateField - Added a calendar icon - CheckboxSetField - Prepared for use editing a many-many join in the CMS, popualted with a SQLMap object - ClassInfo - Added implementorsOf() - ContentNegotiator - Added set_encoding() to choose a character set other than utf-8 - DatabaseAdmin - Removed populate() as it was a security risk, the initial content is now loaded via requireDefaultRecords() - DataObject - Added add_extension() for adding decorators in _config.php - DataObjectDecorator - Added extraDBFields() for modifying the decorated data objects, adding extra database fields - Email - Added send_all_emails_to() - Added cc_all_emails_to() - Added bcc_all_emails_to() - Replaced sentLiveErrorsTo() with send_errors_to(), for more flexibility - Form - Added current_action() - Added single_field_required() - FormField - Added Required(), so that you can put asterisks into a form template if you wish - GenericDataAdmin - Updated to use new permission model - LeftAndMain - Added second argument to setApplicationName() so that the name in the top corner and the name shown elsewhere can be 2 different strings - Permission - Added get_codes() - Profiler - Added trace argument to show() - Added profiling scaffolds - Added ?profile_trace=1 url variable tool to show a trace on the profiler - Sorted the output of profiler - Improvements to profiling information - TableField - Added option to aid putting TableFields inside the ComplexTableField popup - TreeDropdownField - Added setTreeBaseID(), for showing a sub-tree in your field - Javascript - Added event.setStyle to prototype_improvements.js - Add class text field to image properties dialog in TinyMCE - Added ?debug_behaviour=1 URL option for debugging behaviour calls with Firebug Bug Fixes - CMS - Forms in newsletter & security section were incorrectly submitting when enter was pressed - Fixed search in MemberTableField - Don't show popup when validation fails in Security section - Fixed bug where scrollbars aren't shown in the CMS - Let CMSMain be used to manage objects without Sort - The help button now redirects to http://userhelp.silverstripe.com - Version displayed in CMS now works correctly - Fixed CMS action button support when text size increases - Added message when report is empty - fixed (overrides) to CSS to avoid larger font-size due to em values - Fixed tree scrolling and resizing issues - Fixed sizing issues with CMS right content area - Fixed bug with image insertion - Fixed bug where new pages weren't being highlighted in the CMS - Fixed bug where the last page in the site tree wasn't being highlighted in the CMS - Fixed reordering of groups in security section - Improvements to image inserter - Sapphire - Reduced warnings when E_NOTICE is enabled - Fixed validation of date fields in a user defined form - Fixed multiple security groups being created when logging in with default admin - Fixed permissions for administrating page comments - Fixed ContentController::PageComments() method to die if spammers are POSTing form data when comments are disabled - Fixed permission checking on PHP 5.0.5 - Fixed 'cannot access protected property' error in Security section on PHP 5.0.5 - Fixed javascript validation of forms - Fixed error when asp_tags = On - Fixed bug where you have a non-required field with numeric validation - Added a limit of 20 steps in Breadcrumbs generation - Changed SiteTree.Title length from 100 to 255 - Fixed random password generator in Member::createNewPassword() - Fixed BatchProcess to not display an error if no objects could be processed - Fixed a bug where a user is redirected incorrectly after logging in - Changed temp-folder selection to not leave temp files lying around, and put silverstripe temp files into a silverstripe-cache folder - Made guid of PageComments in rss feed unique - Removed duplicate XML class - Fixed bugs caused by missing html elements - Fixed code to remove need for short_open_tag - Fixed FileSize generation for sizes of just over 1 meg - only show $messageBlock in FormField::FieldHolder() if $Message is existing - fixed rightTitle and id in FormField::FieldHolder() - Fixed ?isDev=1 mode - Set default of sendWarnings on Debug::send_errors_to - Fixed formatting of error emails sent from ajax requests - Removed debug plumbing from the results of Debug::backtrace() - Simplified return data of htmlEmail, an inconsequential internal optimisation - Create assets folder if it doesn't exist when uploading a file - Fixed bug in SiteTree::NestedTitle() - Don't append /home to the home page URL - Small fix for windows installations - Fixed efficiency problems in Versioned::get_latest_version - Fixed File::sync(), to let it recurse into new directories in a single execution - Fixed bug with getting form action that was breaking form submission and complextablefield pop-up - Fixed SQLMap iteration - Simplified EmailField validation error message - Fixed some bugs in the debug emailer - Reduced amount of ajax-refetching that the TreeSelectorFields do - Fix macron support in reports - Improved debug message (remove big blocks of redundant data) - Allow for the disabling of default buttons. Apply this to CMSMain and GenericDataAdmin in the administration, so that we don't default to clicking the *DELETE* button. - Added default value to first arg of permissionFailure(); it's not actually used! - Improved handling of EditableFormFields on new UserDefinedForms - Improved search results message shown on first load - Made calendar control register a date change when the calendar is used - Set some good defaults in DataObjectSet::TotalPages() if they have not been set - Changes to support forum - Require authenficiation to do a db/build on live sites - Close directories before trying to remove them - Fixed a bug where CheckboxSetField wouldn't save if there was a method the same as the field name - Fix multiple "broken" in class attribute of HTML Content - Fixed bug with TreeDropdownField when you clicked the expand link 3 or more times, it wouldn't close - Fixed bug when editing properties of new text fields - Fixed duplicate of UserDefinedForm objects - JSParty - Fixed a bug where you couldn't always edit the bottom of an WYSIWYG editor field - Ensure that WYSIWYG context menu always appears on the screen - Javascript performance improvements - Fix weird bug in behaviour to do with class.applyToChildren - Improved console.log alternative Installer - Added option of installing either the default template, or the tutorial template - mod_rewrite check now works with http authentification - Workaround for 'URL file-access is disabled in the server configuration' using curl for mod_rewrite test - Better error message if the installer can't detect the web server - Added an alternative .htaccess configuration - Less file permissions required by the installer - Made deleting the installer files more prominent, it now deletes all the installations files, not just php. - MySQL password is now a hidden field. 2.0.1 (17 Apr 2007) New Features - Improved layout of UserDefinedForm submissions in CMS - Don't show name field on root folder in Assets section Developer Tools - Mime types fallback for servers don't have /etc/mime.types - mb_string module is now an optional dependency - Added strong_create method to Object, as useCustomClass was not working correctly Bug Fixes - Sapphire - Text->FirstParagraph() now only shows the first paragraph - Fixed HTMLText->Summary() - Fixed layout issues on IE7 for TreeDropdownField - Don't show Akismet errors to user - Removed overloaded MemberTableField->sourceItems() that was causing problems - Fixed UserDefinedForm submission emails - Fixed UserDefinedForm permissions - If a file extension doesn't have a maximum upload size associated with it, then allow uploads of any size - Fixed a bug with the TreeMultiselectField that prevented it from displaying the checkboxes - Made Scheduled tasks concrete so they can be instantiated - TableField fixes - Fixed security vunerability in search - GD::color_web2gd() was using incorrect substr - Fixed last link css - Fixed duplicate checkbox fields in UserDefinedForm - Fixed css in UserDefinedForm - CMS - Fixed sizing of tabs in CMS - Fixed popup for single asset in Files & Images section - Fixed link to CMS on default homepage - Fixed permissions table in Security section - Fixed el no properties error in IE - Pressing the flash button a second time now hides the dropdown Installer - Fixed MySQL version check - Merge with existing .htaccess file - Test that mod_rewrite is working - Added option to delete installer files after successful install - Fixed PHP4 parse error so installer loads and shows correct error message - Apache test passes if apache is used but apache php functions are not available - SilverStripe needs at least PHP version 5.0.4 2.0.0 (3 Feb 2007) - Initial release