Skip to content

eZ Platform v2.4

Version number: v2.4

Release date: December 21, 2018

Release type: Fast Track

Notable changes

Dxp

Editorial workflow

Editorial Workflow enables you to pass content through a series of stages.

Each step can be used to represent for example contributions and approval of different teams and editors. For instance, an article can pass through draft, design and proofreading stages.

The workflow mechanism is permission-aware. You can limit access to content in different workflow stages, or the ability to pass content through specific transitions.

Workflow event timeline

Workflow Engine is located in the ezplatform-workflow bundle.

RichText

RichText Field Type

RichText Field Type has been extracted to a separate bundle, ezsystems/ezplatform-richtext. Relying on any class from the eZ\Publish\Core\FieldType\RichText namespace is deprecated.

If you're implementing any interface or extending any base class from the old namespace, refer to its PHPDoc to see what to implement or extend instead. Make sure to enable the new eZ Platform RichTextBundle.

See RichText Field Type Reference.

RichText block

In the Page Builder you can make use of the RichText block. It enables you to insert text created using the Online Editor with all features of a RichText Field.

RichText block

Improved styling in Online Editor

Online Editor has been improved with new styling.

Online Editor menu

Images in RichText

You can now attach links to images in the Online Editor:

Adding a link to an image in Online Editor

Formatted text in RichText

You can now use formatted text in RichText Fields (provided by means of a literal tag).

Formatted Text in Online Editor

Inline embedding in RichText

The new embed-inline built-in view type enables embedding content items within a block element in RichText.

Custom tag - ezcontent

The ezcontent property is now editable in the UI and can be used to store the output/preview of a custom tag. To learn how it works, see FactBox tag.

Content type translation

You can now translate content type names and Field definitions.

This possibility is available automatically when you have the target language configured (in the same way as for translating content, see Languages).

Content type with existing translations

When you translate Content of this type, the content type information will be displayed in the new language.

Editing a content translation with translated Field names

Multi-file management

New multi-file content management functionalities enable you to move and delete multiple files at the same time.

See Multi-file content management for more information.

Dxp

Forms

Create form on the fly

You can now create Forms on the fly from the Universal Discovery Widget.

Creating a Form on the Fly

Embedding forms in Pages

You can use the new Form block to embed an existing form on a Page.

Draft list

The list of all drafts can now be found in the Administrator User menu under Drafts.

Administrator User list of all Drafts

See Reviewing a draft for more information.

Subtree search filter

A new filter enables you to filter search results by Subtree.

See Simplified Filtered search for more information.

Sub-items limit

You can now set a number of items displayed in the table using sub-items from your User Settings.

Setting for subitems limit in user preferences

Policy labels update

The outdated Policy labels are now updated:

Old New
class Content type
ParentClass Content type of Parent
node Location
parentdepth Parent Depth
parentgroup Content type Group of Parent
parentowner Owner of Parent
subtree Subtree of Location

Updated Policy labels

API improvements

Simplified use of content type objects

This release introduces a few simplifications to API use for content types:

  • Exposes content->getContentType() for easier use, including from Twig as content.contentType. When iterating over the result set of content/Locations these will effectively be loaded all at once.
  • Adds possibility to load several content types in bulk using ContentTypeService->loadContentTypeList().
  • UserService now exposes isUser() and isUserGroup(). They do not need to do a lookup to the database in order to tell if a content item is of type User or User Group.

Load multiple Locations

You are now able to load multiple Locations at once, using LocationService->loadLocationList(). The biggest benefit of this feature is saving load time on complex landing pages when HTTP cache is cold or disabled, including when in development mode.

BC breaks and important behavior changes

Full list of new features, improvements and bug fixes since v2.3

eZ Platform eZ Enterprise
List of changes for final of eZ Platform v2.4.0 on Github List of changes for final for eZ Platform Enterprise Edition v2.4.0 on Github
List of changes for rc1 of eZ Platform v2.4.0 on Github List of changes for rc1 for eZ Platform Enterprise Edition v2.4.0 on Github
List of changes for beta1 of eZ Platform v2.4.0 on Github List of changes for beta1 of eZ Platform Enterprise Edition v2.4.0 on Github

eZ Platform v2.4.2

Dxp

Update eZ Enterprise v2.4 to v2.4.2

This release brings full support for Map\Host matcher when SiteAccesses are configured for different domains.

Token-based authentication (based on JSON Web Token specification) replaced cookie-based authentication that did not work with SiteAccesses configured for a different domains in the Page Builder. Authentication mechanizm is enabled by default in v2.4.2, however, the following steps are required during upgrade from v2.4 to v2.4.2+ Enterprise installation:

1. Register LexikJWTAuthenticationBundle bundle in /app/AppKernel.php

1
2
3
4
5
6
7
8
9
 public function registerBundles()
 {
     $bundles = array(
         // ...
        new Lexik\Bundle\JWTAuthenticationBundle\LexikJWTAuthenticationBundle(),
         // Ibexa
         // ...
     );
 }

2. Add the following configuration to /app/config/config.yml

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
 lexik_jwt_authentication:
     secret_key: '%secret%'
     encoder:
         signature_algorithm: HS256
     # Disabled by default, because Page Builder uses custom extractor
     token_extractors:
         authorization_header:
             enabled: false
         cookie:
             enabled: false
         query_parameter:
             enabled: false

By default HS256 is used as signature algorithm for generated token but we strongly recommend switching to SSH keys. For more information see LexikJWTAuthenticationBundle installation instruction.

3. Add EzSystems\EzPlatformPageBuilder\Security\EditorialMode\TokenAuthenticator authentication provider to ezpublish_front firewall before form_login in app/config/security.yml:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
 security:
     # ...
     firewalls:
         ezpublish_front:
             # ...
             simple_preauth:
                 authenticator: 'EzSystems\EzPlatformPageBuilder\Security\EditorialMode\TokenAuthenticator'
             form_login:
                 require_previous_session: false
             # ...

4. Make sure that parameter page_builder.token_authenticator.enabled has value true. If the parameter is not present, add it to /app/config/config.yml:

1
2
3
4
 # ...
 parameters:
    # ...
    page_builder.token_authenticator.enabled: true