diff --git a/sapl/base/templatetags/menus.py b/sapl/base/templatetags/menus.py
index a839ed680..1ce1d4ea5 100644
--- a/sapl/base/templatetags/menus.py
+++ b/sapl/base/templatetags/menus.py
@@ -11,6 +11,15 @@ register = template.Library()
@register.inclusion_tag('menus/subnav.html', takes_context=True)
def subnav(context, path=None):
+ return nav_run(context, path)
+
+
+@register.inclusion_tag('menus/nav.html', takes_context=True)
+def navbar(context, path=None):
+ return nav_run(context, path)
+
+
+def nav_run(context, path=None):
"""Renderiza sub navegação para objetos no padrão Mestre Detalhe
Existem três possíveis fontes de busca do yaml
@@ -32,7 +41,7 @@ def subnav(context, path=None):
if obj:
root_pk = obj.pk
- if root_pk or 'subnav_template_name' in context:
+ if root_pk or 'subnav_template_name' in context or path:
request = context['request']
"""
@@ -106,14 +115,20 @@ def resolve_urls_inplace(menu, pk, rm, context):
menu['url'] = reverse('%s' % menu['url'],
kwargs={'pk': pk})
except:
- menu['url'] = reverse('%s' % menu['url'])
+ try:
+ menu['url'] = reverse('%s' % menu['url'])
+ except:
+ pass
else:
try:
menu['url'] = reverse('%s:%s' % (
rm.app_name, menu['url']), kwargs={'pk': pk})
except:
- menu['url'] = reverse('%s:%s' % (
- rm.app_name, menu['url']))
+ try:
+ menu['url'] = reverse('%s:%s' % (
+ rm.app_name, menu['url']))
+ except:
+ pass
menu['active'] = 'active'\
if context['request'].path == menu['url'] else ''
@@ -125,17 +140,21 @@ def resolve_urls_inplace(menu, pk, rm, context):
as funcionalidades diretas do MasterDetailCrud, como:
- visualização de detalhes, adição, edição, remoção.
"""
-
- view = context['view']
- if hasattr(view, '__class__') and\
- hasattr(view.__class__, 'crud'):
- urls = view.__class__.crud.get_urls()
- for u in urls:
- if (u.name == url_name or
- 'urls_extras' in menu and
- u.name in menu['urls_extras']):
- menu['active'] = 'active'
- break
+ if 'view' in context:
+ view = context['view']
+ if hasattr(view, '__class__') and\
+ hasattr(view.__class__, 'crud'):
+ urls = view.__class__.crud.get_urls()
+ for u in urls:
+ if (u.name == url_name or
+ 'urls_extras' in menu and
+ u.name in menu['urls_extras']):
+ menu['active'] = 'active'
+ break
+ elif 'check_permission' in menu and not context[
+ 'request'].user.has_perm(menu['check_permission']):
+ menu['active'] = ''
+ del menu['children']
if 'children' in menu:
menu['active'] = resolve_urls_inplace(
diff --git a/sapl/templates/base.html b/sapl/templates/base.html
index 40295a7f3..d14b35e37 100644
--- a/sapl/templates/base.html
+++ b/sapl/templates/base.html
@@ -41,84 +41,9 @@
-
-
@@ -286,7 +211,7 @@
-
+
diff --git a/sapl/templates/menus/nav.html b/sapl/templates/menus/nav.html
new file mode 100644
index 000000000..548c54a63
--- /dev/null
+++ b/sapl/templates/menus/nav.html
@@ -0,0 +1,27 @@
+{% load i18n %}
+{% if menu %}
+
+
+{% endif %}
diff --git a/sapl/templates/navbar.yaml b/sapl/templates/navbar.yaml
new file mode 100644
index 000000000..4b053ca55
--- /dev/null
+++ b/sapl/templates/navbar.yaml
@@ -0,0 +1,66 @@
+{% load i18n common_tags %}
+
+- title: {% trans 'Início' %}
+ url: '/'
+
+- title: {% trans 'Institucional' %}
+ children:
+ - title: {% trans 'Mesa Diretora' %}
+ url: sapl.parlamentares:mesa_diretora
+ - title: {% trans 'Comissões' %}
+ url: sapl.comissoes:comissao_list
+ - title: {% trans 'Parlamentares' %}
+ url: sapl.parlamentares:parlamentar_list
+
+- title: {% trans 'Protocolo' %}
+ check_permission: protolcoloadm.list_protocolo
+ children:
+ - title: {% trans 'Pesquisar Protocolo' %}
+ url: sapl.protocoloadm:protocolo
+ - title: {% trans 'Receber Proposições' %}
+ url: sapl.materia:receber-proposicao
+
+- title: {% trans 'Documentos Administrativos' %}
+ {% if 'documentos_administrativos'|get_config_attr == 'R' %}check_permission: protolcoloadm.list_documentoadministrativo{%endif%}
+ url: sapl.protocoloadm:pesq_doc_adm
+
+- title: {% trans 'Atividade Legislativa' %}
+ children:
+ - title: {% trans 'Proposições' %}
+ url: sapl.materia:proposicao_list
+ check_permission: materia.add_proposicao
+ - title: {% trans 'Matérias Legislativas' %}
+ url: sapl.materia:pesquisar_materia
+ - title: {% trans 'Sessões Plenárias' %}
+ url: sapl.sessao:pesquisar_sessao
+ - title: {% trans 'Pautas das Sessões' %}
+ url: sapl.sessao:pesquisar_pauta
+ - title: {% trans 'Tramitação em Lote' %}
+ url: sapl.materia:primeira_tramitacao_em_lote
+ check_permission: materia.list_tramitacao {% comment %} FIXME transformar para checagens de menu_[funcionalidade]{% endcomment%}
+ - title: {% trans 'Acessório em Lote' %}
+ url: sapl.materia:acessorio_em_lote
+ check_permission: materia.list_documentoacessorio {% comment %} FIXME transformar para checagens de menu_[funcionalidade]{% endcomment%}
+
+- title: {% trans 'Normas Jurídicas' %}
+ children:
+ - title: {% trans 'Pesquisar Normas Jurídicas' %}
+ url: sapl.norma:normajuridica_list
+
+- title: {% trans 'Sistema' %}
+ check_permission: base.menu_sistemas
+ children:
+ - title: {% trans 'Tabelas Auxiliares' %}
+ url: '/sistema'
+ check_permission: base.view_tabelas_auxiliares
+
+{% comment %}
+
- Provedor LexML
+- Publicador LexML
+- Gerenciar Usuários
+- Backup e Restauração
+- Migração de Dados
+- Sobre
+- ZopeEdit Windows
+- Troca de Senha
+{% endcomment%}