diff --git a/wagtail/locales/templates/wagtaillocales/_language_title_cell.html b/wagtail/locales/templates/wagtaillocales/_language_title_cell.html new file mode 100644 index 0000000000..704fffabae --- /dev/null +++ b/wagtail/locales/templates/wagtaillocales/_language_title_cell.html @@ -0,0 +1,11 @@ +{% load i18n wagtailadmin_tags %} + + +
+ {{ value }} + {% if not value.language_code_is_valid %} + {% trans "This locale's language code is not supported" as error %} + {% icon name="warning" class_name="locale-error" title=error %} + {% endif %} +
+ diff --git a/wagtail/locales/templates/wagtaillocales/index.html b/wagtail/locales/templates/wagtaillocales/index.html deleted file mode 100644 index bc63fe533c..0000000000 --- a/wagtail/locales/templates/wagtaillocales/index.html +++ /dev/null @@ -1,47 +0,0 @@ -{% extends "wagtailadmin/generic/index.html" %} -{% load wagtailadmin_tags i18n %} - -{% block listing %} -
-
- - - - - - - - - {% for locale in locales %} - - - - - {% endfor %} - -
- {% if ordering == "name" %} - - {% trans "Language" %} - - {% else %} - - {% trans "Language" %} - - {% endif %} - {% trans "Usage" %}
-
- {{ locale }} - {% if not locale.language_code_is_valid %} - {% trans "This locale's language code is not supported" as error %} - {% icon name="warning" class_name="locale-error" title=error %} - {% endif %} -
-
- {# TODO Make this translatable #} - {{ locale.num_pages }} pages{% if locale.num_others %} + {{ locale.num_others }} others{% endif %} -
- -
-
-{% endblock %} diff --git a/wagtail/locales/tests.py b/wagtail/locales/tests.py index f903ca7272..8fa848752d 100644 --- a/wagtail/locales/tests.py +++ b/wagtail/locales/tests.py @@ -17,7 +17,7 @@ class TestLocaleIndexView(TestCase, WagtailTestUtils): def test_simple(self): response = self.get() self.assertEqual(response.status_code, 200) - self.assertTemplateUsed(response, 'wagtaillocales/index.html') + self.assertTemplateUsed(response, 'wagtailadmin/generic/index.html') class TestLocaleCreateView(TestCase, WagtailTestUtils): diff --git a/wagtail/locales/views.py b/wagtail/locales/views.py index 11eaa7bdbe..0a95a34410 100644 --- a/wagtail/locales/views.py +++ b/wagtail/locales/views.py @@ -1,6 +1,7 @@ from django.utils.translation import gettext_lazy from wagtail.admin import messages +from wagtail.admin.ui.tables import Column, TitleColumn from wagtail.admin.views import generic from wagtail.admin.viewsets.model import ModelViewSet from wagtail.core.models import Locale @@ -10,20 +11,35 @@ from .forms import LocaleForm from .utils import get_locale_usage +class LanguageTitleColumn(TitleColumn): + cell_template_name = "wagtaillocales/_language_title_cell.html" + + def get_value(self, locale): + return locale + + +class UsageColumn(Column): + def get_value(self, locale): + num_pages, num_others = get_locale_usage(locale) + # TODO: make this translatable + val = "%d pages" % num_pages + if num_others: + val += (" + %d others" % num_others) + return val + + class IndexView(generic.IndexView): - template_name = 'wagtaillocales/index.html' page_title = gettext_lazy("Locales") add_item_label = gettext_lazy("Add a locale") context_object_name = 'locales' queryset = Locale.all_objects.all() - def get_context_data(self): - context = super().get_context_data() - - for locale in context['locales']: - locale.num_pages, locale.num_others = get_locale_usage(locale) - - return context + columns = [ + LanguageTitleColumn( + 'language', label=gettext_lazy("Language"), sort_key='language', url_name='wagtaillocales:edit' + ), + UsageColumn('usage', label=gettext_lazy("Usage")), + ] class CreateView(generic.CreateView):