vendor/pimcore/pimcore/bundles/AdminBundle/EventListener/EnablePreviewTimeSliderListener.php line 71

Open in your IDE?
  1. <?php
  2. declare(strict_types=1);
  3. /**
  4.  * Pimcore
  5.  *
  6.  * This source file is available under two different licenses:
  7.  * - GNU General Public License version 3 (GPLv3)
  8.  * - Pimcore Enterprise License (PEL)
  9.  * Full copyright and license information is available in
  10.  * LICENSE.md which is distributed with this source code.
  11.  *
  12.  * @copyright  Copyright (c) Pimcore GmbH (http://www.pimcore.org)
  13.  * @license    http://www.pimcore.org/license     GPLv3 and PEL
  14.  */
  15. namespace Pimcore\Bundle\AdminBundle\EventListener;
  16. use Pimcore\Bundle\CoreBundle\EventListener\Traits\ResponseInjectionTrait;
  17. use Pimcore\Http\Request\Resolver\DocumentResolver;
  18. use Pimcore\Http\Request\Resolver\EditmodeResolver;
  19. use Pimcore\Http\Request\Resolver\OutputTimestampResolver;
  20. use Pimcore\Http\RequestHelper;
  21. use Symfony\Component\EventDispatcher\EventSubscriberInterface;
  22. use Symfony\Component\HttpKernel\Event\FilterResponseEvent;
  23. use Symfony\Component\HttpKernel\KernelEvents;
  24. class EnablePreviewTimeSliderListener implements EventSubscriberInterface
  25. {
  26.     use ResponseInjectionTrait;
  27.     /**
  28.      * @var OutputTimestampResolver
  29.      */
  30.     protected $outputTimestampResolver;
  31.     /**
  32.      * @var RequestHelper
  33.      */
  34.     protected $requestHelper;
  35.     /**
  36.      * @var EditmodeResolver
  37.      */
  38.     protected $editmodeResolver;
  39.     /**
  40.      * @var DocumentResolver
  41.      */
  42.     protected $documentResolver;
  43.     public function __construct(OutputTimestampResolver $outputTimestampResolverRequestHelper $requestHelperEditmodeResolver $editmodeResolverDocumentResolver $documentResolver)
  44.     {
  45.         $this->outputTimestampResolver $outputTimestampResolver;
  46.         $this->requestHelper $requestHelper;
  47.         $this->editmodeResolver $editmodeResolver;
  48.         $this->documentResolver $documentResolver;
  49.     }
  50.     /**
  51.      * @inheritDoc
  52.      */
  53.     public static function getSubscribedEvents()
  54.     {
  55.         return [
  56.             KernelEvents::RESPONSE => 'onKernelResponse'
  57.         ];
  58.     }
  59.     public function onKernelResponse(FilterResponseEvent $event)
  60.     {
  61.         if (!$event->isMasterRequest()) {
  62.             return;
  63.         }
  64.         if (!$this->outputTimestampResolver->timestampWasQueried()) {
  65.             return;
  66.         }
  67.         $request $event->getRequest();
  68.         if ($this->editmodeResolver->isEditmode($request)) {
  69.             return;
  70.         }
  71.         if (!$this->requestHelper->isFrontendRequestByAdmin($request)) {
  72.             return;
  73.         }
  74.         $response $event->getResponse();
  75.         if (!$this->isHtmlResponse($response)) {
  76.             return;
  77.         }
  78.         $documentId 0;
  79.         $document $this->documentResolver->getDocument($request);
  80.         if ($document) {
  81.             $documentId $document->getId();
  82.         }
  83.         $code '
  84.             <script>
  85.                 var documentId = ' $documentId ";
  86.                 var documentTab = top.pimcore.globalmanager.get('document_' + documentId);
  87.                 if(documentTab && documentTab.preview) {
  88.                     documentTab.preview.showTimeSlider();
  89.                 }
  90.             </script>
  91.         ";
  92.         $this->injectBeforeHeadEnd($response$code);
  93.     }
  94. }