IchHabRecht / content_defender

Define allowed or denied content element types in your backend layouts
GNU General Public License v2.0
85 stars 38 forks source link

Do not manually set $_GET parameter in form data providers #137

Open o-ba opened 1 year ago

o-ba commented 1 year ago

The code added with https://github.com/IchHabRecht/content_defender/commit/a1377750ea7ae5bb7a0f71b3193f61913858cb7b should be removed again as it leads to unreliable behaviour in the backend, based on record state (e.g. having inline children or not). See e.g. https://github.com/TYPO3/typo3/blob/v11.5.27/typo3/sysext/extbase/Classes/Configuration/BackendConfigurationManager.php#L150

IchHabRecht commented 1 year ago

Hi @o-ba,

Would you mind to describe the issue you have in the backend with that patch?

o-ba commented 1 year ago

Sure. The problem basically is that there are a view places in core, which check for $_GET['id']. One of them is the BackendConfigurationManager. We're for example using the manager in a custom LinkHandler, where we fetch the full TypoScript config. So depending on the content element loaded - e.g. whether it is a inline relation or not (https://github.com/IchHabRecht/content_defender/blob/main/Classes/Form/FormDataProvider/TcaColPosItems.php#L50) - the resolved TypoScript config differs due to the resolved current page id. Without this patch, the page id in this example will always be the same.

IchHabRecht commented 1 year ago

Hi @o-ba,

Thank you for your update. Unfortunately I'm not able to verify the problem with the given information. I would need some steps how to reproduce a problem to be able to solve this. As the revert would reintroduce #91 I won't revert it a this point.