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 %}