8.2.0 (2022-12-01)
Overview of merged pull requests
FEATURE: Make login logo configurable
Since ages, we are able to configure the background of the login to customize. The logo was often replaced by CSS. With this change, we are able to configure a logo as well.
The new setting is ‘Neos.Neos.userInterface.backendLoginForm.logoImage’
Review instructions
Configure a new logo and check the login screen.
<img width=”1688” alt=”Screenshot 2022-10-18 at 10 39 31” src=”https://user-images.githubusercontent.com/1014126/196380887-4d52a85a-61d0-4f1b-b24a-e8d070845acb.png”>
Packages:
Neos
FEATURE: Add Fusion EEL Helper `${Neos.Backend.interfaceLanguage()} <https://github.com/neos/neos-development-collection/pull/3939>`_
closes #3638 implemented as discussed in #3638
``` Neos.Backend ————
Backend helper eg. for translations in the backend
Implemented in: Neos\\Neos\\Fusion\\Helper\\BackendHelper
Neos.Backend.interfaceLanguage()
The interface language the user selected or the default language defined in the settings Formatted as {@see \Neos\Flow\I18n\Locale} identifier, eg “de”, “en”, …
If no user is available. assert
https://www.php.net/manual/de/function.assert.php will fail and depending on you php config - throw an error
Upgrade instructions
Review instructions
use this helper in your fusion and check if it correctly reflects you backend user language. Try to switch your language via user-settings (possibly flush the fusion cache) and see it correctly reflected
`
root >
root = ${Neos.Backend.interfaceLanguage()}
`
Packages:
Neos
FEATURE: implement checkbox label in workspace module
Review instructions
Currently, in the Workspace module, in the overview, we have a checkbox for selecting all changes. But this checkbox is not marked with a label. For clarity (and looks), it is better if it is clearly marked what this checkbox does.
## Screenshots
### Before !`neos-backend-workspace-module-checkbox-without-label <https://user-images.githubusercontent.com/39345336/197170837-7b4e5878-0f76-4ebc-baeb-62320d4522f9.png>`_
### After !`neos-backend-workspace-module-checkbox-with-label <https://user-images.githubusercontent.com/39345336/197170857-b111a761-037a-4fb7-af02-8bb47380447d.png>`_
Packages:
Neos
FEATURE: Add `nodetypes:// stream wrapper to support including fusion from NodeTypes folder <https://github.com/neos/neos-development-collection/pull/3903>`_
To support colocation of NodeTypes and Fusion Files the nodetypes://
stream wrapper is added that allows to access files from the NodeTypes folder.
The following line in the Root.fusion
will load all fusion files from the NodeTypes
folder of package Vendor.Site
`
include: nodetypes://Vendor.Site/**/*.fusion
`
Review instructions
Basically the stream wrapper is a copy of the resource stream wrapper from flow (https://github.com/neos/flow-development-collection/blob/8.2/Neos.Flow/Classes/ResourceManagement/Streams/ResourceStreamWrapper.php) with the following adjustments.
- Added protection against traversal out of the path via multiple ..
in the path
- Support an empty path as this is needed in the most likely globbing pattern nodetypes://Vendor.Site/**/*.fusion
The explicit filter for ..
in the filePatternResolver is needed as otherwise the traversal protection will throw a valid exception because of boundary violation when calling isDir on the path NodeTypes/..
.
Packages:
Neos
Fusion
FEATURE: Provide Uris in MenuItemsImplementation
With this change the uris for nodes are included in menuitems. This makes it easier to use them in presentational components as no further processing is needed to turn nodes into uris.
Resolves: #3907
Review instructions
Debugdump the output of a Neos.Neos:MenuItems
instance. It should include uri
fields for all items.
Packages:
Neos
NodeTypes.Navigation
BUGFIX: Fusion Component declaration `renderer=null <https://github.com/neos/neos-development-collection/pull/3945>`_
followup for #3915
fixes: https://github.com/neos/neos-development-collection/pull/3915#discussion_r1011450134
otherwise when the renderer is misspelled, the evaluation wouldnt notice it as we would have the fallback to renderer=""
(fyi assigning a path to null in fusion, is like it doesnt exist - the runtime wouldnt know)
!`image <https://user-images.githubusercontent.com/85400359/199457646-d09dfaeb-e1cf-479f-860a-8c51821db2be.png>`_
Upgrade instructions
Packages:
Fusion
BUGFIX: 3371 shortcut translations
closes: #3371
## 1
> the dutch translation f.x. doesnt have correctly formatted <br/>
tags. See f.x.: 'shortcut.clickToContinueToParentNode'
and compare the spanish < br / >
to the english source <br />
. A search for < br / >
reveals multiple cases. The problem is, that this invalid html (due to the space) and will be rendered as text (< br / >
).
before in NL: !`image <https://user-images.githubusercontent.com/85400359/198111355-d5a4d9f5-f1b5-4b83-8f4a-1f3c914b4955.png>`_
after: !`image <https://user-images.githubusercontent.com/85400359/198111385-575bd6b0-4044-436d-a145-e14d4934c778.png>`_
## 2
> this translation id doesnt exist: 'shortcut.toSpecificTarget'
so the value / fallback This is a shortcut to a specific target:
is always used.
It has been missed in 2014 (since Neos 2) ^^ https://github.com/neos/neos-development-collection/commit/`02f8ff96e1ecd3dfbd9a356c4c6f55bb565916c7 <https://github.com/neos/neos-development-collection/commit/02f8ff96e1ecd3dfbd9a356c4c6f55bb565916c7>``_#diff-``d1bec08a4f5050d463e4f7af3d61b767974d858d <https://github.com/neos/neos-development-collection/commit/d1bec08a4f5050d463e4f7af3d61b767974d858d>`_3d56ced85581ca55c27126dcR6
before in DE (or any other language): !`image <https://user-images.githubusercontent.com/85400359/198111487-39e7c03c-c132-4896-a12d-f25da087e07b.png>`_
after: nothing to see here yet - but now we can translate via weblate :D
Upgrade instructions
Review instructions
Check the shortcode rendering in the backend. If you switch your user language - flush the fusion cache - as this is not calculated into the shortcut cache:
./flow cache:flushone Neos_Fusion_Content
Packages:
Neos
BUGFIX: fix typos in privilegeTargets
Review instructions
Fixes small spelling errors in the priviligeTargets
Packages:
Neos
BUGFIX: fix composer create-project command for neos dev collection
I noticed that the previous command is no longer working.
Packages:
Neos
BUGFIX: DI conflict in DataSource `Call to a member function log Throwable() on null <https://github.com/neos/neos-development-collection/pull/3931>`_
closes #3858
when one throws an exception in a datasource, it fails logging it and an uncaught error is thrown, because the ThrowableStorage
is not injected:
Call to a member function log Throwable() on null
this seems due to a dependency injection conflict with inheritance.
this pr only prevents this conflict from happening
the controller that handles datasources extends the AbstractServiceController
which injects the throwableStorage
but the AbstractServiceController
also extends the ActionController
which injects the throwableStorage
via an inject method into a private property
- ```php
- /**
@var ThrowableStorageInterface
*/
private $throwableStorage;
- /**
Injects the throwable storage.
@param ThrowableStorageInterface $throwableStorage
@return void
*/
public function injectThrowableStorage(ThrowableStorageInterface $throwableStorage) {
$this->throwableStorage = $throwableStorage;
}
this combined doesnt work and results in the @Flow\\Inject
in the AbstractServiceController
not working
solutions are:
fix the flow DI? (assuming this is a issue)
rename the variable (what id did now)
use also
AbstractServiceController::injectThrowableStorage
and call parent / not the@Flow\\Inject
annotationuse a protected property in
ActionController
and reuse it
## update 1 this is indeed defined behaviour from flow: https://flowframework.readthedocs.io/en/8.1/TheDefinitiveGuide/PartIII/ObjectManagement.html#property-injection > If a setter method exists for the same property, it has precedence.
Upgrade instructions
Packages:
Neos
BUGFIX: Node::countChildNodes($nodeTypeConstraints) filter doesn’t work
closes #3885
findChildNodes
is corrently implemented, but countChildNodes
doesnt transform the argument $nodeTypeConstraints NodeTypeConstraints to a string for the legacy api:
either this snipped must be included:
`php
$filter = $nodeTypeConstraints !== null ? $nodeTypeConstraints->asLegacyNodeTypeFilterString() : null;
`
or we must use $this->findChildNodes
without that, the NodeTypeConstraints
is passed further down, and due to lack of typesafety it fails at the last moment:
`php
Argument 2 passed to Neos\\Utility\\Arrays::trimExplode() must be of the type string, object given, called in /tmp/neos/Development/SubContextddev/Cache/Code/Flow_Object_Classes/Neos_ContentRepository_Domain_Repository_NodeDataRepository.php on line 1127
`
Upgrade instructions
Packages:
Neos
ContentRepository
BUGFIX: Fusion Runtime @process with simple string
This makes it possible to use @process
with a regular string.
Closes #3846
Review instructions try the fusion code from the issue.
it now works as we switched a condition (the count will only happen if it is an array and not possibly a simple value)
Packages:
Neos
Fusion
BUGFIX: Make import of .ico files possible
This enables the possibility of uploading .ico
files.
Closes #3922
Packages:
Neos
Media
BUGFIX: Fix media commands output
Fix Neos.Media commands media:clearthumbnails
, media:createthumbnails
and media:removeunused
to properly print a final newline.
Output before: ``` user $ ./flow media:clearthumbnails 0 [->————————–]user $
^– next prompt
`
Output after:
`
user $ ./flow media:clearthumbnails
0 [->————————–]
user $
```
Resolved: #3894
Upgrade instructions
None.
Review instructions
in bash
, execute
./flow media:clearthumbnails
(by default, zsh
is less affected, it recovers but shows a percent sign)
Packages:
Neos
Media
BUGFIX: Fusion Runtime lazy-props evaluation confuses `getLastEvaluat…
fixes: #3469
doing the check if a render was successful cannot only happen via $this->getLastEvaluationStatus()
-> as the render path might contain a lazy-prop (closure) which, when evaluated uses the same runtime.
-> if the last lazy-prop has an @if
annotation its skipped, but the $lastEvaluationStatus
is set on the same runtime.
-> there might still be partial successful output (the first values of a lazy-prop eg.) so we need to check additionally if the return value is null.
Packages:
Fusion
BUGFIX: Add correct default value for sortBy parameter
When using the UserService in your code or via CLI ./flow user:list
you will get an exception caused by the incorrect default value. Only if you pass the correct value, e.g. accounts.accountIdentifier
, then it works.
This fixes that by providing a (correct) default value of accounts.accountIdentifier
.
Fixes: #3882
Packages:
Neos
TASK: Remove old UI specific content wrappings and CSS
The nodetype schema endpoint saves all values with the prefix typo3. This change will replace this with neoscms.
What I did
[x] Removed all content wrappings related to the old Neos UI
[x] Removed PHP code that is completely replaced via AOP by Neos UI code
How to verify it
Every content element when rendered in the backend should have much less data attributes, especially the typo3
prefixed ones.
All should still work the same, but cleaner and faster.
Packages:
Neos
TASK: Update code of conduct
Removes the rST version (based on v1.4 of Contributor Covenant) and update the md version to 2.1 of Contributor Covenant.
Packages:
Neos
TASK: minor clean up fusion runtime code
I often wanted to bring some light into the Runtime, now here it is ^^
I made really small, descriptive commits, so it should be superclear why i did touch code part x.
I ran the benchmark afterwards but there is no difference, as i only changed the syntax…
Packages:
Media
Fusion
TASK: Render API docs (again)
Packages:
Media.Browser
Neos
.github
TASK: Remove unused `FusionCoreParserInterface <https://github.com/neos/neos-development-collection/pull/3932>`_
The Fusion\\Core\\ParserInterface
is removed as it could not be used to implement an alternative Fusion parser. The removal of the interface will allow to improve the interface of the parser in future.
Upgrade instructions
If you must access the Fusion parser directly - then dont inject it by using the Fusion\\Core\\ParserInterface
but inject or instantiate Fusion\\Core\\Parser
.
The recommended way to interact with Fusion is via the FusionView
Packages:
Neos
Fusion
TASK: Persist every 1000 iterations in media:clearthumbnails
- This includes a few style tweaks as well, but the main part is the introduction
of persisting changes every 1000 iterations when clearing thumbnails.
This makes restarting possible without having lost (much) progress.
Packages:
Media
TASK: Split basic fusion prototype files and define defaults
Splits the Fusion prototypes in Neos.Neos and Neos.Fusion into separate files and adds all available parameters of the PHP implementations also in Fusion. This should make it easier for integrators to understand which options are available for each prototype without reading the their PHP implementation code.
Packages:
Neos
Fusion
TASK: Tweak note about target branches for PRs
This removes an explicit mention of the oldest supported branch, so we don’t have to keep updating it.
Packages:
Neos
TASK: Use local fonts instead of from Google
Removes the use of remote fonts from Google in favor of local font files.
Additionally node-sass
was updated to allow compilation on M1 Macs.
Replaces #3873
Review instructions
Noto should still be the font used on error pages.
Packages:
Neos
TASK: Document download linking option in PropertyEditorReference
Review instructions
My pull request includes the documentation for the following pull request: - https://github.com/neos/neos-ui/pull/3197
Packages:
Neos
TASK: improve feature issue template wording
Packages:
Neos
.github
TASK: Rename index to match name in database
Renames the index in the NodeData model to match the index name in migration and database.
Fixes: #3888
Packages:
Neos
ContentRepository
TASK: Add PHP 8.1 to build matrix
Review instructions
The build on PHP 8.1 should succeed.
Packages:
Neos
.github