diff --git a/core/includes/theme.maintenance.inc b/core/includes/theme.maintenance.inc
index 2ceec4a..e880d00 100644
--- a/core/includes/theme.maintenance.inc
+++ b/core/includes/theme.maintenance.inc
@@ -7,6 +7,7 @@
use Drupal\Component\Utility\Unicode;
use Drupal\Core\Site\Settings;
+use Drupal\Core\Template\Attribute;
/**
* Sets up the theming system for maintenance page.
@@ -104,43 +105,39 @@ function _drupal_maintenance_theme() {
}
/**
- * 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 .= '';
+ $tasks = array();
foreach ($items as $k => $item) {
+ $tasks[$k]['item'] = $item;
+ $tasks[$k]['attributes'] = new Attribute(array('class' => array()));
if ($active == $k) {
- $class = 'active';
- $status = '(' . t('active') . ')';
+ $tasks[$k]['attributes']['class'][] = 'active';
+ $tasks[$k]['status'] = t('active');
$done = FALSE;
}
else {
- $class = $done ? 'done' : '';
- $status = $done ? '(' . t('done') . ')' : '';
+ $tasks[$k]['attributes']['class'][] = $done ? 'done' : '';
+ $tasks[$k]['status'] = $done ? t('done') : '';
}
- $output .= '- ';
- $output .= $item;
- $output .= ($status ? ' ' . $status . '' : '');
- $output .= '
';
}
- $output .= '
';
- return $output;
+ $variables['tasks'] = $tasks;
}
/**
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 0000000..b707a0f
--- /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 %}
+