Пример #1
0
    def toplevel_navigation(self, current_page=None, for_user=None, language_code=None):
        """
        Return all toplevel items, ordered by menu ordering.

        When current_page is passed, the object values such as 'is_current' will be set.
        """
        qs = self.toplevel().in_navigation(for_user=for_user).non_polymorphic()._mark_current(current_page)

        # Make sure only translated menu items are visible.
        if is_multilingual_project():
            if language_code is None:
                if current_page is None or getattr(current_page, '_fetched_in_fallback_language', False):
                    # Show the menu in the current site language.
                    # When a page is fetched in a fallback, the menu shouldn't change.
                    language_code = get_language()
                else:
                    # This exists to preserve old behavior. Maybe it can be removed:
                    language_code = current_page.get_current_language()

            lang_dict = appsettings.FLUENT_PAGES_LANGUAGES.get_language(language_code)
            if lang_dict['hide_untranslated_menu_items']:
                qs = qs.translated(language_code)
            else:
                qs = qs.active_translations(language_code)

        return qs
Пример #2
0
    def toplevel_navigation(self,
                            current_page=None,
                            for_user=None,
                            language_code=None):
        """
        Return all toplevel items, ordered by menu ordering.

        When current_page is passed, the object values such as 'is_current' will be set.
        """
        qs = self.toplevel().in_navigation(
            for_user=for_user).non_polymorphic()._mark_current(current_page)

        # Make sure only translated menu items are visible.
        if is_multilingual_project():
            if language_code is None:
                if current_page is None or getattr(
                        current_page, '_fetched_in_fallback_language', False):
                    # Show the menu in the current site language.
                    # When a page is fetched in a fallback, the menu shouldn't change.
                    language_code = get_language()
                else:
                    # This exists to preserve old behavior. Maybe it can be removed:
                    language_code = current_page.get_current_language()

            lang_dict = appsettings.FLUENT_PAGES_LANGUAGES.get_language(
                language_code)
            if lang_dict['hide_untranslated_menu_items']:
                qs = qs.translated(language_code)
            else:
                qs = qs.active_translations(language_code)

        return qs
Пример #3
0
    def toplevel_navigation(self, current_page=None):
        """
        Return all toplevel items, ordered by menu ordering.

        When current_page is passed, the object values such as 'is_current' will be set. 
        """
        qs = self.toplevel().in_navigation().non_polymorphic()._mark_current(current_page)

        # Make sure only translated menu items are visible.
        if is_multilingual_project():
            qs = qs.active_translations()

        return qs
    def __init__(self, *args, **kwargs):
        if 'parent' not in self.base_fields and mptt.VERSION[:2] == (0, 6):
            # Skip bug in django-mptt 0.6.0
            # https://github.com/django-mptt/django-mptt/issues/275
            TranslatableModelForm.__init__(self, *args, **kwargs)
        else:
            super(UrlNodeAdminForm, self).__init__(*args, **kwargs)

        if 'override_url' in self.fields:
            self.fields['override_url'].language_code = self.language_code

        # Warn about django-parler issue that inherited models are not yet translatable.
        if is_multilingual_project():
            for f_name in ('meta_description', 'meta_keywords', 'meta_title', 'new_url'):
                if f_name in self.fields:
                    field = self.fields[f_name]
                    field.help_text += " " + ugettext("Note: this field is not yet translatable")
Пример #5
0
    def toplevel_navigation(self, current_page=None, for_user=None):
        """
        Return all toplevel items, ordered by menu ordering.

        When current_page is passed, the object values such as 'is_current' will be set.
        """
        qs = self.toplevel().in_navigation(for_user=for_user).non_polymorphic()._mark_current(current_page)

        # Make sure only translated menu items are visible.
        if is_multilingual_project():
            language_code = current_page.get_current_language() if current_page is not None else get_language()
            lang_dict = appsettings.FLUENT_PAGES_LANGUAGES.get_language(language_code)
            if lang_dict['hide_untranslated_menu_items']:
                qs = qs.translated(language_code)
            else:
                qs = qs.active_translations(language_code)

        return qs
Пример #6
0
    def toplevel_navigation(self, current_page=None):
        """
        Return all toplevel items, ordered by menu ordering.

        When current_page is passed, the object values such as 'is_current' will be set. 
        """
        qs = self.toplevel().in_navigation().non_polymorphic()._mark_current(current_page)

        if is_multilingual_project():
            # Make sure only translated menu items are visible.
            language = get_language()
            fallback = appsettings.get_language_settings(language).get('fallback')

            if fallback and fallback != language:
                qs = qs.filter(translations__language_code__in=(language, fallback)).distinct()
            else:
                qs = qs.filter(translations__language_code=language)

        return qs
Пример #7
0
    def toplevel_navigation(self, current_page=None, for_user=None):
        """
        Return all toplevel items, ordered by menu ordering.

        When current_page is passed, the object values such as 'is_current' will be set.
        """
        qs = self.toplevel().in_navigation(
            for_user=for_user).non_polymorphic()._mark_current(current_page)

        # Make sure only translated menu items are visible.
        if is_multilingual_project():
            language_code = current_page.get_current_language(
            ) if current_page is not None else get_language()
            lang_dict = appsettings.FLUENT_PAGES_LANGUAGES.get_language(
                language_code)
            if lang_dict['hide_untranslated_menu_items']:
                qs = qs.translated(language_code)
            else:
                qs = qs.active_translations(language_code)

        return qs
    def __init__(self, *args, **kwargs):
        if "parent" not in self.base_fields and mptt.VERSION[:2] == (0, 6):
            # Skip bug in django-mptt 0.6.0
            # https://github.com/django-mptt/django-mptt/issues/275
            TranslatableModelForm.__init__(self, *args, **kwargs)
        else:
            super(UrlNodeAdminForm, self).__init__(*args, **kwargs)

        if "override_url" in self.fields:
            self.fields["override_url"].language_code = self.language_code

        # When the is_sitemap field is exposed, make sure it has the right default.
        # This can't be set on the model level, because the default depends on the page type.
        if "in_sitemaps" in self.fields and not self.instance.pk:
            self.fields["in_sitemaps"].initial = self.instance.plugin.default_in_sitemaps

        # Warn about django-parler issue that inherited models are not yet translatable.
        if is_multilingual_project():
            for f_name in ("meta_description", "meta_keywords", "meta_title", "new_url"):
                if f_name in self.fields:
                    field = self.fields[f_name]
                    field.help_text += " " + ugettext("Note: this field is not yet translatable")
Пример #9
0
    def __init__(self, *args, **kwargs):
        if 'parent' not in self.base_fields and mptt.VERSION[:2] == (0, 6):
            # Skip bug in django-mptt 0.6.0
            # https://github.com/django-mptt/django-mptt/issues/275
            TranslatableModelForm.__init__(self, *args, **kwargs)
        else:
            super(UrlNodeAdminForm, self).__init__(*args, **kwargs)

        if 'override_url' in self.fields:
            self.fields['override_url'].language_code = self.language_code

        # When the is_sitemap field is exposed, make sure it has the right default.
        # This can't be set on the model level, because the default depends on the page type.
        if 'in_sitemaps' in self.fields and not self.instance.pk:
            self.fields['in_sitemaps'].initial = self.instance.plugin.default_in_sitemaps

        # Warn about django-parler issue that inherited models are not yet translatable.
        if is_multilingual_project():
            for f_name in ('meta_description', 'meta_keywords', 'meta_title', 'new_url'):
                if f_name in self.fields:
                    field = self.fields[f_name]
                    field.help_text += " " + ugettext("Note: this field is not yet translatable")