コード例 #1
0
    def _update_user_actions_with_languages(self, actions):
        language_selector = LanguageSelector(self.context,
                                             self.request,
                                             self.view,
                                             self.manager)
        language_selector.update()
        langs = language_selector.languages()
        langs.reverse()

        if len(langs) == 1:
            return

        for index, lang in enumerate(langs):
            switch_lang_url = '{0}/switchLanguage?set_language={1}'.format(
                self.context.absolute_url(), lang['code'])

            actions.insert(0, {'category': 'language',
                               'descrption': '',
                               'title': lang['native'],
                               'url': switch_lang_url,
                               'code': lang['code'],
                               'selected': lang['selected'],
                               'id': 'lang-{0}'.format(lang['code']),
                               'separator': index == 0
                               })
コード例 #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 = LanguageSelector(context, request, None, None)
        self.selector.update()
        self.languages = self.selector.languages()

        def key(info):
            return info.get("native", info["name"])

        self.languages.sort(key=key)
        portal_state = getMultiAdapter((context, request),
                                       name='plone_portal_state')
        self.navigation_root_url = portal_state.navigation_root_url()

    def show(self):
        return self.selector.available() and len(self.languages) > 1

    @property
    def available(self):
        return self.show()

    def showFlags(self):
        return self.selector.showFlags()

    def update(self):
        pass

    render = ViewPageTemplateFile('language.pt')
コード例 #3
0
class Renderer(base.Renderer):

    def __init__(self, context, request, view, manager, data):
        base.Renderer.__init__(self, context, request, view, manager, data)
        self.selector = LanguageSelector(context, request, None, None)
        self.selector.update()
        self.languages = self.selector.languages()

        def key(info):
            return info.get("native", info["name"])
        self.languages.sort(key=key)
        portal_state = getMultiAdapter(
            (context, request), name='plone_portal_state')
        self.navigation_root_url = portal_state.navigation_root_url()

    def show(self):
        return self.selector.available() and len(self.languages) > 1

    @property
    def available(self):
        return self.show()

    def showFlags(self):
        return self.selector.showFlags()

    def update(self):
        pass

    render = ViewPageTemplateFile('language.pt')
コード例 #4
0
    def languages(self):
        context = aq_inner(self.context)

        ls = LanguageSelector(context, self.request, None, None)
        ls.update()
        results = ls.languages()

        supported_langs = [v['code'] for v in results]
        missing = set([str(c) for c in supported_langs])

        lsv = LanguageSelectorViewlet(context, self.request, None, None)
        translations = lsv._translations(missing)

        # We want to see the babel_view
        append_path = ('', 'babel_view',)
        non_viewable = set()
        for data in results:
            code = str(data['code'])
            data['translated'] = code in translations.keys()

            appendtourl = '/'.join(append_path)

            if data['translated']:
                trans, direct, has_view_permission = translations[code]
                if not has_view_permission:
                    # shortcut if the user cannot see the item
                    non_viewable.add((data['code']))
                    continue
                data['url'] = trans.absolute_url() + appendtourl
            else:
                non_viewable.add((data['code']))

        # filter out non-viewable items
        results = [r for r in results if r['code'] not in non_viewable]
        return results
コード例 #5
0
    def _update_user_actions_with_languages(self, actions):
        language_selector = LanguageSelector(self.context, self.request,
                                             self.view, self.manager)
        language_selector.update()
        langs = language_selector.languages()
        langs.reverse()

        if len(langs) == 1:
            return

        for index, lang in enumerate(langs):
            switch_lang_url = '{0}/switchLanguage?set_language={1}'.format(
                self.context.absolute_url(), lang['code'])

            actions.insert(
                0, {
                    'category': 'language',
                    'descrption': '',
                    'title': lang['native'],
                    'url': switch_lang_url,
                    'code': lang['code'],
                    'selected': lang['selected'],
                    'id': 'lang-{0}'.format(lang['code']),
                    'separator': index == 0
                })
コード例 #6
0
    def update(self):
        self.portal_state = getMultiAdapter((self.context, self.request), name=u'plone_portal_state')
        self.site_url = self.portal_state.portal_url()
        ls = LanguageSelector(self.context, self.request, self.view, self.manager)
        ls.update()
        results = ls.languages()
        translatable = ITranslatable(self.context, None)
        if translatable is not None:
            translations = translatable.getTranslations()
        else:
            translations = []

        for data in results:
            data['translated'] = data['code'] in translations
            if data['translated']:
                trans = translations[data['code']][0]
                state = getMultiAdapter((trans, self.request),
                        name='plone_context_state')
                data['url'] = state.view_url() + '?set_language=' + data['code']
            else:
                state = getMultiAdapter((self.context, self.request), name='plone_context_state')
                try:
                    data['url'] = state.view_url() + '?set_language=' + data['code']
                except AttributeError:
                    data['url'] = self.context.absolute_url() + '?set_language=' + data['code']
コード例 #7
0
    def test_original_selector_data_not_modified_by_viewlet(self):
        self.selector.update()
        multilingual_lang_info = self.selector.languages()
        original_selector = LanguageSelector(self.portal,
                            self.request, None, None)
        original_selector.update()
        original_lang_info = original_selector.languages()

        self.assertNotEquals(original_lang_info, multilingual_lang_info)
コード例 #8
0
    def test_original_selector_data_not_modified_by_viewlet(self):
        self.selector.update()
        multilingual_lang_info = self.selector.languages()
        original_selector = LanguageSelector(self.portal, self.request, None,
                                             None)
        original_selector.update()
        original_lang_info = original_selector.languages()

        self.assertNotEquals(original_lang_info, multilingual_lang_info)
コード例 #9
0
    def get_language_info(self):
        """Returns the current configured languages
        """

        # Use the language selector viewlet
        viewlet = LanguageSelector(self.context, self.request, None, None)
        viewlet.update()

        return {
            "available": viewlet.available(),
            "languages": viewlet.languages(),
        }
コード例 #10
0
    def test_selector_data_not_modified_by_viewlet(self):
        selector_viewlet = \
            LanguageSelectorViewlet(self.portal, self.request, None, None)
        selector_viewlet.update()
        selector_viewlet_languages = selector_viewlet.languages()

        selector_adapter = \
            LanguageSelector(self.portal, self.request, None, None)
        selector_adapter.update()
        selector_adapter_languages = selector_adapter.languages()

        self.assertNotEquals(selector_adapter_languages,
                             selector_viewlet_languages)
コード例 #11
0
ファイル: edit.py プロジェクト: radekj/plone.app.multilingual
    def languages(self):
        """ Deprecated """
        context = aq_inner(self.context)

        ls = LanguageSelector(context, self.request, None, None)
        ls.update()
        results = ls.languages()

        supported_langs = [v['code'] for v in results]
        missing = set([str(c) for c in supported_langs])

        lsv = LanguageSelectorViewlet(context, self.request, None, None)
        translations = lsv._translations(missing)

        # We want to see the babel_view
        append_path = (
            '',
            'babel_view',
        )

        non_viewable = set()
        for data in results:
            code = str(data['code'])
            data['translated'] = code in translations.keys()

            appendtourl = '/'.join(append_path)

            if data['translated']:
                trans, direct, has_view_permission = translations[code]
                if not has_view_permission:
                    # shortcut if the user cannot see the item
                    non_viewable.add((data['code']))
                    continue
                data['url'] = trans.absolute_url() + appendtourl
            else:
                non_viewable.add((data['code']))

        # filter out non-viewable items
        results = [r for r in results if r['code'] not in non_viewable]
        return results