Loading lupus_ce_renderer.services.yml +5 −0 Original line number Diff line number Diff line Loading @@ -35,3 +35,8 @@ services: arguments: ['@lupus_ce_renderer.custom_elements_renderer'] tags: - { name: event_subscriber } lupus_ce_renderer.request_subscriber: class: Drupal\lupus_ce_renderer\EventSubscriber\CustomElementsRequestSubscriber arguments: ['@router.route_provider'] tags: - { name: event_subscriber } src/EventSubscriber/CustomElementsFormatSubscriber.php +1 −1 Original line number Diff line number Diff line Loading @@ -34,7 +34,7 @@ class CustomElementsFormatSubscriber implements EventSubscriberInterface { // Dis-allow html format when custom elements rendering is enabled. Other // formats like 'json' should be allowed, so custom APIs can be added. // @todo: Make this alterable somehow. if (($request->attributes->get('lupus_ce_renderer') || Settings::get('lupus_ce_renderer_enable', FALSE)) && $request->getRequestFormat('custom_elements') == 'html') { if ($request->attributes->get('lupus_ce_renderer') && $request->getRequestFormat('custom_elements') == 'html') { // Throw status 406 http exception, but take care to not run in an // end-less loop here. if (!$event->getRequest()->attributes->get('exception') || !$event->getRequest()->attributes->get('exception') instanceof NotAcceptableHttpException) { Loading src/EventSubscriber/CustomElementsRequestSubscriber.php 0 → 100644 +67 −0 Original line number Diff line number Diff line <?php namespace Drupal\lupus_ce_renderer\EventSubscriber; use Drupal\Core\Routing\CacheableRouteProviderInterface; use Drupal\Core\Routing\RouteProviderInterface; use Drupal\Core\Site\Settings; use Symfony\Component\EventDispatcher\EventSubscriberInterface; use Symfony\Component\HttpKernel\Event\RequestEvent; use Symfony\Component\HttpKernel\KernelEvents; /** * Request subscriber for customizing route cache IDs. */ class CustomElementsRequestSubscriber implements EventSubscriberInterface { /** * The route provider. * * @var \Drupal\Core\Routing\RouteProviderInterface */ protected $routeProvider; /** * Constructs the object. * * @param \Drupal\Core\Routing\RouteProviderInterface $routeProvider * The route provider. */ public function __construct(RouteProviderInterface $routeProvider) { $this->routeProvider = $routeProvider; } /** * Handles the request. * * @param \Symfony\Component\HttpKernel\Event\RequestEvent $event * The event. */ public function onRequest(RequestEvent $event) { $request = $event->getRequest(); // Make it easy to check whether the lupus_ce_renderer is enabled by // making sure it gets set into the attributes. if (Settings::get('lupus_ce_renderer_enable', FALSE)) { $request->attributes->set('lupus_ce_renderer', TRUE); } // We change the routing default format. Make sure the routing system // takes that into account when caching. if ($this->routeProvider instanceof CacheableRouteProviderInterface) { $this->routeProvider->addExtraCacheKeyPart('lupus_ce_renderer', $request->attributes->get('lupus_ce_renderer') ? 1 : 0); } } /** * {@inheritdoc} */ public static function getSubscribedEvents() { return [ // Must run before Symfony's router listener (priority 32) // @see \Symfony\Component\HttpKernel\EventListener\RouterListener::getSubscribedEvents() KernelEvents::REQUEST => ['onRequest', 40], ]; } } src/Routing/CustomElementsRequestFormatRouteFilter.php +0 −5 Original line number Diff line number Diff line Loading @@ -36,11 +36,6 @@ class CustomElementsRequestFormatRouteFilter extends RequestFormatRouteFilter im protected function getDefaultFormatForRequest(RouteCollection $collection, Request $request): string { $formats = static::getAvailableFormats($collection); // Make it easy to check whether the lupus_ce_renderer is enabled. if (Settings::get('lupus_ce_renderer_enable', FALSE)) { $request->attributes->set('lupus_ce_renderer', TRUE); } // The default format is applied unless ALL routes require the same format. // However, we do not allow using "html" if lupus_ce_renderer is active. if (count($formats) === 1) { Loading Loading
lupus_ce_renderer.services.yml +5 −0 Original line number Diff line number Diff line Loading @@ -35,3 +35,8 @@ services: arguments: ['@lupus_ce_renderer.custom_elements_renderer'] tags: - { name: event_subscriber } lupus_ce_renderer.request_subscriber: class: Drupal\lupus_ce_renderer\EventSubscriber\CustomElementsRequestSubscriber arguments: ['@router.route_provider'] tags: - { name: event_subscriber }
src/EventSubscriber/CustomElementsFormatSubscriber.php +1 −1 Original line number Diff line number Diff line Loading @@ -34,7 +34,7 @@ class CustomElementsFormatSubscriber implements EventSubscriberInterface { // Dis-allow html format when custom elements rendering is enabled. Other // formats like 'json' should be allowed, so custom APIs can be added. // @todo: Make this alterable somehow. if (($request->attributes->get('lupus_ce_renderer') || Settings::get('lupus_ce_renderer_enable', FALSE)) && $request->getRequestFormat('custom_elements') == 'html') { if ($request->attributes->get('lupus_ce_renderer') && $request->getRequestFormat('custom_elements') == 'html') { // Throw status 406 http exception, but take care to not run in an // end-less loop here. if (!$event->getRequest()->attributes->get('exception') || !$event->getRequest()->attributes->get('exception') instanceof NotAcceptableHttpException) { Loading
src/EventSubscriber/CustomElementsRequestSubscriber.php 0 → 100644 +67 −0 Original line number Diff line number Diff line <?php namespace Drupal\lupus_ce_renderer\EventSubscriber; use Drupal\Core\Routing\CacheableRouteProviderInterface; use Drupal\Core\Routing\RouteProviderInterface; use Drupal\Core\Site\Settings; use Symfony\Component\EventDispatcher\EventSubscriberInterface; use Symfony\Component\HttpKernel\Event\RequestEvent; use Symfony\Component\HttpKernel\KernelEvents; /** * Request subscriber for customizing route cache IDs. */ class CustomElementsRequestSubscriber implements EventSubscriberInterface { /** * The route provider. * * @var \Drupal\Core\Routing\RouteProviderInterface */ protected $routeProvider; /** * Constructs the object. * * @param \Drupal\Core\Routing\RouteProviderInterface $routeProvider * The route provider. */ public function __construct(RouteProviderInterface $routeProvider) { $this->routeProvider = $routeProvider; } /** * Handles the request. * * @param \Symfony\Component\HttpKernel\Event\RequestEvent $event * The event. */ public function onRequest(RequestEvent $event) { $request = $event->getRequest(); // Make it easy to check whether the lupus_ce_renderer is enabled by // making sure it gets set into the attributes. if (Settings::get('lupus_ce_renderer_enable', FALSE)) { $request->attributes->set('lupus_ce_renderer', TRUE); } // We change the routing default format. Make sure the routing system // takes that into account when caching. if ($this->routeProvider instanceof CacheableRouteProviderInterface) { $this->routeProvider->addExtraCacheKeyPart('lupus_ce_renderer', $request->attributes->get('lupus_ce_renderer') ? 1 : 0); } } /** * {@inheritdoc} */ public static function getSubscribedEvents() { return [ // Must run before Symfony's router listener (priority 32) // @see \Symfony\Component\HttpKernel\EventListener\RouterListener::getSubscribedEvents() KernelEvents::REQUEST => ['onRequest', 40], ]; } }
src/Routing/CustomElementsRequestFormatRouteFilter.php +0 −5 Original line number Diff line number Diff line Loading @@ -36,11 +36,6 @@ class CustomElementsRequestFormatRouteFilter extends RequestFormatRouteFilter im protected function getDefaultFormatForRequest(RouteCollection $collection, Request $request): string { $formats = static::getAvailableFormats($collection); // Make it easy to check whether the lupus_ce_renderer is enabled. if (Settings::get('lupus_ce_renderer_enable', FALSE)) { $request->attributes->set('lupus_ce_renderer', TRUE); } // The default format is applied unless ALL routes require the same format. // However, we do not allow using "html" if lupus_ce_renderer is active. if (count($formats) === 1) { Loading