From 382e2f5956d3199360e2ff3574f439f31d818cb8 Mon Sep 17 00:00:00 2001 From: LeandroRoberto Date: Tue, 14 Jun 2016 17:26:43 -0300 Subject: [PATCH] Acrescenta classe 'active' na item subnav ativo --- sapl/base/templatetags/menus.py | 28 ++++++++++++++++++---------- sapl/templates/menus/subnav.html | 31 ++++++++++++++++--------------- 2 files changed, 34 insertions(+), 25 deletions(-) diff --git a/sapl/base/templatetags/menus.py b/sapl/base/templatetags/menus.py index d96ab2e22..5086233d9 100644 --- a/sapl/base/templatetags/menus.py +++ b/sapl/base/templatetags/menus.py @@ -37,29 +37,37 @@ def subnav(context, path=None): yaml_path = '%s/subnav.yaml' % app_template try: - """ Por padrão, são carragados dois Loaders, - filesystem.Loader - busca em TEMPLATES_DIRS do projeto atual - app_directories.Loader - busca em todas apps instaladas - A função abaixo é nativa e busca em todos os Loaders Configurados. + """ Por padrão, são carragados dois Loaders, + filesystem.Loader - busca em TEMPLATE_DIRS do projeto atual + app_directories.Loader - busca em todas apps instaladas + A função nativa abaixo busca em todos os Loaders Configurados. """ yaml_template = template.loader.get_template(yaml_path) menu = yaml.load(open(yaml_template.origin.name, 'r')) - resolve_urls_inplace(menu, root_pk, app) + resolve_urls_inplace(menu, root_pk, app, request.path) except: - # um erro será lançado por get_template se não for encontrado - # yaml_path em nenhum de locais registrados. pass return {'menu': menu} -def resolve_urls_inplace(menu, pk, app): +def resolve_urls_inplace(menu, pk, app, request_path): + print(menu) if isinstance(menu, list): + list_active = '' for item in menu: - resolve_urls_inplace(item, pk, app) + menuactive = resolve_urls_inplace(item, pk, app, request_path) + list_active = menuactive if menuactive else list_active + if not isinstance(item, list): + item['active'] = menuactive + + return list_active else: if 'url' in menu: menu['url'] = reverse('%s:%s' % (app, menu['url']), kwargs={'pk': pk}) + menu['active'] = 'active' if request_path == menu['url'] else '' if 'children' in menu: - resolve_urls_inplace(menu['children'], pk, app) + menu['active'] = resolve_urls_inplace( + menu['children'], pk, app, request_path) + return menu['active'] diff --git a/sapl/templates/menus/subnav.html b/sapl/templates/menus/subnav.html index 85fdecb83..7a029ab10 100644 --- a/sapl/templates/menus/subnav.html +++ b/sapl/templates/menus/subnav.html @@ -1,23 +1,24 @@ + {% load i18n %} {% if menu %} {% endif %}