kopia lustrzana https://github.com/wagtail/wagtail
Add option to set name to MenuItems generated by modeladmin (#8553)
Co-authored-by: Alexander Rogovskyy <A.rogovskyy@intershop.de>pull/8857/head^2
rodzic
0d78f8eb56
commit
53e2bdbd0d
|
@ -72,6 +72,7 @@ Changelog
|
|||
* Introduce a new auto-updating preview panel inside the page editor (Sage Abdullah)
|
||||
* Add support for Twitter and other text-only embeds in Draftail embed previews (Iman Syed, Paarth Agarwal)
|
||||
* Use new modal dialog component for privacy settings modal (Sage Abdullah)
|
||||
* Add `menu_item_name` to modify MenuItem's name for ModelAdmin (Alexander Rogovskyy, Vu Pham)
|
||||
* Fix: Typo in `ResumeWorkflowActionFormatter` message (Stefan Hammer)
|
||||
* Fix: Throw a meaningful error when saving an image to an unrecognised image format (Christian Franke)
|
||||
* Fix: Remove extra padding for headers with breadcrumbs on mobile viewport (Steven Steinwand)
|
||||
|
|
|
@ -612,6 +612,8 @@ Contributors
|
|||
* Sandeep M A
|
||||
* Bernd de Ridder
|
||||
* Stefano Silvestri
|
||||
* Alexander Rogovskyy
|
||||
|
||||
|
||||
Translators
|
||||
===========
|
||||
|
|
|
@ -52,3 +52,11 @@ This will only work for individual `ModelAdmin` classes registered with their ow
|
|||
**Expected value**: `True` or `False`
|
||||
|
||||
If you'd like this model admin to be excluded from the menu, set to `False`.
|
||||
|
||||
(modeladmin_menu_item_name)=
|
||||
|
||||
## `ModelAdmin.menu_item_name`
|
||||
|
||||
**Expected value**: A string or `None`
|
||||
|
||||
Passed on as the `name` parameter when initialising the `MenuItem` for this class, becoming the `name` attribute value for that instance.
|
||||
|
|
|
@ -92,6 +92,7 @@ Wagtail’s page preview is now available in a side panel within the page editor
|
|||
* Switch all report workflow, redirects, site settings views to use Wagtail’s reusable header component (Paarth Agarwal)
|
||||
* Add support for Twitter and other text-only embeds in Draftail embed previews (Iman Syed, Paarth Agarwal)
|
||||
* Use new modal dialog component for privacy settings modal (Sage Abdullah)
|
||||
* Add `menu_item_name` to modify MenuItem's name for ModelAdmin (Alexander Rogovskyy, Vu Pham)
|
||||
|
||||
### Bug fixes
|
||||
|
||||
|
|
|
@ -23,6 +23,7 @@ class ModelAdminMenuItem(MenuItem):
|
|||
super().__init__(
|
||||
label=model_admin.get_menu_label(),
|
||||
url=url,
|
||||
name=model_admin.get_menu_item_name(),
|
||||
classnames=classnames,
|
||||
icon_name=icon_name,
|
||||
order=order,
|
||||
|
@ -50,6 +51,7 @@ class GroupMenuItem(SubmenuMenuItem):
|
|||
super().__init__(
|
||||
label=modeladmingroup.get_menu_label(),
|
||||
menu=menu,
|
||||
name=modeladmingroup.get_menu_item_name(),
|
||||
classnames=classnames,
|
||||
icon_name=icon_name,
|
||||
order=order,
|
||||
|
|
|
@ -104,6 +104,7 @@ class ModelAdmin(WagtailRegisterable):
|
|||
|
||||
model = None
|
||||
menu_label = None
|
||||
menu_item_name = None
|
||||
menu_icon = None
|
||||
menu_order = None
|
||||
list_display = ("__str__",)
|
||||
|
@ -216,6 +217,12 @@ class ModelAdmin(WagtailRegisterable):
|
|||
"""
|
||||
return self.menu_label or self.opts.verbose_name_plural.title()
|
||||
|
||||
def get_menu_item_name(self):
|
||||
"""
|
||||
Returns the name to be used for the menu item.
|
||||
"""
|
||||
return self.menu_item_name
|
||||
|
||||
def get_menu_icon(self):
|
||||
"""
|
||||
Returns the icon to be used for the menu item. The value is prepended
|
||||
|
@ -699,6 +706,7 @@ class ModelAdminGroup(WagtailRegisterable):
|
|||
|
||||
items = ()
|
||||
menu_label = None
|
||||
menu_item_name = None
|
||||
menu_order = None
|
||||
menu_icon = None
|
||||
|
||||
|
@ -715,6 +723,9 @@ class ModelAdminGroup(WagtailRegisterable):
|
|||
def get_menu_label(self):
|
||||
return self.menu_label or self.get_app_label_from_subitems()
|
||||
|
||||
def get_menu_item_name(self):
|
||||
return self.menu_item_name
|
||||
|
||||
def get_app_label_from_subitems(self):
|
||||
for instance in self.modeladmin_instances:
|
||||
return instance.opts.app_label.title()
|
||||
|
|
|
@ -26,7 +26,7 @@ from wagtail.test.modeladmintest.models import (
|
|||
Token,
|
||||
TranslatableBook,
|
||||
)
|
||||
from wagtail.test.modeladmintest.wagtail_hooks import BookModelAdmin
|
||||
from wagtail.test.modeladmintest.wagtail_hooks import BookModelAdmin, EventsAdminGroup
|
||||
from wagtail.test.utils import WagtailTestUtils
|
||||
|
||||
|
||||
|
@ -1112,3 +1112,42 @@ There are no default tabs on non-Page models so there will be no\
|
|||
# clean up for future checks
|
||||
delattr(Publisher, "content_panels")
|
||||
delattr(Publisher, "edit_handler")
|
||||
|
||||
|
||||
class TestMenuSetting(TestCase, WagtailTestUtils):
|
||||
fixtures = ["modeladmintest_test.json"]
|
||||
|
||||
def setUp(self):
|
||||
self.login()
|
||||
|
||||
def test_default_menu_setting_model_admin(self):
|
||||
modeladmin = BookModelAdmin()
|
||||
|
||||
menu_item = modeladmin.get_menu_item()
|
||||
self.assertEqual(menu_item.label, "Books")
|
||||
self.assertEqual(menu_item.name, "books")
|
||||
|
||||
def test_custom_menu_setting_model_admin(self):
|
||||
modeladmin = BookModelAdmin()
|
||||
modeladmin.menu_label = "Book Model Label"
|
||||
modeladmin.menu_item_name = "bookitem"
|
||||
|
||||
menu_item = modeladmin.get_menu_item()
|
||||
self.assertEqual(menu_item.label, "Book Model Label")
|
||||
self.assertEqual(menu_item.name, "bookitem")
|
||||
|
||||
def test_default_menu_setting_model_admin_group(self):
|
||||
modeladmin = EventsAdminGroup()
|
||||
|
||||
menu_item = modeladmin.get_menu_item()
|
||||
self.assertEqual(menu_item.label, "Events")
|
||||
self.assertEqual(menu_item.name, "events")
|
||||
|
||||
def test_custom_menu_setting_model_admin_group(self):
|
||||
modeladmin = EventsAdminGroup()
|
||||
modeladmin.menu_label = "Event Model Label"
|
||||
modeladmin.menu_item_name = "eventitem"
|
||||
|
||||
menu_item = modeladmin.get_menu_item()
|
||||
self.assertEqual(menu_item.label, "Event Model Label")
|
||||
self.assertEqual(menu_item.name, "eventitem")
|
||||
|
|
Ładowanie…
Reference in New Issue