diff --git a/apps/navigation/api.py b/apps/navigation/api.py index 6a649693cf..6d10a95baf 100644 --- a/apps/navigation/api.py +++ b/apps/navigation/api.py @@ -59,7 +59,7 @@ class Link(object): self.children_view_regex = children_view_regex or [] def resolve(self, context, request=None, current_path=None, current_view=None): - # TODO: don't calculate these if passed in an argument + # Don't calculate these if passed in an argument request = request or Variable('request').resolve(context) current_path = current_path or request.META['PATH_INFO'] current_view = current_view or resolve_to_name(current_path) @@ -214,7 +214,7 @@ def get_context_navigation_links(context, menu_name=None, links_dict=bound_links current_path = request.META['PATH_INFO'] current_view = resolve_to_name(current_path) context_links = {} - + # Don't fudge with the original global dictionary # TODO: fix this links_dict = links_dict.copy() @@ -251,7 +251,7 @@ def get_context_navigation_links(context, menu_name=None, links_dict=bound_links context_links.setdefault(None, []) for link in view_links: - context_links[None].append(link.resolve(context)) + context_links[None].append(link.resolve(context, request=request, current_path=current_path, current_view=current_view)) except KeyError: pass @@ -263,7 +263,7 @@ def get_context_navigation_links(context, menu_name=None, links_dict=bound_links context_links.setdefault(resolved_object_reference, []) for link in object_links: - context_links[resolved_object_reference].append(link.resolve(context)) + context_links[resolved_object_reference].append(link.resolve(context, request=request, current_path=current_path, current_view=current_view)) except KeyError: pass diff --git a/apps/navigation/templatetags/navigation_tags.py b/apps/navigation/templatetags/navigation_tags.py index d4f00e5ce2..92a596cb1c 100644 --- a/apps/navigation/templatetags/navigation_tags.py +++ b/apps/navigation/templatetags/navigation_tags.py @@ -21,10 +21,13 @@ logger = logging.getLogger(__name__) class TopMenuNavigationNode(Node): def render(self, context): - context['menu_links'] = [menu.get('link').resolve(context) for menu in main_menu.getchildren()] + request = Variable('request').resolve(context) + current_path = request.META['PATH_INFO'] + current_view = resolve_to_name(current_path) + + context['menu_links'] = [menu.get('link').resolve(context, request=request, current_path=current_path, current_view=current_view) for menu in main_menu.getchildren()] return '' - @register.tag def get_top_menu_links(parser, token): return TopMenuNavigationNode()