From 4788144c86b1dbdc5e230add8407652acefd0316 Mon Sep 17 00:00:00 2001 From: Dave Cranwell Date: Tue, 17 Jun 2014 15:09:10 +0100 Subject: [PATCH] first bash at customisable tabs like in PR #210 --- wagtail/wagtailadmin/edit_handlers.py | 3 +- .../edit_handlers/tabbed_interface.html | 4 +- wagtail/wagtailadmin/views/pages.py | 40 +++++++++++++++++-- 3 files changed, 40 insertions(+), 7 deletions(-) diff --git a/wagtail/wagtailadmin/edit_handlers.py b/wagtail/wagtailadmin/edit_handlers.py index 245f7ad60..ecf692025 100644 --- a/wagtail/wagtailadmin/edit_handlers.py +++ b/wagtail/wagtailadmin/edit_handlers.py @@ -447,10 +447,11 @@ class BaseObjectList(BaseCompositeEditHandler): template = "wagtailadmin/edit_handlers/object_list.html" -def ObjectList(children, heading=""): +def ObjectList(children, heading="", classes=None): return type('_ObjectList', (BaseObjectList,), { 'children': children, 'heading': heading, + 'classes': classes }) diff --git a/wagtail/wagtailadmin/templates/wagtailadmin/edit_handlers/tabbed_interface.html b/wagtail/wagtailadmin/templates/wagtailadmin/edit_handlers/tabbed_interface.html index 5bbccb03b..813e40f53 100644 --- a/wagtail/wagtailadmin/templates/wagtailadmin/edit_handlers/tabbed_interface.html +++ b/wagtail/wagtailadmin/templates/wagtailadmin/edit_handlers/tabbed_interface.html @@ -1,12 +1,12 @@
{% for child in self.children %} -
+
{{ child.render_as_object }}
{% endfor %} diff --git a/wagtail/wagtailadmin/views/pages.py b/wagtail/wagtailadmin/views/pages.py index 69e6b7f4f..dedf3bff3 100644 --- a/wagtail/wagtailadmin/views/pages.py +++ b/wagtail/wagtailadmin/views/pages.py @@ -155,6 +155,9 @@ def create(request, content_type_app_name, content_type_model_name, parent_page_ page.save_revision(user=request.user, submitted_for_moderation=is_submitting) if is_publishing: + message = mark_safe(render_to_string(self.template, { + 'self': self + })) messages.success(request, _("Page '{0}' published.").format(page.title)) elif is_submitting: messages.success(request, _("Page '{0}' submitted for moderation.").format(page.title)) @@ -527,12 +530,41 @@ def set_page_position(request, page_to_move_id): PAGE_EDIT_HANDLERS = {} +def get_default_panels(page_class): + panels = [] + + try: + panels.append(ObjectList(page_class.content_panels, heading='Content')) + except AttributeError: + pass + + try: + panels.append(ObjectList(page_class.promote_panels, heading='Promote')) + except AttributeError: + pass + + try: + panels.append(ObjectList(page_class.settings_panels, heading='Settings', classes='settings')) + except AttributeError: + pass + + return panels + + +def get_panels(page_class): + try: + return page_class.panels + except AttributeError: + return get_default_panels(page_class) + + +def set_panels(page_class, panels): + page_class.panels = panels + + def get_page_edit_handler(page_class): if page_class not in PAGE_EDIT_HANDLERS: - PAGE_EDIT_HANDLERS[page_class] = TabbedInterface([ - ObjectList(page_class.content_panels, heading='Content'), - ObjectList(page_class.promote_panels, heading='Promote') - ]) + PAGE_EDIT_HANDLERS[page_class] = TabbedInterface(get_panels(page_class)) return PAGE_EDIT_HANDLERS[page_class]