Add support for top-level links for simple menus
also add 'messaging_enabled' to global template context, so can include (or not) that stuff in the user menu
This commit is contained in:
parent
0eb394fb86
commit
c1eaf28812
4 changed files with 91 additions and 57 deletions
|
@ -33,12 +33,14 @@ from rattail.util import import_module_path
|
|||
class MenuGroup(Object):
|
||||
title = None
|
||||
items = None
|
||||
is_link = False
|
||||
|
||||
|
||||
class MenuItem(Object):
|
||||
title = None
|
||||
url = None
|
||||
target = None
|
||||
is_link = True
|
||||
is_sep = False
|
||||
|
||||
|
||||
|
@ -62,44 +64,52 @@ def make_simple_menus(request):
|
|||
final_menus = []
|
||||
for topitem in raw_menus:
|
||||
|
||||
# figure out which ones the user has permission to access
|
||||
allowed = []
|
||||
for item in topitem['items']:
|
||||
if topitem.get('type') == 'link':
|
||||
final_menus.append(
|
||||
MenuItem(title=topitem['title'],
|
||||
url=topitem['url'],
|
||||
target=topitem.get('target')))
|
||||
|
||||
if item.get('type') == 'sep':
|
||||
allowed.append(item)
|
||||
else: # assuming 'menu' type
|
||||
|
||||
if item.get('perm'):
|
||||
if request.has_perm(item['perm']):
|
||||
allowed.append(item)
|
||||
else:
|
||||
allowed.append(item)
|
||||
# figure out which ones the user has permission to access
|
||||
allowed = []
|
||||
for item in topitem['items']:
|
||||
|
||||
if allowed:
|
||||
|
||||
# user must have access to something; construct items for the menu
|
||||
menu_items = []
|
||||
for item in allowed:
|
||||
|
||||
# separator
|
||||
if item.get('type') == 'sep':
|
||||
if menu_items and not menu_items[-1].is_sep:
|
||||
menu_items.append(MenuSeparator())
|
||||
allowed.append(item)
|
||||
|
||||
# menu item
|
||||
if item.get('perm'):
|
||||
if request.has_perm(item['perm']):
|
||||
allowed.append(item)
|
||||
else:
|
||||
menu_items.append(
|
||||
MenuItem(title=item['title'],
|
||||
url=item['url'],
|
||||
target=item.get('target')))
|
||||
allowed.append(item)
|
||||
|
||||
# remove final separator if present
|
||||
if menu_items and menu_items[-1].is_sep:
|
||||
menu_items.pop()
|
||||
if allowed:
|
||||
|
||||
# only add if we wound up with something
|
||||
if menu_items:
|
||||
final_menus.append(
|
||||
MenuGroup(title=topitem['title'], items=menu_items))
|
||||
# user must have access to something; construct items for the menu
|
||||
menu_items = []
|
||||
for item in allowed:
|
||||
|
||||
# separator
|
||||
if item.get('type') == 'sep':
|
||||
if menu_items and not menu_items[-1].is_sep:
|
||||
menu_items.append(MenuSeparator())
|
||||
|
||||
# menu item
|
||||
else:
|
||||
menu_items.append(
|
||||
MenuItem(title=item['title'],
|
||||
url=item['url'],
|
||||
target=item.get('target')))
|
||||
|
||||
# remove final separator if present
|
||||
if menu_items and menu_items[-1].is_sep:
|
||||
menu_items.pop()
|
||||
|
||||
# only add if we wound up with something
|
||||
if menu_items:
|
||||
final_menus.append(
|
||||
MenuGroup(title=topitem['title'], items=menu_items))
|
||||
|
||||
return final_menus
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue