========
Neos 7.1
========

This release of Neos comes with some great new features, bugfixes and a lot of modernisation of the existing code base.

As usual, we worked hard to keep this release as backwards compatible as possible but some of the changes might require manual
adjustments. So please make sure to carefully read the upgrade instructions below.


************
New Features
************

FEATURE: Add missing translation to flash messages
--------------------------------------------------

- added translation to all flash messages
- added translator and translation units to all flash messages

Related issue: `#3334 <https://github.com/neos/neos-development-collection/issues/3334>`_


FEATURE: Show the default asset-collection in the sites listing
---------------------------------------------------------------

The default asset collection for every site is now listed in the site management module.

!`image <https://user-images.githubusercontent.com/642226/113774886-2af33500-9728-11eb-9cfa-3c61f9a4eee3.png>`_


FEATURE: Show information about roles and privileges
----------------------------------------------------

This feature improves the policy selection in the account editing by making use of the labels and descriptions added to roles and privileges with Neos 7.0

**Before:**
!`image <https://user-images.githubusercontent.com/642226/112342830-dcbf4a00-8cc2-11eb-8387-429d7e51e60d.png>`_

**After:**
!`image <https://user-images.githubusercontent.com/642226/112342788-d0d38800-8cc2-11eb-95e4-4c374ddf92dc.png>`_


FEATURE: Add node label helper
------------------------------

With this helper it’s easier to define custom node label schemas in nodetypes.

Moved the previously used Eel expression from the main ``Neos.Neos:Node`` nodetype into the NodeHelper.
Similar to the TranslationParameterToken it provides a chainable interface to simplify custom nodetype naming.

All labels in the Neos document and content tree should still be the same.
Override the nodetype label by copying the expression from ``Neos.Neos:Node`` and modifying it.

Examples:

Use properties as label with fallback chain (replaces the previous default)
```
'Neos.Neos:Node':
  label: "${Neos.Node.labelForNode(node).properties('title', 'text')}"
```

Show number of elements in a multicolumn next to its label
```
'Neos.Demo:Content.Columns.Two':
  label: "${Neos.Node.labelForNode(node).postfix(' (' + q(node).children().children().count() + ' elements)')}"
```

Use override, prefix and postfix:
```
'Neos.Demo:Content.Special':
  label: "${Neos.Node.labelForNode(node).prefix('The ').override('child of').postfix(' ' + q(node).parent().get(0).label)}"
```

Adjust cropping:
```
'Neos.Demo:Content.Cropped':
  label: "${Neos.Node.labelForNode(node).crop(20, ' - - -')}"
```


FEATURE: Replace EmberJS based API
----------------------------------

Again we plan to remove the mission pieces of the EmberJS based UI.
It is an ongoing process since version 5.0.

This PR is based on the webpack 5 upgrade PR (https://github.com/neos/neos-development-collection/pull/3301).

Reimplement the API based on vanilla js.
And remove the old ember based JS in the end.

Check the backend modules and the APIs like ``window.NeosCMS.Notification`` and ``window.NeosCMS.I18n``


FEATURE: Add Neos.Fusion:Link.Action and Link.Resource prototypes
-----------------------------------------------------------------

This allows to use a single tag in AFX to render links to actions or resources like this:

``<Neos.Fusion:Link.Action href.action="show" href.controller="SomeOther" href.arguments={{ object: myObjectValue }}>Link text</Neos.Fusion:Link.Action>``
``<Neos.Fusion:Link.Resource href.path="resource://Some.Package/Public/Images/SomeImage.png">Download</Neos.Fusion:Link.Action>``


FEATURE: Fusion match object
----------------------------

This change adds a new Fusion object to replace many situations where the Case object was used just to return a value based on a string.

The idea is based on the new match method in PHP 8 https://www.php.net/manual/tr/control-structures.match.php.

Related issue: `#3318 <https://github.com/neos/neos-development-collection/issues/3318>`_


FEATURE: Fusion debug to browser console
----------------------------------------

With this new Fusion object it’s possible to debug to the browser console via an inserted script tag instead of showing a big dump that breaks the layout.

It optionally allows setting a title, method and additional arguments.

```
renderer.@process.debug = Neos.Fusion:Debug.Console {
    value = '%cfoo'
    method = 'table'
    color = 'color: green'
}
```

Related issue: `#3319 <https://github.com/neos/neos-development-collection/issues/3319>`_


FEATURE: Add favicons and app icons for backend modules
-------------------------------------------------------

Related issue: `#3304 <https://github.com/neos/neos-development-collection/issues/3304>`_


FEATURE: Allow http image urls as login wallpapers
--------------------------------------------------

Before this change only ``resource://…`` urls were supported.

Set ``https://source.unsplash.com/random`` as background image and enjoy a nice random picture for every login.


TASK: Set text/html as default content type in Fusion
-----------------------------------------------------

While experimenting with PSR-15 middlewares I found out that no content type is returned from the Fusion rendering step when using the Neos default page prototype.
This keeps those middlewares from applying their effects as they do not know what kind of content they get.

This can be easily fixed in custom packages, but it makes sense to just have this as default for the future.


********************
Upgrade Instructions
********************

See https://docs.neos.io/cms/references/upgrade-instructions/upgrade-instructions-7-0-7-1

.. note::

   Additionally all changes in Flow 7.1 apply, see the release notes to further information.
   See https://flowframework.readthedocs.org/en/7.1/TheDefinitiveGuide/PartV/ReleaseNotes/710.html
