Skip to content

Commit

Permalink
Add context to navigation items
Browse files Browse the repository at this point in the history
  • Loading branch information
jscott1989 committed Oct 12, 2016
1 parent ece7aba commit c5ffe05
Show file tree
Hide file tree
Showing 11 changed files with 25 additions and 28 deletions.
4 changes: 2 additions & 2 deletions src/admin/navigation_items.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@


@register_navigation_item(key="admin")
def admin_navigation_item(request):
def admin_navigation_item(request, context):
"""Link to admin category."""
return render_to_string("admin/navigation_items/admin.html",
return render_to_string("admin/navigation_items/admin.html", context,
request=request)
4 changes: 2 additions & 2 deletions src/events/navigation_items.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@


@register_navigation_item(key="events")
def events_navigation_item(request):
def events_navigation_item(request, context):
"""Link to events category."""
return render_to_string("events/navigation_items/events.html",
return render_to_string("events/navigation_items/events.html", context,
request=request)
10 changes: 0 additions & 10 deletions src/happening/context_processors.py
Original file line number Diff line number Diff line change
@@ -1,17 +1,7 @@
"""General context processors."""
from django.contrib.sites.models import Site
from happening.plugins import render_navigation_items


def site(request):
"""Return happening site."""
return {"happening_site": Site.objects.first().happening_site}


def navigation_items(request):
"""Return navigation items."""
if not hasattr(request, "_rendered_navigation_items"):
# This is so that it doesn't recursively render
request._rendered_navigation_items = True
request._rendered_navigation_items = render_navigation_items(request)
return {"navigation_items": request._rendered_navigation_items}
9 changes: 5 additions & 4 deletions src/happening/plugins.py
Original file line number Diff line number Diff line change
Expand Up @@ -131,21 +131,22 @@ def register_navigation_item_inner(func):
return register_navigation_item_inner


def render_navigation_item(item, request):
def render_navigation_item(item, request, context={}):
"""Turn a navigation item string into HTML."""
item_name = item.rsplit(".", 1)[1]
plugin = item.rsplit(".", 1)[0]
if plugin_enabled(plugin) and item_name in registered_navigation_items.get(
plugin, {}):
return registered_navigation_items[plugin][item_name](request)
return registered_navigation_items[plugin][item_name](request, context)
return ""


def render_navigation_items(request):
def render_navigation_items(context):
"""Render navigation items into a string."""
items = ["events.events", "members.members", "notifications.notifications",
"staff.staff", "admin.admin", "pages.sign_in"]
return "".join([render_navigation_item(item, request) for item in items])
return "".join([render_navigation_item(item, context["request"], context)
for item in items])


registered_middlewares = {}
Expand Down
1 change: 0 additions & 1 deletion src/happening/settings.py
Original file line number Diff line number Diff line change
Expand Up @@ -57,7 +57,6 @@
'events.context_processors.events',
'pages.context_processors.pages',
'happening.context_processors.site',
'happening.context_processors.navigation_items',
]
}
}
Expand Down
7 changes: 7 additions & 0 deletions src/happening/templatetags/plugins.py
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,13 @@
register = template.Library()


@register.simple_tag(takes_context=True)
def navigation_items(context, *params):
"""Render navigation items."""
from happening import plugins
return mark_safe(plugins.render_navigation_items(context.flatten()))


@register.simple_tag(takes_context=True)
def plugin_block(context, key, *params):
"""Make a space for plugins to place content in a template."""
Expand Down
4 changes: 2 additions & 2 deletions src/members/navigation_items.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@


@register_navigation_item(key="members")
def members_navigation_item(request):
def members_navigation_item(request, context):
"""Link to members category."""
return render_to_string("members/navigation_items/members.html",
return render_to_string("members/navigation_items/members.html", context,
request=request)
4 changes: 2 additions & 2 deletions src/notifications/navigation_items.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,8 @@


@register_navigation_item(key="notifications")
def notifications_navigation_item(request):
def notifications_navigation_item(request, context):
"""Link to notifications category."""
return render_to_string(
"notifications/navigation_items/notifications.html",
"notifications/navigation_items/notifications.html", context,
request=request)
4 changes: 2 additions & 2 deletions src/pages/navigation_items.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@


@register_navigation_item(key="sign_in")
def sign_in_navigation_item(request):
def sign_in_navigation_item(request, context):
"""Link to sign in/sign out."""
return render_to_string("pages/navigation_items/sign_in.html",
return render_to_string("pages/navigation_items/sign_in.html", context,
request=request)
4 changes: 2 additions & 2 deletions src/staff/navigation_items.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@


@register_navigation_item(key="staff")
def staff_navigation_item(request):
def staff_navigation_item(request, context):
"""Link to staff category."""
return render_to_string("staff/navigation_items/staff.html",
return render_to_string("staff/navigation_items/staff.html", context,
request=request)
2 changes: 1 addition & 1 deletion src/templates/base.html
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,7 @@ <h2 class="main-header__heading main-header__padded">

<div class="main-header__menu menu">
<ul class="menu__list inline-list">
{{navigation_items|safe}}
{% navigation_items %}
</ul>
</div>
</div>
Expand Down

0 comments on commit c5ffe05

Please sign in to comment.