Cleanud up unused navbar template tags, restored active state on navbar main links

This commit is contained in:
agerbaud
2017-07-20 17:33:34 +02:00
parent 850c928dd8
commit 63a1fac94a
2 changed files with 6 additions and 46 deletions

View File

@@ -30,11 +30,11 @@
<div class="collapse navbar-collapse" id="navbar-collapse">
<ul class="nav navbar-nav navbar-left">
{% if user.is_authenticated %}
<li class="dropdown">
<li class="dropdown {% active namespace="maraudes" append=True %}">
<a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false">{% bootstrap_icon "road" %}&nbsp; Maraudes</span></a>
{% include "maraudes/menu.html" %}
</li>
<li class="dropdown">
<li class="dropdown {% active namespace="notes" append=True %}">
<a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false">{% bootstrap_icon "pencil" %}&nbsp; Notes</span></a>
{% include "notes/menu.html" %}
</li>

View File

@@ -8,56 +8,16 @@ from django.utils.safestring import mark_safe
register = template.Library()
class NavbarNode(template.Node):
_apps = None
def get_menus(self, view, user):
if not self._apps:
from website.navbar import registered
if not registered:
print('WARNING: No app registered into "navbar" module')
self._apps = registered.copy()
return [app_menu(view, user) for app_menu in self._apps]
def get_template(self):
return template.loader.get_template('navbar/layout.html')
def render(self, context):
request = context.get('request')
user, view = context.get('user'), context.get('view')
apps = self.get_menus(view, user)
# Add user menu
context = template.Context({
'apps': apps,
'user': user,
'user_group': context.get('user_group', None),
'next': context.get('next', None),
})
return self.get_template().render(context, request)
@register.tag
def navbar(parser, token):
return NavbarNode()
@register.inclusion_tag("navbar/app-menu.html")
def navbar_menu(app_menu):
return {
'active': app_menu.is_active,
'header': app_menu.header,
'links': app_menu.links,
}
@register.simple_tag(takes_context=True)
def active(context, namespace=None, viewname=None):
def active(context, namespace=None, viewname=None, append=False):
try:
(cur_namespace, cur_viewname) = context.request.resolver_match.view_name.split(":")
except:
(cur_namespace, cur_viewname) = (None, context.request.resolver_match.view_name)
string = "class=\"active\"" if not append else "active"
if namespace == cur_namespace:
if not viewname or viewname == cur_viewname:
return mark_safe("class=\"active\"")
return mark_safe(string)
return ""