def testRenderSelectorWithNavigationRootForAnonymous(self):
        self.loginAsPortalOwner()
        en_root = makeContent(self.portal, 'Folder', 'en')
        en_root.setLanguage('en')
        directlyProvides(en_root, INavigationRoot)
        de_root = makeTranslation(en_root, 'de')
        de_root.setLanguage('de')
        directlyProvides(de_root, INavigationRoot)
        no_root = makeTranslation(en_root, 'no')
        no_root.setLanguage('no')
        directlyProvides(no_root, INavigationRoot)

        self.setRoles('Reviewer')
        pw = self.portal.portal_workflow
        pw.doActionFor(en_root, 'publish')
        pw.doActionFor(de_root, 'publish')
        self.logout()

        request = self.app.REQUEST
        selector = TranslatableLanguageSelector(en_root, request, None, None)
        selector.update()
        output = selector.render()

        en_path = en_root.absolute_url()
        en_link = '<a href="%s?set_language=en"' % en_path
        self.assert_(en_link in output)

        de_path = de_root.absolute_url()
        de_link = '<a href="%s?set_language=de"' % de_path
        self.assert_(de_link in output)

        self.assert_('set_language=no' not in output)
    def testRenderSelectorWithNavigationRootForAnonymous(self):
        self.loginAsPortalOwner()
        en_root = makeContent(self.portal, 'Folder', 'en')
        en_root.setLanguage('en')
        directlyProvides(en_root, INavigationRoot)
        de_root = makeTranslation(en_root, 'de')
        de_root.setLanguage('de')
        directlyProvides(de_root, INavigationRoot)
        no_root = makeTranslation(en_root, 'no')
        no_root.setLanguage('no')
        directlyProvides(no_root, INavigationRoot)

        self.setRoles('Reviewer')
        pw = self.portal.portal_workflow
        pw.doActionFor(en_root, 'publish')
        pw.doActionFor(de_root, 'publish')
        self.logout()

        request = self.app.REQUEST
        selector = TranslatableLanguageSelector(
            en_root, request, None, None)
        selector.update()
        output = selector.render()

        en_path = en_root.absolute_url()
        en_link = '<a href="%s?set_language=en"' % en_path
        self.assert_(en_link in output)

        de_path = de_root.absolute_url()
        de_link = '<a href="%s?set_language=de"' % de_path
        self.assert_(de_link in output)

        self.assert_('set_language=no' not in output)
 def testRenderSelectorWithoutCookieNegotiation(self):
     request = self.app.REQUEST
     ltool = getToolByName(self.portal, 'portal_languages')
     ltool.use_cookie_negotiation = False
     selector = TranslatableLanguageSelector(self.english, request, None,
                                             None)
     selector.update()
     output = selector.render()
     self.assertEquals(output.strip(), u'')
 def testRenderSelectorWithoutCookieNegotiation(self):
     request = self.app.REQUEST
     ltool = getToolByName(self.portal, 'portal_languages')
     ltool.use_cookie_negotiation = False
     selector = TranslatableLanguageSelector(
         self.english, request, None, None)
     selector.update()
     output = selector.render()
     self.assertEquals(output.strip(), u'')
 def testRenderSelectorWithFlags(self):
     request = self.app.REQUEST
     ltool = getToolByName(self.portal, 'portal_languages')
     ltool.display_flags = True
     selector = TranslatableLanguageSelector(
         self.english, request, None, None)
     selector.update()
     output = selector.render()
     self.assert_('de.gif' in output)
     self.assert_('gb.gif' in output)
 def testRenderSelectorWithFlags(self):
     request = self.app.REQUEST
     ltool = getToolByName(self.portal, 'portal_languages')
     ltool.display_flags = True
     selector = TranslatableLanguageSelector(self.english, request, None,
                                             None)
     selector.update()
     output = selector.render()
     self.assert_('de.gif' in output)
     self.assert_('gb.gif' in output)
 def testRenderSelectorOnSiteRoot(self):
     request = self.app.REQUEST
     selector = TranslatableLanguageSelector(
         self.portal, request, None, None)
     selector.update()
     output = selector.render()
     path = self.portal.absolute_url()
     de_link = '<a href="%s?set_language=de"' % path
     self.assert_(de_link in output)
     en_link = '<a href="%s?set_language=en"' % path
     self.assert_(en_link in output)
 def test_selector_on_neutral_document(self):
     request = self.app.REQUEST
     selector = TranslatableLanguageSelector(self.doc, request, None, None)
     selector.update()
     languages = dict([(l['code'], l) for l in selector.languages()])
     self.assertEqual(languages[u'en']['url'],
                      'http://nohost/plone/en?set_language=en')
     self.assertEqual(languages[u'de']['url'],
                      'http://nohost/plone/en-de?set_language=de')
     self.assertEqual(languages[u'no']['url'],
                      'http://nohost/plone?set_language=no')
 def testRenderSelectorOnSiteRoot(self):
     request = self.app.REQUEST
     selector = TranslatableLanguageSelector(self.portal, request, None,
                                             None)
     selector.update()
     output = selector.render()
     path = self.portal.absolute_url()
     de_link = '<a href="%s?set_language=de"' % path
     self.assert_(de_link in output)
     en_link = '<a href="%s?set_language=en"' % path
     self.assert_(en_link in output)
 def test_selector_on_neutral_document(self):
     request = self.app.REQUEST
     selector = TranslatableLanguageSelector(
         self.doc, request, None, None)
     selector.update()
     languages = dict([(l['code'], l) for l in selector.languages()])
     self.assertEqual(languages[u'en']['url'],
         'http://nohost/plone/en?set_language=en')
     self.assertEqual(languages[u'de']['url'],
         'http://nohost/plone/en-de?set_language=de')
     self.assertEqual(languages[u'no']['url'],
         'http://nohost/plone?set_language=no')
 def testRenderSelectorWithNavigationRoot(self):
     request = self.app.REQUEST
     directlyProvides(self.portal.Members, INavigationRoot)
     selector = TranslatableLanguageSelector(
         self.folder, request, None, None)
     selector.update()
     output = selector.render()
     path = self.portal.Members.absolute_url()
     folder_path = self.folder.absolute_url()
     de_link = '<a href="%s?set_language=de"' % path
     self.assert_(de_link in output)
     en_link = '<a href="%s?set_language=en"' % folder_path
     self.assert_(en_link in output)
 def test_selector_on_sharing_view(self):
     request = self.app.REQUEST
     request['PATH_INFO'] = self.endoc.absolute_url() + '/@@sharing'
     selector = TranslatableLanguageSelector(
         self.endoc, request, None, None)
     selector.update()
     languages = dict([(l['code'], l) for l in selector.languages()])
     self.assertEqual(languages[u'en']['url'],
         'http://nohost/plone/en/sub-en/endoc/@@sharing?set_language=en')
     self.assertEqual(languages[u'de']['url'],
         'http://nohost/plone/en/sub-en/endoc-de/@@sharing?set_language=de')
     self.assertEqual(languages[u'no']['url'],
         'http://nohost/plone?set_language=no')
 def testRenderSelectorWithNavigationRoot(self):
     request = self.app.REQUEST
     directlyProvides(self.portal.Members, INavigationRoot)
     selector = TranslatableLanguageSelector(self.folder, request, None,
                                             None)
     selector.update()
     output = selector.render()
     path = self.portal.Members.absolute_url()
     folder_path = self.folder.absolute_url()
     de_link = '<a href="%s?set_language=de"' % path
     self.assert_(de_link in output)
     en_link = '<a href="%s?set_language=en"' % folder_path
     self.assert_(en_link in output)
