Refs #34041 -- Added navigation landmark to breadcrumbs in admin.

Thanks Thibaud Colas for pair programming.
This commit is contained in:
Florian Perucki 2022-09-24 17:47:41 +02:00 committed by Mariusz Felisiak
parent fe6f4bef03
commit 872b61193b
5 changed files with 39 additions and 7 deletions

View File

@ -69,11 +69,15 @@
</div> </div>
{% endblock %} {% endblock %}
<!-- END Header --> <!-- END Header -->
{% block breadcrumbs %} {% block nav-breadcrumbs %}
<div class="breadcrumbs"> <nav aria-label="{% translate 'Breadcrumbs' %}">
<a href="{% url 'admin:index' %}">{% translate 'Home' %}</a> {% block breadcrumbs %}
{% if title %} &rsaquo; {{ title }}{% endif %} <div class="breadcrumbs">
</div> <a href="{% url 'admin:index' %}">{% translate 'Home' %}</a>
{% if title %} &rsaquo; {{ title }}{% endif %}
</div>
{% endblock %}
</nav>
{% endblock %} {% endblock %}
{% endif %} {% endif %}

View File

@ -7,7 +7,7 @@
{% block bodyclass %}{{ block.super }} dashboard{% endblock %} {% block bodyclass %}{{ block.super }} dashboard{% endblock %}
{% block breadcrumbs %}{% endblock %} {% block nav-breadcrumbs %}{% endblock %}
{% block nav-sidebar %}{% endblock %} {% block nav-sidebar %}{% endblock %}

View File

@ -15,7 +15,7 @@
{% block content_title %}{% endblock %} {% block content_title %}{% endblock %}
{% block breadcrumbs %}{% endblock %} {% block nav-breadcrumbs %}{% endblock %}
{% block content %} {% block content %}
{% if form.errors and not form.non_field_errors %} {% if form.errors and not form.non_field_errors %}

View File

@ -48,6 +48,9 @@ Minor features
:attr:`~django.contrib.admin.ModelAdmin.filter_vertical` widgets are now :attr:`~django.contrib.admin.ModelAdmin.filter_vertical` widgets are now
filterable. filterable.
* The ``admin/base.html`` template now has a new block ``nav-breadcrumbs``
which contains the navigation landmark and the ``breadcrumbs`` block.
:mod:`django.contrib.admindocs` :mod:`django.contrib.admindocs`
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

View File

@ -0,0 +1,25 @@
from django.contrib.auth.models import User
from django.test import TestCase, override_settings
from django.urls import reverse
@override_settings(ROOT_URLCONF="admin_views.urls")
class AdminBreadcrumbsTests(TestCase):
@classmethod
def setUpTestData(cls):
cls.superuser = User.objects.create_superuser(
username="super",
password="secret",
email="super@example.com",
)
def setUp(self):
self.client.force_login(self.superuser)
def test_breadcrumbs_absent(self):
response = self.client.get(reverse("admin:index"))
self.assertNotContains(response, '<nav aria-label="Breadcrumbs">')
def test_breadcrumbs_present(self):
response = self.client.get(reverse("admin:auth_user_add"))
self.assertContains(response, '<nav aria-label="Breadcrumbs">')