What's new With 5.0.0
September 23, 2021
ContentBox 5 is a major update for this CMS and it includes a major architectural change to move the CMS forward for the next 10-15 years. We have introduced multi-tenancy and a complete headless approach to ContentBox. It has become one of our biggest releases since our initial release since 2011.
You can find our release notes here and we will discuss our major areas of improvement for this release. If you need to upgrade your previous versions of ContentBox, please see our upgrade guide.
We have used the power of CommandBox, to build a ContentBox CLI (
contentbox-cli) module that will assist you with installations, upgrades, maintenance and much more. Once CommandBox is installed you can run the following to install our cli:
box install contentbox-cli
That's it. This will install the
contentboxnamespace which will assist you in your ContentBox adventures. Please see the installation guide on usage.
We have upgraded our core to ColdBox 6 and we have received a tremendous amounts of benefits (https://coldbox.ortusbooks.com/intro/release-history/whats-new-with-6.0.0). Here are some of the features we get with this upgrade:
- Performance, performance, performance. ColdBox 6 has been finely tuned to make your applications much more performant and stable under high load.
- Better new CFML engine support
- Asynchronous programming. We have introduced the concepts of the
asyncpackage to the core and ContentBox will leverage more of these features for background job processing, automation and much more.
- New logging facilities and enhancements
- Better exception handling for developers
- REST Handlers and highly performant REST Routing
- Singleton View Rendering. You will find that all renderings are way faster than before.
- Much more!
We have migrated our
cbsecuritymodule to the latest version to give you a wealth of features (https://coldbox-security.ortusbooks.com/intro/release-history/whats-new-with-2.0.0) such as:
- Fortified rule engine
- Annotation based security engine
- JWT support
- Security Services
- Cross site request forgery support
Although multi-tenancy been one of ContentBox's most requested features, we were hesitant for many years to comply due to the size of the needed refactoring. However, we have finally created a great base for making ContentBox multi-tenant. You can now configure 1 or 10000 sites under the same ContentBox umbrella. The new installer actually creates two sites for you: a development/staging site and a production site. That means that you can manage different content environments all under the same deployment.
Here are some of the features you get with multi-site ContentBox:
- Ability to register an infinite number of sites
- Site detection by regular expressions or patterns on incoming URIs
- Site detection by header identifier if using the headless CMS or reverse proxies
- Each site can contain its own
- Content Store
- Commenting System
- Admin site switcher
- Admin site control bar
- Clone content or entire content hierarchies from one site to the other
- Publish content directly to different sites
- Move content between sites
- Much more coming soon.
New Admin UI
The entire admin UI has been revamped and streamlined. You will find it much more breathable and easier to work with, especially from mobile devices and smaller screens. We are also starting to prepare a major theme change and customization that might be introduced in the final release or scheduled for a minor update.
We have completely changed our ORM structures and custom queries so it can be friendlier to other RDBMS. In this release we focus on portability of the host database and finally have core PostgreSQL support.
We have analyzed the entire ORM structures, queries and CFML code in this release thanks to FusionReactor's Profiler. We have streamlined the way the CMS loads and the results are impressive. In ContentBox 5, first loads are about 70% faster and page executions are around 30-40% faster than ContentBox 4.
This is such a controversial feature to be able to deliver patches via the admin. We have completely dropped the capability to patch the CMS from within the CMS. It caused more issues than it solved and in Windows it was pretty much impossible.
We have moved to a CommandBox + Migrations approach and the results are amazing. No more broken installs, half done db updates and more. Now you can simply run two CLI commands and be done with it. Here is a typical flow for updating your system:
# stop the server
# Update ColdBox and ContentBox
# Run Migrations
# start it up again
- [CONTENTBOX-1085] - Preflight check has a race condition where duplicate settings can be inserted and stop app from starting
- [CONTENTBOX-1106] - ColdBox modules directory renamed to modules_bak during upgrade to ContentBox 4.2
- [CONTENTBOX-1118] - media service had a
hardlinkto the UI module which threw an exception when the UI module was removed
- [CONTENTBOX-1143] - multi domain bug when using cgi.http_host just like ColdBox, move to cgi.server_name instead affects all caching cleanups
- [CONTENTBOX-1152] - ACF incompats with
applicationStop() due to ungraceful app metadata wiping by ACF
- assignment of page to default
- CONTENTBOX-1277 The model namespace of cb was always wrong. It should have been
contentboxif not, no module settings woud have ever been set.
- CONTENTBOX-1245 contentstore saving did not account for original slug in order to change downstream hiearchies
- [CONTENTBOX-1140] - Upgrade the usage of `bit` sql type to `boolean` sql type to avoid issues with major DB vendors and also to support PostgreSQL natively
- [CONTENTBOX-1149] - Installer can now create a production and development site for you thanks to multi-site support
- CONTENTBOX-1301 Remove all $(document).ready() and move to DOMContentLoaded events to avoid relying on jquery and allow for deferred js
- CONTENTBOX-1300 Load all js assets with defer to allow for modern JS libraries and for non blocking to DOM loading
- CONTENTBOX-1291 Add ability for all search based content type services to have a array of property list return
- CONTENTBOX-1244 Ability to have unique slugs on a per content type basis instead of before which was unique across content types
- CONTENTBOX-1234 ContentBox core now registers a
contentbox-tasksschedule executor that can be used for scheduled tasks
- CONTENTBOX-1222 new buildContentCacheCleanupKey() on content objects so we can clean multiple permutations of the same content
- CONTENTBOX-1217 Rearchitecture of the active content to NOT be a relationship but using the versions relationship
- [CONTENTBOX-1138] - Drop support for `runtime.properties.cfm` in favor of cfconfig datasource additions
- [CONTENTBOX-1144] - Remove autoupdates capabilities in order to rely on CommandBox for patches and updates
- [CONTENTBOX-1116] - Change the order of the logout function, to the announcement has the oCurrentAuthor still, for logging purposes.
- [CONTENTBOX-1120] - Intercept installer relocation to check if the installer module is even installed else present a nice message
- [CONTENTBOX-1197] - Refactor formulas to methods so they can give a performance boost and increase encapsulation
- CONTENTBOX-1282 Migrate post to pre js for assets to save on minimization and inline js that is used.
- CONTENTBOX-1281 Admin current working site id should be set in a cookie instead of cache to provide longevity.
- CONTENTBOX-1273 rework all settings tabs to have their own form and validation to avoid validation issues in different tabs you don't get notified with
- CONTENTBOX-1250 Add quoted table names, join columns and columns to preserve case on all RDBMS systems
- CONTENTBOX-1239 Also the DSN name is now hard-coded in the cfconfig file so you can have a database named something other than "contentbox"
- CONTENTBOX-1223 Update the clear page wrappers call to include multi-site regex expression to clear stale data
- CONTENTBOX-1218 Add an isPreview to the addContentVersion() so the max content checks are not executed on previews