Esempio n. 14
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
 def test_selector_on_sharing_view(self):
     request = self.app.REQUEST
     request['PATH_INFO'] = self.endoc.absolute_url() + '/@@sharing'
     selector = TranslatableLanguageSelector(self.endoc, request, None,
                                             None)
     selector.update()
     languages = dict([(l['code'], l) for l in selector.languages()])
     self.assertEqual(
         languages[u'en']['url'],
         'http://nohost/plone/en/sub-en/endoc/@@sharing?set_language=en')
     self.assertEqual(
         languages[u'de']['url'],
         'http://nohost/plone/en/sub-en/endoc-de/@@sharing?set_language=de')
     self.assertEqual(languages[u'no']['url'],
                      'http://nohost/plone?set_language=no')
 def testRenderSelector(self):
     request = self.app.REQUEST
     selector = TranslatableLanguageSelector(
         self.english, request, None, None)
     selector.update()
     output = selector.render()
     self.assert_('<ul id="portal-languageselector"' in output)
     en_path = self.english.absolute_url()
     en_link = '<a href="%s?set_language=en"' % en_path
     self.assert_(en_link in output)
     de_path = self.german.absolute_url()
     de_link = '<a href="%s?set_language=de"' % de_path
     self.assert_(de_link in output)
     no_path = self.portal.absolute_url()
     no_link = '<a href="%s?set_language=no"' % no_path
     self.assert_(no_link in output)
 def testRenderSelector(self):
     request = self.app.REQUEST
     selector = TranslatableLanguageSelector(self.english, request, None,
                                             None)
     selector.update()
     output = selector.render()
     self.assert_('<ul id="portal-languageselector"' in output)
     en_path = self.english.absolute_url()
     en_link = '<a href="%s?set_language=en"' % en_path
     self.assert_(en_link in output)
     de_path = self.german.absolute_url()
     de_link = '<a href="%s?set_language=de"' % de_path
     self.assert_(de_link in output)
     no_path = self.portal.absolute_url()
     no_link = '<a href="%s?set_language=no"' % no_path
     self.assert_(no_link in output)
Esempio n. 18
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
 def testRenderSelectorForAnonymous(self):
     self.setRoles('Reviewer')
     pw = self.portal.portal_workflow
     pw.doActionFor(self.english, 'publish')
     self.logout()
     request = self.app.REQUEST
     selector = TranslatableLanguageSelector(self.english, request, None,
                                             None)
     selector.update()
     output = selector.render()
     self.assert_('<ul id="portal-languageselector"' in output)
     en_path = self.english.absolute_url()
     en_link = '<a href="%s?set_language=en"' % en_path
     self.assert_(en_link in output)
     de_path = self.portal.absolute_url()
     de_link = '<a href="%s?set_language=de"' % de_path
     self.assert_(de_link in output)
     no_path = self.portal.absolute_url()
     no_link = '<a href="%s?set_language=no"' % no_path
     self.assert_(no_link in output)
 def testRenderSelectorForAnonymous(self):
     self.setRoles('Reviewer')
     pw = self.portal.portal_workflow
     pw.doActionFor(self.english, 'publish')
     self.logout()
     request = self.app.REQUEST
     selector = TranslatableLanguageSelector(
         self.english, request, None, None)
     selector.update()
     output = selector.render()
     self.assert_('<ul id="portal-languageselector"' in output)
     en_path = self.english.absolute_url()
     en_link = '<a href="%s?set_language=en"' % en_path
     self.assert_(en_link in output)
     de_path = self.portal.absolute_url()
     de_link = '<a href="%s?set_language=de"' % de_path
     self.assert_(de_link in output)
     no_path = self.portal.absolute_url()
     no_link = '<a href="%s?set_language=no"' % no_path
     self.assert_(no_link in output)
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)