Verified Commit f2b26b61 authored by godotislate's avatar godotislate
Browse files

task: #3584823 Convert system module routes to use attributes

By: mstrelan
By: dcam
By: catch
By: godotislate
parent 57bf4fed
Loading
Loading
Loading
Loading
Loading
+8 −0
Original line number Diff line number Diff line
@@ -4,8 +4,10 @@

use Drupal\Core\Controller\ControllerBase;
use Drupal\Core\Extension\ModuleExtensionList;
use Drupal\Core\StringTranslation\TranslatableMarkup;
use Drupal\system\ModuleAdminLinksHelper;
use Drupal\user\ModulePermissionsLinkHelper;
use Symfony\Component\Routing\Attribute\Route;

/**
 * Controller for admin section.
@@ -28,6 +30,12 @@ public function __construct(
   * @return array
   *   A render array containing the listing.
   */
  #[Route(
    path: '/admin/index',
    name: 'system.admin_index',
    requirements: ['_permission' => 'access administration pages'],
    defaults: ['_title' => new TranslatableMarkup('Administration')],
  )]
  public function index() {
    $extensions = array_intersect_key($this->moduleExtensionList->getList(), $this->moduleHandler()->getModuleList());

+18 −0
Original line number Diff line number Diff line
@@ -17,6 +17,12 @@ class Http4xxController extends ControllerBase {
   * @return array
   *   A render array containing the message to display for 4xx errors.
   */
  #[Route(
    path: '/system/4xx',
    name: 'system.4xx',
    requirements: ['_access' => 'TRUE'],
    defaults: ['_title' => new TranslatableMarkup('Client error')],
  )]
  public function on4xx() {
    return [
      '#markup' => $this->t('A client error happened'),
@@ -47,6 +53,12 @@ public function on401() {
   * @return array
   *   A render array containing the message to display for 403 pages.
   */
  #[Route(
    path: '/system/403',
    name: 'system.403',
    requirements: ['_access' => 'TRUE'],
    defaults: ['_title' => new TranslatableMarkup('Access denied')],
  )]
  public function on403() {
    return [
      '#markup' => $this->t('You are not authorized to access this page.'),
@@ -59,6 +71,12 @@ public function on403() {
   * @return array
   *   A render array containing the message to display for 404 pages.
   */
  #[Route(
    path: '/system/404',
    name: 'system.404',
    requirements: ['_access' => 'TRUE'],
    defaults: ['_title' => new TranslatableMarkup('Page not found')],
  )]
  public function on404() {
    return [
      '#markup' => $this->t('The requested page could not be found.'),
+8 −0
Original line number Diff line number Diff line
@@ -3,8 +3,10 @@
namespace Drupal\system\Controller;

use Drupal\Core\Controller\ControllerBase;
use Drupal\Core\StringTranslation\TranslatableMarkup;
use Drupal\system\Form\ClearCacheForm;
use Drupal\system\Form\PerformanceForm;
use Symfony\Component\Routing\Attribute\Route;

/**
 * Controller for performance admin.
@@ -18,6 +20,12 @@ class PerformanceController extends ControllerBase {
   *   A render array containing the cache-clear form and performance
   *   configuration form.
   */
  #[Route(
    path: '/admin/config/development/performance',
    name: 'system.performance_settings',
    requirements: ['_permission' => 'administer site configuration'],
    defaults: ['_title' => new TranslatableMarkup('Performance')],
  )]
  public function build(): array {
    // Load the cache form and embed it in a details element.
    $cache_clear = $this->formBuilder()->getForm(ClearCacheForm::class);
+101 −0
Original line number Diff line number Diff line
@@ -13,11 +13,13 @@
use Drupal\Core\Link;
use Drupal\Core\Menu\MenuLinkTreeInterface;
use Drupal\Core\Menu\MenuTreeParameters;
use Drupal\Core\StringTranslation\TranslatableMarkup;
use Drupal\Core\Theme\ThemeAccessCheck;
use Drupal\Core\Url;
use Drupal\system\SystemManager;
use Symfony\Component\DependencyInjection\Attribute\Autowire;
use Symfony\Component\HttpFoundation\Cookie;
use Symfony\Component\Routing\Attribute\Route;

/**
 * Returns responses for System routes.
@@ -116,6 +118,15 @@ public function __construct(
   * @return array
   *   A renderable array of the administration overview page.
   */
  #[Route(
    path: '/admin/config',
    name: 'system.admin_config',
    requirements: ['_permission' => 'access administration pages'],
    defaults: [
      'link_id' => 'system.admin_config',
      '_title' => new TranslatableMarkup('Configuration'),
    ],
  )]
  public function overview($link_id) {
    // Check for status report errors.
    if ($this->currentUser()->hasPermission('administer site configuration') && $this->systemManager->checkRequirements()) {
@@ -180,6 +191,12 @@ public function overview($link_id) {
   * @return \Symfony\Component\HttpFoundation\RedirectResponse
   *   A redirect response to the front page.
   */
  #[Route(
    path: '/admin/compact/{mode}',
    name: 'system.admin_compact_page',
    requirements: ['_permission' => 'access administration pages'],
    defaults: ['mode' => 'off'],
  )]
  public function compactPage($mode) {
    $response = $this->redirect('<front>');
    if ($mode === 'on') {
@@ -194,6 +211,84 @@ public function compactPage($mode) {
  /**
   * Provides a single block from the administration menu as a page.
   */
  #[Route(
    path: '/admin',
    name: 'system.admin',
    requirements: ['_permission' => 'access administration pages'],
    defaults: ['_title' => new TranslatableMarkup('Administration')],
  )]
  #[Route(
    path: '/admin/structure',
    name: 'system.admin_structure',
    requirements: ['_permission' => 'access administration pages'],
    defaults: ['_title' => new TranslatableMarkup('Structure')],
  )]
  #[Route(
    path: '/admin/reports',
    name: 'system.admin_reports',
    requirements: ['_permission' => 'access site reports'],
    defaults: ['_title' => new TranslatableMarkup('Reports')],
  )]
  #[Route(
    path: '/admin/config/media',
    name: 'system.admin_config_media',
    requirements: ['_permission' => 'access administration pages'],
    defaults: ['_title' => new TranslatableMarkup('Media')],
  )]
  #[Route(
    path: '/admin/config/services',
    name: 'system.admin_config_services',
    requirements: ['_permission' => 'access administration pages'],
    defaults: ['_title' => new TranslatableMarkup('Web services')],
  )]
  #[Route(
    path: '/admin/config/development',
    name: 'system.admin_config_development',
    requirements: ['_permission' => 'access administration pages'],
    defaults: ['_title' => new TranslatableMarkup('Development')],
  )]
  #[Route(
    path: '/admin/config/regional',
    name: 'system.admin_config_regional',
    requirements: ['_permission' => 'access administration pages'],
    defaults: ['_title' => new TranslatableMarkup('Region and language')],
  )]
  #[Route(
    path: '/admin/config/search',
    name: 'system.admin_config_search',
    requirements: ['_permission' => 'access administration pages'],
    defaults: ['_title' => new TranslatableMarkup('Search and metadata')],
  )]
  #[Route(
    path: '/admin/config/system',
    name: 'system.admin_config_system',
    requirements: ['_permission' => 'access administration pages'],
    defaults: ['_title' => new TranslatableMarkup('System')],
  )]
  #[Route(
    path: '/admin/config/user-interface',
    name: 'system.admin_config_ui',
    requirements: ['_permission' => 'access administration pages'],
    defaults: ['_title' => new TranslatableMarkup('User interface')],
  )]
  #[Route(
    path: '/admin/config/workflow',
    name: 'system.admin_config_workflow',
    requirements: ['_permission' => 'access administration pages'],
    defaults: ['_title' => new TranslatableMarkup('Workflow')],
  )]
  #[Route(
    path: '/admin/config/content',
    name: 'system.admin_config_content',
    requirements: ['_permission' => 'access administration pages'],
    defaults: ['_title' => new TranslatableMarkup('Content authoring')],
  )]
  #[Route(
    path: '/admin/content',
    name: 'system.admin_content',
    requirements: ['_permission' => 'access administration pages'],
    defaults: ['_title' => new TranslatableMarkup('Content')],
  )]
  public function systemAdminMenuBlockPage() {
    return $this->systemManager->getBlockContents();
  }
