diff --git a/CHANGELOG.md b/CHANGELOG.md index 894a51d2b8d8a6c97f14f604429faa361cc58aa8..212e84f57d24212aa27aae791a91c9da0b230ebc 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,10 @@ CHANGELOG ========= +5.1.6 +----- +- Nouveau collecteur dans la barre LaminasDevTools : messages produits par \UnicaenApp\Service\MessageCollector. + 5.1.5 ----- - Nouvel élément de formulaire SearchAndSelect2 (basé sur le widget js Select2). diff --git a/config/module.config.php b/config/module.config.php index 26bbbf3738f106ac0087f3b9c1ed19270082b55e..a9158c46cff787724b9ce6dbb8bd44588eb8fd62 100644 --- a/config/module.config.php +++ b/config/module.config.php @@ -2,11 +2,14 @@ namespace UnicaenApp; +use Laminas\Mvc\Console\Router\Simple; use Laminas\ServiceManager\Factory\InvokableFactory; use UnicaenApp\Controller\CacheControllerFactory; use UnicaenApp\Controller\ConsoleController; use UnicaenApp\Controller\ConsoleControllerFactory; use UnicaenApp\Controller\InstadiaControllerFactory; +use UnicaenApp\DeveloperTools\MessageCollectorService; +use UnicaenApp\DeveloperTools\MessageCollectorServiceFactory; use UnicaenApp\Form\Element\SearchAndSelect2; use UnicaenApp\Form\View\Helper\FormControlGroup; use UnicaenApp\Form\View\Helper\FormControlGroupFactory; @@ -49,7 +52,6 @@ use UnicaenApp\View\Helper\Upload\UploaderHelper; use UnicaenApp\View\Helper\Upload\UploaderHelperFactory; use UnicaenApp\View\Helper\UserProfileSelect; use UnicaenApp\View\Helper\UserProfileSelectFactory; -use Laminas\Mvc\Console\Router\Simple; return [ 'router' => [ @@ -341,6 +343,8 @@ return [ 'instadia' => InstadiaServiceFactory::class, HostLocalization::class => HostLocalizationFactory::class, RedirectResponse::class => RedirectResponseFactory::class, + + MessageCollectorService::class => MessageCollectorServiceFactory::class, ], 'shared' => [ 'MouchardListenerErrorHandler' => false, @@ -525,6 +529,7 @@ return [ // 'unicaen-app/application/plan' => __DIR__ . '/../view/application/plan.phtml', // 'unicaen-app/application/mentions-legales' => __DIR__ . '/../view/application/mentions-legales.phtml', // 'unicaen-app/application/informatique-et-libertes' => __DIR__ . '/../view/application/informatique-et-libertes.phtml', + 'laminas-developer-tools/toolbar/messages' => __DIR__ . '/../view/laminas-developer-tools/toolbar/messages.phtml', ], // TemplatePathStack configuration 'template_path_stack' => [ @@ -681,4 +686,18 @@ return [ ], ], ], + + // intégration à la Laminas Developer Toolbar + 'laminas-developer-tools' => [ + 'profiler' => [ + 'collectors' => [ + DeveloperTools\MessageCollectorService::class => DeveloperTools\MessageCollectorService::class, + ], + ], + 'toolbar' => [ + 'entries' => [ + DeveloperTools\MessageCollectorService::class => 'laminas-developer-tools/toolbar/messages', + ], + ], + ], ]; diff --git a/src/UnicaenApp/DeveloperTools/MessageCollectorService.php b/src/UnicaenApp/DeveloperTools/MessageCollectorService.php new file mode 100644 index 0000000000000000000000000000000000000000..76b3f179024c9d1e01f9c058b607dc7510835ee6 --- /dev/null +++ b/src/UnicaenApp/DeveloperTools/MessageCollectorService.php @@ -0,0 +1,43 @@ +<?php + +namespace UnicaenApp\DeveloperTools; + +use Laminas\DeveloperTools\Collector\CollectorInterface; +use Laminas\Mvc\MvcEvent; +use UnicaenApp\Service\MessageCollectorAwareTrait; + +class MessageCollectorService implements CollectorInterface +{ + use MessageCollectorAwareTrait; + + const NAME = 'messages'; + const PRIORITY = 200; + + public function getMessages(): array + { + return $this->messageCollector->getMessages(); + } + + /** + * {@inheritDoc} + */ + public function getName(): string + { + return self::NAME; + } + + /** + * {@inheritDoc} + */ + public function getPriority(): int + { + return static::PRIORITY; + } + + /** + * {@inheritDoc} + */ + public function collect(MvcEvent $mvcEvent) + { + } +} diff --git a/src/UnicaenApp/DeveloperTools/MessageCollectorServiceFactory.php b/src/UnicaenApp/DeveloperTools/MessageCollectorServiceFactory.php new file mode 100644 index 0000000000000000000000000000000000000000..df67750f3918fa774d979bf0019c95acb32b1cbb --- /dev/null +++ b/src/UnicaenApp/DeveloperTools/MessageCollectorServiceFactory.php @@ -0,0 +1,22 @@ +<?php + +namespace UnicaenApp\DeveloperTools; + +use Laminas\ServiceManager\Factory\FactoryInterface; +use Psr\Container\ContainerInterface; +use UnicaenApp\Service\MessageCollector; + +class MessageCollectorServiceFactory implements FactoryInterface +{ + public function __invoke(ContainerInterface $container, $requestedName, $options = null): MessageCollectorService + { + $service = new MessageCollectorService(); + + /** @var MessageCollector $messageCollector */ + $messageCollector = $container->get('MessageCollector'); + $service->setServiceMessageCollector($messageCollector); + + return $service; + } + +} \ No newline at end of file diff --git a/view/laminas-developer-tools/toolbar/messages.phtml b/view/laminas-developer-tools/toolbar/messages.phtml new file mode 100644 index 0000000000000000000000000000000000000000..2e1afccecbe2673c335fa1075917e7bad34a22cf --- /dev/null +++ b/view/laminas-developer-tools/toolbar/messages.phtml @@ -0,0 +1,46 @@ +<?php +/** + * @var \Laminas\DeveloperTools\Report $report + * @var \UnicaenApp\DeveloperTools\MessageCollectorService $collector + */ +$collector = $report->getCollector('messages'); +$messages = $collector->getMessages(); +?> +<div class="laminas-toolbar-entry"> + <div class="laminas-toolbar-preview"> + <span class="laminas-toolbar-info"> + <span class="laminas-toolbar-extra-info"> + <img style="padding-bottom: 4px;" + src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAIAAACQkWg2AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAMJJREFUeNqUUsEKhCAUbGVBISILomsI/f8/9CVCIJUI26EIA9mhLktblnMQxJnHzDxfTdNEISBRIN4nMwgpiiLLMkqplHIcR5+AMSaEcM4NwzDPs7UWelzPBXirqmqaprZtf0mXGTjn0HjYR0GSJMYYD/toqe97mA6otSxLuArbQ57niPFUoLWO4xjNPhJg8LIsXdfVdZ2mKdngC72Xg9zrumIbOFGAUgrru/kanw1sw3/FJ4KdBHuH2Te/9Wp9XwEGAJDAZMbwps+bAAAAAElFTkSuQmCC"/> + Message + </span> + </span> + </div> + <div class="laminas-toolbar-detail"> + <div class="laminas-toolbar-info"> + <div class="laminas-detail-value"> + <?php if (!empty($messages)): ?> + <dl> + <?php foreach ($messages as $severity => $item): ?> + <dt> + <span title="severity"><?php echo $severity ?></span> + </dt> + <dd> + <ul> + <?php foreach ((array)$item as $priority => $message): ?> + <li> + <span title="priority"><?php echo $priority ?></span> => + <span title="<?php echo $message ?>"><?php echo $message ?></span> + </li> + <?php endforeach; ?> + </ul> + </dd> + <?php endforeach; ?> + </dl> + <?php else: ?> + Aucun message. + <?php endif ?> + </div> + </div> + </div> +</div> \ No newline at end of file