diff --git a/automatic_updates.routing.yml b/automatic_updates.routing.yml index 7c3d0a5e8bc34e13461c8d69ca9375337ab9e1e7..cac92bc17281e7d8c349a27ae5d83039a32b0dfb 100644 --- a/automatic_updates.routing.yml +++ b/automatic_updates.routing.yml @@ -37,6 +37,7 @@ automatic_updates.report_update: options: _admin_route: TRUE _maintenance_access: TRUE + _automatic_updates_readiness_messages: skip automatic_updates.module_update: path: '/admin/modules/automatic-update' defaults: @@ -47,6 +48,7 @@ automatic_updates.module_update: options: _admin_route: TRUE _maintenance_access: TRUE + _automatic_updates_readiness_messages: skip automatic_updates.theme_update: path: '/admin/theme/automatic-update' defaults: @@ -57,3 +59,4 @@ automatic_updates.theme_update: options: _admin_route: TRUE _maintenance_access: TRUE + _automatic_updates_readiness_messages: skip diff --git a/automatic_updates.services.yml b/automatic_updates.services.yml index 516e06545f500cb3ba2158fbca33ee4d40549eb0..ce546a1feb02a176539052c5c3c5565153b16d90 100644 --- a/automatic_updates.services.yml +++ b/automatic_updates.services.yml @@ -1,4 +1,8 @@ services: + automatic_updates.route_subscriber: + class: Drupal\automatic_updates\Routing\RouteSubscriber + tags: + - { name: event_subscriber } automatic_updates.readiness_validation_manager: class: Drupal\automatic_updates\Validation\ReadinessValidationManager arguments: diff --git a/src/Routing/RouteSubscriber.php b/src/Routing/RouteSubscriber.php new file mode 100644 index 0000000000000000000000000000000000000000..82469a10b13cd4a2c0aadc319f3eea122571da61 --- /dev/null +++ b/src/Routing/RouteSubscriber.php @@ -0,0 +1,39 @@ +<?php + +namespace Drupal\automatic_updates\Routing; + +use Drupal\Core\Routing\RouteSubscriberBase; +use Symfony\Component\Routing\RouteCollection; + +/** + * Modifies route definitions. + * + * @internal + */ +class RouteSubscriber extends RouteSubscriberBase { + + /** + * {@inheritdoc} + */ + protected function alterRoutes(RouteCollection $collection) { + $disabled_routes = [ + 'update.theme_update', + 'system.theme_install', + 'update.module_update', + 'update.module_install', + 'update.status', + 'update.report_update', + 'update.report_install', + 'update.settings', + 'system.status', + 'update.confirmation_page', + ]; + foreach ($disabled_routes as $route) { + $route = $collection->get($route); + if ($route) { + $route->setOption('_automatic_updates_readiness_messages', 'skip'); + } + } + } + +} diff --git a/src/Validation/AdminReadinessMessages.php b/src/Validation/AdminReadinessMessages.php index 286270a463ef4232738e3c842fb54a1ffee5d66e..4febff50046aa698a32288b362f5be950675f221 100644 --- a/src/Validation/AdminReadinessMessages.php +++ b/src/Validation/AdminReadinessMessages.php @@ -147,23 +147,8 @@ final class AdminReadinessMessages implements ContainerInjectionInterface { } if ($this->adminContext->isAdminRoute() && $this->currentUser->hasPermission('administer site configuration')) { - // These routes don't need additional nagging. - $disabled_routes = [ - 'update.theme_update', - 'system.theme_install', - 'update.module_update', - 'update.module_install', - 'update.status', - 'update.report_update', - 'update.report_install', - 'update.settings', - 'system.status', - 'update.confirmation_page', - 'automatic_updates.report_update', - 'automatic_updates.module_update', - 'automatic_updates.theme_update', - ]; - return !in_array($this->currentRouteMatch->getRouteName(), $disabled_routes, TRUE); + $route = $this->currentRouteMatch->getRouteObject(); + return $route && $route->getOption('_automatic_updates_readiness_messages') !== 'skip'; } return FALSE; }