Add register_admin_menu_item hook for registering MenuItems globally

pull/535/head
Matt Westcott 2014-08-11 20:02:04 +01:00
rodzic 0926c90004
commit 4e2ebc2ad2
3 zmienionych plików z 33 dodań i 11 usunięć

Wyświetl plik

@ -11,6 +11,8 @@ except ImportError:
from django.utils.text import slugify
from django.utils.html import format_html
from wagtail.wagtailcore import hooks
class MenuItem(object):
def __init__(self, label, url, name=None, classnames='', attrs=None, order=1000):
@ -29,3 +31,12 @@ class MenuItem(object):
return format_html(
"""<li class="menu-{0}"><a href="{1}" class="{2}"{3}>{4}</a></li>""",
self.name, self.url, self.classnames, self.attr_string, self.label)
_menu_items = None
def get_menu_items():
global _menu_items
if _menu_items is None:
_menu_items = [fn() for fn in hooks.get_hooks('register_admin_menu_item')]
return _menu_items

Wyświetl plik

@ -2,14 +2,11 @@ from __future__ import unicode_literals
from django.conf import settings
from django import template
from django.core import urlresolvers
from django.utils.translation import ugettext_lazy as _
from wagtail.wagtailadmin.menu import MenuItem
from wagtail.wagtailcore import hooks
from wagtail.wagtailcore.models import get_navigation_menu_items, UserPagePermissionsProxy, PageViewRestriction
from wagtail.wagtailcore.utils import camelcase_to_underscore
from wagtail.wagtailadmin.menu import get_menu_items
register = template.Library()
@ -31,13 +28,7 @@ def explorer_subnav(nodes):
@register.inclusion_tag('wagtailadmin/shared/main_nav.html', takes_context=True)
def main_nav(context):
menu_items = [
MenuItem(_('Explorer'), urlresolvers.reverse('wagtailadmin_explore_root'),
classnames='icon icon-folder-open-inverse dl-trigger',
attrs={'data-explorer-menu-url': urlresolvers.reverse('wagtailadmin_explorer_nav')},
order=100),
MenuItem(_('Search'), urlresolvers.reverse('wagtailadmin_pages_search'), classnames='icon icon-search', order=200),
]
menu_items = get_menu_items()[:] # need to clone with [:] because the return value of get_menu_items is global, and construct_main_menu hooks will mutate it
request = context['request']

Wyświetl plik

@ -0,0 +1,20 @@
from django.core import urlresolvers
from django.utils.translation import ugettext_lazy as _
from wagtail.wagtailcore import hooks
from wagtail.wagtailadmin.menu import MenuItem
@hooks.register('register_admin_menu_item')
def register_explorer_menu_item():
return MenuItem(
_('Explorer'), urlresolvers.reverse('wagtailadmin_explore_root'),
classnames='icon icon-folder-open-inverse dl-trigger',
attrs={'data-explorer-menu-url': urlresolvers.reverse('wagtailadmin_explorer_nav')},
order=100)
@hooks.register('register_admin_menu_item')
def register_search_menu_item():
return MenuItem(
_('Search'), urlresolvers.reverse('wagtailadmin_pages_search'),
classnames='icon icon-search', order=200)