diff options
| author | Marijke Luttekes <mail@marijkeluttekes.dev> | 2024-05-21 22:09:26 -0300 |
|---|---|---|
| committer | nessita <124304+nessita@users.noreply.github.com> | 2024-05-22 00:13:55 -0300 |
| commit | 01ed59f753139afb514170ee7f7384c155ecbc2d (patch) | |
| tree | 4b2a50dfa6abc08d1eb0f439f8078e7c1df1b8d0 /django | |
| parent | 9c5fe93349bd4339c41d057b87046e5d28be6f77 (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')
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 %} |
