diff --git a/admin_interface/admin.py b/admin_interface/admin.py index f6f21f8..348a854 100644 --- a/admin_interface/admin.py +++ b/admin_interface/admin.py @@ -31,6 +31,7 @@ class ThemeAdmin(admin.ModelAdmin): 'classes': ('wide', ), 'fields': ( 'language_chooser_active', + 'language_chooser_display', ) }), (_('Logo'), { diff --git a/admin_interface/locale/es/LC_MESSAGES/django.mo b/admin_interface/locale/es/LC_MESSAGES/django.mo index 16add50..b1210fc 100644 Binary files a/admin_interface/locale/es/LC_MESSAGES/django.mo and b/admin_interface/locale/es/LC_MESSAGES/django.mo differ diff --git a/admin_interface/locale/es/LC_MESSAGES/django.po b/admin_interface/locale/es/LC_MESSAGES/django.po index b1eb2ca..c6c60af 100644 --- a/admin_interface/locale/es/LC_MESSAGES/django.po +++ b/admin_interface/locale/es/LC_MESSAGES/django.po @@ -9,7 +9,7 @@ msgid "" msgstr "" "Project-Id-Version: django-admin-interface\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2019-09-03 16:43+0000\n" +"POT-Creation-Date: 2019-09-04 09:18+0000\n" "PO-Revision-Date: 2018-12-30 19:13-0500\n" "Last-Translator: Martin Vuelta \n" "Language-Team: Spanish \n" @@ -27,47 +27,47 @@ msgstr "Ambiente" msgid "Language chooser" msgstr "" -#: admin_interface/admin.py:36 +#: admin_interface/admin.py:37 msgid "Logo" msgstr "Logo" -#: admin_interface/admin.py:44 +#: admin_interface/admin.py:45 msgid "Favicon" msgstr "Favicon" -#: admin_interface/admin.py:48 +#: admin_interface/admin.py:49 msgid "Title" msgstr "Título" -#: admin_interface/admin.py:56 +#: admin_interface/admin.py:57 msgid "Header" msgstr "Encabezado" -#: admin_interface/admin.py:65 +#: admin_interface/admin.py:66 msgid "Breadcrumbs / Module headers" msgstr "Breadcrumbs / Encabezados de módulos" -#: admin_interface/admin.py:75 +#: admin_interface/admin.py:76 msgid "Generic Links" msgstr "Enlaces genéricos" -#: admin_interface/admin.py:82 +#: admin_interface/admin.py:83 msgid "Save Buttons" msgstr "Botones de guardar" -#: admin_interface/admin.py:90 +#: admin_interface/admin.py:91 msgid "Delete Buttons" msgstr "Botones de borrar" -#: admin_interface/admin.py:98 +#: admin_interface/admin.py:99 msgid "Related Modal" msgstr "Modal para objetos relacionados" -#: admin_interface/admin.py:108 +#: admin_interface/admin.py:109 msgid "List Filter" msgstr "Lista de filtros" -#: admin_interface/admin.py:112 +#: admin_interface/admin.py:113 msgid "Recent Actions" msgstr "Acciones recientes" @@ -76,11 +76,12 @@ msgid "Admin Interface" msgstr "Interfaz de administración" #: admin_interface/models.py:72 admin_interface/models.py:116 +#: admin_interface/models.py:135 msgid "name" msgstr "Nombre" #: admin_interface/models.py:75 admin_interface/models.py:132 -#: admin_interface/models.py:244 +#: admin_interface/models.py:253 msgid "active" msgstr "Activo" @@ -102,7 +103,7 @@ msgid "color" msgstr "color de logo" #: admin_interface/models.py:90 admin_interface/models.py:105 -#: admin_interface/models.py:280 +#: admin_interface/models.py:289 msgid "visible" msgstr "Visible" @@ -136,53 +137,61 @@ msgstr "" msgid "visible in favicon (marker)" msgstr "" -#: admin_interface/models.py:139 admin_interface/models.py:164 -#: admin_interface/models.py:205 admin_interface/models.py:224 -#: admin_interface/models.py:250 +#: admin_interface/models.py:134 +msgid "code" +msgstr "" + +#: admin_interface/models.py:141 +msgid "display" +msgstr "" + +#: admin_interface/models.py:148 admin_interface/models.py:173 +#: admin_interface/models.py:214 admin_interface/models.py:233 +#: admin_interface/models.py:259 msgid "background color" msgstr "color de fondo" -#: admin_interface/models.py:145 admin_interface/models.py:170 -#: admin_interface/models.py:217 admin_interface/models.py:236 -#: admin_interface/models.py:240 +#: admin_interface/models.py:154 admin_interface/models.py:179 +#: admin_interface/models.py:226 admin_interface/models.py:245 +#: admin_interface/models.py:249 msgid "text color" msgstr "color de texto" -#: admin_interface/models.py:151 admin_interface/models.py:176 -#: admin_interface/models.py:192 +#: admin_interface/models.py:160 admin_interface/models.py:185 +#: admin_interface/models.py:201 msgid "link color" msgstr "color de enlace" -#: admin_interface/models.py:157 admin_interface/models.py:182 -#: admin_interface/models.py:198 +#: admin_interface/models.py:166 admin_interface/models.py:191 +#: admin_interface/models.py:207 msgid "link hover color" msgstr "color de enlace (hover)" -#: admin_interface/models.py:185 admin_interface/models.py:270 +#: admin_interface/models.py:194 admin_interface/models.py:279 msgid "rounded corners" msgstr "esquinas redondas" -#: admin_interface/models.py:211 admin_interface/models.py:230 +#: admin_interface/models.py:220 admin_interface/models.py:239 msgid "background hover color" msgstr "color de fondo (hover)" -#: admin_interface/models.py:267 +#: admin_interface/models.py:276 msgid "background opacity" msgstr "opacidad de fondo" -#: admin_interface/models.py:273 +#: admin_interface/models.py:282 msgid "close button visible" msgstr "" -#: admin_interface/models.py:277 +#: admin_interface/models.py:286 msgid "use dropdown" msgstr "Usar lista desplegable" -#: admin_interface/models.py:289 +#: admin_interface/models.py:298 msgid "Theme" msgstr "Tema" -#: admin_interface/models.py:290 +#: admin_interface/models.py:299 msgid "Themes" msgstr "Temas" diff --git a/admin_interface/locale/fr/LC_MESSAGES/django.mo b/admin_interface/locale/fr/LC_MESSAGES/django.mo index 945249d..19d9505 100644 Binary files a/admin_interface/locale/fr/LC_MESSAGES/django.mo and b/admin_interface/locale/fr/LC_MESSAGES/django.mo differ diff --git a/admin_interface/locale/fr/LC_MESSAGES/django.po b/admin_interface/locale/fr/LC_MESSAGES/django.po index 621d34f..3023db5 100644 --- a/admin_interface/locale/fr/LC_MESSAGES/django.po +++ b/admin_interface/locale/fr/LC_MESSAGES/django.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2019-09-03 16:43+0000\n" +"POT-Creation-Date: 2019-09-04 09:18+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -26,47 +26,47 @@ msgstr "Environnment" msgid "Language chooser" msgstr "" -#: admin_interface/admin.py:36 +#: admin_interface/admin.py:37 msgid "Logo" msgstr "Logo" -#: admin_interface/admin.py:44 +#: admin_interface/admin.py:45 msgid "Favicon" msgstr "Favicon" -#: admin_interface/admin.py:48 +#: admin_interface/admin.py:49 msgid "Title" msgstr "Titre" -#: admin_interface/admin.py:56 +#: admin_interface/admin.py:57 msgid "Header" msgstr "Bannière" -#: admin_interface/admin.py:65 +#: admin_interface/admin.py:66 msgid "Breadcrumbs / Module headers" msgstr "Fil d'ariane / en-têtes de module" -#: admin_interface/admin.py:75 +#: admin_interface/admin.py:76 msgid "Generic Links" msgstr "Liens génériques" -#: admin_interface/admin.py:82 +#: admin_interface/admin.py:83 msgid "Save Buttons" msgstr "Boutons sauvegarder" -#: admin_interface/admin.py:90 +#: admin_interface/admin.py:91 msgid "Delete Buttons" msgstr "Boutons supprimer" -#: admin_interface/admin.py:98 +#: admin_interface/admin.py:99 msgid "Related Modal" msgstr "Modale pour objet reliés" -#: admin_interface/admin.py:108 +#: admin_interface/admin.py:109 msgid "List Filter" msgstr "Filtre de liste" -#: admin_interface/admin.py:112 +#: admin_interface/admin.py:113 msgid "Recent Actions" msgstr "Actions récentes" @@ -75,11 +75,12 @@ msgid "Admin Interface" msgstr "Interface Admin" #: admin_interface/models.py:72 admin_interface/models.py:116 +#: admin_interface/models.py:135 msgid "name" msgstr "nom" #: admin_interface/models.py:75 admin_interface/models.py:132 -#: admin_interface/models.py:244 +#: admin_interface/models.py:253 msgid "active" msgstr "actif" @@ -99,7 +100,7 @@ msgid "color" msgstr "couleur" #: admin_interface/models.py:90 admin_interface/models.py:105 -#: admin_interface/models.py:280 +#: admin_interface/models.py:289 msgid "visible" msgstr "visible" @@ -135,53 +136,61 @@ msgstr "visible dans l’en-tête (marqueur et nom)" msgid "visible in favicon (marker)" msgstr "visible dans la favicon (marqueur)" -#: admin_interface/models.py:139 admin_interface/models.py:164 -#: admin_interface/models.py:205 admin_interface/models.py:224 -#: admin_interface/models.py:250 +#: admin_interface/models.py:134 +msgid "code" +msgstr "" + +#: admin_interface/models.py:141 +msgid "display" +msgstr "" + +#: admin_interface/models.py:148 admin_interface/models.py:173 +#: admin_interface/models.py:214 admin_interface/models.py:233 +#: admin_interface/models.py:259 msgid "background color" msgstr "couleur d'arrière-plan" -#: admin_interface/models.py:145 admin_interface/models.py:170 -#: admin_interface/models.py:217 admin_interface/models.py:236 -#: admin_interface/models.py:240 +#: admin_interface/models.py:154 admin_interface/models.py:179 +#: admin_interface/models.py:226 admin_interface/models.py:245 +#: admin_interface/models.py:249 msgid "text color" msgstr "couleur du texte" -#: admin_interface/models.py:151 admin_interface/models.py:176 -#: admin_interface/models.py:192 +#: admin_interface/models.py:160 admin_interface/models.py:185 +#: admin_interface/models.py:201 msgid "link color" msgstr "couleur de lien" -#: admin_interface/models.py:157 admin_interface/models.py:182 -#: admin_interface/models.py:198 +#: admin_interface/models.py:166 admin_interface/models.py:191 +#: admin_interface/models.py:207 msgid "link hover color" msgstr "couleur de lien au survol" -#: admin_interface/models.py:185 admin_interface/models.py:270 +#: admin_interface/models.py:194 admin_interface/models.py:279 msgid "rounded corners" msgstr "coins arrondis" -#: admin_interface/models.py:211 admin_interface/models.py:230 +#: admin_interface/models.py:220 admin_interface/models.py:239 msgid "background hover color" msgstr "couleur de fond au survol" -#: admin_interface/models.py:267 +#: admin_interface/models.py:276 msgid "background opacity" msgstr "opacité de l'arrière-plan" -#: admin_interface/models.py:273 +#: admin_interface/models.py:282 msgid "close button visible" msgstr "bouton fermer visible" -#: admin_interface/models.py:277 +#: admin_interface/models.py:286 msgid "use dropdown" msgstr "utiliser un menu déroulant" -#: admin_interface/models.py:289 +#: admin_interface/models.py:298 msgid "Theme" msgstr "Thème" -#: admin_interface/models.py:290 +#: admin_interface/models.py:299 msgid "Themes" msgstr "Thèmes" diff --git a/admin_interface/locale/it/LC_MESSAGES/django.mo b/admin_interface/locale/it/LC_MESSAGES/django.mo index fe9c514..f10faf4 100644 Binary files a/admin_interface/locale/it/LC_MESSAGES/django.mo and b/admin_interface/locale/it/LC_MESSAGES/django.mo differ diff --git a/admin_interface/locale/it/LC_MESSAGES/django.po b/admin_interface/locale/it/LC_MESSAGES/django.po index 31ff5f8..0bdda44 100644 --- a/admin_interface/locale/it/LC_MESSAGES/django.po +++ b/admin_interface/locale/it/LC_MESSAGES/django.po @@ -9,7 +9,7 @@ msgid "" msgstr "" "Project-Id-Version: django-admin-interface\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2019-09-03 16:43+0000\n" +"POT-Creation-Date: 2019-09-04 09:19+0000\n" "PO-Revision-Date: 2018-12-30 19:13-0500\n" "Last-Translator: Fabio Caccamo \n" "Language-Team: Italian \n" @@ -27,47 +27,47 @@ msgstr "Ambiente" msgid "Language chooser" msgstr "Selettore di lingua" -#: admin_interface/admin.py:36 +#: admin_interface/admin.py:37 msgid "Logo" msgstr "Logo" -#: admin_interface/admin.py:44 +#: admin_interface/admin.py:45 msgid "Favicon" msgstr "Favicon" -#: admin_interface/admin.py:48 +#: admin_interface/admin.py:49 msgid "Title" msgstr "Titolo" -#: admin_interface/admin.py:56 +#: admin_interface/admin.py:57 msgid "Header" msgstr "Header" -#: admin_interface/admin.py:65 +#: admin_interface/admin.py:66 msgid "Breadcrumbs / Module headers" msgstr "Breadcrumbs / Header dei moduli" -#: admin_interface/admin.py:75 +#: admin_interface/admin.py:76 msgid "Generic Links" msgstr "Link generici" -#: admin_interface/admin.py:82 +#: admin_interface/admin.py:83 msgid "Save Buttons" msgstr "Pulsanti per salvare" -#: admin_interface/admin.py:90 +#: admin_interface/admin.py:91 msgid "Delete Buttons" msgstr "Pulsanti per eliminare" -#: admin_interface/admin.py:98 +#: admin_interface/admin.py:99 msgid "Related Modal" msgstr "Modale per gli oggetti correlati" -#: admin_interface/admin.py:108 +#: admin_interface/admin.py:109 msgid "List Filter" msgstr "Filtro listato" -#: admin_interface/admin.py:112 +#: admin_interface/admin.py:113 msgid "Recent Actions" msgstr "Azioni recenti" @@ -76,11 +76,12 @@ msgid "Admin Interface" msgstr "Interfaccia di amministrazione" #: admin_interface/models.py:72 admin_interface/models.py:116 +#: admin_interface/models.py:135 msgid "name" msgstr "nome" #: admin_interface/models.py:75 admin_interface/models.py:132 -#: admin_interface/models.py:244 +#: admin_interface/models.py:253 msgid "active" msgstr "attivo" @@ -100,7 +101,7 @@ msgid "color" msgstr "colore" #: admin_interface/models.py:90 admin_interface/models.py:105 -#: admin_interface/models.py:280 +#: admin_interface/models.py:289 msgid "visible" msgstr "visibile" @@ -136,53 +137,61 @@ msgstr "visibile nell'header (marker e nome)" msgid "visible in favicon (marker)" msgstr "visibile nella favicon (marker)" -#: admin_interface/models.py:139 admin_interface/models.py:164 -#: admin_interface/models.py:205 admin_interface/models.py:224 -#: admin_interface/models.py:250 +#: admin_interface/models.py:134 +msgid "code" +msgstr "codice" + +#: admin_interface/models.py:141 +msgid "display" +msgstr "visualizzazione" + +#: admin_interface/models.py:148 admin_interface/models.py:173 +#: admin_interface/models.py:214 admin_interface/models.py:233 +#: admin_interface/models.py:259 msgid "background color" msgstr "colore di sfondo" -#: admin_interface/models.py:145 admin_interface/models.py:170 -#: admin_interface/models.py:217 admin_interface/models.py:236 -#: admin_interface/models.py:240 +#: admin_interface/models.py:154 admin_interface/models.py:179 +#: admin_interface/models.py:226 admin_interface/models.py:245 +#: admin_interface/models.py:249 msgid "text color" msgstr "colore del testo" -#: admin_interface/models.py:151 admin_interface/models.py:176 -#: admin_interface/models.py:192 +#: admin_interface/models.py:160 admin_interface/models.py:185 +#: admin_interface/models.py:201 msgid "link color" msgstr "colore dei link" -#: admin_interface/models.py:157 admin_interface/models.py:182 -#: admin_interface/models.py:198 +#: admin_interface/models.py:166 admin_interface/models.py:191 +#: admin_interface/models.py:207 msgid "link hover color" msgstr "colore dei link in hover" -#: admin_interface/models.py:185 admin_interface/models.py:270 +#: admin_interface/models.py:194 admin_interface/models.py:279 msgid "rounded corners" msgstr "bordi arrotondati" -#: admin_interface/models.py:211 admin_interface/models.py:230 +#: admin_interface/models.py:220 admin_interface/models.py:239 msgid "background hover color" msgstr "colore di sfondo in hover" -#: admin_interface/models.py:267 +#: admin_interface/models.py:276 msgid "background opacity" msgstr "opacità dello sfondo" -#: admin_interface/models.py:273 +#: admin_interface/models.py:282 msgid "close button visible" msgstr "pulsante chiudi visibile" -#: admin_interface/models.py:277 +#: admin_interface/models.py:286 msgid "use dropdown" msgstr "usa dropdown" -#: admin_interface/models.py:289 +#: admin_interface/models.py:298 msgid "Theme" msgstr "Tema" -#: admin_interface/models.py:290 +#: admin_interface/models.py:299 msgid "Themes" msgstr "Temi" diff --git a/admin_interface/migrations/0016_add_language_chooser_display.py b/admin_interface/migrations/0016_add_language_chooser_display.py new file mode 100644 index 0000000..0f1a2f4 --- /dev/null +++ b/admin_interface/migrations/0016_add_language_chooser_display.py @@ -0,0 +1,20 @@ +# -*- coding: utf-8 -*- + +from __future__ import unicode_literals + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('admin_interface', '0015_add_language_chooser_active'), + ] + + operations = [ + migrations.AddField( + model_name='theme', + name='language_chooser_display', + field=models.CharField(choices=[('code', 'code'), ('name', 'name')], default='code', max_length=10, verbose_name='display'), + ), + ] diff --git a/admin_interface/models.py b/admin_interface/models.py index 137b615..60bf4ac 100644 --- a/admin_interface/models.py +++ b/admin_interface/models.py @@ -130,6 +130,15 @@ class Theme(models.Model): language_chooser_active = models.BooleanField( default=True, verbose_name=_('active')) + language_chooser_display_choices = ( + ('code', _('code'), ), + ('name', _('name'), ), + ) + language_chooser_display = models.CharField( + max_length=10, + choices=language_chooser_display_choices, + default='code', + verbose_name=_('display')) css_header_background_color = ColorField( blank=True, diff --git a/admin_interface/templates/admin/base_site.html b/admin_interface/templates/admin/base_site.html index 9f7b76b..056f28c 100644 --- a/admin_interface/templates/admin/base_site.html +++ b/admin_interface/templates/admin/base_site.html @@ -64,6 +64,9 @@ https://github.com/fabiocaccamo/django-admin-interface {% block welcome-msg %} {% get_admin_interface_theme as theme %} -{% if theme.language_chooser_active %}{% get_admin_interface_language_chooser %}{% endif %} +{% if theme.language_chooser_active %} + {% get_admin_interface_languages as languages %} + {% include "admin_interface/language_chooser.html" %} +{% endif %} {% if theme.env_visible_in_header %} - {% endif %}{{ block.super }}
{% endblock %} diff --git a/admin_interface/templates/admin_interface/language_chooser.html b/admin_interface/templates/admin_interface/language_chooser.html index 6cc4354..d7d39d8 100644 --- a/admin_interface/templates/admin_interface/language_chooser.html +++ b/admin_interface/templates/admin_interface/language_chooser.html @@ -1,5 +1,6 @@ {% load admin_interface_tags %} +{% if languages %}
{% for language in languages %}
@@ -11,8 +12,9 @@ {% csrf_token %}
-
\ No newline at end of file + +{% endif %} \ No newline at end of file diff --git a/admin_interface/templatetags/admin_interface_tags.py b/admin_interface/templatetags/admin_interface_tags.py index 4073f10..17633ae 100644 --- a/admin_interface/templatetags/admin_interface_tags.py +++ b/admin_interface/templatetags/admin_interface_tags.py @@ -4,9 +4,9 @@ import django from django import template, VERSION from django.conf import settings if django.VERSION < (1, 10): - from django.core.urlresolvers import reverse + from django.core.urlresolvers import NoReverseMatch, reverse else: - from django.urls import reverse + from django.urls import NoReverseMatch, reverse from django.utils import translation from admin_interface.cache import get_cached_active_theme, set_cached_active_theme @@ -24,33 +24,47 @@ else: simple_tag = register.simple_tag -@register.inclusion_tag('admin_interface/language_chooser.html', takes_context=True) -def get_admin_interface_language_chooser(context): +@simple_tag(takes_context=True) +def get_admin_interface_languages(context): + if not settings.USE_I18N: + # i18n disabled + return None + if len(settings.LANGUAGES) < 2: + # less than 2 languages + return None + try: + set_language_url = reverse('set_language') + except NoReverseMatch: + # ImproperlyConfigured - must include i18n urls: + # urlpatterns += [url(r'^i18n/', include('django.conf.urls.i18n')),] + return None + request = context.get('request', None) + if not request: + return None + full_path = request.get_full_path() + admin_nolang_url = re.sub(r'^\/([\w]{2})([\-\_]{1}[\w]{2})?\/', '/', full_path) + if admin_nolang_url == full_path: + # ImproperlyConfigured - must include admin urls using i18n_patterns: + # from django.conf.urls.i18n import i18n_patterns + # urlpatterns += i18n_patterns(url(r'^admin/', admin.site.urls)) + return None langs_data = [] - if settings.USE_I18N and len(settings.LANGUAGES) > 1: - request = context.get('request') - full_path = request.get_full_path() - default_lang_code = settings.LANGUAGE_CODE - current_lang_code = translation.get_language() or default_lang_code - for language in settings.LANGUAGES: - lang_code = language[0].lower() - lang_name = language[1].title() + default_lang_code = settings.LANGUAGE_CODE + current_lang_code = translation.get_language() or default_lang_code + for language in settings.LANGUAGES: + lang_code = language[0].lower() + lang_name = language[1].title() + with translation.override(lang_code): lang_data = { 'code': lang_code, 'name': lang_name, 'default': bool(lang_code == default_lang_code), 'active': bool(lang_code == current_lang_code), + 'activation_url': '{}?next=/{}{}'.format( + set_language_url, lang_code, admin_nolang_url) } - with translation.override(lang_code): - lang_set_url = '{}?language={}'.format( - reverse('set_language'), lang_code) - lang_next_url = re.sub( - r'^\/[\w\-\_]+', '/{}'.format(lang_code), full_path) - lang_activation_url = '{}&next={}'.format( - lang_set_url, lang_next_url) - lang_data['activation_url'] = lang_activation_url - langs_data.append(lang_data) - return { 'languages':langs_data } + langs_data.append(lang_data) + return langs_data @simple_tag(takes_context=True) diff --git a/admin_interface/version.py b/admin_interface/version.py index 4cad2e2..dacf01e 100644 --- a/admin_interface/version.py +++ b/admin_interface/version.py @@ -1,3 +1,3 @@ # -*- coding: utf-8 -*- -__version__ = '0.11.0' +__version__ = '0.11.1'