Ejemplo n.º 1
0
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
Ejemplo n.º 2
0
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
Ejemplo n.º 3
0
    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)
Ejemplo n.º 4
0
    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)
Ejemplo n.º 6
0
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)