Add basic navigation menus :3

This commit is contained in:
Danielle McLean 2017-10-24 15:01:17 +11:00
parent ec45a4c250
commit 97eb5c52eb
Signed by untrusted user: 00dani
GPG key ID: 5A5D2D1AFF12EEC5
3 changed files with 39 additions and 0 deletions

View file

@ -23,6 +23,8 @@
</button> </button>
<div class="collapse navbar-collapse" id="navbar"> <div class="collapse navbar-collapse" id="navbar">
{% nav_left %}
{% nav_right request %}
</div> </div>
</nav> </nav>
</header> </header>

View file

@ -0,0 +1,8 @@
<ul class="navbar-nav">
{% for item in items %}
<li class="nav-item"><a class="nav-link" href="{{ item.url }}">
<i class="{{ item.icon }}"></i>
{{ item.label }}
</a></li>
{% endfor %}
</ul>

View file

@ -1,14 +1,23 @@
import json import json
from collections import namedtuple
from os.path import join from os.path import join
from types import SimpleNamespace from types import SimpleNamespace
from django import template from django import template
from django.conf import settings from django.conf import settings
from django.urls import reverse
register = template.Library() register = template.Library()
cache = SimpleNamespace(package_json=None) cache = SimpleNamespace(package_json=None)
class MenuItem:
def __init__(self, label, icon, url):
self.label = label
self.icon = icon
self.url = reverse(url)
@register.simple_tag @register.simple_tag
def get_package_json(): def get_package_json():
if cache.package_json: if cache.package_json:
@ -21,3 +30,23 @@ def get_package_json():
@register.simple_tag @register.simple_tag
def site_name(): def site_name():
return settings.LEMONCURRY_SITE_NAME return settings.LEMONCURRY_SITE_NAME
@register.inclusion_tag('lemoncurry/tags/nav.html')
def nav_left():
items = ()
return {'items': items}
@register.inclusion_tag('lemoncurry/tags/nav.html')
def nav_right(request):
if request.user.is_authenticated():
items = (
MenuItem(label='admin', icon='fa fa-gear', url='admin:index'),
MenuItem(label='log out', icon='fa fa-sign-out', url='admin:logout'),
)
else:
items = (
MenuItem(label='log in', icon='fa fa-sign-in', url='admin:login'),
)
return {'items': items}