NodeAdminRouteSubscriber.php in Drupal 10
File
core/modules/node/src/EventSubscriber/NodeAdminRouteSubscriber.php
View source
<?php
namespace Drupal\node\EventSubscriber;
use Drupal\Core\Config\ConfigCrudEvent;
use Drupal\Core\Config\ConfigEvents;
use Drupal\Core\Config\ConfigFactoryInterface;
use Drupal\Core\Routing\RouteBuilderInterface;
use Drupal\Core\Routing\RouteSubscriberBase;
use Symfony\Component\Routing\RouteCollection;
class NodeAdminRouteSubscriber extends RouteSubscriberBase {
protected $configFactory;
protected $routerBuilder;
public function __construct(ConfigFactoryInterface $config_factory, RouteBuilderInterface $router_builder) {
$this->configFactory = $config_factory;
$this->routerBuilder = $router_builder;
}
protected function alterRoutes(RouteCollection $collection) {
if ($this->configFactory
->get('node.settings')
->get('use_admin_theme')) {
foreach ($collection
->all() as $route) {
if ($route
->hasOption('_node_operation_route')) {
$route
->setOption('_admin_route', TRUE);
}
}
}
}
public function onConfigSave(ConfigCrudEvent $event) {
if ($event
->getConfig()
->getName() === 'node.settings' && $event
->isChanged('use_admin_theme')) {
$this->routerBuilder
->setRebuildNeeded();
}
}
public static function getSubscribedEvents() : array {
$events = parent::getSubscribedEvents();
$events[ConfigEvents::SAVE][] = [
'onConfigSave',
0,
];
return $events;
}
}