class Renderer(base.Renderer): def __init__(self, context, request, view, manager, data): base.Renderer.__init__(self, context, request, view, manager, data) self.selector = TranslatableLanguageSelector(context, request, None, None) self.selector.update() self.languages = self.selector.languages() self.languages.sort(key=operator.itemgetter("native")) portal_state = getMultiAdapter((context, request), name=u'plone_portal_state') self.portal_url = portal_state.portal_url() def show(self): return self.selector.available() and len(self.languages) > 1 def showFlags(self): return self.selector.showFlags() def update(self): pass render = ViewPageTemplateFile('language.pt') @memoize def items(self): if not ITranslatable.providedBy(self.context): def plain_context(info): info["has_translation"] = False updater = plain_context else: def translatable_context(info): trans = self.context.getTranslation(info["code"]) if trans is None: info["has_translation"] = False else: info["has_translation"] = True state = getMultiAdapter((trans, self.request), name='plone_context_state') info["url"] = state.view_url() updater = translatable_context for lang in self.languages: updater(lang) return self.languages
class Renderer(base.Renderer): def __init__(self, context, request, view, manager, data): base.Renderer.__init__(self, context, request, view, manager, data) self.selector = TranslatableLanguageSelector(context, request, None, None) self.selector.update() self.languages = self.selector.languages() self.languages.sort(key=operator.itemgetter("native")) portal_state = getMultiAdapter((context, request), name=u'plone_portal_state') self.portal_url = portal_state.portal_url() def show(self): return self.selector.available() and len(self.languages) > 1 def showFlags(self): return self.selector.showFlags() def update(self): pass render = ViewPageTemplateFile('language.pt') @memoize def items(self): if not ITranslatable.providedBy(self.context): def plain_context(info): info["has_translation"]=False updater=plain_context else: def translatable_context(info): trans=self.context.getTranslation(info["code"]) if trans is None: info["has_translation"]=False else: info["has_translation"]=True state=getMultiAdapter((trans, self.request), name='plone_context_state') info["url"]=state.view_url() updater=translatable_context for lang in self.languages: updater(lang) return self.languages
def update(self): self.tool = getToolByName(self.context, "portal_languages", None) portal_tool = getToolByName(self.context, "portal_url", None) # self.port_url = None if portal_tool is not None: self.port_url = portal_tool.getPortalObject().absolute_url() self.available = TranslatableLanguageSelector.available(self) self.languages = [] for language in TranslatableLanguageSelector.languages(self): if language["code"] == "en": language["pic"] = u"english.png" elif language["code"] == "uk": language["pic"] = u"ukrainian.png" elif language["code"] == "ru": language["pic"] = u"russian.png" else: language["pic"] = 0 self.languages.append(language)
def update(self): self.tool = getToolByName(self.context, 'portal_languages', None) portal_tool = getToolByName(self.context, 'portal_url', None) #self.port_url = None if portal_tool is not None: self.port_url = portal_tool.getPortalObject().absolute_url() self.available = TranslatableLanguageSelector.available(self) self.languages = [] for language in TranslatableLanguageSelector.languages(self): if language['code'] == 'en': language['pic'] = u'english.png' elif language['code'] == 'uk': language['pic'] = u'ukrainian.png' elif language['code'] == 'ru': language['pic'] = u'russian.png' else: language['pic'] = 0 self.languages.append(language)
class TestLanguageSelectorBasics(cleanup.CleanUp, TestCase): def setUp(self): provideAdapter(DummyState, adapts=(Dummy, DummyRequest), provides=Interface, name="plone_context_state") self.context = Dummy() self.context.portal_url = Dummy() self.container = Dummy() self.context = self.context.__of__(self.container) self.request = DummyRequest() self.selector = TranslatableLanguageSelector(self.context, self.request, None, None) def test_available(self): self.selector.update() self.selector.tool = MockLanguageTool() self.assertEquals(self.selector.available(), True) def test_available_no_tool(self): self.selector.update() self.selector.tool = None self.assertEquals(self.selector.available(), False) def test_languages(self): self.selector.update() self.selector.tool = MockLanguageTool() self.assertEqual(self.selector.languages(), [{'code': 'nl', 'translated': True, 'selected': False, 'url': 'object_url?set_language=nl'}, {'code': 'en', 'translated': True, 'selected': True, 'url': 'object_url?set_language=en'}, {'code': 'no', 'translated': False, 'selected': False, 'url': 'object_url?set_language=no'}, ]) def test_languages_vhr(self): self.context.physicalpath = ['', 'fake', 'path'] vbase = '/VirtualHostBase/http/127.0.0.1/' self.request.PATH_INFO = vbase + 'fake/path/VirtualHostRoot/to/object' self.request.form['uni'] = u'pres\xd8rved' self.request.form['int'] = '1' self.selector.update() self.selector.tool = MockLanguageTool() base = 'object_url/to/object?int=1&uni=' expected = [ {'code': 'nl', 'translated': True, 'selected': False, 'url': base + 'pres%C3%98rved&set_language=nl'}, {'code': 'en', 'translated': True, 'selected': True, 'url': base + 'pres%C3%98rved&set_language=en'}, {'code': 'no', 'translated': False, 'selected': False, 'url': base + 'pres%C3%98rved&set_language=no'}] self.assertEqual(self.selector.languages(), expected) def test_languages_preserve_view_and_query(self): self.context.physicalpath = ['', 'fake', 'path'] self.request.PATH_INFO = '/fake/path/to/object' self.selector.update() self.selector.tool = MockLanguageTool() base = 'object_url/to/object?set_language=' expected = [ {'code': 'nl', 'translated': True, 'selected': False, 'url': base + 'nl'}, {'code': 'en', 'translated': True, 'selected': True, 'url': base + 'en'}, {'code': 'no', 'translated': False, 'selected': False, 'url': base + 'no'}] self.assertEqual(self.selector.languages(), expected)
class TestLanguageSelectorBasics(cleanup.CleanUp, TestCase): def setUp(self): provideAdapter(DummyState, adapts=(Dummy, DummyRequest), provides=Interface, name="plone_context_state") self.context = Dummy() self.context.portal_url = Dummy() self.container = Dummy() self.context = self.context.__of__(self.container) self.request = DummyRequest() self.selector = TranslatableLanguageSelector(self.context, self.request, None, None) def test_available(self): self.selector.update() self.selector.tool = MockLanguageTool() self.assertEquals(self.selector.available(), True) def test_available_no_tool(self): self.selector.update() self.selector.tool = None self.assertEquals(self.selector.available(), False) def test_languages(self): self.selector.update() self.selector.tool = MockLanguageTool() self.assertEqual(self.selector.languages(), [ { 'code': 'nl', 'translated': True, 'selected': False, 'url': 'object_url?set_language=nl' }, { 'code': 'en', 'translated': True, 'selected': True, 'url': 'object_url?set_language=en' }, { 'code': 'no', 'translated': False, 'selected': False, 'url': 'object_url?set_language=no' }, ]) def test_languages_vhr(self): self.context.physicalpath = ['', 'fake', 'path'] vbase = '/VirtualHostBase/http/127.0.0.1/' self.request.PATH_INFO = vbase + 'fake/path/VirtualHostRoot/to/object' self.request.form['uni'] = u'pres\xd8rved' self.request.form['int'] = '1' self.request.REQUEST_METHOD = "GET" self.selector.update() self.selector.tool = MockLanguageTool() base = 'object_url/to/object?int=1&uni=' expected = [{ 'code': 'nl', 'translated': True, 'selected': False, 'url': base + 'pres%C3%98rved&set_language=nl' }, { 'code': 'en', 'translated': True, 'selected': True, 'url': base + 'pres%C3%98rved&set_language=en' }, { 'code': 'no', 'translated': False, 'selected': False, 'url': base + 'pres%C3%98rved&set_language=no' }] self.assertEqual(self.selector.languages(), expected) def test_languages_preserve_view_and_query(self): self.context.physicalpath = ['', 'fake', 'path'] self.request.PATH_INFO = '/fake/path/to/object' self.selector.update() self.selector.tool = MockLanguageTool() base = 'object_url/to/object?set_language=' expected = [{ 'code': 'nl', 'translated': True, 'selected': False, 'url': base + 'nl' }, { 'code': 'en', 'translated': True, 'selected': True, 'url': base + 'en' }, { 'code': 'no', 'translated': False, 'selected': False, 'url': base + 'no' }] self.assertEqual(self.selector.languages(), expected)