From d0e01fa885b462a8dc46fb7ef04892c840452a7e Mon Sep 17 00:00:00 2001 From: Ambroise Maupate Date: Tue, 20 Jun 2023 11:23:54 +0200 Subject: [PATCH] feat: Added Roadiz custom data-collector for web-profiler --- lib/RoadizCoreBundle/config/services.yaml | 16 ++++- .../DataCollector/RequestDataCollector.php | 71 +++++++++++++++++++ .../templates/DataCollector/request.html.twig | 18 +++++ .../templates/DataCollector/roadiz-icon.svg | 23 ++++++ 4 files changed, 126 insertions(+), 2 deletions(-) create mode 100644 lib/RoadizCoreBundle/src/DataCollector/RequestDataCollector.php create mode 100644 lib/RoadizCoreBundle/templates/DataCollector/request.html.twig create mode 100644 lib/RoadizCoreBundle/templates/DataCollector/roadiz-icon.svg diff --git a/lib/RoadizCoreBundle/config/services.yaml b/lib/RoadizCoreBundle/config/services.yaml index fce1ee6e..51e7af29 100644 --- a/lib/RoadizCoreBundle/config/services.yaml +++ b/lib/RoadizCoreBundle/config/services.yaml @@ -1,5 +1,7 @@ --- parameters: + roadiz_core.cms_version: '2.1.16' + roadiz_core.cms_version_prefix: 'main' env(APP_NAMESPACE): "roadiz" env(APP_VERSION): "0.1.0" env(APP_USE_ACCEPT_LANGUAGE_HEADER): 'false' @@ -22,9 +24,9 @@ services: autowire: true # Automatically injects dependencies in your services. autoconfigure: true # Automatically registers your services as commands, event subscribers, etc. bind: - $cmsVersion: '2.1.16' + $cmsVersion: '%roadiz_core.cms_version%' $appVersion: '%roadiz_core.app_version%' - $cmsVersionPrefix: 'main' + $cmsVersionPrefix: '%roadiz_core.cms_version_prefix%' $staticDomain: '%roadiz_core.static_domain_name%' $hideRoadizVersion: '%roadiz_core.hide_roadiz_version%' $inheritanceType: '%roadiz_core.inheritance_type%' @@ -140,6 +142,16 @@ services: decorates: 'api_platform.serializer.normalizer.item' decoration_priority: 21 + RZ\Roadiz\CoreBundle\DataCollector\RequestDataCollector: + autoconfigure: false + arguments: [ '%roadiz_core.cms_version%', '%roadiz_core.cms_version_prefix%'] + tags: + - name: data_collector + template: '@RoadizCore/DataCollector/request.html.twig' + # must match the value returned by the getName() method + id: 'roadiz.data_collector.request' + priority: 400 + # Document RZ\Roadiz\CoreBundle\Serializer\Normalizer\DocumentNormalizer: # By default, .inner is passed as argument diff --git a/lib/RoadizCoreBundle/src/DataCollector/RequestDataCollector.php b/lib/RoadizCoreBundle/src/DataCollector/RequestDataCollector.php new file mode 100644 index 00000000..5398b376 --- /dev/null +++ b/lib/RoadizCoreBundle/src/DataCollector/RequestDataCollector.php @@ -0,0 +1,71 @@ +cmsVersion = $cmsVersion; + $this->cmsVersionPrefix = $cmsVersionPrefix; + } + + /** + * {@inheritdoc} + */ + public function collect(Request $request, Response $response, \Throwable $exception = null): void + { + $this->data = []; + } + + public function getVersion(): ?string + { + $fallback = implode(' - ', array_filter([$this->cmsVersionPrefix, $this->cmsVersion])); + if (!class_exists(Versions::class)) { + return $fallback; + } + + $version = Versions::getVersion('roadiz/core-bundle'); + preg_match('/^v(.*?)@/', $version, $output); + + return $output[1] ?? strtok($version, '@') ?: $fallback; + } + + public static function getTemplate(): ?string + { + return '@RoadizCore/DataCollector/request.html.twig'; + } + + public function getMethod() + { + return $this->data['method']; + } + + public function getAcceptableContentTypes() + { + return $this->data['acceptable_content_types']; + } + + /** + * {@inheritdoc} + */ + public function getName(): string + { + return 'roadiz.data_collector.request'; + } + + public function reset(): void + { + $this->data = []; + } +} diff --git a/lib/RoadizCoreBundle/templates/DataCollector/request.html.twig b/lib/RoadizCoreBundle/templates/DataCollector/request.html.twig new file mode 100644 index 00000000..6207f0e8 --- /dev/null +++ b/lib/RoadizCoreBundle/templates/DataCollector/request.html.twig @@ -0,0 +1,18 @@ +{% extends '@WebProfiler/Profiler/layout.html.twig' %} + +{% block toolbar %} + {% set icon %} + {{ include('@RoadizCore/DataCollector/roadiz-icon.svg') }} + {% endset %} + + {% set text %} +
+ Roadiz CMS + {% if collector.version %} + {{ collector.version }} + {% endif %} +
+ {% endset %} + + {{ include('@WebProfiler/Profiler/toolbar_item.html.twig', { 'link': false }) }} +{% endblock %} diff --git a/lib/RoadizCoreBundle/templates/DataCollector/roadiz-icon.svg b/lib/RoadizCoreBundle/templates/DataCollector/roadiz-icon.svg new file mode 100644 index 00000000..70655ad8 --- /dev/null +++ b/lib/RoadizCoreBundle/templates/DataCollector/roadiz-icon.svg @@ -0,0 +1,23 @@ + + + + + + + + + + + + + + + + + + +