Repository: wagtail/wagtail

Issue:
ThumbnailMixin does not display in header the value defined under thumb_col_header_text 
<!--
Found a bug? Please fill out the sections below. 👍
-->

### Issue Summary

When adding ThumbnailMixin to a ModelAdmin, and giving it the `thumb_col_header_text` attribute, should display that on the list header for the thumbnail. but it always uses the default defined 'image' 

![image](https://user-images.githubusercontent.com/4082254/161403611-d75291b5-6db8-413a-82fa-447aab5fe69a.png)


![image](https://user-images.githubusercontent.com/4082254/161403594-1b2bd39b-2332-40a8-b539-cae4d72a57e6.png)



### Steps to Reproduce

1. (for example) Start a new project with `wagtail start myproject`
2. in models.py add a new model (non page) with a forignkey to wagtailimages.Image 
3. add model admin definition in wagtail_hooks.py
4. add ThumbnailMixin to model admin super classes
5. add some value to thumb_col_header_text
6. register new model admin
7. load app
8. add new instance of your new model with an image
9. in list header for your image it will say 'image' not what you defined in thumb_col_header_text

Any other relevant information. For example, why do you consider this a bug and what did you expect to happen instead?

* I have confirmed that this issue can be reproduced as described on a fresh Wagtail project: (yes)
* i already know why this is happening and will submit a pull request shortly


### Technical details

* Python version: 3.9.7
* Django version: 4.0.3
* Wagtail version: 2.16.1
* Browser version: Chrome Version 100.0.4896.60 (Official Build) (x86_64)



Discussion:

Resolving patch:
diff --git a/wagtail/contrib/modeladmin/mixins.py b/wagtail/contrib/modeladmin/mixins.py
--- a/wagtail/contrib/modeladmin/mixins.py
+++ b/wagtail/contrib/modeladmin/mixins.py
@@ -25,6 +25,7 @@ def __init__(self, *args, **kwargs):
                 "The `wagtail.images` app must be installed in order "
                 "to use the `ThumbnailMixin` class."
             )
+        self.__class__.admin_thumb.short_description = self.thumb_col_header_text
         super().__init__(*args, **kwargs)
 
     def admin_thumb(self, obj):
@@ -53,5 +54,3 @@ def admin_thumb(self, obj):
         rendition = get_rendition_or_not_found(image, spec)
         img_attrs.update({"src": rendition.url})
         return mark_safe("<img{}>".format(flatatt(img_attrs)))
-
-    admin_thumb.short_description = thumb_col_header_text


Test patch:
diff --git a/wagtail/contrib/modeladmin/tests/test_simple_modeladmin.py b/wagtail/contrib/modeladmin/tests/test_simple_modeladmin.py
--- a/wagtail/contrib/modeladmin/tests/test_simple_modeladmin.py
+++ b/wagtail/contrib/modeladmin/tests/test_simple_modeladmin.py
@@ -43,6 +43,16 @@ def setUp(self):
     def get(self, **params):
         return self.client.get("/admin/modeladmintest/book/", params)
 
+    def test_thumbnail_image_col_header_text(self):
+        response = self.get()
+
+        # check thumb_col_header_text is correctly used
+        self.assertContains(
+            response,
+            '<th scope="col" class="column-admin_thumb">The cover</th>',
+            html=True,
+        )
+
     def test_simple(self):
         response = self.get()
 
diff --git a/wagtail/test/modeladmintest/wagtail_hooks.py b/wagtail/test/modeladmintest/wagtail_hooks.py
--- a/wagtail/test/modeladmintest/wagtail_hooks.py
+++ b/wagtail/test/modeladmintest/wagtail_hooks.py
@@ -84,6 +84,7 @@ class BookModelAdmin(ThumbnailMixin, ModelAdmin):
     inspect_view_enabled = True
     inspect_view_fields_exclude = ("title",)
     thumb_image_field_name = "cover_image"
+    thumb_col_header_text = "The cover"
     search_handler_class = WagtailBackendSearchHandler
     prepopulated_fields = {"title": ("author",)}