9.5.0 Release Notes

Improvements?

Let us know by posting here.

New Features

  • Added support for the Twig templating languages in block views, page templates, single pages and more.

Behavioral Improvements

  • We now give user’s notice if their updates are locally available (which they should be, for example, if composer is being used to manage the Concrete CMS upgrade process.) We will also no longer let admins use the updater if this setting is set to true (thanks mlocati)
  • Hero Image block now reports its height setting on immediate change of the slider (Thanks mehl)
  • If a site is configured to store their logs in files (instead of the database), the logs Dashboard page now informs administrators. (thanks ounziw)
  • ccm_paging_p page parameter is now no longer included in the canonical URL specified by the Search block (Thanks ccmEnlil)
  • You can now control whether the Page List block’s pagination parameter is added to the page’s canonical URL via a block setting (thanks ccmEnlil)
  • More core blocks are cached in more situations (thanks hissy)
  • Return errors in JSON format when the expected response should be in JSON in more cases (thanks mlocati)
  • Fix errors about undefined logger when using a custom EntryManager in Express.
  • If you access an /account/* protected page and are directed to login, you will be redirected back to the appropriate page on successful login completion.

Bug Fixes

  • Fixed bug where page type defaults were not editable by anyone but the super user even if other groups were added to the “Access Page Type Defaults” permission.
  • Fixed inability to select a new image or file when using the Concrete File Input component if that file had been deleted (thanks mlocati, danklassen)
  • Fixed bug where, if an Express form block was configured to upload files to a specific folder, and that folder was deleted, an error was thrown (thanks dimger)
  • Fixed bug where a file might appear in the Dashboard search results multiple times if it had a special character like an ampersand in it (thanks straatrakker)
  • Fixed log notice about polls feature not being available when rendering core blocks that use the polls feature (thanks biplobice)
  • Fixed bug where a site that used multi-site and had a site name with a special character in it would result in a broken multisite selector in the Dashboard (thanks patej)
  • Fixed typos and strings that could not be translated in the Concrete interface (thanks wtflm)
  • Fixed bug where attributes like Tags would not be properly displayed in the Document Library results table (thanks JohnTheFish)
  • Fixed: ability to activate page templates in a theme was missing in our Dashboard Page themes since the shift to the new Configure page.
  • Fixed erroneous description in the Tags block (thanks JohnTheFish)
  • Fix error that could happen when a global area is rendered on a site but there is no approved version of the global area (thanks biplobice)
  • Fixed error when searching by user group in some situations (thanks TMDesigns)
  • Added additional permission check to add file to folder endpoint (thanks JohnTheFish)
  • Fixed: CalendarEventVersion Entity missing getJSONObject method
  • Fixed: When “All Day” is checked during calendar event creation, end date becomes 1970 if submitted without changing the date
  • Fixed issue where 8.x sites that used the style customizer could have some styles lost upon upgrading to 9.x (thanks kaktuspalme)
  • Fix: Workflow Request message may includes empty page name

Developer Updates

  • Concrete CMS now supports PHP 8.5.
  • Concrete’s email functionality now depends on Symfony/Mailer instead of Laminas/Email. All simple use cases should be covered with no backward compatibility concerns.
  • Mail importing functionality has been removed from Concrete CMS. This functionality is not used by the core and is unlikely to be used by many third party packages. If this affects you, please get in touch.
  • Updated all PHP dependencies where possible.
  • Replaces anahkiasen/html-object with the updated (but still old) kylekatarnls/html-object, which adds some new methods and is better supported (fully backward compatible)
  • Added more granular controls to block controllers to determine their caching behaviors (including btCacheBlockOutputOnEditMode) (thanks hissy)
  • ConcreteFileManager.getFileDetails in JS now returns null if the file cannot be found. Some blocks that use custom JS may need to be updated to handle this (thanks mlocati)
  • We now show MySQL max_connections in environment details (thanks mlocati)
  • Built-in Concrete console commands for php cs fixer will now route to an external version of the library for greater control (thanks mlocati)
  • Added support for a new rcURL query string parameter that can be passed to /login/redirect which will allow users to be redirected to a specific URL after login. Uses an allowlist for security.

Backward Compatibility Notes

  • When dragging blocks out of a stack or from the clipboard panel into the page, we used to create pointer to the original block, in order to save space and potentially make the block “updateable”. This was not ideal, and would lead to some weird edge cases where deleted versions of completely unrelated pages might change the contents of pages that had copied content from the original page. Instead, we now always create a copy when copying out of the clipboard or a stack. If you’d like to maintain a pointer to the original content and update content of a block on a separate schedule from the page, drag the entire stack into the page, and keep the stack updated separately.