4.3.0 (2019-04-15)
Overview of merged pull requests
BUGFIX: Fix site-package generator
Somehow the classic site generator did not replace the occurrences of the package names in fusion reference://{packageKey}/… strings any more while in other places this still worked.
This works around this by falling back to a very plain search replace based implementation that is only used on the fusion files.
With this change a site package created with the setup tool or the kickstart:site command will not directly welcome the user with fusion-errors which it did before.
Packages:
SiteKickstarter
FEATURE: Variant view in react and possibility of cropping
This variant view based on React is a beta feature, just like the current implementation of the variant view. It allows to crop any preset variant with a crop, retaining the current aspect ratio.
Packages:
Browser
Media
BUGFIX: Apply enforced image format conversions to all generated images
Previously the configured image format conversions were only applied when a target size was specified. That made the preview images in the media module still not show thumbnails for tiff images.
In addition the new configuration is much more generic and is easier to support in future when we may improve the implementation.
This change removes the ConvertImageThumbnail Generator and the Configuration that came with it and introduces a setting Neos.Media.image.defaultOptions.convertFormats instead. The setting is a key-value-list that allows to specify which media types shall be converted whenever they are rendered. The key in the new configuration is the the source media-type and the value is the target media-type or file-extension.
By default the setting is empty since all format conversions have to be supported by by the imagine driver and especially Gd
lacks some features.
With the following setting you setup automatic conversion of tiff images to jpg: ``` Neos:
- Media:
- image:
- defaultOptions:
# Image formats that shall always be converted regardless wether an adjustment was applied or not # The key is the the source media-type and the value is the target media-type or file-extension. convertFormats:
image/tiff: image/jpeg
!!! This replaces the implementation for the default conversions in #2389 with a more generic approach wich is non breaking since it was not released yet.
Packages:
Media
Neos
FEATURE: Add release notes
Packages:
Neos
BUGFIX: add missing and new copyright field to the edit and new dialog in the media manager
add the missing copyright field again and also added a new on for the “new” dialog
Packages:
Browser
BUGFIX: add equals() methods on ContentStreamIdentifier and TraversableNode, use it in TraversableNodes
Packages:
ContentRepository
BUGFIX: Fix tag rendering in media module
The names of tags were not rendered in the sidebar of the media module since https://github.com/neos/neos-development-collection/pull/2408 was merged because of an incomplete renaming from tag to retrievedTag
Packages:
Browser
TASK: Adjust created responses to ``ActionResponse``
This changes responses created in various areas of Neos to be
of the new ActionResponse
class in preparation of the next
major version.
Related: #2437
Packages:
Fusion
Neos
Namespace and interface adjustments
This
moves the new interfaces and value objects to conceptually matching namespaces (e.g. NodeAggregateIdentifier -> NodeAggregate, NodeTypeConstraintFactory -> NodeType)
makes NodeName nullable
moves getDimensionSpacePoint from NodeInterface to TraversableNodeInterface
removes getSubgraph from TraversableNodeInterface
removes the now obsolete RootNodeIdentifiers class
removes the now obsolete NodeIdentifier class
Packages:
Browser
` FEATURE: Set crop image adjustment by aspect ratio <https://github.com/neos/neos-development-collection/pull/2408>`_
This change introduces a new property “aspectRatio” for the crop image adjustment. It allows users to set a cropping area simply by providing an aspect ratio, instead of x, y, width and height.
If an aspect ratio is specified, the x, y, width, and height parameters are automatically deactivated. Likewise, if x, y, width or height are specified, a potentially defined aspect ratio value will be reset.
Packages:
Media
TASK: Remove NodeInterface::getNodeIdentifier and add root node type name constant
This change is required to adjust the codebase to our current Event Sourced CR refactoring, where we drop the NodeInterface::nodeIdentifier.
TASK: Adjust Login Wallpaper for Neos 4.3
Packages:
Neos
BUGFIX: Respect settings for quality and format even if images are smaller that target dimensions
Thumbnail images always returned the original source if allowUpscaling is false and the target size is smaller than the original image. This is unexpected when quality and format are defined.
This change makes sure the new assets are rendered when quality and format is defined. The dimension calculation of the target images respects the allowUpscaling if the source is smaller that the target dimension.
Resolves: #2416
Packages:
AssetList
BaseMixins
Browser
ColumnLayouts
ContentReferences
ContentRepository
Form
Html
Media
Navigation
Neos
NodeTypes
BUGFIX: Lowercase Node Names upon creation
This adjusts the NodeName Value Object to always convert the given value to lower case when created via the fromString() constructor.
Background: Node names are considered to be case insensitive. Internally they are stored lower case but the NodeInterface::MATCH_PATTERN_NAME does not allow for camel case names.
Fixes: #2418
Packages:
ContentRepository
Media
FEATURE: Trigger signal when Thumbnail is persisted
PR for issue #2387
What I did Added a signal thumbnailPersisted and an ORM lifecycle callback that triggers the signal once the thumbnail is persisted.
How I did it Added two methods in Neos\Media\Domain\Model\Thumbnail: one for the signal and one for the lifecycle callback that triggers the signal.
Checklist
[x] Code follows the PSR-2 coding style
[x] Tests have been created, run and adjusted as needed
[x] The PR is created against the [lowest maintained branch](https://www.neos.io/features/release-roadmap.html)
Packages:
Media
BUGFIX: node:repair now handles node->getProperties() as ArrayObject
What I did I changed the code of the node:repair command to handle the result of node->getProperties() as ArrayObject and not as array, because that recently changed.
How I did it Instead of getting the key via array_keys the properties are now iterated to find undefinded properties.
How to verify it * run the node:repair-command on a content repository that is fine already => it should not complain about anything * add a undefinded property to a node (by editing a record in the nodedata-table directly) and run node:repair => you should be asked if you want to remove the undefinded property
Packages:
ContentRepository
BUGFIX: Image previews should be rendered for asset proxies as well
The previous code must be a leftover from an upmerge and it results in fatal errors when trying to open the details of an asset coming from a proxy source.
Packages:
Browser
Neos
TASK: Add PgSQL migration to support variant presets
Packages:
Media
Neos
BUGFIX: Add missing Eel FileHelper registration
Register the file helper by default so that they can be used in Fusion, without the need of separate registration.
Solves Issue: #2405
Packages:
Fusion
Neos
FEATURE: Automatic image variants generation
This change adds a feature which allows to automatically generate variants of an original image based on the newly introduced image variant presets configuration.
In this first version, variants are automatically created as soon as an asset is created – for example, when it has been uploaded by an editor or otherwise been imported. Future versions may defer this generation into a job queue, or provide a way to put conditions of the generation of these variants.
See the included documentation for configuration syntax and further background.
This change also includes a basic view displaying all variants of an asset in the edit view of the Media Browser. While this new view (implemented as a tab) may be useful already, it is neither especially polished nor does it provide additional features. Therefore it is disabled by a feature switch for now. See the Settings.yaml of Neos.Media.Browser for details on enabling the tab.
Packages:
Media
FEATURE: Add fallback from `itemRenderer` to `content` for `Neos.Fusion:Map` and derived prototypes
This allows to declare the itemRenderers in afx without @children annotation and avoids a common error in afx code.
Affected prototypes: - Neos.Fusion:Map - Neos.Fusion:RawCollection - Neos.Fusion:Loop - Neos.Fusion:Collection
Packages:
Fusion
Neos
FEATURE: Add native 404 error rendering that can be controlled via Fusion
This change adds the default fusion path error that is used to render status messages for the status codes 403, 404 and 410.
- The matcher receives the context values exception, renderingOptions, statusCode,
statusMessage and referenceCode and will by default render the previous template.
By extending the error Case you can add custom 404 rendering like in the example below.
``` # # Extend error matcher to render the document with uriPathSegment notfound # for exceptions with 4xx status code # error {
@context.notfoundDocument = ${q(site).children(‘[instanceof Neos.Neos:Document]’).filter(‘[uriPathSegment=”notfound”]’).get(0)}
- 4xx {
@position = ‘start’ condition = ${statusCode >= 400 && statusCode < 500 && notfoundDocument} renderer = Neos.Fusion:Renderer {
@context.node = ${notfoundDocument} renderPath = ‘/root’
}
}
}
Resolves: #2325
Packages:
Neos
BUGFIX: Remove coupling of functional tests to `Neos:Demo` and `Neos.NodeTypes`
The previous tests tested nodetypes from those external packages which lead to testing errors because of changes to the master of Neos.Demo. This change uses nodetypes local to the testing context of the cr itself.
This is cleaner and a preparation to move Neos.NodeTypes out of the development collection someday. Right now it allows to run the functional tests without Neos.Demo or Neos.NodeTyoes beeing installed.
Packages:
Neos
FEATURE: Move new NodeInterface and TraversableNodeInterface to core
## Ready for final review / Merging.
This Pull Request does three things:
Introduce the Event-Sourced NodeInterface and TraversableNodeInterface in the core
make the “old” Node implement TraversableNodeInterface as far as possible.
adjust FlowQuery operation code to work on the new TraversableNodeInterface whereever it makes sense.
This change is necessary to ensure a smooth upgrade lateron to the Event Sourced CR; so people working with NodeInterface in their custom code can already start using TraversableNodeInterface today.
The change is rather big, but **not breaking** (at least it should not be breaking ;) )
## ToDo List
[x] move new NodeInterface and TraversableNodeInterface to CR
[x] adjust TraversableNodeInterface to have proper method namings. Everything which queries something should be called find*; as opposed to get*.
[x] make old Node implement TraversableNodeInterface
[x] make compatible to PHP 7.1 (not sure if things need to be done; travis will tell us!)
[x] fix test cases
[x] go through all FlowQueryOperations in Neos and ensure they work with TraversableNodeInterface / new NodeInterface (partially done)
[x] ensure the new NodeInterface and TraversableNodeInterface have proper API descriptions; and the old NodeInterface has proper deprecation messages set up
Packages:
Neos
FEATURE: Add ``format`` option for image-prototypes, viewHelpers and presets
The option format
is added to imagePresets, viewHelpers and FusionPrototypes.
The format is passed as string “jpg”, “jpeg”, “gif”, “png”, “wbmp”, “xbm”, “webp” and “bmp” are supported. If no format is given the crops will use the format of the original image.
This allows to to enforce rendering of crops in jpeg or png but also adds support for rendering of webp-images as alternate sources.
Additionally this pr adds the ConvertImageThumbnailGenerator that allows to specify images that should be converted for online-presentation to an optimized target format. While the default imageFormat is specified in the settings this can still be overridden via format option on the thumbnail-configurations.
The ConvertImageThumbnailGenerator is configured via settings:
``` Neos:
- Media:
- thumbnailGenerators:
- Neos\Media\Domain\Model\ThumbnailGenerator\ConvertImageThumbnailGenerator:
- supportedExtensions:
tiff
targetExtension: jpg
Resolves. #2320
Packages:
Media
Neos
FEATURE: Add `Neos.Neos:MenuItems`, `Neos.Neos:DimensionMenuItems` and `Neos.Neos:BreadcrumbMenuItems` prototypes
Three new fusion prototypes are added that extract the rendering of the items
that are passed to the template from Neos.Neos:Menu
, Neos.Neos:BreadcrumbMenu
and Neos.Neos:DimensionsMenu
and make those items available for direct Fusion use without Template.
In addition the Neos.Neos:*Menu
prototypes are now based on Neos.Neos:Template
and do not have a custom implementation any more.
Attention: This change removes the old MenuImplementation classes. Those are not part of the api so this is still non-breaking since the ``*Menu``fusion prototypes still support all previous options by beeing based on ``Neos.Fusion:Template`` now instead of extending the TemplateImplementation class.
### Neos.Neos:MenuItems
Create a list of menu items for nodes. Each menuItem has the properties: node
, originalNode
, state
, label
and menuLevel
.
entryLevel
(integer) Start the menu at the given depthmaximumLevels
(integer) Restrict the maximum depth of items in the menu (relative toentryLevel
)startingPoint
(Node) The parent node of the first menu level (defaults tonode
context variable)lastLevel
(integer) Restrict the menu depth by node depth (relative to site node)filter
(string) Filter items by node type (e.g.'!My.Site:News,Neos.Neos:Document'
), defaults to'Neos.Neos:Document'
renderHiddenInIndex
(boolean) Whether nodes withhiddenInIndex
should be rendered, defaults tofalse
itemCollection
(array) Explicitly set the Node items for the menu (alternative tostartingPoints
and levels)
### Neos.Neos:BreadcrumbMenuItems
Create a list of of menu-items for a breadcrumb (ancestor documents), based on Neos.Neos:MenuItems
.
### Neos.Neos:DimensionsMenuItems
Create a list of menu-items for other node variants (e.g. variants of the current node in other dimensions) by using this Fusion object.
If the dimension
setting is given, the menu will only include items for this dimension, with all other configured dimension being set to the value(s) of the current node. Without any dimension
being configured, all possible variants will be included.
If no node variant exists for the preset combination, a NULL
node will be included in the item with a state absent
.
dimension
(optional, string): name of the dimension which this menu should be based on. Example: “language”.presets
(optional, array): If set, the presets rendered will be taken from this list of preset identifiersincludeAllPresets
(boolean, default false) If TRUE, include all presets, not only allowed combinationsrenderHiddenInIndex
(boolean, default true) If TRUE, render nodes which are marked as “hidded-in-index”
Packages:
Neos
BUGFIX: Allow using font awesome brand icons in backend modules
This was broken with 4.0 as fontawesome styling changed.
What I did
Inherit the font family for the icon pseudo element from the surrounding fa* class.
How to verify it
Use fab fa-google as icon for a backend module, f.e. Media Browser. Instead of an empty square you should see the Google icon.
Packages:
Neos
FEATURE: Add NodeLink fusion prototype
The Neos.Neos:NodeLink
fusion prototype is added which renders an <a>
tag based on Neos.Neos:NodeUri
, similar to Neos.Neos:ImageTag
and Neos.Neos:ImageUri
.
all properties of
Neos.Neos:NodeUri
are supported and passed overattributes
(Neos.Fusion:Attributes) Link tag attributescontent
(string) The label of the link, defaults to the node labelq(node).property('_label')
.
This helps reducing code lines especially when using fusion-afx, with this prototype you can now directly link nodes in an afx renderer.
Packages:
Neos
TASK: More adjustments to Behat code
Packages:
BaseMixins
Browser
ContentRepository
Neos
!!!TASK: Upgrade to latest neos/behat version
Test distribution for travis: https://travis-ci.com/johannessteu/neos-development-distribution/builds/97495679
Packages:
Neos
!!! TASK: Tweak CR Value Objects
for better type safety and interoperability
Packages:
ContentRepository
Add Pull Reminders badge
Hi everyone!
Over 500 open-source organizations (like yours) use [Pull Reminders](http://pullreminders.com) for free. We’ve created this README badge so we can hopefully drive some traffic back to our website and continue sustainably providing free accounts to open-source orgazniations. Let me know if you have any concerns about adding it. Here’s [more information](https://pullreminders.com/badge) about the badge program.
FEATURE: Hide property “target” of Neos.Neos.ShortCut depending on targetMode
What I did/How I did it I added configuration to the shortcut nodetype definition to hide the target-property in the UI when targetMode is not “selectedTarget”
How to verify it Insert a shortcut node. You should not see the target-property untill you change the targetMode to “selectedTarget”
Packages:
Neos
Add deprecation annotations to methods that will be removed
Adds @deprecated annotations to methods from NodeInterface and Node that will be replaced/removed with the CR rewrite.
Packages:
ContentRepository
Neos
TASK: Update 3rd party dependency constraints
This allows semantically non-breaking updates for a number of 3rd party dependencies. It includes PR #2299 and is related to neos/flow-development-collection#1481
It makes ImportedAsset a non-final class to allow Doctrine to create a proxy for it.
Packages:
Media
WIP: TASK: Cleanup Node and TraversableNode interfaces
Introduce TraversableNodes as replacement for array<TraversableNodeInterface>
Replace nullable param and return types where possible
Add missing (return) type annotations
Packages:
ContentRepository