# HG changeset patch # User Thierry Florac # Date 1531130346 -7200 # Node ID 7b5d910b22059a3ddc3149715dba360dc749378f # Parent efdeebb63567f1174b44ff480bfd0dacf40fca87 Add optional internal reference to menu diff -r efdeebb63567 -r 7b5d910b2205 src/pyams_content/features/menu/__init__.py --- a/src/pyams_content/features/menu/__init__.py Mon Jul 09 11:58:42 2018 +0200 +++ b/src/pyams_content/features/menu/__init__.py Mon Jul 09 11:59:06 2018 +0200 @@ -20,6 +20,7 @@ # import packages from pyams_content.component.association.container import AssociationContainer +from pyams_sequence.utility import get_reference_target from zope.interface import implementer from zope.schema.fieldproperty import FieldProperty @@ -34,6 +35,10 @@ visible = FieldProperty(IMenu['visible']) title = FieldProperty(IMenu['title']) + reference = FieldProperty(IMenu['reference']) + + def get_target(self): + return get_reference_target(self.reference) @implementer(IMenusContainer) diff -r efdeebb63567 -r 7b5d910b2205 src/pyams_content/features/menu/interfaces/__init__.py --- a/src/pyams_content/features/menu/interfaces/__init__.py Mon Jul 09 11:58:42 2018 +0200 +++ b/src/pyams_content/features/menu/interfaces/__init__.py Mon Jul 09 11:59:06 2018 +0200 @@ -17,10 +17,10 @@ # import interfaces from pyams_content.component.association.interfaces import IAssociationContainer, IAssociationContainerTarget -from zope.annotation.interfaces import IAttributeAnnotatable # import packages from pyams_i18n.schema import I18nTextLineField +from pyams_sequence.schema import InternalReference from zope.container.constraints import containers, contains from zope.interface import Interface from zope.schema import Bool @@ -64,6 +64,13 @@ description=_("Displayed menu label"), required=True) + reference = InternalReference(title=_("Internal reference"), + description=_("Direct reference to menu target"), + required=False) + + def get_target(self): + """Get reference target""" + class IMenusContainer(IAssociationContainer): """Menus container interface""" diff -r efdeebb63567 -r 7b5d910b2205 src/pyams_content/features/menu/zmi/__init__.py --- a/src/pyams_content/features/menu/zmi/__init__.py Mon Jul 09 11:58:42 2018 +0200 +++ b/src/pyams_content/features/menu/zmi/__init__.py Mon Jul 09 11:59:06 2018 +0200 @@ -92,7 +92,7 @@ legend = _("Add new menu") icon_css_class = 'fa fa-fw fa-bars' - fields = field.Fields(IMenu).select('title') + fields = field.Fields(IMenu).select('title', 'reference') edit_permission = MANAGE_TEMPLATE_PERMISSION def create(self, data): @@ -125,7 +125,7 @@ dialog_class = 'modal-large' - fields = field.Fields(IMenu).select('title') + fields = field.Fields(IMenu).select('title', 'reference') edit_permission = MANAGE_TEMPLATE_PERMISSION def get_ajax_output(self, changes):