CMSMS Version 2.3 Progress Update

CMSMS Version 2.3 Progress Update


The CMS Made Simple development version, 2.3, is well underway and we are very excited about it! We thought it would be a good time to share our excitement with you and discuss some of the routes your favourite CMS software is taking.

Category: General
Posted: March 29, 2019 by digi3

The CMS Made Simple development version, 2.3, is well underway and we are very excited about it! We thought it would be a good time to share our excitement with you and discuss some of the routes your favourite CMS software is taking.

CMSMS v2.3 has many changes under the hood, a serious cleanup of code, and important new features. These transformations will make CMSMS faster, easier to use for developers and move it into a position where it is more efficient to manage and enhance going forward.

version_2.3_screenshot_development

Additions and enhancements

  1. An updated Admin Theme, Marigold, has been created. Although not a drastic change from OneEleven, it tweaks and modernizes a few important bits.
  2. CMSMS Maintenance mode now properly triggers a 503 status result. There is a new 503 error page type to allow styling the website in maintenance mode.
  3. All ‘core’ / ‘system’ modules (modules distributed with the CMSMS installation) will now be located in the directory /lib/modules. All third party modules, including modules installed via ModuleManager, will be located in /assets/modules. This allows developers to put third-party code into source code management without the added chore of adding all of CMSMS into the same repository.
  4. Auditing functionality has been re-worked and revised. The AdminLog module has replaced the regular PHP file in the admin directory.
  5. Caching throughout CMSMS has been refactored. Plus, we have added the ability to use APC as a cache if it is enabled on the host. This can be a significant performance boost for many installations.
  6. The Content Manager module has received improvements, including the ability to ‘add a child here’ from within the content list, and the ability to expand and collapse within the reorder content list.
  7. Many new commands are available for cmscli to allow easier managing of a CMSMS install from the command-line.
  8. Upgraded jQuery to version 3.3.1 and the jQuery-ui libraries distributed with CMSMS have been upgraded.
  9. Security enhancements: Module Action URLs are signed and encoded; Cookie values are signed, and names obfuscated; using bcrypt for Admin Console logins; the Admin Console login mechanism has been retooled for more security and flexibility.

Web Application Improvements

Numerous improvements have been made to make the life of application developers using CMSMS easier. Mostly, it involves migrating some things out of the database and into files. This allows developers to use their favourite editor, to manage their build process, to manage their work in a source code repository, to separate data from application, and to better handle backups. These changes include:

  1. User Defined Tags (UDTs) have undergone a transformation. They are now called ‘Simple Plugins’ and are stored in the file system rather than in the database. The user interface to allow managing UDTs (now Simple Plugins) has been removed from the core. This allows developers to use their favorite editor (emacs, vi, sublime etc.) to manage these pieces of code and to integrate them into the application build process, source code management, and backups.
  2. Events have been migrated into ‘hooks’ and all of the UI for managing events in the core has been removed. Users can now map hooks (and events) to simple plugins or other callables by editing a .json file in the assets/configs directory. This is because the event to callable mapping is a part of the application process. As such, it must be manageable as a file, and not stored in the database.
  3. New features to allow page templates to be stored in the /assets/templates directory as files. This will allow for the editing with any editor, and for template files to be committed to a source code repository.
  4. New plugins entitled {cms_queue_script} and {cms_render_scripts} allow the retrieval of javascript files relative to the installation, concatenating them into a single file, and rendering a single script tag. Hooks allow working with the input prior to, and after, concatenation.
  5. New plugins entitled {cms_queue_css} and {cms_render_css} allow retrieving stylesheets from files relative to the installation, concatenating them into a single file and rendering a single stylesheet tag. Hooks allow working with the input prior to, and after, concatenation.

Removals and housekeeping

