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 @@ -19,11 +19,10 @@ $class = get_class($this); return [ '#theme' => 'status_report', - '#requirements' => [], '#pre_render' => [ - [$class, 'preRenderGeneralInfo'], [$class, 'preRenderCounters'], [$class, 'preRenderGroupRequirements'], + [$class, 'preRenderGeneralInfo'], ], ]; } @@ -36,32 +35,34 @@ '#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'; + 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']['#' . $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; + $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; + } } } @@ -142,7 +143,7 @@ $grouped_requirements[$severity['status']]['title'] = $severity['title']; $grouped_requirements[$severity['status']]['type'] = $severity['status']; - $grouped_requirements[$severity['status']]['items'][] = $requirement; + $grouped_requirements[$severity['status']]['items'][$key] = $requirement; } // Order the grouped requirements by the counter keys. Add 'ok' to place @@ -154,7 +155,7 @@ return $counter_keys[$a] > $counter_keys[$b]; }); - $element['#requirements'] = $grouped_requirements; + $element['#grouped_requirements'] = $grouped_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 @@ -201,7 +201,7 @@ 'variables' => array( 'counters' => array(), 'general_info' => array(), - 'requirements' => NULL + 'grouped_requirements' => NULL, ), ), 'status_report_counter' => array( 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 @@ -1,10 +1,10 @@ {# /** * @file - * Theme default theme implementation for the status report. + * Default theme implementation for the status report. * * Available variables: - * - requirements: Contains grouped requirements. + * - grouped_requirements: Contains grouped requirements. * Each group contains: * - title: The title of the group. * - type: The severity of the group. @@ -21,27 +21,27 @@ - * @see template_preprocess_status_report() + * @ingroup themeable */ #} - - - {% for group in requirements %} - {% for requirement in group.items %} - - {% if requirement.severity_status in ['warning', 'error'] %} - - - - {% endfor %} + {{ requirement.title }} + + + {{ requirement.value }} + {% if requirement.description %} +
{{ requirement.description }}
+ {% endif %} + {% endfor %} - -
- {{ requirement.severity_title }} - {% else %} - +{% for counter in counters %} + {{ counter }} +{% endfor %} + +{{ general_info }} + +{% for group in grouped_requirements %} +

{{ group.title }}

+ {% for requirement in group.items %} +
+ + {% if requirement.severity_title %} + {{ requirement.severity_title }} {% endif %} - {{ requirement.title }} -
- {{ requirement.value }} - {% if requirement.description %} -
{{ requirement.description }}
- {% endif %} -
+{% endfor %} diff -u b/core/themes/seven/templates/status-report/status-report.html.twig b/core/themes/seven/templates/status-report/status-report.html.twig --- b/core/themes/seven/templates/status-report/status-report.html.twig +++ b/core/themes/seven/templates/status-report/status-report.html.twig @@ -4,7 +4,7 @@ * Theme override for the status report. * * Available variables: - * - requirements: Contains grouped requirements. + * - grouped_requirements: Contains grouped requirements. * Each group contains: * - title: The title of the group. * - type: The severity of the group. @@ -40,12 +40,12 @@ {{ attach_library('seven/drupal.responsive-detail') }}
- {% for group in requirements %} + {% for group in grouped_requirements %}

{{ group.title }}

