# 2.1.0 (2007-10-02) SilverStripe 2.1.0 was released on '''2 October 2007''' and had the following changes: ## Overview * 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 ## Upgrading ### Too many redirects A problem occurs of 'too many redirects' or the page just doesn't load (home page) because of these situations: * Access tab for home page has 'logged in users only', OR * NO radio buttons have been set. This happens when upgrading site from old DB. It's caused by a redirect to Security/login on the home page controller, which is blocked off, so you can't actually login, so it infinitely loops a redirect. See http://open.silverstripe.com/ticket/1488 ## Features and Enhancements * 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