diff --git a/composer.json b/composer.json index 4a1405b..6cb5668 100644 --- a/composer.json +++ b/composer.json @@ -23,7 +23,6 @@ "symfony/dependency-injection": "^5.4 || ^6.4", "symfony/http-foundation": "^5.4 || ^6.4", "symfony/http-kernel": "^5.4 || ^6.4", - "symfony/polyfill-php84": "^1.31", "symfony/routing": "^5.4 || ^6.4", "symfony/translation": "^5.4 || ^6.4", "teamneusta/converter-bundle": "^1.6", diff --git a/config/services.yaml b/config/services.yaml index d99dcfa..c69769d 100644 --- a/config/services.yaml +++ b/config/services.yaml @@ -18,3 +18,5 @@ services: tags: - { name: kernel.event_listener, event: pimcore.bundle_manager.paths.css, method: addCSSFiles } - { name: kernel.event_listener, event: pimcore.bundle_manager.paths.js, method: addJSFiles } + + Neusta\Pimcore\AreabrickConfigBundle\Twig\NeustaExtension: ~ diff --git a/src/Bricks/Model/Brick.php b/src/Bricks/Model/Brick.php index 7504ae9..e240bd1 100644 --- a/src/Bricks/Model/Brick.php +++ b/src/Bricks/Model/Brick.php @@ -14,5 +14,5 @@ final class Brick public array $pages; /** @var list */ - public array $additionalProperties; + public array $additionalProperties = []; } diff --git a/src/Controller/Admin/AreabrickOverviewController.php b/src/Controller/Admin/AreabrickOverviewController.php index 6faa614..d3bd854 100644 --- a/src/Controller/Admin/AreabrickOverviewController.php +++ b/src/Controller/Admin/AreabrickOverviewController.php @@ -36,11 +36,8 @@ public function __invoke(): Response $bricks = array_map($this->brickConverter->convert(...), $this->areabrickManager->getBricks()); usort($bricks, fn ($a, $b) => strcmp($a->name, $b->name)); - $hasAdditionalProperties = array_any($bricks, fn ($brick) => !empty($brick->additionalProperties)); - return new Response($this->twig->render('@NeustaPimcoreAreabrickConfig/bricks/overview.html.twig', [ 'bricks' => $bricks, - 'hasAdditionalProperties' => $hasAdditionalProperties, ])); } } diff --git a/src/Twig/NeustaExtension.php b/src/Twig/NeustaExtension.php new file mode 100644 index 0000000..9dfb29f --- /dev/null +++ b/src/Twig/NeustaExtension.php @@ -0,0 +1,32 @@ + $array + */ + private static function any(iterable $array, callable $arrow): bool + { + foreach ($array as $k => $v) { + if ($arrow($v, $k)) { + return true; + } + } + + return false; + } +} diff --git a/templates/bricks/overview.html.twig b/templates/bricks/overview.html.twig index 907da4f..f6ce37f 100644 --- a/templates/bricks/overview.html.twig +++ b/templates/bricks/overview.html.twig @@ -1,11 +1,19 @@ +{% set hasVersions = bricks|any(b => b.version is not empty) %} +{% set hasDescriptions = bricks|any(b => b.description is not empty) %} +{% set hasAdditionalProperties = bricks|any(b => b.additionalProperties is not empty) %} +
- - + {% if hasVersions %} + + {% endif %} + {% if hasDescriptions %} + + {% endif %} {% if hasAdditionalProperties %} @@ -18,8 +26,12 @@ - - + {% if hasVersions %} + + {% endif %} + {% if hasDescriptions %} + + {% endif %}
{{ 'neusta_pimcore_areabrick_config.areabricks.overview.table.col_headers.name'|trans }} {{ 'neusta_pimcore_areabrick_config.areabricks.overview.table.col_headers.id'|trans }}{{ 'neusta_pimcore_areabrick_config.areabricks.overview.table.col_headers.version'|trans }}{{ 'neusta_pimcore_areabrick_config.areabricks.overview.table.col_headers.description'|trans }}{{ 'neusta_pimcore_areabrick_config.areabricks.overview.table.col_headers.version'|trans }}{{ 'neusta_pimcore_areabrick_config.areabricks.overview.table.col_headers.description'|trans }}{{ 'neusta_pimcore_areabrick_config.areabricks.overview.table.col_headers.template'|trans }} {{ 'neusta_pimcore_areabrick_config.areabricks.overview.table.col_headers.pages'|trans }}
{{ brick.name|trans }} {{ brick.id }}{{ brick.version }}{{ brick.description|trans }}{{ brick.version }}{{ brick.description|trans }}{{ brick.template }} {% embed "@NeustaPimcoreAreabrickConfig/bricks/pages_accordion.html.twig" with { @@ -40,7 +52,7 @@ {% if hasAdditionalProperties %}
    - {% for additionalProperty in brick.additionalProperties|default([]) %} + {% for additionalProperty in brick.additionalProperties %}
  • {{ additionalProperty.name }}: {{ additionalProperty.value }}