{% for requirement in group.items %}
- {% if requirement.severity_status in ['warning', 'error'] %} + {% if group.type in ['warning', 'error'] %} {% set summary_classes = ' system-status-report__status-icon system-status-report__status-icon--' ~ group.type %} {% endif %} diff -u b/core/themes/stable/templates/admin/status-report.html.twig b/core/themes/stable/templates/admin/status-report.html.twig --- b/core/themes/stable/templates/admin/status-report.html.twig +++ b/core/themes/stable/templates/admin/status-report.html.twig @@ -4,7 +4,7 @@ * Theme override for the status report. * * Available variables: - * - requirements: Contains grouped requirements. + * - grouped_requirements: Contains grouped requirements. * Each group contains: * - title: The title of the group. * - type: The severity of the group. @@ -15,33 +15,32 @@ * - description: (optional) The requirement's description. * - severity_title: The title of the severity. * - severity_status: Indicates the severity status. + * - requirements: Contains list of requirements without grouping. * - counters: The list of counter elements. * - general_info: A render array to create general info element. * - * @see template_preprocess_status_report() + * @see stable_preprocess_status_report() */ #} - {% for group in requirements %} - {% for requirement in group.items %} - - {% if requirement.severity_status in ['warning', 'error'] %} + {% for requirement in requirements %} + + {% if requirement.severity_status in ['warning', 'error'] %} - - - {% endfor %} + {% endif %} + {{ requirement.title }} + + + {% endfor %}
{{ requirement.severity_title }} - {% else %} + {% else %} - {% endif %} - {{ requirement.title }} - - {{ requirement.value }} - {% if requirement.description %} -
{{ requirement.description }}
- {% endif %} -
+ {{ requirement.value }} + {% if requirement.description %} +
{{ requirement.description }}
+ {% endif %} +
only in patch2: unchanged: --- a/core/themes/stable/stable.theme +++ b/core/themes/stable/stable.theme @@ -8,6 +8,15 @@ use Drupal\Component\Utility\Html; /** + * Implements hook_theme_registry_alter(). + */ +function stable_theme_registry_alter(&$registry) { + if (isset($registry['status_report'])) { + $registry['status_report']['variables']['requirements'] = NULL; + } +} + +/** * Implements template_preprocess_links(). */ function stable_preprocess_links(&$variables) { @@ -23,3 +32,63 @@ function stable_preprocess_links(&$variables) { } } } + +/** + * Prepares variables for status report template. + * + * Default template: status-report.html.twig. + * + * This theme function is dependent on install.inc being loaded, because + * that's where the constants are defined. + * + * @param $variables + * An associative array containing: + * - requirements: An array of requirements/status items. Each requirement + * is an associative array containing the following elements: + * - title: The name of the requirement. + * - value: (optional) The current value (version, time, level, etc). + * - description: (optional) The description of the requirement. + * - severity: (optional) The requirement's result/severity level, one of: + * - REQUIREMENT_INFO: Status information. + * - REQUIREMENT_OK: The requirement is satisfied. + * - REQUIREMENT_WARNING: The requirement failed with a warning. + * - REQUIREMENT_ERROR: The requirement failed with an error. + */ +function template_preprocess_status_report(&$variables) { + $severities = [ + REQUIREMENT_INFO => [ + 'title' => t('Info'), + 'status' => 'info', + ], + REQUIREMENT_OK => [ + 'title' => t('OK'), + 'status' => 'ok', + ], + REQUIREMENT_WARNING => [ + 'title' => t('Warning'), + 'status' => 'warning', + ], + REQUIREMENT_ERROR => [ + 'title' => t('Error'), + 'status' => 'error', + ], + ]; + + foreach ($variables['requirements'] as $i => $requirement) { + // Always use the explicit requirement severity, if defined. Otherwise, + // default to REQUIREMENT_OK in the installer to visually confirm that + // installation requirements are met. And default to REQUIREMENT_INFO to + // denote neutral information without special visualization. + if (isset($requirement['severity'])) { + $severity = $severities[(int) $requirement['severity']]; + } + elseif (defined('MAINTENANCE_MODE') && MAINTENANCE_MODE == 'install') { + $severity = $severities[REQUIREMENT_OK]; + } + else { + $severity = $severities[REQUIREMENT_INFO]; + } + $variables['requirements'][$i]['severity_title'] = $severity['title']; + $variables['requirements'][$i]['severity_status'] = $severity['status']; + } +} only in patch2: unchanged: --- /dev/null +++ b/core/themes/stable/templates/admin/status-report-counter.html.twig @@ -0,0 +1,18 @@ +{# +/** + * @file + * Theme override for status report counter. + * + * Available variables: + * - amount: The number shown on counter. + * - text: The text shown on counter. + * - severity: The severity of the counter. + * + * @ingroup themable + */ +#} + + {{ amount }} {{ text }} +
+ {{ text }} Details + only in patch2: unchanged: --- /dev/null +++ b/core/themes/stable/templates/admin/status-report-general-info.html.twig @@ -0,0 +1,75 @@ +{# +/** + * @file + * Theme override for status report general info. + * + * Available variables: + * - drupal: The status of Drupal installation: + * - value: The current status of Drupal installation. + * - description: The description for current status of Drupal installation. + * - cron: The status of cron: + * - value: The current status of cron. + * - description: The description for current status of cron. + * - cron.run_cron: An array to render a button for running cron. + * - database_system: The status of database system: + * - value: The current status of database sytem. + * - description: The description for current status of cron. + * - database_system_version: The info about current database version: + * - value: The current version of database. + * - description: The description for current version of database. + * - php: The current version of PHP: + * - value: The status of currently installed PHP version. + * - description: The description for current installed PHP version. + * - php_memory_limit: The info about current PHP memory limit: + * - value: The status of currently set PHP memory limit. + * - description: The description for currently set PHP memory limit. + * - webserver: The info about currently installed web server: + * - value: The status of currently installed web server. + * - description: The description for the status of currently installed web + * server. + */ +#} +

{{ 'General System Information'|t }}

+
+

{{ 'Drupal Version'|t }}

+ {{ drupal.value }} + {{ drupal.description }} +
+ +
+

{{ 'Last Cron Run'|t }}

+ {{ cron.value }} + {{ cron.run_cron }} + {{ cron.description }} +
+
+

{{ 'Web Server'|t }}

+ {{ webserver.value }} + {{ webserver.description }} +
+ +
+

{{ 'PHP'|t }}

+ {{ 'Version'|t }} +
+ {{ php.value }} + {{ php.description }} +
+ {{ 'Memory limit'|t }} +
+ {{ php_memory_limit.value }} + {{ php_memory_limit.description }} +
+ +
+

{{ 'Database'|t }}

+ {{ 'Version'|t }} +
+ {{ database_system_version.value }} + {{ database_system_version.description }} +
+ {{ 'System'|t }} +
+ {{ database_system.value }} + {{ database_system.description }} +