Browse Source

Add subnav template tag

pull/202/head
Marcio Mazza 9 years ago
parent
commit
3932df025f
  1. 28
      base/templatetags/menus.py
  2. 20
      templates/menus/subnav.html
  3. 47
      templates/sessao/sessaoplenaria_detail.html
  4. 32
      templates/sessao/subnav.yaml

28
base/templatetags/menus.py

@ -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)

20
templates/menus/subnav.html

@ -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>

47
templates/sessao/sessaoplenaria_detail.html

@ -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 %}

32
templates/sessao/subnav.yaml

@ -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…
Cancel
Save