From 5994cc43dfc5cc1ed891ab78eff3a3bcf56f6830 Mon Sep 17 00:00:00 2001 From: Matt Westcott Date: Thu, 19 May 2022 15:34:31 +0100 Subject: [PATCH] Allow passing arbitrary link attributes to TitleColumn --- .../templates/wagtailadmin/tables/attrs.html | 1 + .../wagtailadmin/tables/title_cell.html | 2 +- wagtail/admin/tests/ui/test_tables.py | 5 +++-- wagtail/admin/ui/tables.py | 17 ++++++++++++++--- 4 files changed, 19 insertions(+), 6 deletions(-) create mode 100644 wagtail/admin/templates/wagtailadmin/tables/attrs.html diff --git a/wagtail/admin/templates/wagtailadmin/tables/attrs.html b/wagtail/admin/templates/wagtailadmin/tables/attrs.html new file mode 100644 index 0000000000..50de36bae0 --- /dev/null +++ b/wagtail/admin/templates/wagtailadmin/tables/attrs.html @@ -0,0 +1 @@ +{% for name, value in attrs.items %}{% if value is not False %} {{ name }}{% if value is not True %}="{{ value|stringformat:'s' }}"{% endif %}{% endif %}{% endfor %} \ No newline at end of file diff --git a/wagtail/admin/templates/wagtailadmin/tables/title_cell.html b/wagtail/admin/templates/wagtailadmin/tables/title_cell.html index 681f5ace4b..7116313961 100644 --- a/wagtail/admin/templates/wagtailadmin/tables/title_cell.html +++ b/wagtail/admin/templates/wagtailadmin/tables/title_cell.html @@ -1,7 +1,7 @@
{% if link_url %} - {{ value }} + {{ value }} {% else %} {{ value }} {% endif %} diff --git a/wagtail/admin/tests/ui/test_tables.py b/wagtail/admin/tests/ui/test_tables.py index e4b7d1c446..a1809a2798 100644 --- a/wagtail/admin/tests/ui/test_tables.py +++ b/wagtail/admin/tests/ui/test_tables.py @@ -94,6 +94,7 @@ class TestTable(TestCase): "hostname", url_name="wagtailsites:edit", link_classname="choose-site", + link_attrs={"data-chooser": "yes"}, ), Column("site_name", label="Site name"), ], @@ -112,7 +113,7 @@ class TestTable(TestCase): My blog @@ -120,7 +121,7 @@ class TestTable(TestCase): My gallery diff --git a/wagtail/admin/ui/tables.py b/wagtail/admin/ui/tables.py index dbc0f68414..51c46f8b81 100644 --- a/wagtail/admin/ui/tables.py +++ b/wagtail/admin/ui/tables.py @@ -128,17 +128,28 @@ class TitleColumn(Column): cell_template_name = "wagtailadmin/tables/title_cell.html" def __init__( - self, name, url_name=None, get_url=None, link_classname=None, **kwargs + self, + name, + url_name=None, + get_url=None, + link_classname=None, + link_attrs=None, + **kwargs, ): super().__init__(name, **kwargs) self.url_name = url_name self._get_url_func = get_url + self.link_attrs = link_attrs or {} self.link_classname = link_classname def get_cell_context_data(self, instance, parent_context): context = super().get_cell_context_data(instance, parent_context) - context["link_url"] = self.get_link_url(instance, parent_context) - context["link_classname"] = self.link_classname + context["link_attrs"] = self.link_attrs.copy() + context["link_attrs"]["href"] = context["link_url"] = self.get_link_url( + instance, parent_context + ) + if self.link_classname is not None: + context["link_attrs"]["class"] = self.link_classname return context def get_link_url(self, instance, parent_context):