neos / neos-development-collection

The unified repository containing the Neos core packages, used for Neos development.
https://www.neos.io/
GNU General Public License v3.0
264 stars 222 forks source link

Allow "hiding" dimension values in frontend #3623

Open Sebobo opened 2 years ago

Sebobo commented 2 years ago

Description

In projects sometimes new languages are prepared but shouldn't be accessible in the frontend yet.

This is currently a bit difficult as the values appear in several places like the dimension menu, SEO metadata, etc.

Best would be to hide the value completely based on a setting.

I assume the best place to do this is in \Neos\ContentRepository\Domain\Service\ConfigurationContentDimensionPresetSource->setConfiguration and filtered a value based on an additional property of the preset in combination with the current context.

bwaidelich commented 2 years ago

Careful, there might be dragons :) IMO we should evaluate all options before we increase complexity of dimensions. Maybe it would be easier to be able to skip specific dimensions in the places they occur explicitly (e.g. extend the Neos.Neos:DimensionsMenu Fusion prototype by some optional filter prop).

I'm aware that this means that it might have to be configured in multiple places (e.g. SEO metadata) but IMO that's still "safer" than a new global (somewhat magic) concept

Sebobo commented 2 years ago

@bwaidelich I know, I implemented that in two projects already by adjusting the SEO stuff and dimensions menu. But it's fragile and doesn't prevent the FrontendRoutePartHandler from resolving the value. And the PresetSource is the one source of truth for all of those places.

bwaidelich commented 2 years ago

doesn't prevent the FrontendRoutePartHandler from resolving the value

Good point..

the PresetSource is the one source of truth for all of those places

Yes, but what truth do we want to enforce in this case? i.e. is a flag draft or hidden explicit enough to remove a dimension from the list for a given context (for which the ContentDimensionPresetSourceInterface would need to know the current context)?

Mh, I don't know.. can this be achieved with preset constraints maybe?