Allow plugins to add sub navigation points

This commit is contained in:
Raphael Michel
2018-07-14 15:07:35 +02:00
parent 59245c4ec3
commit 886b938f08
3 changed files with 24 additions and 7 deletions
+16 -7
View File
@@ -261,10 +261,10 @@ def get_event_navigation(request: HttpRequest):
]
})
nav += sorted(
merge_in(nav, sorted(
sum((list(a[1]) for a in nav_event.send(request.event, request=request)), []),
key=lambda r: r['label']
)
))
return nav
@@ -336,11 +336,10 @@ def get_global_navigation(request):
]
})
nav += sorted(
merge_in(nav, sorted(
sum((list(a[1]) for a in nav_global.send(request, request=request)), []),
key=lambda r: r['label']
)
))
return nav
@@ -390,9 +389,19 @@ def get_organizer_navigation(request):
'icon': 'group',
})
nav += sorted(
merge_in(nav, sorted(
sum((list(a[1]) for a in nav_organizer.send(request.organizer, request=request, organizer=request.organizer)),
[]),
key=lambda r: r['label']
)
))
return nav
def merge_in(nav, newnav):
for item in newnav:
if 'parent' in item:
parents = [n for n in nav if n['url'] == item['parent']]
if parents:
parents[0]['children'].append(item)
else:
nav.append(item)
@@ -20,6 +20,10 @@ def control_nav_import(sender, request=None, **kwargs):
'event': request.event.slug,
'organizer': request.event.organizer.slug,
}),
'parent': reverse('control:event.orders.checkinlists', kwargs={
'event': request.event.slug,
'organizer': request.event.organizer.slug,
}),
'active': (url.namespace == 'plugins:pretixdroid' and url.url_name == 'config'),
'icon': 'mobile',
}
+4
View File
@@ -18,6 +18,10 @@ def control_nav_import(sender, request=None, **kwargs):
'event': request.event.slug,
'organizer': request.event.organizer.slug,
}),
'parent': reverse('control:event.orders', kwargs={
'event': request.event.slug,
'organizer': request.event.organizer.slug,
}),
'active': (url.namespace == 'plugins:statistics'),
'icon': 'bar-chart',
}