Originally published at: Mautic 6.0: Orion Edition is released - Mautic
Today we’ve released Mautic 6.0: Orion Edition. This is a bridging release which will have a shorter cycle so that we can catch up with Symfony’s release schedule and, in the long term, provide up to five years of support for each new major version of Mautic. You can read more about that in our blog post.
Check out the release notes for 6.0 General Availability here.
What follows includes some of the important information about this release.
Firstly a big thank you to everybody who has helped by contributing code, testing and reviewing contributions, creating imagery, writing content, managing social media, writing documentation – it takes a village to manage a release and there are many ways that people have helped get this release over the line.
Note about Docker
We are currently unable to release the Mautic 6 images for Docker due to a lack of active maintainers. We have an open call for maintainers open on the GitHub repository where you can read more about getting involved as a Docker Maintainer for Mautic.
Marketer-facing changes
Improving tooltip help and guidance
More improvements coming from the UX/UI Tiger Team in this release include improving the tooltips and contextual help for the settings page, explaining to users what each field does and what formats are expected. Here’s a before and after:
Before | After |
Improving user experience with Dynamic Web Content
One of my personal favourites, this release features a vastly improved user experience for Dynamic Web Content slot generation, allowing you to generate the precise code required for embedding it within your website, including adding default content. You can grab the syntax commonly used for plugins (including being able to switch between square and curly braces) and for the plain HTML code.
Improving layout of tables and batch action features
If you’ve updated to 5.2 you’ll have noticed we’ve dramatically improved the layouts of tables, and with 6.0 we’ve got some more enhancements coming for you, this time focused on improving the batch functions. They’re now moved to the toolbar instead of being hidden under the ‘three dot menu’ in a much more intuitive layout.
Report on your focus items
We now have a new report source, called Focus stats. This allows you to create a report which includes the following data from focus items: name, url, interaction, page hits, unique hits, description, focus type, style. This is super useful to keep track of how your focus items are performing.
New campaign email charts: weekday and hour based metrics
Have you ever wanted to see a chart which showed you how your emails within a campaign were performing by day or by hour? Thanks to this new PR we’ve now got an extra tab on the campaign which shows your email statistics.
Mark fields as read-only on forms
When showing a Mautic form, sometimes you might want to have certain fields ‘read-only’ – such as the user’s email address – so that they can only fill out the fields you require. Thanks to this new feature, you can now set a field to be read only.
New themes
We now have five new landing page themes and two new form themes to help you building beautiful experiences for your users – check them out and let us know what you think!
Set global company name and brand highlight color
Thanks to this PR you can now set your company name and brand highlight colour globally, which will be used by the themes added since Mautic 5 automatically. A small but convenient change for marketers!
Developer-facing changes
Since Mautic 3.0 we’ve been diligently working on increasing the amount of our codebase which is covered by automated tests – these tests pick up on bugs and problems with code quality for developers to address before they get to you, the user. We’re delighted to share that we’re now at 64.75% coverage, up from from 30% with Mautic 3.0, 50.28% with Mautic 4.4 and 58.6% with Mautic 5.0 – a further demonstration of our commitment to delivering a more robust, reliable open source marketing automation platform.
Backward compatibility breaking changes
JavaScript
As the legacy builder was removed these JavaScript libraries were removed as well:
- Froala has been removed as it was outdated with security vulnerabilities
- CodeMirror JS has been removed from Core, but is still installed in the GrapesJS plugin
- jQuery UI’s plugin Safe Blur has been removed as it was no longer used.
- Modernizr has been removed as it’s not necessary anymore as modern browsers support open standards
PHP
Mautic 6 removes a large volume of legacy, deprecated code. Please refer to the UPGRADE-6.0 file for the full list.
Symfony notable changes
Getting a value from request must now be scalar
Meaning arrays cannot be returned with the get() method. Example of how to resolve it:
- $asset = $request->request->get('asset') ?? [];
+ $asset = $request->request->all()['asset'] ?? [];
ASC constants are replaced with enums in Doctrine
- $q->orderBy($this->getTableAlias().'.dateAdded', \Doctrine\Common\Collections\Criteria::DESC);
+ $q->orderBy($this->getTableAlias().'.dateAdded', \Doctrine\Common\Collections\Order::Descending->value);
Creating AJAX requests in functional tests
- $this->client->request(Request::METHOD_POST, '/s/ajax', $payload, [], $this->createAjaxHeaders());
+ $this->setCsrfHeader(); // this is necessary only for the /s/ajax endpoints. Other ajax requests do not need it.
+ $this->client->xmlHttpRequest(Request::METHOD_POST, '/s/ajax', $payload);
Logging in different user in functional tests
- $user = $this->loginUser('admin');
+ $user = $this->em->getRepository(User::class)->findOneBy(['username' => 'admin']);
+ $this->loginUser($user);
Asserting successful response in functional tests
$this->client->request('GET', '/s/campaigns/new/');
- $response = $this->client->getResponse();
- Assert::assertTrue($response->isOk(), $response->getContent());
+ $this->assertResponseIsSuccessful();
Session service doesn’t exist anymore
Use Request to get the session instead.
- use Symfony\Component\HttpFoundation\Session\SessionInterface;
+ use Symfony\Component\HttpFoundation\RequestStack;
class NeedsSession
{
- public function __construct(private SessionInterface $session) {}
+ public function __construct(private RequestStack $requestStack) {}
public function doStuff()
{
-
$selected = $this->session->get('mautic.category.type', 'category');
}$selected = $this->requestStack->getSession()->get('mautic.category.type', 'category'); // ...
}
Mautic features
Removal of gated video
Gated video used a very outdated, unsupported library and only worked with the legacy builder which is now removed. Therefore, the gated video feature has been removed from Mautic. If developers would like to build this for GrapesJS, please make a PR for the core team to review!
Removal of the legacy builder
It’s finally time to say goodbye to the legacy builder which has served Mautic since the early days of Mautic 2.
We hope that you enjoy using Mautic 6 – please let us know of any problems you encounter on this forum category or by posting in #mautic-6 on Slack.