def show_breadcrumb(context, start_level=0, template="cms/breadcrumb.html"): request = context['request'] page_queryset = get_page_queryset(request) title_queryset = get_title_queryset(request) page = request.current_page if page == "dummy": context.update({'ancestors':[]}) return context lang = get_language_from_request(request) if page: ancestors = list(page.get_ancestors()) ancestors.append(page) home = page_queryset.get_home() if ancestors and ancestors[0].pk != home.pk: ancestors = [home] + ancestors ids = [page.pk] for anc in ancestors: ids.append(anc.pk) titles = title_queryset.filter(page__in=ids, language=lang) for anc in ancestors: anc.home_pk_cache = home.pk for title in titles: if title.page_id == anc.pk: anc.title_cache = title for title in titles: if title.page_id == page.pk: page.title_cache = title else: site = Site.objects.get_current() ancestors = [] extenders = page_queryset.published().filter(in_navigation=True, site=site) extenders = extenders.exclude(navigation_extenders__isnull=True).exclude(navigation_extenders__exact="") for ext in extenders: ext.childrens = [] ext.ancestors_ascending = [] nodes = get_extended_navigation_nodes(request, 100, [ext], ext.level, 100, 0, False, ext.navigation_extenders) if hasattr(ext, "ancestor"): selected = find_selected(nodes) if selected: ancestors = list(ext.get_ancestors()) + [ext] home = page_queryset.get_home() if ancestors and ancestors[0].pk != home.pk: ancestors = [home] + ancestors ids = [] for anc in ancestors: ids.append(anc.pk) titles = title_queryset.filter(page__in=ids, language=lang) ancs = [] for anc in ancestors: anc.home_pk_cache = home.pk anc.ancestors_ascending = ancs[:] ancs += [anc] for title in titles: if title.page_id == anc.pk: anc.title_cache = title ancestors = ancestors + selected.ancestors_ascending[1:] + [selected] context.update({'ancestors':ancestors, 'template': template}) return context
def show_breadcrumb(context, start_level=0, template="cms/breadcrumb.html"): request = context['request'] page_queryset = get_page_queryset(request) title_queryset = get_title_queryset(request) page = request.current_page if page == "dummy": context.update({ 'ancestors': [], 'template': template, }) return context lang = get_language_from_request(request) if page and not page.navigation_extenders: ancestors = ancestors_from_page(page, page_queryset, title_queryset, lang) else: site = Site.objects.get_current() ancestors = [] extenders = page_queryset.published().filter(site=site) extenders = extenders.exclude( navigation_extenders__isnull=True).exclude( navigation_extenders__exact="") for ext in extenders: ext.childrens = [] ext.ancestors_ascending = [] nodes = get_extended_navigation_nodes(request, 100, [ext], ext.level, 100, 0, False, ext.navigation_extenders) if hasattr(ext, "ancestor"): selected = find_selected(nodes) if selected: ancestors = list(ext.get_ancestors()) + [ext] home = page_queryset.get_home() if ancestors and ancestors[0].pk != home.pk: ancestors = [home] + ancestors ids = [] for anc in ancestors: ids.append(anc.pk) titles = title_queryset.filter(page__in=ids, language=lang) ancs = [] for anc in ancestors: anc.home_pk_cache = home.pk anc.ancestors_ascending = ancs[:] ancs += [anc] for title in titles: if title.page_id == anc.pk: if not hasattr(anc, "title_cache"): anc.title_cache = {} anc.title_cache[title.language] = title ancestors = ancestors + selected.ancestors_ascending[ 1:] + [selected] if not ancestors and page: ancestors = ancestors_from_page(page, page_queryset, title_queryset, lang) context.update({'ancestors': ancestors, 'template': template}) return context
def show_breadcrumb(context, start_level=0, template="cms/breadcrumb.html"): request = context['request'] PageModel = get_page_model(request) TitleModel = get_title_model(request) page = request.current_page lang = get_language_from_request(request) if page: p = page ancestors = [page] while ancestors[-1].parent: ancestors.append(ancestors[-1].parent) ancestors.reverse() home = PageModel.objects.get_home() if ancestors and ancestors[0].pk != home.pk: ancestors = [home] + ancestors ids = [page.pk] for anc in ancestors: ids.append(anc.pk) titles = TitleModel.objects.filter(page__in=ids, language=lang) for anc in ancestors: for title in titles: if title.page_id == anc.pk: anc.title_cache = title for title in titles: if title.page_id == page.pk: page.title_cache = title else: site = Site.objects.get_current() ancestors = [] extenders = PageModel.objects.published().filter(in_navigation=True, site=site) extenders = extenders.exclude(navigation_extenders__isnull=True).exclude(navigation_extenders__exact="") for ext in extenders: ext.childrens = [] ext.ancestors_ascending = [] nodes = get_extended_navigation_nodes(request, 100, [ext], ext.level, 100, 0, False, ext.navigation_extenders) if hasattr(ext, "ancestor"): selected = find_selected(nodes) if selected: ancestors = list(ext.get_ancestors()) + [ext] home = PageModel.objects.get_home() if ancestors and ancestors[0].pk != home.pk: ancestors = [home] + ancestors ids = [] for anc in ancestors: ids.append(anc.pk) titles = Title.objects.filter(page__in=ids, language=lang) ancs = [] for anc in ancestors: anc.ancestors_ascending = ancs[:] ancs += [anc] for title in titles: if title.page_id == anc.pk: anc.title_cache = title ancestors = ancestors + selected.ancestors_ascending[1:] + [selected] ancestors = ancestors[start_level:] context.update(locals()) return context
def show_sub_menu(context, levels=100, template="cms/sub_menu.html"): """Get the root page of the current page and render a nested list of all root's children pages""" request = context['request'] lang = get_language_from_request(request) site = request.site children = [] page = request.current_page if page: root = page.get_root() pages = Page.objects.published().filter(in_navigation=True, lft__gt=page.lft, rght__lt=page.rght, tree_id=page.tree_id, level__lte=page.level+levels, sites__domain=site.domain) ids = [] pages = list(pages) all_pages = pages[:] page.ancestors_ascending = [] for p in pages: p.descendant = True ids.append(p.pk) page.selected = True find_children(page, pages, levels, levels, [], page.pk, request=request) children = page.childrens titles = Title.objects.filter(page__in=ids, language=lang) for p in all_pages:# add the title and slugs and some meta data for title in titles: if title.page_id == p.pk: p.title_cache = title from_level = page.level to_level = page.level+levels extra_active = extra_inactive = levels else: extenders = Page.objects.published().filter(in_navigation=True, sites__domain=site.domain) extenders = extenders.exclude(navigation_extenders__isnull=True).exclude(navigation_extenders__exact="") for ext in extenders: ext.childrens = [] ext.ancestors_ascending = [] nodes = get_extended_navigation_nodes(request, 100, [ext], ext.level, 100, levels, False, ext.navigation_extenders) if hasattr(ext, "ancestor"): selected = find_selected(nodes) if selected: children = selected.childrens from_level = selected.level to_level = from_level+levels extra_active = extra_inactive = levels context.update(locals()) return context
def show_breadcrumb(context, start_level=0, template="cms/breadcrumb.html"): request = context['request'] page = request.current_page lang = get_language_from_request(request) if page: ancestors = list(page.get_ancestors()) ancestors.append(page) ids = [page.pk] for anc in ancestors: ids.append(anc.pk) titles = Title.objects.filter(page__in=ids, language=lang) for anc in ancestors: for title in titles: if title.page_id == anc.pk: anc.title_cache = title for title in titles: if title.page_id == page.pk: page.title_cache = title else: site = request.site ancestors = [] extenders = Page.objects.published().filter(in_navigation=True, sites__domain=site.domain) extenders = extenders.exclude(navigation_extenders__isnull=True).exclude(navigation_extenders__exact="") for ext in extenders: ext.childrens = [] ext.ancestors_ascending = [] nodes = get_extended_navigation_nodes(request, 100, [ext], ext.level, 100, 0, False, ext.navigation_extenders) if hasattr(ext, "ancestor"): selected = find_selected(nodes) if selected: ancestors = list(ext.get_ancestors()) + [ext] ids = [] for anc in ancestors: ids.append(anc.pk) titles = Title.objects.filter(page__in=ids, language=lang) ancs = [] for anc in ancestors: anc.ancestors_ascending = ancs[:] ancs += [anc] for title in titles: if title.page_id == anc.pk: anc.title_cache = title ancestors = ancestors + selected.ancestors_ascending[1:] + [selected] context.update(locals()) return context
def show_sub_menu(context, levels=100, template="cms/sub_menu.html"): """Get the root page of the current page and render a nested list of all root's children pages""" request = context['request'] page_queryset = get_page_queryset(request) lang = get_language_from_request(request) site = Site.objects.get_current() children = [] page = request.current_page if page == "dummy": context.update({'children':[], 'template':template, 'from_level':0, 'to_level':0, 'extra_inactive':0, 'extra_active':0 }) return context if page: page.get_cached_ancestors() # this is not required anymore, sice home_pk_cache is a getter #if not hasattr(page, "home_pk_cache"): # page.home_pk_cache = page_queryset.get_home(site).pk filters = {'in_navigation':True, 'lft__gt':page.lft, 'rght__lt':page.rght, 'tree_id':page.tree_id, 'level__lte':page.level+levels, 'site':site} if settings.CMS_HIDE_UNTRANSLATED: filters['title_set__language'] = lang if not request.user.is_authenticated(): filters['menu_login_required'] = False pages = page_queryset.published().filter(**filters) ids = [] pages = list(pages) all_pages = pages[:] page.childrens = [] for p in pages: p.descendant = True ids.append(p.pk) page.selected = True page.menu_level = -1 was_soft_root = False if page.soft_root: was_soft_root = True page.soft_root = False find_children(page, pages, levels, levels, [], page.pk, request=request) if was_soft_root: page.soft_root = True children = page.childrens titles = get_title_queryset(request).filter(page__in=ids, language=lang) for p in all_pages:# add the title and slugs and some meta data for title in titles: if title.page_id == p.pk: if not hasattr(page, "title_cache"): page.title_cache = {} page.title_cache[title.language] = title from_level = page.level to_level = page.level+levels extra_active = extra_inactive = levels else: extenders = page_queryset.published().filter(in_navigation=True, site=site) extenders = extenders.exclude(navigation_extenders__isnull=True).exclude(navigation_extenders__exact="") children = [] from_level = 0 to_level = 0 extra_active = 0 extra_inactive = 0 for ext in extenders: ext.childrens = [] ext.ancestors_ascending = [] nodes = get_extended_navigation_nodes(request, 100, [ext], ext.level, 100, levels, False, ext.navigation_extenders) if hasattr(ext, "ancestor"): selected = find_selected(nodes) if selected: children = selected.childrens from_level = selected.level to_level = from_level+levels extra_active = extra_inactive = levels children = navigation.handle_navigation_manipulators(children, request) context.update({'children':children, 'template':template, 'from_level':from_level, 'to_level':to_level, 'extra_inactive':extra_inactive, 'extra_active':extra_active}) return context
def show_sub_menu(context, levels=100, template="cms/sub_menu.html"): """Get the root page of the current page and render a nested list of all root's children pages""" request = context['request'] page_queryset = get_page_queryset(request) lang = get_language_from_request(request) site = Site.objects.get_current() children = [] page = request.current_page if page == "dummy": context.update({ 'children': [], 'template': template, 'from_level': 0, 'to_level': 0, 'extra_inactive': 0, 'extra_active': 0 }) return context if page: page.get_cached_ancestors() # this is not required anymore, sice home_pk_cache is a getter #if not hasattr(page, "home_pk_cache"): # page.home_pk_cache = page_queryset.get_home(site).pk filters = { 'in_navigation': True, 'lft__gt': page.lft, 'rght__lt': page.rght, 'tree_id': page.tree_id, 'level__lte': page.level + levels, 'site': site } if settings.CMS_HIDE_UNTRANSLATED: filters['title_set__language'] = lang if not request.user.is_authenticated(): filters['menu_login_required'] = False pages = page_queryset.published().filter(**filters) ids = [] pages = list(pages) all_pages = pages[:] page.childrens = [] for p in pages: p.descendant = True ids.append(p.pk) page.selected = True page.menu_level = -1 was_soft_root = False if page.soft_root: was_soft_root = True page.soft_root = False find_children(page, pages, levels, levels, [], page.pk, request=request) if was_soft_root: page.soft_root = True children = page.childrens titles = get_title_queryset(request).filter(page__in=ids, language=lang) for p in all_pages: # add the title and slugs and some meta data for title in titles: if title.page_id == p.pk: if not hasattr(p, "title_cache"): p.title_cache = {} p.title_cache[title.language] = title from_level = page.level to_level = page.level + levels extra_active = extra_inactive = levels else: extenders = page_queryset.published().filter(in_navigation=True, site=site) extenders = extenders.exclude( navigation_extenders__isnull=True).exclude( navigation_extenders__exact="") children = [] from_level = 0 to_level = 0 extra_active = 0 extra_inactive = 0 for ext in extenders: ext.childrens = [] ext.ancestors_ascending = [] nodes = get_extended_navigation_nodes(request, 100, [ext], ext.level, 100, levels, False, ext.navigation_extenders) if hasattr(ext, "ancestor"): selected = find_selected(nodes) if selected: children = selected.childrens from_level = selected.level to_level = from_level + levels extra_active = extra_inactive = levels children = navigation.handle_navigation_manipulators(children, request) context.update({ 'children': children, 'template': template, 'from_level': from_level, 'to_level': to_level, 'extra_inactive': extra_inactive, 'extra_active': extra_active }) return context
def show_sub_menu(context, levels=100, template="cms/sub_menu.html"): """Get the root page of the current page and render a nested list of all root's children pages""" request = context['request'] lang = get_language_from_request(request) site = Site.objects.get_current() children = [] page = request.current_page if page: root = page.get_root() filters = {'in_navigation':True, 'lft__gt':page.lft, 'rght__lt':page.rght, 'tree_id':page.tree_id, 'level__lte':page.level+levels, 'sites__domain':site.domain} if settings.CMS_HIDE_UNTRANSLATED: filters['title_set__language'] = lang pages = Page.objects.published().filter(**filters) ids = [] pages = list(pages) all_pages = pages[:] page.ancestors_ascending = [] page.childrens = [] for p in pages: p.descendant = True ids.append(p.pk) page.selected = True page.menu_level = -1 was_soft_root = False if page.soft_root: was_soft_root = True page.soft_root = False find_children(page, pages, levels, levels, [], page.pk, request=request) if was_soft_root: page.soft_root = True children = page.childrens titles = Title.objects.filter(page__in=ids, language=lang) for p in all_pages:# add the title and slugs and some meta data for title in titles: if title.page_id == p.pk: p.title_cache = title from_level = page.level to_level = page.level+levels extra_active = extra_inactive = levels else: extenders = Page.objects.published().filter(in_navigation=True, sites__domain=site.domain) extenders = extenders.exclude(navigation_extenders__isnull=True).exclude(navigation_extenders__exact="") children = [] from_level = 0 to_level = 0 extra_active = 0 extra_inactive = 0 for ext in extenders: ext.childrens = [] ext.ancestors_ascending = [] nodes = get_extended_navigation_nodes(request, 100, [ext], ext.level, 100, levels, False, ext.navigation_extenders) if hasattr(ext, "ancestor"): selected = find_selected(nodes) if selected: children = selected.childrens from_level = selected.level to_level = from_level+levels extra_active = extra_inactive = levels context.update({'children':children, 'template':template, 'from_level':from_level, 'to_level':to_level, 'extra_inactive':extra_inactive, 'extra_active':extra_active}) return context