4 * Default theme implementation for the modules uninstall page.
7 * - form: The modules uninstall form.
8 * - modules: Contains multiple module instances. Each module contains:
9 * - attributes: Attributes on the row.
10 * - module_name: The name of the module.
11 * - checkbox: A checkbox for uninstalling the module.
12 * - checkbox_id: A unique identifier for interacting with the checkbox
14 * - name: The human-readable name of the module.
15 * - description: The description of the module.
16 * - disabled_reasons: (optional) A list of reasons why this module cannot be
19 * @see template_preprocess_system_modules_uninstall()
26 <table class="responsive-enabled" data-striping="1">
29 <th>{{ 'Uninstall'|t }}</th>
30 <th>{{ 'Name'|t }}</th>
31 <th>{{ 'Description'|t }}</th>
35 {% for module in modules %}
36 {% set zebra = cycle(['odd', 'even'], loop.index0) -%}
37 <tr{{ module.attributes.addClass(zebra) }}>
39 {{- module.checkbox -}}
42 <label for="{{ module.checkbox_id }}" class="module-name table-filter-text-source">{{ module.name }}</label>
44 <td class="description">
45 <span class="text module-description">{{ module.description }}</span>
46 {% if module.reasons_count > 0 %}
47 <div class="admin-requirements">
49 The following reason prevents {{ module.module_name }} from being uninstalled:
50 {%- plural module.reasons_count -%}
51 The following reasons prevent {{ module.module_name }} from being uninstalled:
53 <div class="item-list">
55 {%- for reason in module.validation_reasons -%}
58 {%- if module.required_by -%}
59 <li>{{ 'Required by: @module-list'|t({'@module-list': module.required_by|safe_join(', ') }) }}</li>
69 <td colspan="3" class="empty message">{{ 'No modules are available to uninstall.'|t }}</td>
75 {{ form|without('filters', 'modules', 'uninstall') }}