summaryrefslogtreecommitdiff
path: root/django
diff options
context:
space:
mode:
authorMarijke Luttekes <mail@marijkeluttekes.dev>2024-05-21 22:09:26 -0300
committernessita <124304+nessita@users.noreply.github.com>2024-05-22 00:13:55 -0300
commit01ed59f753139afb514170ee7f7384c155ecbc2d (patch)
tree4b2a50dfa6abc08d1eb0f439f8078e7c1df1b8d0 /django
parent9c5fe93349bd4339c41d057b87046e5d28be6f77 (diff)
Refs #35189 -- Improved admin fieldset's accessibility by setting aria-labelledby.
Before this change, HTML <fieldset> elements in the admin site did not have an associated label to describe them. This commit defines a unique HTML id for the heading labeling a fieldset, and sets its aria-labelledby property to link the heading with the fieldset.
Diffstat (limited to 'django')
-rw-r--r--django/contrib/admin/templates/admin/change_form.html2
-rw-r--r--django/contrib/admin/templates/admin/edit_inline/stacked.html18
-rw-r--r--django/contrib/admin/templates/admin/edit_inline/tabular.html14
-rw-r--r--django/contrib/admin/templates/admin/includes/fieldset.html8
4 files changed, 27 insertions, 15 deletions
diff --git a/django/contrib/admin/templates/admin/change_form.html b/django/contrib/admin/templates/admin/change_form.html
index 20cc4a392c..31ff5d6c10 100644
--- a/django/contrib/admin/templates/admin/change_form.html
+++ b/django/contrib/admin/templates/admin/change_form.html
@@ -47,7 +47,7 @@
{% block field_sets %}
{% for fieldset in adminform %}
- {% include "admin/includes/fieldset.html" %}
+ {% include "admin/includes/fieldset.html" with heading_level=2 id_suffix=forloop.counter0 %}
{% endfor %}
{% endblock %}
diff --git a/django/contrib/admin/templates/admin/edit_inline/stacked.html b/django/contrib/admin/templates/admin/edit_inline/stacked.html
index 31d917bff0..b0331c65f8 100644
--- a/django/contrib/admin/templates/admin/edit_inline/stacked.html
+++ b/django/contrib/admin/templates/admin/edit_inline/stacked.html
@@ -3,12 +3,14 @@
id="{{ inline_admin_formset.formset.prefix }}-group"
data-inline-type="stacked"
data-inline-formset="{{ inline_admin_formset.inline_formset_data }}">
-<fieldset class="module {{ inline_admin_formset.classes }}">
+<fieldset class="module {{ inline_admin_formset.classes }}" aria-labelledby="{{ inline_admin_formset.formset.prefix }}-heading">
+ <h2 id="{{ inline_admin_formset.formset.prefix }}-heading" class="inline-heading">
{% if inline_admin_formset.formset.max_num == 1 %}
- <h2>{{ inline_admin_formset.opts.verbose_name|capfirst }}</h2>
+ {{ inline_admin_formset.opts.verbose_name|capfirst }}
{% else %}
- <h2>{{ inline_admin_formset.opts.verbose_name_plural|capfirst }}</h2>
+ {{ inline_admin_formset.opts.verbose_name_plural|capfirst }}
{% endif %}
+ </h2>
{{ inline_admin_formset.formset.management_form }}
{{ inline_admin_formset.formset.non_form_errors }}
@@ -19,9 +21,13 @@
{% if inline_admin_formset.formset.can_delete and inline_admin_formset.has_delete_permission and inline_admin_form.original %}<span class="delete">{{ inline_admin_form.deletion_field.field }} {{ inline_admin_form.deletion_field.label_tag }}</span>{% endif %}
</h3>
{% if inline_admin_form.form.non_field_errors %}{{ inline_admin_form.form.non_field_errors }}{% endif %}
- {% for fieldset in inline_admin_form %}
- {% include "admin/includes/fieldset.html" %}
- {% endfor %}
+
+ {% with parent_counter=forloop.counter0 %}
+ {% for fieldset in inline_admin_form %}
+ {% include "admin/includes/fieldset.html" with heading_level=4 id_prefix=parent_counter id_suffix=forloop.counter0 %}
+ {% endfor %}
+ {% endwith %}
+
{% if inline_admin_form.needs_explicit_pk_field %}{{ inline_admin_form.pk_field.field }}{% endif %}
{% if inline_admin_form.fk_field %}{{ inline_admin_form.fk_field.field }}{% endif %}
</div>{% endfor %}
diff --git a/django/contrib/admin/templates/admin/edit_inline/tabular.html b/django/contrib/admin/templates/admin/edit_inline/tabular.html
index 84c9fe3696..845d3917a4 100644
--- a/django/contrib/admin/templates/admin/edit_inline/tabular.html
+++ b/django/contrib/admin/templates/admin/edit_inline/tabular.html
@@ -4,12 +4,14 @@
data-inline-formset="{{ inline_admin_formset.inline_formset_data }}">
<div class="tabular inline-related {% if forloop.last %}last-related{% endif %}">
{{ inline_admin_formset.formset.management_form }}
-<fieldset class="module {{ inline_admin_formset.classes }}">
- {% if inline_admin_formset.formset.max_num == 1 %}
- <h2>{{ inline_admin_formset.opts.verbose_name|capfirst }}</h2>
- {% else %}
- <h2>{{ inline_admin_formset.opts.verbose_name_plural|capfirst }}</h2>
- {% endif %}
+<fieldset class="module {{ inline_admin_formset.classes }}" aria-labelledby="{{ inline_admin_formset.formset.prefix }}-heading">
+ <h2 id="{{ inline_admin_formset.formset.prefix }}-heading" class="inline-heading">
+ {% if inline_admin_formset.formset.max_num == 1 %}
+ {{ inline_admin_formset.opts.verbose_name|capfirst }}
+ {% else %}
+ {{ inline_admin_formset.opts.verbose_name_plural|capfirst }}
+ {% endif %}
+ </h2>
{{ inline_admin_formset.formset.non_form_errors }}
<table>
<thead><tr>
diff --git a/django/contrib/admin/templates/admin/includes/fieldset.html b/django/contrib/admin/templates/admin/includes/fieldset.html
index 04e76055ce..66bf714e9a 100644
--- a/django/contrib/admin/templates/admin/includes/fieldset.html
+++ b/django/contrib/admin/templates/admin/includes/fieldset.html
@@ -1,5 +1,8 @@
-<fieldset class="module aligned {{ fieldset.classes }}">
- {% if fieldset.name %}<h2>{{ fieldset.name }}</h2>{% endif %}
+{% with prefix=fieldset.formset.prefix|default:"fieldset" id_prefix=id_prefix|default:"0" id_suffix=id_suffix|default:"0" name=fieldset.name|default:""|slugify %}
+<fieldset class="module aligned {{ fieldset.classes }}"{% if name %} aria-labelledby="{{ prefix }}-{{ id_prefix}}-{{ name }}-{{ id_suffix }}-heading"{% endif %}>
+ {% if name %}
+ <h{{ heading_level|default:2 }} id="{{ prefix }}-{{ id_prefix}}-{{ name }}-{{ id_suffix }}-heading" class="fieldset-heading">{{ fieldset.name }}</h{{ heading_level|default:2 }}>
+ {% endif %}
{% if fieldset.description %}
<div class="description">{{ fieldset.description|safe }}</div>
{% endif %}
@@ -32,3 +35,4 @@
</div>
{% endfor %}
</fieldset>
+{% endwith %}