diff --git a/core/modules/system/system.install b/core/modules/system/system.install
index a0849b1..fc5d99a 100644
--- a/core/modules/system/system.install
+++ b/core/modules/system/system.install
@@ -340,8 +340,6 @@ function system_requirements($phase) {
$threshold_warning = $cron_config->get('threshold.requirements_warning');
// Cron error threshold defaults to two weeks.
$threshold_error = $cron_config->get('threshold.requirements_error');
- // Cron configuration help text.
- $help = t('For more information, see the online handbook entry for configuring cron jobs.', array('@cron-handbook' => 'https://www.drupal.org/cron'));
// Determine when cron last ran.
$cron_last = \Drupal::state()->get('system.cron_last');
@@ -360,23 +358,39 @@ function system_requirements($phase) {
// Set summary and description based on values determined above.
$summary = t('Last run !time ago', array('!time' => \Drupal::service('date.formatter')->formatTimeDiffSince($cron_last)));
- $description = '';
- if ($severity != REQUIREMENT_INFO) {
- $description = t('Cron has not run recently.') . ' ' . $help;
- }
- $description .= ' ' . t('You can run cron manually.', array('@cron' => \Drupal::url('system.run_cron')));
- $description .= '
' . t('To run cron from outside the site, go to !cron', array('!cron' => \Drupal::url('system.cron', array('key' => \Drupal::state()->get('system.cron_key'), array('absolute' => TRUE)))));
+ // Get cron key.
+ $cron_key = \Drupal::state()->get('system.cron_key');
+
+ // Create inline Twig template.
+ $template = <<<'TWIG'
+ {%- set space = ' ' %}
+ {%- if run_warning %}
+ {%- trans %}Cron has not run recently.{% endtrans %}{{ space }}
+ {%- trans %}For more information, see the online handbook entry for configuring cron jobs.{% endtrans %}{{ space }}
+ {%- endif %}
+ {%- trans %}You can run cron manually.{% endtrans %}{{ space }}
+ {%- trans %}To run cron from outside the site, go to {{ cron_outside|passthrough }}.{% endtrans %}
+TWIG;
+
+ // Create cron description.
+ $description = array(
+ '#type' => 'inline_template',
+ '#template' => $template,
+ '#context' => array(
+ 'run_warning' => $severity != REQUIREMENT_INFO,
+ 'cron_handbook' => 'https://www.drupal.org/cron',
+ 'cron_inside' => \Drupal::url('system.run_cron'),
+ 'cron_outside' => \Drupal::url('system.cron', array('key' => $cron_key), array('absolute' => TRUE)),
+ ),
+ );
+ // Set cron requirements.
$requirements['cron'] = array(
'title' => t('Cron maintenance tasks'),
'severity' => $severity,
'value' => $summary,
- // @todo This string is concatenated from t() calls, safe drupal_render()
- // output, whitespace, and
tags, so is safe. However, as a best
- // practice, we should not use SafeMarkup::set() around a variable. Fix
- // in: https://www.drupal.org/node/2296929.
- 'description' => SafeMarkup::set($description),
+ 'description' => $description,
);
}
if ($phase != 'install') {