Version 4 supported
This version of Silverstripe CMS is still supported though will not receive any additional features. Go to documentation for the most recent stable version.

4.0.5

Notable changes

Fix #7971 introduces a subtle change of behaviour to how Config settings are prioritised. In Silverstripe 4 there was a change where Extension objects took the highest importance when determining Config values; this was deemed to be unexpected and unintuitive as well as making it cumbersome and difficult for developers to override module defaults defined in Extensions. This change reverts behaviour to that of Silverstripe 3 where Extension instances are of lowest importance and are used only to set a default value. If you rely on your Extension or module providing an overriding config value, please move this to YAML.

Change log

Security

  • 2018-11-02 aebaa46 Add CSRF to Apollo (Aaron Carlino) - See ss-2018-007
  • 2018-08-21 8d7c2dafa Add confirmation token to dev/build (Loz Calver) - See ss-2018-019
  • 2018-07-29 9aabe0a0f Ignore arguments in mysqli::real_connect backtrace calls (Robbie Averill) - See ss-2018-018
  • 2018-05-08 19fdebfa2 Remove dotm, potm, jar, css, js, xltm from default File.allowed_extensions (Robbie Averill) - See ss-2018-014
  • 2018-04-11 577138882 Restrict non-admins from being assigned to admin groups (Damian Mooyman) - See ss-2018-001

API changes

  • 2017-09-12 c54b07a95 Update to use new chromedriver + behat-extension + facebook/webdriver (Damian Mooyman)

