From 1d2db19e19d2cea0448107dd3becc4e985338ceb Mon Sep 17 00:00:00 2001 From: eXeCUT notebook Date: Fri, 6 Aug 2021 06:11:21 +0300 Subject: [PATCH] #7 merge with master --- README.md | 2 +- multimenus/templatetags/multimenus.py | 36 ++++++++++++++++++++++++++- 2 files changed, 36 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index b720e3a..9c725d7 100644 --- a/README.md +++ b/README.md @@ -59,7 +59,7 @@ Display menu with Menu ID: NAVBAR_TOP {% load multimenus %} {% for item in items %} -
  • + {{ item.title }} {% if item.get_children %}
      diff --git a/multimenus/templatetags/multimenus.py b/multimenus/templatetags/multimenus.py index dc0ad0b..b649e33 100644 --- a/multimenus/templatetags/multimenus.py +++ b/multimenus/templatetags/multimenus.py @@ -42,7 +42,41 @@ def get_context(self, context, menu_id, template=None, params={}): except MenuItem.DoesNotExist: menu_items = [] cache.set(cache_key, menu_items, 60 * 60 * 24) + + activated_menu_items = [] + for item in menu_items: + activated_menu_items.append(ActivatedMenuItem(context['request'], item)) + return { - 'items': menu_items, + 'items': activated_menu_items, 'template': template or ShowMultiMenu.DEFAULT_TEMPLATE_NAME, } + +class ActivatedMenuItem: + def __init__(self, request, menu_item): + self._request = request + self.menu_item = menu_item + self.title = menu_item.title + self.target = menu_item.target + children = menu_item.get_children(); + activated_children = [] + for child in children: + activated_children.append(ActivatedMenuItem(request, child)) + self.children = activated_children + + def get_children(self): + return self.children + + def get_url(self): + return self.menu_item.get_url() + + def is_active(self): + return self.menu_item.get_url() == self._request.get_full_path() + + def is_has_active_children(self): + childrens = self.get_children() + for children in childrens: + if children.is_active(): + return True + return False +