From 02429028e71f7fec2141c0e71747a1c5da8d4603 Mon Sep 17 00:00:00 2001 From: Matt Westcott Date: Thu, 14 Aug 2014 14:41:37 +0100 Subject: [PATCH] pass request object to MenuItem.render_html to allow customising output per request --- wagtail/wagtailadmin/menu.py | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/wagtail/wagtailadmin/menu.py b/wagtail/wagtailadmin/menu.py index 29d774e03..34b9abcbf 100644 --- a/wagtail/wagtailadmin/menu.py +++ b/wagtail/wagtailadmin/menu.py @@ -36,7 +36,7 @@ class MenuItem(with_metaclass(MediaDefiningClass)): """ return True - def render_html(self): + def render_html(self, request): return format_html( """""", self.name, self.url, self.classnames, self.attr_string, self.label) @@ -76,7 +76,13 @@ class Menu(object): for fn in hooks.get_hooks(self.construct_hook_name): fn(request, menu_items) - rendered_menu_items = [item.render_html() for item in sorted(menu_items, key=lambda i: i.order)] + rendered_menu_items = [] + for item in sorted(menu_items, key=lambda i: i.order): + try: + rendered_menu_items.append(item.render_html(request)) + except TypeError: + # fallback for older render_html methods that don't accept a request arg + rendered_menu_items.append(item.render_html()) return mark_safe(''.join(rendered_menu_items))