MODX Revolution 2.5 is out! The first pre-release was released last night, and we'd like to give you a walk through of what's new and improved in this release.

First of all, here's who contributed to this release: JP DeVries, Lukas Zahnd, Romain, Jason Coward, goldsky, Thomas Jakobi, Jan Peca, inreti, Mike Reid, Christian Seel, Jan Tezner, Whitebyte, Sergey Shlokov, Jens Külzer, Gildas NOEL, oori, ViieeS, Vasily Naumkin, Treigh, Ronald Exterkate, Oleg, Nikolay Lanets, Liam Kerr, Johan van der Molen, Andrey, Alexander Herling.

Without these contributors, MODX 2.5 wouldn't have happened, so you're the best!

Now, onwards to all the great new things in this release. 

Improved Accessibility & Usability

JP was the top community contributor for this release (at least based on number of commits!), and one of the reasons for that is his quest for a more accessible manager. In 2.5, he has delivered a number of improvements related to accessibility, including increased screenreader and keyboard navigation on the login screen.

A bigger and more noticable improvement though, was his effort in making the MODX manager more mobile friendly. It's now sort of responsive, allowing you to actually navigate the manager on mobile devices in a way that doesn't want to make you tear your eyes out. It's not a full mobile-first or accessible experience, but it does make it a lot more usable for quick changes to resources or elements on the go. 

Here's some screenshots of the manager in action on a (simulated) small device. 

More Manager Improvements

One of the most disliked features in MODX is probably the dynamic assets minification, controlled by the compress_js and compress_css settings. It was meant to provide a better performance by minifying and compressing assets on the fly, rather than serving dozens of different files. But it was also prone to issues and was often the cause of broken managers. 

In 2.5, this feature has been replaced by a pre-built minified file of all relevant core javascript and css files. This means there's one more step during development (running the grunt build when making changes to the javascript or css), but it allows the core assets to be served statically from only a couple of files, and only really affects the core developers. As the core files are now static, and don't depend on the specific files being dynamically compiled, this allows more efficient browser caching of assets which should also have a positive impact on the speed of the manager. 

For third party extras, that does mean their assets are no longer automatically minified in 2.5 though, so if you have a lot of different files in your extra, it probably wouldn't hurt to precompile those as well. The number of files being downloaded is becoming less of a problem with HTTP/2 and SPDY being adopted rapidly, but not everyone is there yet ;)

More speed!

Another performance improvement was provided by Ronald Exterkate, who found a way to cut down the time the parser spent processing MODX tags in certain cases. This speed improvement is rumoured to be able of cutting down parsing time anywhere from a few to 15%, so definitely worth upgrading for if your site is fairly complex. The speed improvement has to do with deep levels of parsing, so the more complex your site build, the more you might benefit from this improvement. 

PHP 7 Compatibility

Another long-awaited improvement is compatibility with PHP 7. This effort involved several members of the community, Lukas Zahnd being the top contributor in this area, which focused on updating dependencies within MODX that were not compatible, as well as fixing some issues caused by a number of breaking changes in PHP 7.

There aren't a lot of hosts offering PHP 7 by default yet, but when they do you'll be able of migrating without concern about the MODX core. 

Easier CMPs with a new Manager Controller

Announced at the MODXpo in Munich, Romain contributed (among other things!) a new way to build manager pages in MODX 2.5. This makes use of a new base controller class, the modParsedManagerController, which eases the way you can use simple HTML and MODX tags to build out a component. 

We'll look at how this works in more detail in a future post. 

New Base Template

Congratulations, you installed MODX! Here's a blank page...

Seems kinda silly to present an empty page to people installing MODX, doesn't it? That's why 2.5 now comes with a more visual default template. For first time installers, the base template now provides an educational experience with a very high level introduction to MODX, and the ability to see what happens when you edit the title or content of the standard page. For experienced MODXers that never look at it, it's completely self-contained (no CSS, JavaScript or images files cluttering the file system; just the one template and "Home" resource content) and just as easy to repurpose as the blank slate was. 

Here's a look at what you now get on a clean install:

And more...

Obviously there's a lot more in this release that is worth checking out. The example core/ht.access file now contains something that will actually lock down your core folder when you rename it to .htaccess, new output filters htmlspecial and stripmodxtags were added, users now have a new createdon field that tracks when they signed up and a whole bunch of small tweaks and improvements were made to the manager. 

