Skip to content

Commit 4d2cb4f

Browse files
committed
toolbar language changes
1 parent 15cd292 commit 4d2cb4f

File tree

3 files changed

+34
-10
lines changed

3 files changed

+34
-10
lines changed

cms/cms_toolbar.py

Lines changed: 20 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,11 @@
11
# -*- coding: utf-8 -*-
22
import urllib
3+
from cms.utils.i18n import get_language_objects, get_language_object
34
from cms.toolbar.items import Item, List, Break, Switch
5+
from django.contrib.sites.models import Site
6+
from cms.utils import get_language_from_request
7+
8+
from django.contrib.auth.forms import AuthenticationForm
49
from cms.toolbar_base import CMSToolbar
510
from cms.toolbar_pool import toolbar_pool
611
from cms.utils.permissions import has_page_change_permission
@@ -35,8 +40,22 @@ def insert_items(self, items, toolbar, request, is_app):
3540
items.append(self.get_publish_menu(self.request.current_page))
3641
if toolbar.edit_mode:
3742
items.append(self.get_mode_switchers())
43+
items.append(self.get_language_menu())
3844
return items
3945

46+
def get_language_menu(self):
47+
site = Site.objects.get_current()
48+
current_lang = get_language_object(get_language_from_request(self.request), site.pk)
49+
menu_items = List("#", current_lang['name'], right=True)
50+
for lang in get_language_objects(site.pk):
51+
if hasattr(self.request, "_language_changer"):
52+
url = self.request._language_changer(lang['code'])
53+
else:
54+
url = DefaultLanguageChanger(self.request)(lang['code'])
55+
menu_items.items.append(
56+
Item(url, lang['name'], active=lang['code'] == current_lang['code']))
57+
return menu_items
58+
4059
def get_template_menu(self):
4160
menu_items = List("#", _("Template"))
4261
url = reverse('admin:cms_page_change_template', args=(self.request.current_page.pk,))
@@ -144,4 +163,4 @@ def _get_approve_url(toolbar):
144163

145164

146165
def _get_publish_url(toolbar):
147-
return reverse('admin:cms_page_publish_page', args=(toolbar.request.current_page.pk,))
166+
return reverse('admin:cms_page_publish_page', args=(toolbar.request.current_page.pk,))

cms/models/settingsmodels.py

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
# -*- coding: utf-8 -*-
2+
from django.contrib.auth.models import User
3+
from django.db import models
4+
5+
6+
class UserLanguage(models.Model):
7+
user = models.ForeignKey(User)
8+
language = models.CharField(max_length=10)

menus/templatetags/menu_tags.py

Lines changed: 6 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -7,11 +7,9 @@
77
from classytags.helpers import InclusionTag
88
from cms.utils.i18n import force_language, get_language_objects
99
from django import template
10-
from django.conf import settings
1110
from django.contrib.sites.models import Site
12-
from django.core.cache import cache
13-
from django.core.urlresolvers import reverse, resolve
14-
from django.utils.translation import activate, get_language, ugettext
11+
from django.core.urlresolvers import reverse
12+
from django.utils.translation import get_language, ugettext
1513
from menus.menu_pool import menu_pool
1614
from menus.utils import DefaultLanguageChanger
1715

@@ -216,7 +214,7 @@ def get_context(self, context, levels, root_level, nephews, template):
216214
if node.selected:
217215
# if no root_level specified, set it to the selected nodes level
218216
root_level = node.level
219-
# is this the ancestor of current selected node at the root level?
217+
# is this the ancestor of current selected node at the root level?
220218
is_root_ancestor = (node.ancestor and node.level == root_level)
221219
# is a node selected on the root_level specified
222220
root_selected = (node.selected and node.level == root_level)
@@ -227,8 +225,8 @@ def get_context(self, context, levels, root_level, nephews, template):
227225
child.parent = None
228226
if child.sibling:
229227
cut_after(child, nephews, [])
230-
# if root_level was 0 we need to give the menu the entire tree
231-
# not just the children
228+
# if root_level was 0 we need to give the menu the entire tree
229+
# not just the children
232230
if include_root:
233231
children = menu_pool.apply_modifiers([node], request, post_cut=True)
234232
else:
@@ -363,10 +361,9 @@ def get_context(self, context, template, i18n_mode):
363361
marker = MARKERS[i18n_mode]
364362
current_lang = get_language()
365363
site = Site.objects.get_current()
366-
user_is_staff = context['request'].user.is_staff
367364
languages = []
368365
for lang in get_language_objects(site.pk):
369-
if user_is_staff or lang.get('public', True):
366+
if lang.get('public', True):
370367
languages.append((lang['code'], marker(lang['name'], lang['code'])))
371368
context.update({
372369
'languages': languages,

0 commit comments

Comments
 (0)