Features and enhancements

  • 2018-04-19 1509a12fd Only run coverage test as a cron (Damian Mooyman)
  • 2018-04-09 87d69ba7 Use i18n template for page tree title (Damian Mooyman)
  • 2018-03-05 32637413d Improve upgrade rules to support advanced upgrader rewrites (#7903) (Damian Mooyman)
  • 2018-03-05 8c35e339 Improve upgrade rules to support advanced upgrader rewrites (#2114) (Damian Mooyman)
  • 2018-03-01 61cfcc5 Improve upgrade rules to support advanced upgrader rewrites (Damian Mooyman)
  • 2018-03-01 e77e0f7 Improve upgrade rules to support advanced upgrader rewrites (Damian Mooyman)
  • 2018-02-12 9ce21338a composer.json missing notice (zanderwar)
  • 2017-11-15 c7ab5846d Don't infer trace if explicitly provided (Damian Mooyman)

Bugfixes

  • 2018-09-18 bbe7c66 Add AssetAdmin::getMinimalistObjectFromData() to build file metadata for UploadField (#829) (Maxime Rainville)
  • 2018-09-03 1c4311d fix description for docs.silverstripe.org (wernerkrauss)
  • 2018-09-03 b922c0d73 Check scheme is truthy before setting it to the request (Robbie Averill)
  • 2018-08-28 d651d0fbf Use base class (not remapping target class) when looking up whether object is versioned (Robbie Averill)
  • 2018-07-26 fea9ef7 #579 BUG Ambiguous column RecordID when doing batch actions (Ed Linklater)
  • 2018-06-13 a2a8004 Update user help link to 4 (Sacha Judd)
  • 2018-06-13 932eb2b2 Fix CMS components failing to register on other CMS sections (#2182) (Damian Mooyman)
  • 2018-06-12 7b04949ca Remove duplicate key (Damian Mooyman)
  • 2018-06-12 c9bcc07 Remove duplicate .upgrade.yml keys (Damian Mooyman)
  • 2018-06-12 674b92c Fix invalid .upgrade.yml (Damian Mooyman)
  • 2018-06-11 2a51f34c3 Prevent canonical URL causing a redirect on CLI unless explicitly enabled (Damian Mooyman)
  • 2018-06-07 29f9b1c18 Fix linting issues (Damian Mooyman)
  • 2018-06-07 e37e3e174 Fix test that relies on implicit ID order breaking postgres (Damian Mooyman)
  • 2018-06-07 66f57bd4d Only set MYSQL_ATTR_INIT_COMMAND when using mysql driver (fixes #8103) (Loz Calver)
  • 2018-06-06 c070e989c Safely handle empty injector factory responses (Damian Mooyman)
  • 2018-06-04 41e601a03 Regression from #8009 (Daniel Hensby)
  • 2018-06-01 5a5ba1e5c Fix: negative values in read only currency field (Jonathon Menz)
  • 2018-06-01 582c69d32 Fix issue with Disabled DateField always display (not set). (Maxime Rainville)
  • 2018-05-29 1cbf27e0f PHP 5.3 compat for referencing $this in closure, and make method public for same reason (Robbie Averill)
  • 2018-05-21 bf5b578 Adding a min-width to flexbox-area-grow that allows flex blocks to shrink below their content width (Guy)
  • 2018-05-18 953153500 Polymorphic relationship class columns have obsolete class names remapped (Robbie Averill)
  • 2018-05-08 97a8f56 Add missing focus styles for preview options (fixes silverstripe/silverstripe-framework #2101) (Loz Calver)
  • 2018-05-02 80bf0fc48 bad syntax (Daniel Hensby)
  • 2018-04-18 fe4b90edc Duplicating many_many relationships looses the extra fields in 4.0 (UndefinedOffset)
  • 2018-04-17 f83691e7f Make invalid dev actions 404 not 500 error (Damian Mooyman)
  • 2018-04-17 af3a9f3ec Duplicating many_many relationships looses the extra fields (fixes #7973) (UndefinedOffset)
  • 2018-04-10 e11ba9a2d Fix many_many through crashing ModelAdmin (Damian Mooyman)
  • 2018-04-08 eeac1d1 Fix issue with selected values in large trees breaking initialisation (#476) (Damian Mooyman)
  • 2018-03-29 4acec3356 Fixed bug in config merging priorities so that config values set by extensions are now least important instead of most important (Daniel Hensby)
  • 2018-03-28 dd44deacb Fix for "too few parameters" error when using DBMultiEnum (Andreas Lindahl)
  • 2018-03-22 cf5a0984 Correct SilverStripeNavigator correctly in templates (Daniel Hensby)
  • 2018-03-15 d17d93f7 Remove SearchForm results() function from allowed_actions (Steve Dixon)
  • 2018-03-11 2b9faf46 Fix InSection failing on non-page controllers (Damian Mooyman)
  • 2018-03-07 bf2cee398 Bugfix - Correct duplicate nesting of 'Content' to be returned to template (Joe Harvey)
  • 2018-03-06 5fee4a81a Files dataobjects with missing asset shouldn't un-attach themselves from parent object on save (Damian Mooyman)
  • 2018-03-05 dde13493 Fix invalid css classname in virtualpage (Damian Mooyman)
  • 2018-03-05 985a0af Fix page icons (Damian Mooyman)
  • 2018-03-02 3bd714d Typo in "audio file" translation (Robbie Averill)
  • 2018-03-01 40c2e299a Fix "mb_stripos(): Empty delimiter" warning when no search-keywords are given for DBText::ContextSummary. (Roman Schmid)
  • 2018-02-27 d91c6ed Fix $CMSVersion appearing visually (Damian Mooyman)
  • 2018-02-26 b27102f81 Fix incorrect assets created when ASSETS_PATH !== BASE_PATH . '/assets' (Damian Mooyman)
  • 2018-02-22 012bfec5 Bug field help text translations no longer need to be HTML encoded (Rick Hambrook)
  • 2018-02-20 83c4ab8d Fix test regressions in CMS page filters (Damian Mooyman)
  • 2018-02-19 cfe82e9 Fix behaviour towards versioned but unstagable records (Damian Mooyman)
  • 2018-02-19 4fc8166 Fix behaviour towards versioned but unstagable records (Damian Mooyman)
  • 2018-02-19 0e26c0664 Fix behaviour towards versioned but unstagable records (Damian Mooyman)
  • 2018-02-19 3be0478e Fix behaviour towards versioned but unstagable records (Damian Mooyman)
  • 2018-02-19 8be3930 Fix doRollbackTo() writing old / unsaved version over restored version (Damian Mooyman)
  • 2018-02-16 86addea1d Split HTML manipulation to onadd, so elements are not accidentally duplicated (Christopher Joe)
  • 2018-02-13 c767e472d DataObject singleton creation (Jonathon Menz)
  • 2018-02-13 f2b82b1f7 Fix docs for configuring before/after a specific config file (Christopher Joe)
  • 2018-02-13 c6095cf Fix word boundary issue with pathname matching (Christopher Joe)
  • 2018-02-13 1d27a14 Remove border-radius add hover states to non-active tabs (Sacha Judd)
  • 2018-02-12 ad52ced Prevent nested permissions from breaking recursive publishing (Damian Mooyman)
  • 2018-02-12 0f08f85 improve the browser warning logic show (Christopher Joe)
  • 2018-02-08 d86e5dfc remove now superfluous print action destroyer (Dylan Wagstaff)
  • 2018-02-08 d3278d547 Add Nested DB transaction support (#7848) (Daniel Hensby)
  • 2018-02-08 0a486b8f5 Fix issue with CLIDebugView failing on class name of existing class (Damian Mooyman)
  • 2018-02-06 0094c19 Add text-colour to status-archived, remove span.badge styles (Sacha Judd)
  • 2018-02-06 6b38031a1 Fix Director::test() not persisting removed session keys on teardown (Damian Mooyman)
  • 2018-02-06 660dfd34a Issue where default admin has no password encryption (Daniel Hensby)
  • 2018-02-05 28ca11dd7 Regex range identifier correctly escaped (Daniel Hensby)
  • 2018-02-04 1ff32b3 Ensure lang is detected from html tag (Martin P)
  • 2018-01-26 416915b08 tableName is blank in CompositeDBField->addToQuery (Dominik Beerbohm)
  • 2018-01-25 cf69d0486 Fix ping including requirements (Damian Mooyman)
  • 2018-01-24 c2cd6b383 Fix Member_GroupSet::removeAll() (fixes #3948) (Loz Calver)
  • 2018-01-24 f2b4c192e Fix UploadField cuts off “Save” button (closes #2862) (Loz Calver)
  • 2018-01-23 7384e3fc2 Gridfields with dropdowns having lots of overflow (Scott Hutchinson)
  • 2018-01-19 5849820 Fix compatibility issue with chromedriver (Damian Mooyman)
  • 2016-10-21 8e5bb6fbd Fix : relObject() should return null if one of the node is null (Jason)
  • 2016-03-15 22b3a71ec fixing val reference to url in https hotlink (Denise Rivera)
  • 2015-04-22 1f63637b9 for #4095, TinyMCE not able to modify props of embed media (bug 1) and invalid HTML inserted (bug 2) (Patrick Nelson)