mirror of https://github.com/interlegis/sapl.git
Marcio Mazza
9 years ago
4 changed files with 83 additions and 44 deletions
@ -0,0 +1,28 @@ |
|||||
|
from os.path import dirname |
||||
|
|
||||
|
import yaml |
||||
|
from django import template |
||||
|
from django.core.urlresolvers import reverse |
||||
|
from sapl.settings import BASE_DIR |
||||
|
|
||||
|
register = template.Library() |
||||
|
TEMPLATES_DIR = BASE_DIR.child("templates") |
||||
|
|
||||
|
|
||||
|
@register.inclusion_tag('menus/subnav.html', takes_context=True) |
||||
|
def subnav(context, path): |
||||
|
yaml_filename = TEMPLATES_DIR.child(*path.split('/')) |
||||
|
menu = yaml.load(open(yaml_filename, 'r')) |
||||
|
resolve_urls_inplace(menu, context['object'].pk) |
||||
|
return dict(menu=menu) |
||||
|
|
||||
|
|
||||
|
def resolve_urls_inplace(menu, pk): |
||||
|
if isinstance(menu, list): |
||||
|
for item in menu: |
||||
|
resolve_urls_inplace(item, pk) |
||||
|
else: |
||||
|
if 'url' in menu: |
||||
|
menu['url'] = reverse(menu['url'], kwargs={'pk': pk}) |
||||
|
if 'children' in menu: |
||||
|
resolve_urls_inplace(menu['children'], pk) |
@ -0,0 +1,20 @@ |
|||||
|
{% load i18n %} |
||||
|
<ul class="nav nav-pills navbar-right"> |
||||
|
|
||||
|
{% for item in menu %} |
||||
|
{% if item.children %} |
||||
|
<li class="dropdown"> |
||||
|
<a class="dropdown-toggle" data-toggle="dropdown" href="#fakeLink"> |
||||
|
{% trans item.title %} |
||||
|
<span class="fa-chevron-down fa"></span> |
||||
|
</a> |
||||
|
<ul class="dropdown-menu" role="menu">{% for subitem in item.children %} |
||||
|
<li><a href="{{ subitem.url }}">{% trans subitem.title %}</a></li>{% endfor %} |
||||
|
</ul> |
||||
|
</li> |
||||
|
{% else %} |
||||
|
<li><a href="{{ item.url }}">{% trans item.title %}</a></li> |
||||
|
{% endif %} |
||||
|
{% endfor %} |
||||
|
|
||||
|
</ul> |
@ -1,48 +1,7 @@ |
|||||
{% extends "crud/detail.html" %} |
{% extends "crud/detail.html" %} |
||||
{% load i18n %} |
{% load i18n menus %} |
||||
{% block actions %} {% endblock %} |
{% block actions %} {% endblock %} |
||||
{% block sections_nav %} |
|
||||
|
|
||||
<ul class="nav nav-pills navbar-right"> |
|
||||
|
|
||||
<li class="dropdown"> |
|
||||
<a class="dropdown-toggle" data-toggle="dropdown" href="#fakeLink"> |
|
||||
{% trans 'Abertura' %} |
|
||||
<span class="fa-chevron-down fa"></span> |
|
||||
</a> |
|
||||
<ul class="dropdown-menu" role="menu"> |
|
||||
<li><a href="{% url 'sessaoplenaria:detail' object.pk %}">{% trans 'Dados Básicos' %}</a></li> |
|
||||
<li><a href="{% url 'sessaoplenaria:mesa' object.pk %}">{% trans 'Mesa' %}</a></li> |
|
||||
<li><a href="{% url 'sessaoplenaria:presenca' object.pk %}">{% trans 'Presença' %}</a></li> |
|
||||
<li><a href="{% url 'sessaoplenaria:explicacao' object.pk %}">{% trans 'Explicações Pessoais' %}</a></li> |
|
||||
</ul> |
|
||||
</li> |
|
||||
|
|
||||
<li class="dropdown"> |
|
||||
<a class="dropdown-toggle" data-toggle="dropdown" href="#fakeLink"> |
|
||||
{% trans 'Expedientes' %} |
|
||||
<span class="fa-chevron-down fa"></span> |
|
||||
</a> |
|
||||
<ul class="dropdown-menu" role="menu"> |
|
||||
<li><a href="{% url 'sessaoplenaria:expediente' object.pk %}">{% trans 'Expediente Diversos' %}</a></li> |
|
||||
<li><a href="{% url 'sessaoplenaria:expedienteordemdia_list' object.pk %}">{% trans 'Matérias Expediente' %}</a></li> |
|
||||
<li><a href="{% url 'sessaoplenaria:oradorexpediente' object.pk %}">{% trans 'Oradores do Expediente' %}</a></li> |
|
||||
</ul> |
|
||||
</li> |
|
||||
|
|
||||
<li class="dropdown"> |
{% block sections_nav %} |
||||
<a class="dropdown-toggle" data-toggle="dropdown" href="#fakeLink"> |
{% subnav "sessao/subnav.yaml" %} |
||||
{% trans 'Ordem do Dia' %} |
|
||||
<span class="fa-chevron-down fa"></span> |
|
||||
</a> |
|
||||
<ul class="dropdown-menu" role="menu"> |
|
||||
<li><a href="{% url 'sessaoplenaria:materiaordemdia_list' object.pk %}">{% trans 'Matérias Ordem do Dia' %}</a></li> |
|
||||
<li><a href="{% url 'sessaoplenaria:presencaordemdia' object.pk %}">{% trans 'Presença Ordem do Dia' %}</a></li> |
|
||||
</ul> |
|
||||
</li> |
|
||||
|
|
||||
<li><a href="{% url 'sessaoplenaria:painel' object.pk %}">{% trans 'Painel Eletrônico' %}</a></li> |
|
||||
<li><a href="{% url 'sessaoplenaria:resumo' object.pk %}">{% trans 'Resumo' %}</a></li> |
|
||||
|
|
||||
</ul> |
|
||||
{% endblock sections_nav %} |
{% endblock sections_nav %} |
||||
|
@ -0,0 +1,32 @@ |
|||||
|
- title: Abertura |
||||
|
children: |
||||
|
- title: Dados Básicos |
||||
|
url: sessaoplenaria:detail |
||||
|
- title: Mesa |
||||
|
url: sessaoplenaria:mesa |
||||
|
- title: Presença |
||||
|
url: sessaoplenaria:presenca |
||||
|
- title: Explicações Pessoais |
||||
|
url: sessaoplenaria:explicacao |
||||
|
|
||||
|
- title: Expedientes |
||||
|
children: |
||||
|
- title: Expediente Diversos |
||||
|
url: sessaoplenaria:expediente |
||||
|
- title: Matérias Expediente |
||||
|
url: sessaoplenaria:expedienteordemdia_list |
||||
|
- title: Oradores do Expediente |
||||
|
url: sessaoplenaria:oradorexpediente |
||||
|
|
||||
|
- title: Ordem do Dia |
||||
|
children: |
||||
|
- title: Matérias Ordem do Dia |
||||
|
url: sessaoplenaria:materiaordemdia_list |
||||
|
- title: Presença Ordem do Dia |
||||
|
url: sessaoplenaria:presencaordemdia |
||||
|
|
||||
|
- title: Painel Eletrônico |
||||
|
url: sessaoplenaria:painel |
||||
|
|
||||
|
- title: Resumo |
||||
|
url: sessaoplenaria:resumo |
Loading…
Reference in new issue