diff --git a/README.md b/README.md index fa40a97d..96d540eb 100644 --- a/README.md +++ b/README.md @@ -25,7 +25,7 @@ The Toolbox is a Kickstarter for your every day project. It provides some import ```json "require" : { - "dachcom-digital/toolbox" : "~5.0.0" + "dachcom-digital/toolbox" : "~5.2.0" } ``` diff --git a/UPGRADE.md b/UPGRADE.md index 337aa159..1613c483 100644 --- a/UPGRADE.md +++ b/UPGRADE.md @@ -2,6 +2,7 @@ ## 5.2.0 - [NEW FEATURE] Add element hash to headless stack +- [NEW FEATURE] Allow manual brick group sorting [#225](https://github.com/dachcom-digital/pimcore-toolbox/issues/225) ## 5.1.2 - [BUGFIX] Enriched injected JS `toolbox-wysiwyg-document-style.js` with toolbox document id param [#223](https://github.com/dachcom-digital/pimcore-toolbox/issues/223) diff --git a/docs/0_Usage.md b/docs/0_Usage.md index c916808b..ed89caae 100644 --- a/docs/0_Usage.md +++ b/docs/0_Usage.md @@ -66,6 +66,8 @@ area_block_configuration: groups: - name: Project + # optional, set sorting to "manually" to respect given order, otherwise sorting will be alphabetically + sorting: !php/const ToolboxBundle\Manager\AreaManagerInterface::BRICK_GROUP_SORTING_MANUALLY elements: - your_custom_area_brick diff --git a/src/Manager/AreaManager.php b/src/Manager/AreaManager.php index 098c2a68..55b9edcf 100644 --- a/src/Manager/AreaManager.php +++ b/src/Manager/AreaManager.php @@ -55,27 +55,31 @@ public function getAreaBlockConfiguration(?string $type, bool $fromSnippet = fal $cleanedGroups = []; $cleanedGroupsSorted = []; - foreach ($groups as $groupName => $groupData) { + foreach ($groups as $groupData) { $groupName = $groupData['name']; $cleanedGroup = []; + $sorting = $groupData['sorting'] ?? self::BRICK_GROUP_SORTING_ALPHABETICALLY; + foreach ($groupData['elements'] as $element) { if (in_array($element, $availableBricks['allowed'], true)) { $cleanedGroup[] = $element; } } - //ok, group elements found, add them if (count($cleanedGroup) > 0) { $cleanedGroups[$groupName] = $cleanedGroup; - $cleanedGroupsSorted = array_merge($cleanedGroupsSorted, $cleanedGroup); - //sort group by cleaned group - sort($cleanedGroupsSorted); + + if ($sorting === self::BRICK_GROUP_SORTING_ALPHABETICALLY) { + sort($cleanedGroup); + } + + $cleanedGroupsSorted[] = $cleanedGroup; } } if (count($cleanedGroups) > 0) { - $configuration['sorting'] = $cleanedGroupsSorted; + $configuration['sorting'] = array_merge([], ...$cleanedGroupsSorted); $configuration['group'] = $cleanedGroups; } diff --git a/src/Manager/AreaManagerInterface.php b/src/Manager/AreaManagerInterface.php index 84a6a9cd..e3180cde 100644 --- a/src/Manager/AreaManagerInterface.php +++ b/src/Manager/AreaManagerInterface.php @@ -4,6 +4,9 @@ interface AreaManagerInterface { + public const BRICK_GROUP_SORTING_ALPHABETICALLY = 'alphabetically'; + public const BRICK_GROUP_SORTING_MANUALLY = 'manually'; + public function getAreaBlockName(?string $type = null): string; /**