Added language chooser display option.

pull/69/head
Fabio Caccamo 2019-09-04 11:24:02 +02:00
parent 56cdbe5d2f
commit 1baebf9d62
13 changed files with 195 additions and 119 deletions

View File

@ -31,6 +31,7 @@ class ThemeAdmin(admin.ModelAdmin):
'classes': ('wide', ),
'fields': (
'language_chooser_active',
'language_chooser_display',
)
}),
(_('Logo'), {

View File

@ -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 <martin.vuelta@softbutterfly.io>\n"
"Language-Team: Spanish <dev@softbutterfly.io>\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"

View File

@ -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 <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\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 len-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"

View File

@ -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 <fabio.caccamo@gmail.com>\n"
"Language-Team: Italian <LL@li.org>\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"

View File

@ -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'),
),
]

View File

@ -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,

View File

@ -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 %}<span class="environment-label {{ theme.env_name }}"></span> - {% endif %}{{ block.super }}<br>
{% endblock %}

View File

@ -1,5 +1,6 @@
{% load admin_interface_tags %}
{% if languages %}
<div class="language-chooser">
{% for language in languages %}
<form class="language-chooser-hidden-form" id="language-chooser-hidden-form-{{ language.code }}" action="{{ language.activation_url }}" method="POST">
@ -11,8 +12,9 @@
{% csrf_token %}
<select name="language" onchange="document.getElementById(String('language-chooser-hidden-form-' + this.value)).submit();">
{% for language in languages %}
<option value="{{ language.code }}" {% if language.active %}selected{% endif %}>{{ language.code|upper }}</option>
<option value="{{ language.code }}" {% if language.active %}selected{% endif %}>{% if theme.language_chooser_display == 'code' %}{{ language.code|upper }}{% elif theme.language_chooser_display == 'name' %}{{ language.name }}{% endif %}</option>
{% endfor %}
</select>
</form>
</div>
</div>
{% endif %}

View File

@ -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)

View File

@ -1,3 +1,3 @@
# -*- coding: utf-8 -*-
__version__ = '0.11.0'
__version__ = '0.11.1'