The complete changelog for this release (which, if upgrading from 2.4.2, also include the fixes slated for 2.4.3-dev) is included below and can also be seen on github

Download MODX Revolution 2.5.0-rc1 here.

MODX Revolution 2.5.0-rc1

  • Implement X-Powered-By header to send "MODX Revolution" on all requests [#12885]
  • Add cleanup script to remove legacy files during upgrades
  • Fix installed package list in package detail page when the package's name has spaces [#12870]
  • Add filter and search to the templates grind in TV panel [#12873]
  • Add typeahead for templates in resource panel [#12872]
  • Fix session warning on HHVM [#12868]
  • Add new stripmodxtags output filter [#12860]
  • Add new base template and resource content [#12855]
  • Fix re-definition of function mkdirs
  • Add createdon date field to modUser [#12581]
  • Ensure $restarted in templates/language.tpl always exists [#12847]
  • Update LinkedIn link description on Help page [#12851]
  • Fix undefined index in modOutputFilter->filter [#12856]
  • Add new output filter 'htmlspecial' [#12861]
  • compress_js no longer dynamically minifies javascript, instead it uses a prebuilt min.js for better performance [#12611]
  • Autoload third party packages when viewing manager actions [#11866]
  • Fix example core/ht.access file to properly lock down access to the core when used [#12503]
  • Fix selecting values on the tag TV input type [#12627]
  • Fix the insert element by drag & drop feature remembering properties it shouldn't [#12729]
  • Potential improved speed on certain pages thanks to processElementTags optimisation [#12717]
  • Fix checking for duplicate URIs when resources are unpublished [#12844]
  • Add border for grids
  • Change modResource Children to Composite relation [#12279]
  • Allow searching by Resource ID in Uberbar [#12783]
  • Add modParsedManagerController which can be used for developing CMPs with snippets and chunks [#12555]
  • Allow custom redirect method for each action button in action bar
  • Fire emptyTrash event after emptying recycle bin [#12673]
  • Add anonymous_sessions to allow session-less access for anonymous users [#12616]
  • Make the manager a lot more mobile friendly [#12776]
  • Fix .icon-coffee class to show a coffee cup, use .icon-coffeescript for the code icon [#12784]
  • Update Font Awesome to 4.5 (includes icon-modx!) [#12774]
  • Make use of the maximum available height when viewing the error log [#12746]
  • Improve usability of the tree by limiting click target for editing containers to the name [#12773]
  • Add published_resources and unpublished_resources to result of OnResourceAutoPublish event [#12747]
  • Improve keyboard navigation and screen reader support on the login screen [#12784]
  • Update PHPMailer to 5.2.14: https://github.com/PHPMailer/PHPMailer/releases/tag/v5.2.14 [#12808]
  • Update Smarty to 3.1.27: https://github.com/smarty-php/smarty/blob/v3.1.27/change_log.txt [#12807]
  • Allow uberbar labels and icons to be set server-side in extended search processors [#12749]
  • Add ability to unpack zip files in the file tree / media manager [#12775]
  • Ensure setup can continue if date.timezone is not set [#12738]
  • Make modPhpThumb class compatible with PHP7 [#12809]

MODX Revolution 2.4.3-dev

  • Prevent uncacheable elements from being cached in cacheable elements [#12835]
  • Fix the DocBlock comment for leaveGroup() [#12877]
  • Fix modX->getUser to force load settings when parameter is passed [#12840]
  • Fix issue with parent name not showing when creating a new resource under a parent [#12849]
  • Fix system settings pagination issue if default_per_page is > 30 [#12862]
  • Remove the 'Installed on' part of the language string.
  • Fix getOption call in modUser->getProfilePhoto
  • Sets correct responseType in the rest service for multiple packages via a single request [#12669]
  • Fix loading rich text editors on non-document resource types [#12632]
  • Fix dashboard and dashboard widget save button [#12711]
  • Fix failure message in Export processor [#12709]
  • Fix tree style for deactivated plugin [#12712]
  • Fix fatal error if user not found [#12772]
  • Fix warning generated by configcheck dashboard widget if safe_mode or open_basedir is enabled [#12745]
  • Include a random hash for core assets being loaded to refresh browser caches [#12700]
  • Fix fatal errors in the manager on PHP7 [#12741]
  • Fix "Remember Me" on the manager login [#12802]
  • Show message after triggering a URI refresh [#12800]