diff --git a/core/includes/theme.inc b/core/includes/theme.inc
index 461ece98f87db0345fd8dcdb0bd64b6a1451ee42..fc70f8223f278793fcdae9251d1317fc4c04c016 100644
--- a/core/includes/theme.inc
+++ b/core/includes/theme.inc
@@ -1562,45 +1562,38 @@ function template_preprocess_container(&$variables) {
$variables['attributes'] = $element['#attributes'];
}
-
/**
- * Returns HTML for a list of maintenance tasks to perform.
+ * Prepares variables for maintenance task list templates.
*
- * @param $variables
+ * Default template: task-list.html.twig.
+ *
+ * @param array $variables
* An associative array containing:
* - items: An associative array of maintenance tasks.
* It's the caller's responsibility to ensure this array's items contain no
* dangerous HTML such as SCRIPT tags.
* - active: The key for the currently active maintenance task.
- *
- * @ingroup themeable
*/
-function theme_task_list($variables) {
+function template_preprocess_task_list(&$variables) {
$items = $variables['items'];
$active = $variables['active'];
$done = isset($items[$active]) || $active == NULL;
- $output = '
Installation tasks
';
- $output .= '';
-
foreach ($items as $k => $item) {
+ $variables['tasks'][$k]['item'] = $item;
+ $variables['tasks'][$k]['attributes'] = new Attribute();
if ($active == $k) {
- $class = 'active';
- $status = '(' . t('active') . ')';
+ $variables['tasks'][$k]['attributes']->addClass('active');
+ $variables['tasks'][$k]['status'] = t('active');
$done = FALSE;
}
else {
- $class = $done ? 'done' : '';
- $status = $done ? '(' . t('done') . ')' : '';
+ if ($done) {
+ $variables['tasks'][$k]['attributes']->addClass('done');
+ $variables['tasks'][$k]['status'] = t('done');
+ }
}
- $output .= '- ';
- $output .= $item;
- $output .= ($status ? ' ' . $status . '' : '');
- $output .= '
';
}
- $output .= '
';
- return $output;
}
/**
@@ -2361,6 +2354,7 @@ function drupal_common_theme() {
),
'task_list' => array(
'variables' => array('items' => NULL, 'active' => NULL, 'variant' => NULL),
+ 'template' => 'task-list',
),
'authorize_message' => array(
'variables' => array('message' => NULL, 'success' => TRUE),
diff --git a/core/modules/system/templates/task-list.html.twig b/core/modules/system/templates/task-list.html.twig
new file mode 100644
index 0000000000000000000000000000000000000000..649cfa6a6d68fd49d5ce9f0c23fc83bcfa360bb2
--- /dev/null
+++ b/core/modules/system/templates/task-list.html.twig
@@ -0,0 +1,25 @@
+{#
+/**
+ * @file
+ * Default theme implementation for a list of maintenance tasks to perform.
+ *
+ * Available variables:
+ * - tasks: A list of maintenance tasks to perform. Each item in the list has
+ * the following variables:
+ * - item: The maintenance task.
+ * - attributes: HTML attributes for the maintenance task.
+ * - status: (optional) Text describing the status of the maintenance task,
+ * 'active' or 'done'.
+ *
+ * @ingroup themeable
+ */
+#}
+Installation tasks
+
+{% for task in tasks %}
+ -
+ {{ task.item }}
+ {% if task.status %} ({{ task.status }}){% endif %}
+
+{% endfor %}
+