123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110 |
- <?php
- namespace Drupal\webprofiler\Controller;
- use Drupal\Component\Serialization\Json;
- use Drupal\Core\Controller\ControllerBase;
- use Drupal\Core\Render\RendererInterface;
- use Drupal\webprofiler\Profiler\Profiler;
- use Drupal\webprofiler\Profiler\TemplateManager;
- use Symfony\Component\DependencyInjection\ContainerInterface;
- use Symfony\Component\HttpFoundation\JsonResponse;
- use Symfony\Component\HttpFoundation\Request;
- use Symfony\Component\HttpFoundation\Response;
- use Symfony\Component\HttpKernel\Profiler\Profile;
- /**
- * Class ToolbarController
- */
- class ToolbarController extends ControllerBase {
- /**
- * @var \Drupal\webprofiler\Profiler\Profiler
- */
- private $profiler;
- /**
- * @var \Drupal\webprofiler\Profiler\TemplateManager
- */
- private $templateManager;
- /**
- * @var \Drupal\Core\Render\RendererInterface
- */
- private $renderer;
- /**
- * {@inheritdoc}
- */
- public static function create(ContainerInterface $container) {
- return new static(
- $container->get('profiler'),
- $container->get('template_manager'),
- $container->get('renderer')
- );
- }
- /**
- * Constructs a new WebprofilerController.
- *
- * @param \Drupal\webprofiler\Profiler\Profiler $profiler
- * @param \Drupal\webprofiler\Profiler\TemplateManager $templateManager
- * @param \Drupal\Core\Render\RendererInterface $renderer
- */
- public function __construct(Profiler $profiler, TemplateManager $templateManager, RendererInterface $renderer) {
- $this->profiler = $profiler;
- $this->templateManager = $templateManager;
- $this->renderer = $renderer;
- }
- /**
- * Generates the toolbar.
- *
- * @param Profile $profile
- *
- * @return \Symfony\Component\HttpFoundation\Response
- *
- * @throws \Exception
- */
- public function toolbarAction(Profile $profile) {
- $this->profiler->disable();
- $templates = $this->templateManager->getTemplates($profile);
- $rendered = '';
- foreach ($templates as $name => $template) {
- $rendered .= $template->renderBlock('toolbar', [
- 'collector' => $profile->getcollector($name),
- 'token' => $profile->getToken(),
- 'name' => $name
- ]);
- }
- $toolbar = [
- '#theme' => 'webprofiler_toolbar',
- '#toolbar' => $rendered,
- '#token' => $profile->getToken(),
- ];
- return new Response($this->renderer->render($toolbar));
- }
- /**
- * @param \Symfony\Component\HttpKernel\Profiler\Profile $profile
- * @param \Symfony\Component\HttpFoundation\Request $request
- *
- * @return \Symfony\Component\HttpFoundation\JsonResponse
- */
- public function savePerformanceTimingAction(Profile $profile, Request $request) {
- $this->profiler->disable();
- $data = Json::decode($request->getContent());
- /** @var $collector */
- $collector = $profile->getCollector('performance_timing');
- $collector->setData($data);
- $this->profiler->updateProfile($profile);
- return new JsonResponse(['success' => TRUE]);
- }
- }
|