SilverStripe 2.4 has been released and this release comes with a ton of new changes, highlighted below.
If your website contains a large number of pages, you may find SilverStripe’s default way of handling URLs a little limiting. Until now, URLs could only be one level deep, for example:
With hierarchical URLs, the address for such a page might be:
One of the principles of this feature is that it provides a logical “bread crumb” for a page. Each URL segment (as separated by a slash) is a page in itself that can be visited. Hierarchical URLs also reduce the problem of “running out” of URLs, where you might be forced to have URLs like http://website.com/staff-2.
SilverStripe 2.4 allows you to run the website in either simple or hierarchical URL mode.
Huge thanks go to Andrew Short, a member of our developer community based in Australia, who is responsible for writing most of this feature.
Microsoft SQL Server database support
We have seen strong demand for SilverStripe to run on the Microsoft platform—in recent months there have been tens of thousands of downloads via the Microsoft.com web application gallery alone. We have therefore worked hard to allow SilverStripe to natively run on a SQL Server 2008 database, eliminating the requirement to run SilverStripe on MySQL (though, of course, it still runs great on MySQL). We’re really happy with the results, and we have government websites like www.gw.govt.nz already running on this platform.
Running SilverStripe on SQL Server requires the installation of the SilverStripe SQL Server module.
PostgreSQL database support
SilverStripe 2.4 can also run on a PostgreSQL 8.3 or later database. We are continuosly testing this feature; however, our testing has not been as extensive as it has been for Microsoft SQL Server. We’d love for you to install SilverStripe 2.4 with the PostgreSQL Database Support module and let us know how it goes.
Performance and memory use optimisations
Memory use optimisations mean that the CMS backend interface for the “Site Content” section easily scales to well over 10,000 pages. Changes include:
- Performance improvements around Object and ViewableData property access.
- Improved unit test execution speed.
- Decreased memory usage in “Files & Images” section.
- Ability to cache parts of templates, providing a middle ground between the speed of fully cached pages and the richness of fully dynamic database-driven pages.
- Batch action handling handles larger tree structures, provides better visual feedback, and respects permissions on individual pages.
- Tests that SilverStripe is compatible with Microsoft’s new WinCache PHP bytecode cache. Anecdotal tests show that WinCache provides a 50% speed improvement in generating SilverStripe webpages.
SilverStripe has long had support for setting granular security permissions on pages. Users can be a member of one or more groups, and groups can be configured to have various system rights. We also allow various view and edit permissions on a page-by-page basis. This provides a great deal of flexibility, but in complex organisations the task of setting up the permission structures can mean spending a lot of time creating security groups.
With SilverStripe 2.4 we’ve made it easier to manage more complex security configurations with the introduction of roles. Roles allows you to create groupings of people who
- Have the same system rights (e.g., access to create pages but not create users.)
- Have those rights for different sections of a website (e.g., news section, product catalogue, corporate profile, etc.)
Roles are optional.
Other security features
- A group can be limited to only edit a certain language in the CMS.
- Team members can get permissions to see the draft version of a page in preview mode without requiring CMS access.
- Pages of type “Virtual Page” have improved stability in regards to their permission control, translation, and publication.
- More fine-grained permission control for translators.
- Better XSS security of the autologin token by using HTTPOnly cookies.
- More secure against brute force login attempts.
Other key improvements
- Our new SiteConfig feature allows you to store site-wide settings including permissions and languages used on your site.
- The CMS now searches for broken internal links to other pages and broken file references, and highlights them in the WYSIWYG editor. A report can be used to show broken links across the website.
- Improved API to allow custom tags to be parsed within CMS content before being presented on webpages.
- Improved reporting API to unify the CMS sidebar reports and full-page reports on their own section. It’s easier to add custom filters to reports.
- Added dropdown to choose from existing anchor links when inserting a link from the CMS sidebar.
- Improved broken link detection.
- Removed the jsparty/ toplevel folder, and moved all its dependencies into sapphire/thirdparty and cms/thirdparty.
- More than 350 bugfix and enhancement commits, plus over 200 minor changes.