diff -u b/core/modules/system/src/Controller/SystemInfoController.php b/core/modules/system/src/Controller/SystemInfoController.php
--- b/core/modules/system/src/Controller/SystemInfoController.php
+++ b/core/modules/system/src/Controller/SystemInfoController.php
@@ -47,7 +47,7 @@
*/
public function status() {
$requirements = $this->systemManager->listRequirements();
- return ['#type' => 'status_report_page', '#requirements' => $requirements];
+ return ['#type' => 'status_report', '#requirements' => $requirements];
}
/**
diff -u b/core/modules/system/src/Element/StatusReport.php b/core/modules/system/src/Element/StatusReport.php
--- b/core/modules/system/src/Element/StatusReport.php
+++ b/core/modules/system/src/Element/StatusReport.php
@@ -3,9 +3,10 @@
namespace Drupal\system\Element;
use Drupal\Core\Render\Element\RenderElement;
+use Drupal\Core\StringTranslation\PluralTranslatableMarkup;
/**
- * Creates status report page element.
+ * Creates status report element.
*
* @RenderElement("status_report")
*/
@@ -18,20 +19,114 @@
$class = get_class($this);
return [
'#theme' => 'status_report',
- '#priorities' => [
- 'error',
- 'warning',
- 'checked',
- 'ok',
- ],
'#pre_render' => [
+ [$class, 'preRenderCounters'],
[$class, 'preRenderGroupRequirements'],
+ [$class, 'preRenderGeneralInfo'],
],
];
}
/**
- * #pre_render callback to group requirements.
+ * #pre_render callback to get general info out of requirements.
+ */
+ public static function preRenderGeneralInfo($element) {
+ $element['#general_info'] = [
+ '#theme' => 'status_report_general_info',
+ ];
+ // Loop through requirements and pull out items.
+ foreach ($element['#grouped_requirements'] as $key => $group) {
+ foreach ($group['items'] as $requirement_key => $requirement) {
+ switch ($requirement_key) {
+ case 'cron':
+ foreach ($requirement['description'] as &$description_elements) {
+ foreach ($description_elements as &$description_element) {
+ if (isset($description_element['#url']) && $description_element['#url']->getRouteName() == 'system.run_cron') {
+ $description_element['#attributes']['class'][] = 'button';
+ $description_element['#attributes']['class'][] = 'button--small';
+ $description_element['#attributes']['class'][] = 'button--primary';
+ $description_element['#attributes']['class'][] = 'system-status-general-info__run-cron';
+ }
+ }
+ }
+ $element['#general_info']['#' . $requirement_key] = $requirement;
+ unset($element['#grouped_requirements'][$key][$requirement_key]);
+ break;
+
+ case 'drupal':
+ case 'webserver':
+ case 'database_system':
+ case 'database_system_version':
+ case 'php':
+ case 'php_memory_limit':
+ $element['#general_info']['#' . $requirement_key] = $requirement;
+ unset($element['#grouped_requirements'][$key][$requirement_key]);
+ break;
+ }
+ }
+ }
+
+ return $element;
+ }
+
+ /**
+ * #pre_render callback to create counter elements.
+ */
+ public static function preRenderCounters($element) {
+ // Count number of items with different severity for summary.
+ $counters = [
+ 'error' => [
+ 'amount' => 0,
+ 'text' => t('Error'),
+ 'text_plural' => t('Errors'),
+ ],
+ 'warning' => [
+ 'amount' => 0,
+ 'text' => t('Warning'),
+ 'text_plural' => t('Warnings'),
+ ],
+ 'checked'=> [
+ 'amount' => 0,
+ 'text' => t('Checked'),
+ 'text_plural' => t('Checked'),
+ ]
+ ];
+
+ $severities = static::getServerities();
+ foreach ($element['#requirements'] as $key => &$requirement) {
+ $severity = $severities[REQUIREMENT_INFO];
+ if (isset($requirement['severity'])) {
+ $severity = $severities[(int) $requirement['severity']];
+ }
+ elseif (defined('MAINTENANCE_MODE') && MAINTENANCE_MODE == 'install') {
+ $severity = $severities[REQUIREMENT_OK];
+ }
+
+ if (isset($counters[$severity['status']])) {
+ $counters[$severity['status']]['amount']++;
+ }
+ }
+
+ foreach ($counters as $key => $counter) {
+ if ($counter['amount'] === 0) {
+ continue;
+ }
+
+ $text = new PluralTranslatableMarkup($counter['amount'], $counter['text'], $counter['text_plural']);
+
+ $element['#counters'][$key] = [
+ '#theme' => 'status_report_counter',
+ '#amount' => $counter['amount'],
+ '#text' => $text,
+ '#severity' => $key,
+ ];
+ }
+
+ return $element;
+ }
+
+ /**
+ * #pre_render callback grou group requirement array.
*/
public static function preRenderGroupRequirements($element) {
$severities = static::getServerities();
@@ -51,10 +146,13 @@
$grouped_requirements[$severity['status']]['items'][$key] = $requirement;
}
- // Order the grouped requirements by a set order.
- $order = array_flip($element['#priorities']);
- uksort($grouped_requirements, function ($a, $b) use ($order) {
- return $order[$a] > $order[$b];
+ // Order the grouped requirements by the counter keys. Add 'ok' to place
+ // that status group as last.
+ $counters = array_keys($element['#counters']);
+ $counters[] = 'ok';
+ $counter_keys = array_flip($counters);
+ uksort($grouped_requirements, function ($a, $b) use ($counter_keys) {
+ return $counter_keys[$a] > $counter_keys[$b];
});
$element['#grouped_requirements'] = $grouped_requirements;
reverted:
--- b/core/modules/system/src/Element/StatusReportPage.php
+++ /dev/null
@@ -1,138 +0,0 @@
- 'status_report_page',
- '#pre_render' => [
- [$class, 'preRenderCounters'],
- [$class, 'preRenderGeneralInfo'],
- [$class, 'preRenderRequirements'],
- ],
- ];
- }
-
- /**
- * #pre_render callback to get general info out of requirements.
- */
- public static function preRenderGeneralInfo($element) {
- $element['#general_info'] = [
- '#theme' => 'status_report_general_info',
- ];
- // Loop through requirements and pull out items.
- foreach ($element['#requirements'] as $key => $requirement) {
- switch ($key) {
- case 'cron':
- foreach ($requirement['description'] as &$description_elements) {
- foreach ($description_elements as &$description_element) {
- if (isset($description_element['#url']) && $description_element['#url']->getRouteName() == 'system.run_cron') {
- $description_element['#attributes']['class'][] = 'button';
- $description_element['#attributes']['class'][] = 'button--small';
- $description_element['#attributes']['class'][] = 'button--primary';
- $description_element['#attributes']['class'][] = 'system-status-general-info__run-cron';
- }
- }
- }
- $element['#general_info']['#' . $key] = $requirement;
- unset($element['#requirements'][$key]);
- break;
-
- case 'drupal':
- case 'webserver':
- case 'database_system':
- case 'database_system_version':
- case 'php':
- case 'php_memory_limit':
- $element['#general_info']['#' . $key] = $requirement;
- unset($element['#requirements'][$key]);
- break;
- }
- }
-
- return $element;
- }
-
- /**
- * #pre_render callback to create counter elements.
- */
- public static function preRenderCounters($element) {
- // Count number of items with different severity for summary.
- $counters = [
- 'error' => [
- 'amount' => 0,
- 'text' => t('Error'),
- 'text_plural' => t('Errors'),
- ],
- 'warning' => [
- 'amount' => 0,
- 'text' => t('Warning'),
- 'text_plural' => t('Warnings'),
- ],
- 'checked' => [
- 'amount' => 0,
- 'text' => t('Checked'),
- 'text_plural' => t('Checked'),
- ],
- ];
-
- $severities = static::getServerities();
- foreach ($element['#requirements'] as $key => &$requirement) {
- $severity = $severities[REQUIREMENT_INFO];
- if (isset($requirement['severity'])) {
- $severity = $severities[(int) $requirement['severity']];
- }
- elseif (defined('MAINTENANCE_MODE') && MAINTENANCE_MODE == 'install') {
- $severity = $severities[REQUIREMENT_OK];
- }
-
- if (isset($counters[$severity['status']])) {
- $counters[$severity['status']]['amount']++;
- }
- }
-
- foreach ($counters as $key => $counter) {
- if ($counter['amount'] === 0) {
- continue;
- }
-
- $text = new PluralTranslatableMarkup($counter['amount'], $counter['text'], $counter['text_plural']);
-
- $element['#counters'][$key] = [
- '#theme' => 'status_report_counter',
- '#amount' => $counter['amount'],
- '#text' => $text,
- '#severity' => $key,
- ];
- }
-
- return $element;
- }
-
- /**
- * #pre_render callback to create status report requirements.
- */
- public static function preRenderRequirements($element) {
- $element['#requirements'] = [
- '#type' => 'status_report',
- '#requirements' => $element['#requirements'],
- ];
-
- return $element;
- }
-
-}
diff -u b/core/modules/system/system.module b/core/modules/system/system.module
--- b/core/modules/system/system.module
+++ b/core/modules/system/system.module
@@ -197,15 +197,10 @@
'render element' => 'form',
'file' => 'system.admin.inc',
),
- 'status_report_page' => array(
+ 'status_report' => array(
'variables' => array(
'counters' => array(),
'general_info' => array(),
- 'requirements' => NULL,
- ),
- ),
- 'status_report' => array(
- 'variables' => array(
'grouped_requirements' => NULL,
),
),
diff -u b/core/modules/system/templates/status-report-counter.html.twig b/core/modules/system/templates/status-report-counter.html.twig
--- b/core/modules/system/templates/status-report-counter.html.twig
+++ b/core/modules/system/templates/status-report-counter.html.twig
@@ -14,5 +14,5 @@
- {{ amount }} {{ text }}
-
- {{ text }} Details
+ {{ amount }} {{ text }}
+
+ {{ text }} Details
reverted:
--- b/core/modules/system/templates/status-report-page.html.twig
+++ /dev/null
@@ -1,18 +0,0 @@
-{#
-/**
- * @file
- * Default theme implementation for the status report page.
- *
- * Available variables:
- * - counters: The list of counter elements.
- * - general_info: A render array to create general info element.
- * - requirements: A render array to create requirements table.
- *
- * @ingroup themeable
- */
-#}
-{% for counter in counters %}
- {{ counter }}
-{% endfor %}
-{{ general_info }}
-{{ requirements }}
diff -u b/core/modules/system/templates/status-report.html.twig b/core/modules/system/templates/status-report.html.twig
--- b/core/modules/system/templates/status-report.html.twig
+++ b/core/modules/system/templates/status-report.html.twig
@@ -15,10 +15,18 @@
* - description: (optional) The requirement's description.
* - severity_title: The title of the severity.
* - severity_status: Indicates the severity status.
+ * - counters: The list of counter elements.
+ * - general_info: A render array to create general info element.
*
* @ingroup themeable
*/
#}
+{% for counter in counters %}
+ {{ counter }}
+{% endfor %}
+
+{{ general_info }}
+
{% for group in grouped_requirements %}