def get_context(self, context, template): try: # If there's an exception (500), default context_processors may not be called. request = context['request'] except KeyError: return {'template': 'menu/empty.html'} page = request.current_page print "page", page # print dir(page) print page.parent print "children", page.get_children() print "current page", page print type(request.current_page) node = page_to_node(page, page, None) children = cut_levels([node], 0, 100, 0, 1) children = apply_modifiers(children, request, None, None, post_cut=True) try: context.update({'children':children, 'template':template,}) except: context = {"template":template} return context
def render(self, context, instance, placeholder): try: # If there's an exception (500), default context_processors may not be called. request = context['request'] except KeyError: return _("There is no `request` object in the context.") root_page = instance.root from_level = instance.start_level to_level = instance.show_depth renderer = menu_pool.get_renderer(request) nodes = renderer.get_nodes( namespace=None, root_id=None, breadcrumb=False, ) root_node = None for node in nodes: if not node.attr["is_page"]: continue if node.id == root_page.id or \ node.id == root_page.publisher_public_id: root_node = node break if root_node is not None: nodes = root_node.children for remove_parent in nodes: remove_parent.parent = None from_level += node.level + 1 to_level += node.level + 1 nodes = flatten(nodes) else: nodes = [] extra_levels = to_level - from_level children = cut_levels(nodes, from_level, to_level, extra_inactive=extra_levels, extra_active=extra_levels) children = renderer.apply_modifiers(children, post_cut=True) if root_node and instance.include_root: children = (root_node, ) def add_menu_levels(child, level): child.menu_level = level for child in child.children: add_menu_levels(child, level+1) for child in children: add_menu_levels(child, 0) context.update({ 'instance': instance, 'MenuItems': children, 'template': re.search('(\w*).html', instance.template).groups()[0], }) return context
def get_context(self, context, menu_name_or_slug, from_level, to_level, extra_inactive, extra_active, template, namespace, root_id, next_page): # From menus.template_tags.menu_tags.py try: # If there's an exception (500), default context_processors may not be called. request = context['request'] except KeyError: return {'template': 'menu/empty.html'} if next_page: children = next_page.children else: # new menu... get all the data so we can save a lot of queries menu_renderer = context.get('cms_menu_renderer') if not menu_renderer: menu_renderer = menu_pool.get_renderer(request) # Get Nodes hopefully from cached page nodes above in context nodes = menu_renderer.get_nodes(namespace, root_id) nodes = filter_nodes(nodes) # Ceate a page_node dictionary page_nodes = {n.id: n for n in nodes} # Get if in Draft or Published mode draft_mode_active = use_draft(request) # Build or get from cache - Named menu nodes nodes = build_named_menu_nodes(menu_name_or_slug, page_nodes, draft_mode_active, namespace=namespace) # If nodes returned, then cut levels and apply modifiers if nodes: # Post-Cut ... apply cut levels and menu modifiers nodes = flatten(nodes) children = cut_levels(nodes, from_level, to_level, extra_inactive, extra_active) children = menu_renderer.apply_modifiers(children, namespace, root_id, post_cut=True) else: children = [] # Return the context, or go straight to template which will present missing etc. try: context['children'] = children context['template'] = template context['from_level'] = from_level context['to_level'] = to_level context['extra_inactive'] = extra_inactive context['extra_active'] = extra_active context['namespace'] = namespace except: context = {"template": template} return context
def _navigation_preview(self, request, nav_node): if not request or not nav_node: return '' nodes = menu_pool.get_nodes(request, None, None) nodes = cut_levels(nodes, 0, 1, 1, 100) nodes = menu_pool.apply_modifiers( nodes, request, None, None, post_cut=True) output = [] self._get_nodes(request, nodes, nav_node.menu_id, output) html_preview = ''.join(output) if 'current-node' not in html_preview: return "" return html_preview
def _get_content(request): site = get_current_site(request) nav_links = [] if conf.ERROR_PAGE_CMS_LINKS: try: from menus.menu_pool import menu_pool from menus.templatetags.menu_tags import cut_levels from cms.models import Page try: for page in cut_levels( menu_pool.get_nodes(request, site_id=site.id), 0, 1, 0, 1000): nav_links.append([ page.get_absolute_url(), page.get_menu_title(), ]) except AttributeError: # if no user in request for page in Page.objects.on_site(site).public(): if page.is_root_node(): nav_links.append([ page.get_absolute_url(), page.get_title(), ]) except ImportError: pass # django-cms is not installed if len(nav_links) == 0: nav_links = conf.ERROR_PAGE_NAV_LINKS return RequestContext( request, { 'site': site, 'year': datetime.datetime.now().year, 'theme_name': conf.ERROR_PAGE_THEME, 'theme_color': conf.ERROR_PAGE_THEME_COLOR, 'theme_static_url': conf.ERROR_PAGE_THEME_STATIC_URL, 'logo_url': conf.ERROR_PAGE_LOGO_URL, 'nav_links': nav_links, 'social_links': conf.ERROR_PAGE_SOCIAL_LINKS, 'search_action': conf.ERROR_PAGE_SEARCH_ACTION, 'search_method': conf.ERROR_PAGE_SEARCH_METHOD, 'search_param': conf.ERROR_PAGE_SEARCH_PARAM, })
def _get_content(request): site = get_current_site(request) nav_links = [] if conf.ERROR_PAGE_CMS_LINKS: try: from menus.menu_pool import menu_pool from menus.templatetags.menu_tags import cut_levels from cms.models import Page try: for page in cut_levels(menu_pool.get_nodes(request, site_id=site.id), 0, 1, 0, 1000): nav_links.append([ page.get_absolute_url(), page.get_menu_title(), ]) except AttributeError: # if no user in request for page in Page.objects.on_site(site).public(): if page.is_root_node(): nav_links.append([ page.get_absolute_url(), page.get_title(), ]) except ImportError: pass # django-cms is not installed if len(nav_links) == 0: nav_links = conf.ERROR_PAGE_NAV_LINKS return RequestContext(request, { 'site': site, 'year': datetime.datetime.now().year, 'theme_name': conf.ERROR_PAGE_THEME, 'theme_color': conf.ERROR_PAGE_THEME_COLOR, 'theme_static_url': conf.ERROR_PAGE_THEME_STATIC_URL, 'logo_url': conf.ERROR_PAGE_LOGO_URL, 'nav_links': nav_links, 'social_links': conf.ERROR_PAGE_SOCIAL_LINKS, 'search_action': conf.ERROR_PAGE_SEARCH_ACTION, 'search_method': conf.ERROR_PAGE_SEARCH_METHOD, 'search_param': conf.ERROR_PAGE_SEARCH_PARAM, })