As part of this next change, some of our older modules will reach their end of life. These modules are some of the remaining legacy code builds from the 1.0 series. Any modules that are no longer core appropriate have either already been replaced with enhanced alternatives or have no longer been in serious use for a long time.

  1. Menu Manager
    In v2.3, Menu Manager, long since replaced by Navigator, will no longer be distributed as a core module. If your site does use Menu Manager, it will continue to work for some time. We advise you to consider moving to Navigator - after all, Navigator has been the recommendation for three and a half years now!
  2. News 2
    In v2.3, News will be replaced by News 2. A necessary update to the CMSMS system, it is similar to, but not compatible with News(1). News 2 takes advantage of CMSMS APIs including file-based templates, and caching.
    Sites using News(1) will continue to operate for some time and will be available in the Forge as a non-core module. We'll also be providing information about a migration path method in the coming months.
  3. CMS Mailer
    The CMSMailer Stub module is no longer a ‘core’ module, and will no longer be distributed with the core. It is only a stub module for backwards compatibility, and third-party modules that rely on it should have already undergone the minor changes required. However, for compatibility reasons, the stub module will remain available for download from the Forge and from ModuleManager.
  4. Smarty Caching
    All Smarty caching functionality, and its user interface, has been removed from the core. We found this functionality to be complex and seldom used. Additionally, it caused problems with other development.
  5. Individual Secure pages (SSL)
    The option to mark individual content pages as ‘https’ has now been removed. Additionally, the config entries for https vs. http operations (i.e: ssl_url, ssl_uploads_url, etc) have been removed. The full site now uses SSL certification or doesn’t. This is entirely in keeping with both best practice and realistic functioning of websites. If your site has an SSL certificate, the whole site should be using it.
  6. The problematic {cms_jquery} plugin has been removed.

As you can see, there are numerous changes in CMSMS v2.3. With these changes, CMSMS v2.3 is leaner and faster for everybody. It makes the job of application developers easier by allowing them to use their regular tools. Meanwhile, end users and content editors will notice few overall changes.

For Module Developers

Under the hood, there are many optimizations and cleanups. These changes may affect module developers who:

  1. have not updated their code in some time,
  2. were making some assumptions about the structure of things,
  3. were using undocumented features.

Some of the changes that may affect things for module developers:

  • Removal of many functions in the Events class. They should not generate an error, but because of the migration of events to hooks, this class is now largely just a stub.
  • Any module that uses PHPMailer directly may be broken because the class is now available in a namespace.
  • Content pages can now no longer either be secure or insecure.
  • Modules that register content types can no longer be lazy loaded.
  • Removal of the ‘ssl’ prefixed config entries.
  • Many previously deprecated and/or seldom used methods of the module class have been removed.
  • Initialization and loading of modules has changed. Primarily now the InitializeFrontend(), InitializeAdmin() and InitializeCommon() (new for v2.3) methods are called outside of the module constructor. Because a module may be instantiated at different times for different purposes, this change allows module developers to move most of their initialization functionality outside of the constructor.
  • Many previously deprecated methods from various core APIs have been removed.
  • The core no longer treats {actionid}showtemplate=false the same as the normal showtemplate=false parameter.
  • The ‘id’, ‘action’, and ‘returnid’ params are no longer available in the $params array of each action, though the variables are still in scope.
  • Third party admin themes may need some revision due to the change to some methods.
  • Many more classes now take advantage of PHP’s namespace feature, and a ‘naming standard’ is starting to take shape.

Get your hands on a copy before the official launch by being a beta tester.

These are the primary changes in CMSMS v2.3, although, there are several other changes and improvements that will be announced at a later date. The changelog for v2.3 is extensive and impressive. Users and developers will have the opportunity to test CMSMS v2.3 before it is released for production, and to get their modules up to date during an extensive beta process.

We are looking forward to letting you get your hands on this next generation of CMS Made Simple. We'll make announcements about the beta as soon as we are ready.

Thanks for reading,
Your CMSMS Dev Team.


Our Partners:
EasyThemes Themeisle