From cc579342d4666acc306ab0fbfc273a4b43d5f3d2 Mon Sep 17 00:00:00 2001 From: Christian Weiske Date: Tue, 25 Jan 2022 10:47:13 +0100 Subject: [PATCH] [BUGFIX] Use page layout specific column labels Labels of columns in page layouts were only translatable with the generic non-specific key "flux.grid.columns.$columnName". This patch sets the page layout's grid parent object to be the page layout's form, so that the resolved parent ID is that of the form. A column named "one" within a page layout with id "twocol" will thus get the label key "flux.twocol.columns.one", just as it was for flux 8. If the backend layout cannot be found because the page template file does not exist anymore, we need to return NULL from buildBackendLayout() to get a proper error message. Resolves: https://github.com/FluidTYPO3/flux/issues/1468 --- Classes/Form/Container/Grid.php | 7 +++++-- Classes/Provider/AbstractProvider.php | 4 ++++ 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/Classes/Form/Container/Grid.php b/Classes/Form/Container/Grid.php index 450830d5d..88d3ef6b7 100644 --- a/Classes/Form/Container/Grid.php +++ b/Classes/Form/Container/Grid.php @@ -142,7 +142,7 @@ public function buildExtendedBackendLayoutArray(int $parentRecordUid): array * @param int $parentRecordUid * @return BackendLayout */ - public function buildBackendLayout(int $parentRecordUid): BackendLayout + public function buildBackendLayout(int $parentRecordUid): ?BackendLayout { $configuration = $this->buildBackendLayoutArray($parentRecordUid); $configuration = $this->ensureDottedKeys($configuration); @@ -153,9 +153,12 @@ public function buildBackendLayout(int $parentRecordUid): BackendLayout foreach ($this->flattenSetup($configuration, 'backend_layout.') as $name => $value) { $typoScriptString .= $name . ' = ' . $value . LF; } + if ($root->getName() === null) { + return null; + } return new BackendLayout( $this->getRoot()->getName(), - LocalizationUtility::translate($label) + LocalizationUtility::translate($label, $root->getExtensionName()) ? $label : 'LLL:EXT:flux/Resources/Private/Language/locallang.xlf:flux.grid.grids.grid', $typoScriptString diff --git a/Classes/Provider/AbstractProvider.php b/Classes/Provider/AbstractProvider.php index 8d42aa421..691524a4c 100644 --- a/Classes/Provider/AbstractProvider.php +++ b/Classes/Provider/AbstractProvider.php @@ -342,11 +342,15 @@ public function getGrid(array $row) $gridColumn->setColSpan($object['colspan'] ?? 1); } } + $grid->setParent($form); return $grid; } } $grid = $this->grid ?? $this->extractConfiguration($row, 'grids')['grid'] ?? Grid::create(); $grid->setExtensionName($grid->getExtensionName() ?: $this->getControllerExtensionKeyFromRecord($row)); + if ($form) { + $grid->setParent($form); + } return $grid; }