@@ -206,6 +301,12 @@ public function systemAdminMenuBlockPage() {
   *
   * @todo Move into ThemeController.
   */
  #[Route(
    path: '/admin/appearance',
    name: 'system.themes_page',
    requirements: ['_permission' => 'administer themes'],
    defaults: ['_title' => new TranslatableMarkup('Appearance')],
  )]
  public function themesPage() {
    $config = $this->config('system.theme');
    // Get all available themes.
+17 −1
Original line number Diff line number Diff line
@@ -3,11 +3,13 @@
namespace Drupal\system\Controller;

use Drupal\Core\Site\Settings;
use Drupal\Core\StringTranslation\StringTranslationTrait;
use Drupal\Core\StringTranslation\TranslatableMarkup;
use Symfony\Component\DependencyInjection\ContainerInterface;
use Symfony\Component\HttpFoundation\Response;
use Drupal\Core\DependencyInjection\ContainerInjectionInterface;
use Drupal\system\SystemManager;
use Drupal\Core\StringTranslation\StringTranslationTrait;
use Symfony\Component\Routing\Attribute\Route;

/**
 * Returns responses for System Info routes.
@@ -49,6 +51,12 @@ public function __construct(SystemManager $systemManager) {
   *   A render array containing a list of system requirements for the Drupal
   *   installation and whether this installation meets the requirements.
   */
  #[Route(
    path: '/admin/reports/status',
    name: 'system.status',
    requirements: ['_permission' => 'administer site configuration'],
    defaults: ['_title' => new TranslatableMarkup('Status report')],
  )]
  public function status() {
    $requirements = $this->systemManager->listRequirements();
    return ['#type' => 'status_report_page', '#requirements' => $requirements];
@@ -60,6 +68,14 @@ public function status() {
   * @return \Symfony\Component\HttpFoundation\Response
   *   A response object to be sent to the client.
   */
  #[Route(
    path: '/admin/reports/status/php',
    name: 'system.php',
    requirements: ['_permission' => 'administer site configuration'],
    // This page should not be treated as administrative since it outputs its
    // own content (outside of any administration theme).
    options: ['_admin_route' => FALSE],
  )]
  public function php() {
    if (function_exists('phpinfo')) {
      ob_start();
Loading