From 3716e5280bea5f864b7d1d7197cc2ba2bc14b5aa Mon Sep 17 00:00:00 2001 From: Matt Westcott Date: Mon, 21 Mar 2022 15:17:20 +0000 Subject: [PATCH] Include media declarations from panels on templates --- wagtail/admin/panels.py | 8 ++++++++ wagtail/admin/templates/wagtailadmin/pages/create.html | 6 ++---- wagtail/admin/templates/wagtailadmin/pages/edit.html | 6 ++---- .../admin/templates/wagtailadmin/workflows/create.html | 6 ++---- wagtail/admin/templates/wagtailadmin/workflows/edit.html | 6 ++---- wagtail/admin/views/pages/create.py | 9 ++++++--- wagtail/admin/views/pages/edit.py | 6 +++--- wagtail/admin/views/workflows.py | 9 +++++++-- .../contrib/modeladmin/templates/modeladmin/create.html | 7 ++----- wagtail/contrib/modeladmin/views.py | 1 + .../contrib/settings/templates/wagtailsettings/edit.html | 6 ++---- wagtail/contrib/settings/views.py | 4 ++++ .../templates/wagtailsnippets/snippets/create.html | 4 ++-- .../templates/wagtailsnippets/snippets/edit.html | 4 ++-- wagtail/snippets/views/snippets.py | 9 +++++++-- 15 files changed, 52 insertions(+), 39 deletions(-) diff --git a/wagtail/admin/panels.py b/wagtail/admin/panels.py index 89d743fa12..1f3b85eacf 100644 --- a/wagtail/admin/panels.py +++ b/wagtail/admin/panels.py @@ -9,6 +9,7 @@ from django.contrib.auth import get_user_model from django.core.exceptions import FieldDoesNotExist, ImproperlyConfigured from django.core.signals import setting_changed from django.dispatch import receiver +from django.forms import Media from django.forms.formsets import DELETION_FIELD_NAME, ORDERING_FIELD_NAME from django.forms.models import fields_for_model from django.template.loader import render_to_string @@ -421,6 +422,13 @@ class PanelGroup(Panel): def is_shown(self): return any(child.is_shown() for child in self.children) + @property + def media(self): + media = Media() + for item in self.visible_children: + media += item.media + return media + def html_declarations(self): return mark_safe("".join([c.html_declarations() for c in self.children])) diff --git a/wagtail/admin/templates/wagtailadmin/pages/create.html b/wagtail/admin/templates/wagtailadmin/pages/create.html index e6f7266259..9b88da1f03 100644 --- a/wagtail/admin/templates/wagtailadmin/pages/create.html +++ b/wagtail/admin/templates/wagtailadmin/pages/create.html @@ -89,8 +89,7 @@ {% block extra_css %} {{ block.super }} {% include "wagtailadmin/pages/_editor_css.html" %} - {{ edit_handler.form.media.css }} - {{ action_menu.media.css }} + {{ media.css }} {% endblock %} {% block extra_js %} @@ -100,8 +99,7 @@ {% comment %} Additional js from widgets media. Allows for custom widgets in admin panel. {% endcomment %} - {{ edit_handler.form.media.js }} - {{ action_menu.media.js }} + {{ media.js }} {% comment %} Additional HTML code that edit handlers define through 'html_declarations'. (Technically this isn't JavaScript, but it will generally be data that exists for JavaScript to work with...) diff --git a/wagtail/admin/templates/wagtailadmin/pages/edit.html b/wagtail/admin/templates/wagtailadmin/pages/edit.html index f20e62b1a3..3dae70b39c 100644 --- a/wagtail/admin/templates/wagtailadmin/pages/edit.html +++ b/wagtail/admin/templates/wagtailadmin/pages/edit.html @@ -111,8 +111,7 @@ {% block extra_css %} {{ block.super }} {% include "wagtailadmin/pages/_editor_css.html" %} - {{ edit_handler.form.media.css }} - {{ action_menu.media.css }} + {{ media.css }} {% endblock %} {% block extra_js %} @@ -122,8 +121,7 @@ {% comment %} Additional js from widgets media. Allows for custom widgets in admin panel. {% endcomment %} - {{ edit_handler.form.media.js }} - {{ action_menu.media.js }} + {{ media.js }} {% comment %} Additional HTML code that edit handlers define through 'html_declarations'. (Technically this isn't JavaScript, but it will generally be data that exists for JavaScript to work with...) diff --git a/wagtail/admin/templates/wagtailadmin/workflows/create.html b/wagtail/admin/templates/wagtailadmin/workflows/create.html index 036bd5c44d..131db683ed 100644 --- a/wagtail/admin/templates/wagtailadmin/workflows/create.html +++ b/wagtail/admin/templates/wagtailadmin/workflows/create.html @@ -7,8 +7,7 @@ {{ block.super }} {% include "wagtailadmin/pages/_editor_css.html" %} - {{ edit_handler.form.media.css }} - {{ pages_formset.media.css }} + {{ media.css }} {{ view.media.css }} {% endblock %} @@ -16,8 +15,7 @@ {% block extra_js %} {{ block.super }} {% include "wagtailadmin/pages/_editor_js.html" %} - {{ edit_handler.form.media.js }} - {{ pages_formset.media.js }} + {{ media.js }} {{ edit_handler.html_declarations }} {{ view.media.js }} diff --git a/wagtail/admin/templates/wagtailadmin/workflows/edit.html b/wagtail/admin/templates/wagtailadmin/workflows/edit.html index cda0fd2ecc..6c1ccbcff8 100644 --- a/wagtail/admin/templates/wagtailadmin/workflows/edit.html +++ b/wagtail/admin/templates/wagtailadmin/workflows/edit.html @@ -6,8 +6,7 @@ {% block extra_css %} {{ block.super }} {% include "wagtailadmin/pages/_editor_css.html" %} - {{ edit_handler.form.media.css }} - {{ pages_formset.media.css }} + {{ media.css }} {{ view.media.css }} @@ -16,8 +15,7 @@ {% block extra_js %} {{ block.super }} {% include "wagtailadmin/pages/_editor_js.html" %} - {{ edit_handler.form.media.js }} - {{ pages_formset.media.js }} + {{ media.js }} {{ edit_handler.html_declarations }} {{ view.media.js }} diff --git a/wagtail/admin/views/pages/create.py b/wagtail/admin/views/pages/create.py index 908a36f1c9..3afd5c41d5 100644 --- a/wagtail/admin/views/pages/create.py +++ b/wagtail/admin/views/pages/create.py @@ -326,21 +326,24 @@ class CreateView(TemplateResponseMixin, ContextMixin, HookResponseMixin, View): bound_panel = self.edit_handler.get_bound_panel( request=self.request, instance=self.page, form=self.form ) + action_menu = PageActionMenu( + self.request, view="create", parent_page=self.parent_page + ) + context.update( { "content_type": self.page_content_type, "page_class": self.page_class, "parent_page": self.parent_page, "edit_handler": bound_panel, - "action_menu": PageActionMenu( - self.request, view="create", parent_page=self.parent_page - ), + "action_menu": action_menu, "preview_modes": self.page.preview_modes, "form": self.form, "next": self.next_url, "has_unsaved_changes": self.has_unsaved_changes, "locale": None, "translations": [], + "media": bound_panel.media + self.form.media + action_menu.media, } ) diff --git a/wagtail/admin/views/pages/edit.py b/wagtail/admin/views/pages/edit.py index 6230516903..ecbf8c07a8 100644 --- a/wagtail/admin/views/pages/edit.py +++ b/wagtail/admin/views/pages/edit.py @@ -866,6 +866,7 @@ class EditView(TemplateResponseMixin, ContextMixin, HookResponseMixin, View): bound_panel = self.edit_handler.get_bound_panel( instance=self.page, request=self.request, form=self.form ) + action_menu = PageActionMenu(self.request, view="edit", page=self.page) context.update( { "page": self.page, @@ -873,9 +874,7 @@ class EditView(TemplateResponseMixin, ContextMixin, HookResponseMixin, View): "content_type": self.page_content_type, "edit_handler": bound_panel, "errors_debug": self.errors_debug, - "action_menu": PageActionMenu( - self.request, view="edit", page=self.page - ), + "action_menu": action_menu, "preview_modes": self.page.preview_modes, "form": self.form, "next": self.next_url, @@ -889,6 +888,7 @@ class EditView(TemplateResponseMixin, ContextMixin, HookResponseMixin, View): and getattr(settings, "WAGTAIL_WORKFLOW_CANCEL_ON_PUBLISH", True), "locale": None, "translations": [], + "media": bound_panel.media + self.form.media + action_menu.media, } ) diff --git a/wagtail/admin/views/workflows.py b/wagtail/admin/views/workflows.py index 08760f0a5b..288fa74d55 100644 --- a/wagtail/admin/views/workflows.py +++ b/wagtail/admin/views/workflows.py @@ -100,8 +100,11 @@ class Create(CreateView): bound_panel = self.edit_handler.get_bound_panel( form=form, instance=form.instance, request=self.request ) + pages_formset = self.get_pages_formset() + context["edit_handler"] = bound_panel - context["pages_formset"] = self.get_pages_formset() + context["pages_formset"] = pages_formset + context["media"] = form.media + bound_panel.media + pages_formset.media return context def form_valid(self, form): @@ -181,9 +184,10 @@ class Edit(EditView): bound_panel = self.edit_handler.get_bound_panel( form=form, instance=form.instance, request=self.request ) + pages_formset = self.get_pages_formset() context["edit_handler"] = bound_panel context["pages"] = self.get_paginated_pages() - context["pages_formset"] = self.get_pages_formset() + context["pages_formset"] = pages_formset context["can_disable"] = ( self.permission_policy is None or self.permission_policy.user_has_permission(self.request.user, "delete") @@ -192,6 +196,7 @@ class Edit(EditView): self.permission_policy is None or self.permission_policy.user_has_permission(self.request.user, "create") ) and not self.object.active + context["media"] = bound_panel.media + form.media + pages_formset.media return context @property diff --git a/wagtail/contrib/modeladmin/templates/modeladmin/create.html b/wagtail/contrib/modeladmin/templates/modeladmin/create.html index e9d315277c..82ad34ac4a 100644 --- a/wagtail/contrib/modeladmin/templates/modeladmin/create.html +++ b/wagtail/contrib/modeladmin/templates/modeladmin/create.html @@ -7,19 +7,16 @@ {{ block.super }} {% include "wagtailadmin/pages/_editor_css.html" %} - {{ edit_handler.form.media.css }} - - {{ view.media.css }} + {{ media.css }} {% endblock %} {% block extra_js %} {{ block.super }} {% include "wagtailadmin/pages/_editor_js.html" %} - {{ edit_handler.form.media.js }} + {{ media.js }} {{ edit_handler.html_declarations }} - {{ view.media.js }} {% prepopulated_slugs %}