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
Esempio n. 4
0
 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
Esempio n. 5
0
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,
        })
Esempio n. 6
0
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,
    })