Files
old-saburly-wagtail-web/env/lib/python3.10/site-packages/wagtail/admin/panels/page_utils.py
2024-08-27 20:33:44 +02:00

77 lines
2.2 KiB
Python

from django.conf import settings
from django.utils.translation import gettext_lazy
from wagtail.admin.forms.pages import WagtailAdminPageForm
from wagtail.models import Page
from wagtail.utils.decorators import cached_classmethod
from .comment_panel import CommentPanel
from .field_panel import FieldPanel
from .group import MultiFieldPanel, ObjectList, TabbedInterface
from .publishing_panel import PublishingPanel
from .title_field_panel import TitleFieldPanel
def set_default_page_edit_handlers(cls):
cls.content_panels = [
TitleFieldPanel("title"),
]
cls.promote_panels = [
MultiFieldPanel(
[
FieldPanel("slug"),
FieldPanel("seo_title"),
FieldPanel("search_description"),
],
gettext_lazy("For search engines"),
),
MultiFieldPanel(
[
FieldPanel("show_in_menus"),
],
gettext_lazy("For site menus"),
),
]
cls.settings_panels = [
PublishingPanel(),
]
if getattr(settings, "WAGTAILADMIN_COMMENTS_ENABLED", True):
cls.settings_panels.append(CommentPanel())
cls.base_form_class = WagtailAdminPageForm
set_default_page_edit_handlers(Page)
@cached_classmethod
def _get_page_edit_handler(cls):
"""
Get the panel to use in the Wagtail admin when editing this page type.
"""
if hasattr(cls, "edit_handler"):
edit_handler = cls.edit_handler
else:
# construct a TabbedInterface made up of content_panels, promote_panels
# and settings_panels, skipping any which are empty
tabs = []
if cls.content_panels:
tabs.append(ObjectList(cls.content_panels, heading=gettext_lazy("Content")))
if cls.promote_panels:
tabs.append(ObjectList(cls.promote_panels, heading=gettext_lazy("Promote")))
if cls.settings_panels:
tabs.append(
ObjectList(cls.settings_panels, heading=gettext_lazy("Settings"))
)
edit_handler = TabbedInterface(tabs, base_form_class=cls.base_form_class)
return edit_handler.bind_to_model(cls)
Page.get_edit_handler = _get_page_edit_handler