# HG changeset patch # User Thierry Florac # Date 1519311508 -3600 # Node ID 0ef5de2d5674f8ff0f857e9c03e1f1c0332d9375 # Parent 5527bc086216c4d3eeaf36d6045a46873649594c Use constants for paragraph types diff -r 5527bc086216 -r 0ef5de2d5674 src/pyams_content/component/association/interfaces/__init__.py --- a/src/pyams_content/component/association/interfaces/__init__.py Thu Feb 22 12:00:05 2018 +0100 +++ b/src/pyams_content/component/association/interfaces/__init__.py Thu Feb 22 15:58:28 2018 +0100 @@ -79,5 +79,8 @@ """Association renderer adapter interface""" +ASSOCIATION_PARAGRAPH_TYPE = 'Associations' + + class IAssociationParagraph(IBaseParagraph): """Associations paragraph interface""" diff -r 5527bc086216 -r 0ef5de2d5674 src/pyams_content/component/association/paragraph.py --- a/src/pyams_content/component/association/paragraph.py Thu Feb 22 12:00:05 2018 +0100 +++ b/src/pyams_content/component/association/paragraph.py Thu Feb 22 15:58:28 2018 +0100 @@ -16,7 +16,7 @@ # import standard library # import interfaces -from pyams_content.component.association.interfaces import IAssociationParagraph +from pyams_content.component.association.interfaces import IAssociationParagraph, ASSOCIATION_PARAGRAPH_TYPE from pyams_content.component.extfile.interfaces import IExtFileContainerTarget from pyams_content.component.links.interfaces import ILinkContainerTarget from pyams_content.component.paragraph.interfaces import IParagraphFactory @@ -42,7 +42,7 @@ icon_hint = _("Associations paragraph") -@utility_config(name='Associations', provides=IParagraphFactory) +@utility_config(name=ASSOCIATION_PARAGRAPH_TYPE, provides=IParagraphFactory) class AssociationParagraphFactory(BaseParagraphFactory): """Associations paragraph factory""" diff -r 5527bc086216 -r 0ef5de2d5674 src/pyams_content/component/association/zmi/paragraph.py --- a/src/pyams_content/component/association/zmi/paragraph.py Thu Feb 22 12:00:05 2018 +0100 +++ b/src/pyams_content/component/association/zmi/paragraph.py Thu Feb 22 15:58:28 2018 +0100 @@ -17,7 +17,7 @@ # import interfaces from pyams_content.component.association.interfaces import IAssociationParagraph, IAssociationContainer, \ - IAssociationInfo + IAssociationInfo, ASSOCIATION_PARAGRAPH_TYPE from pyams_content.component.association.zmi.interfaces import IAssociationsParentForm from pyams_content.component.paragraph.interfaces import IParagraphContainerTarget, IParagraphContainer, \ IParagraphPreview @@ -55,7 +55,7 @@ label = _("Add associations paragraph...") label_css_class = 'fa fa-fw fa-link' url = 'add-association-paragraph.html' - paragraph_type = 'Associations' + paragraph_type = ASSOCIATION_PARAGRAPH_TYPE @pagelet_config(name='add-association-paragraph.html', context=IParagraphContainerTarget, layer=IPyAMSLayer, diff -r 5527bc086216 -r 0ef5de2d5674 src/pyams_content/component/gallery/interfaces/__init__.py --- a/src/pyams_content/component/gallery/interfaces/__init__.py Thu Feb 22 12:00:05 2018 +0100 +++ b/src/pyams_content/component/gallery/interfaces/__init__.py Thu Feb 22 15:58:28 2018 +0100 @@ -125,5 +125,8 @@ """Gallery container target marker interface""" +GALLERY_PARAGRAPH_TYPE = 'Gallery' + + class IGalleryParagraph(IGallery, IBaseParagraph): """Gallery paragraph""" diff -r 5527bc086216 -r 0ef5de2d5674 src/pyams_content/component/gallery/paragraph.py --- a/src/pyams_content/component/gallery/paragraph.py Thu Feb 22 12:00:05 2018 +0100 +++ b/src/pyams_content/component/gallery/paragraph.py Thu Feb 22 15:58:28 2018 +0100 @@ -16,7 +16,7 @@ # import standard library # import interfaces -from pyams_content.component.gallery.interfaces import IGalleryParagraph +from pyams_content.component.gallery.interfaces import IGalleryParagraph, GALLERY_PARAGRAPH_TYPE from pyams_content.component.paragraph.interfaces import IParagraphFactory from pyams_content.features.checker.interfaces import IContentChecker, MISSING_VALUE, MISSING_LANG_VALUE from pyams_i18n.interfaces import II18n, INegotiator, II18nManager @@ -40,7 +40,7 @@ icon_hint = _("Medias gallery") -@utility_config(name='Gallery', provides=IParagraphFactory) +@utility_config(name=GALLERY_PARAGRAPH_TYPE, provides=IParagraphFactory) class GalleryFactory(BaseParagraphFactory): """Gallery paragraph factory""" diff -r 5527bc086216 -r 0ef5de2d5674 src/pyams_content/component/gallery/zmi/paragraph.py --- a/src/pyams_content/component/gallery/zmi/paragraph.py Thu Feb 22 12:00:05 2018 +0100 +++ b/src/pyams_content/component/gallery/zmi/paragraph.py Thu Feb 22 15:58:28 2018 +0100 @@ -16,7 +16,7 @@ # import standard library # import interfaces -from pyams_content.component.gallery.interfaces import IGalleryParagraph, IBaseGallery +from pyams_content.component.gallery.interfaces import IGalleryParagraph, IBaseGallery, GALLERY_PARAGRAPH_TYPE from pyams_content.component.gallery.zmi.interfaces import IGalleryContentsView from pyams_content.component.paragraph.interfaces import IParagraphContainerTarget, IParagraphContainer, \ IParagraphPreview @@ -57,7 +57,7 @@ label = _("Add medias gallery...") label_css_class = 'fa fa-fw fa-picture-o' url = 'add-gallery.html' - paragraph_type = 'Gallery' + paragraph_type = GALLERY_PARAGRAPH_TYPE @pagelet_config(name='add-gallery.html', context=IParagraphContainerTarget, layer=IPyAMSLayer, diff -r 5527bc086216 -r 0ef5de2d5674 src/pyams_content/component/illustration/interfaces/__init__.py --- a/src/pyams_content/component/illustration/interfaces/__init__.py Thu Feb 22 12:00:05 2018 +0100 +++ b/src/pyams_content/component/illustration/interfaces/__init__.py Thu Feb 22 15:58:28 2018 +0100 @@ -75,6 +75,9 @@ """Illustration target marker interface""" +ILLUSTRATION_PARAGRAPH_TYPE = 'Illustration' + + class IIllustrationParagraph(IIllustration, IBaseParagraph): """Illustration paragraph""" diff -r 5527bc086216 -r 0ef5de2d5674 src/pyams_content/component/illustration/paragraph.py --- a/src/pyams_content/component/illustration/paragraph.py Thu Feb 22 12:00:05 2018 +0100 +++ b/src/pyams_content/component/illustration/paragraph.py Thu Feb 22 15:58:28 2018 +0100 @@ -16,7 +16,7 @@ # import standard library # import interfaces -from pyams_content.component.illustration.interfaces import IIllustrationParagraph +from pyams_content.component.illustration.interfaces import IIllustrationParagraph, ILLUSTRATION_PARAGRAPH_TYPE from pyams_content.component.paragraph.interfaces import IParagraphFactory from pyams_content.features.checker.interfaces import IContentChecker from pyams_i18n.interfaces import II18n @@ -40,7 +40,7 @@ icon_hint = _("Illustration") -@utility_config(name='Illustration', provides=IParagraphFactory) +@utility_config(name=ILLUSTRATION_PARAGRAPH_TYPE, provides=IParagraphFactory) class IllustrationFactory(BaseParagraphFactory): """Illustration paragraph factory""" diff -r 5527bc086216 -r 0ef5de2d5674 src/pyams_content/component/illustration/zmi/paragraph.py --- a/src/pyams_content/component/illustration/zmi/paragraph.py Thu Feb 22 12:00:05 2018 +0100 +++ b/src/pyams_content/component/illustration/zmi/paragraph.py Thu Feb 22 15:58:28 2018 +0100 @@ -18,7 +18,8 @@ # import interfaces from pyams_content.component.paragraph.interfaces import IParagraphContainerTarget, \ IParagraphContainer, IParagraphPreview -from pyams_content.component.illustration.interfaces import IIllustration, IIllustrationParagraph +from pyams_content.component.illustration.interfaces import IIllustration, IIllustrationParagraph, \ + ILLUSTRATION_PARAGRAPH_TYPE from pyams_content.component.paragraph.zmi.interfaces import IParagraphInnerEditor, IParagraphContainerView from pyams_content.interfaces import MANAGE_CONTENT_PERMISSION from pyams_form.interfaces.form import IInnerForm, IEditFormButtons @@ -56,7 +57,7 @@ label = _("Add illustration...") label_css_class = 'fa fa-fw fa-file-image-o' url = 'add-illustration.html' - paragraph_type = 'Illustration' + paragraph_type = ILLUSTRATION_PARAGRAPH_TYPE @pagelet_config(name='add-illustration.html', context=IParagraphContainerTarget, layer=IPyAMSLayer, diff -r 5527bc086216 -r 0ef5de2d5674 src/pyams_content/component/paragraph/__init__.py --- a/src/pyams_content/component/paragraph/__init__.py Thu Feb 22 12:00:05 2018 +0100 +++ b/src/pyams_content/component/paragraph/__init__.py Thu Feb 22 15:58:28 2018 +0100 @@ -89,7 +89,7 @@ name = None content_type = None - custom_menu = False + secondary_menu = False class BaseParagraphContentChecker(BaseContentChecker): diff -r 5527bc086216 -r 0ef5de2d5674 src/pyams_content/component/paragraph/header.py --- a/src/pyams_content/component/paragraph/header.py Thu Feb 22 12:00:05 2018 +0100 +++ b/src/pyams_content/component/paragraph/header.py Thu Feb 22 15:58:28 2018 +0100 @@ -17,7 +17,7 @@ # import interfaces from pyams_content.component.paragraph.interfaces import IParagraphFactory -from pyams_content.component.paragraph.interfaces.header import IHeaderParagraph +from pyams_content.component.paragraph.interfaces.header import IHeaderParagraph, HEADER_PARAGRAPH_TYPE from pyams_content.features.checker.interfaces import IContentChecker, MISSING_VALUE, MISSING_LANG_VALUE from pyams_i18n.interfaces import II18n, II18nManager, INegotiator @@ -48,7 +48,7 @@ header = FieldProperty(IHeaderParagraph['header']) -@utility_config(name='Header', provides=IParagraphFactory) +@utility_config(name=HEADER_PARAGRAPH_TYPE, provides=IParagraphFactory) class HTMLParagraphFactory(BaseParagraphFactory): """HTML paragraph factory""" diff -r 5527bc086216 -r 0ef5de2d5674 src/pyams_content/component/paragraph/html.py --- a/src/pyams_content/component/paragraph/html.py Thu Feb 22 12:00:05 2018 +0100 +++ b/src/pyams_content/component/paragraph/html.py Thu Feb 22 15:58:28 2018 +0100 @@ -22,7 +22,8 @@ from pyams_content.component.illustration.interfaces import IIllustrationTarget from pyams_content.component.links.interfaces import ILinkContainerTarget, IInternalLink, IExternalLink, IMailtoLink from pyams_content.component.paragraph.interfaces import IParagraphFactory -from pyams_content.component.paragraph.interfaces.html import IRawParagraph, IHTMLParagraph +from pyams_content.component.paragraph.interfaces.html import RAW_PARAGRAPH_TYPE, IRawParagraph, HTML_PARAGRAPH_TYPE, \ + IHTMLParagraph from pyams_content.features.checker.interfaces import IContentChecker, MISSING_VALUE, MISSING_LANG_VALUE from pyams_i18n.interfaces import II18n, II18nManager, INegotiator from zope.lifecycleevent.interfaces import IObjectAddedEvent, IObjectModifiedEvent @@ -59,13 +60,12 @@ body = FieldProperty(IRawParagraph['body']) -@utility_config(name='raw', provides=IParagraphFactory) +@utility_config(name=RAW_PARAGRAPH_TYPE, provides=IParagraphFactory) class RawParagraphFactory(BaseParagraphFactory): """Raw paragraph factory""" name = _("Raw HTML paragraph") content_type = RawParagraph - custom_menu = True @adapter_config(context=IRawParagraph, provides=IContentChecker) @@ -107,7 +107,7 @@ body = FieldProperty(IHTMLParagraph['body']) -@utility_config(name='HTML', provides=IParagraphFactory) +@utility_config(name=HTML_PARAGRAPH_TYPE, provides=IParagraphFactory) class HTMLParagraphFactory(BaseParagraphFactory): """HTML paragraph factory""" diff -r 5527bc086216 -r 0ef5de2d5674 src/pyams_content/component/paragraph/interfaces/header.py --- a/src/pyams_content/component/paragraph/interfaces/header.py Thu Feb 22 12:00:05 2018 +0100 +++ b/src/pyams_content/component/paragraph/interfaces/header.py Thu Feb 22 15:58:28 2018 +0100 @@ -28,6 +28,9 @@ # HTML paragraph # +HEADER_PARAGRAPH_TYPE = 'Header' + + class IHeaderParagraph(IBaseParagraph): """Header paragraph""" diff -r 5527bc086216 -r 0ef5de2d5674 src/pyams_content/component/paragraph/interfaces/html.py --- a/src/pyams_content/component/paragraph/interfaces/html.py Thu Feb 22 12:00:05 2018 +0100 +++ b/src/pyams_content/component/paragraph/interfaces/html.py Thu Feb 22 15:58:28 2018 +0100 @@ -28,6 +28,9 @@ # Raw HTML paragraph # +RAW_PARAGRAPH_TYPE = 'raw' + + class IRawParagraph(IBaseParagraph): """Raw HTML paragraph interface""" @@ -41,6 +44,9 @@ # HTML paragraph # +HTML_PARAGRAPH_TYPE = 'HTML' + + class IHTMLParagraph(IBaseParagraph): """Rich text paragraph interface""" diff -r 5527bc086216 -r 0ef5de2d5674 src/pyams_content/component/paragraph/interfaces/video.py --- a/src/pyams_content/component/paragraph/interfaces/video.py Thu Feb 22 12:00:05 2018 +0100 +++ b/src/pyams_content/component/paragraph/interfaces/video.py Thu Feb 22 15:58:28 2018 +0100 @@ -30,6 +30,9 @@ # HTML paragraph # +VIDEO_PARAGRAPH_TYPE = 'Video' + + class IVideoParagraph(IBaseParagraph): """Video paragraph""" diff -r 5527bc086216 -r 0ef5de2d5674 src/pyams_content/component/paragraph/video.py --- a/src/pyams_content/component/paragraph/video.py Thu Feb 22 12:00:05 2018 +0100 +++ b/src/pyams_content/component/paragraph/video.py Thu Feb 22 15:58:28 2018 +0100 @@ -19,7 +19,7 @@ from pyams_content.component.extfile.interfaces import IExtFileContainerTarget from pyams_content.component.links.interfaces import ILinkContainerTarget from pyams_content.component.paragraph.interfaces import IParagraphFactory -from pyams_content.component.paragraph.interfaces.video import IVideoParagraph +from pyams_content.component.paragraph.interfaces.video import IVideoParagraph, VIDEO_PARAGRAPH_TYPE from pyams_content.features.checker.interfaces import IContentChecker, MISSING_VALUE, MISSING_LANG_VALUE from pyams_i18n.interfaces import II18nManager, INegotiator, II18n from zope.lifecycleevent.interfaces import IObjectAddedEvent, IObjectModifiedEvent @@ -51,7 +51,7 @@ data = FileProperty(IVideoParagraph['data']) -@utility_config(name='Video', provides=IParagraphFactory) +@utility_config(name=VIDEO_PARAGRAPH_TYPE, provides=IParagraphFactory) class VideoParagraphFactory(BaseParagraphFactory): """Video paragraph factory""" diff -r 5527bc086216 -r 0ef5de2d5674 src/pyams_content/component/paragraph/zmi/__init__.py --- a/src/pyams_content/component/paragraph/zmi/__init__.py Thu Feb 22 12:00:05 2018 +0100 +++ b/src/pyams_content/component/paragraph/zmi/__init__.py Thu Feb 22 15:58:28 2018 +0100 @@ -120,7 +120,7 @@ return MenuDivider.__new__(cls) for factory_name in settings.allowed_paragraphs or (): factory = query_utility(IParagraphFactory, name=factory_name) - if factory.custom_menu: + if factory.secondary_menu: return MenuDivider.__new__(cls) return None diff -r 5527bc086216 -r 0ef5de2d5674 src/pyams_content/component/paragraph/zmi/header.py --- a/src/pyams_content/component/paragraph/zmi/header.py Thu Feb 22 12:00:05 2018 +0100 +++ b/src/pyams_content/component/paragraph/zmi/header.py Thu Feb 22 15:58:28 2018 +0100 @@ -18,7 +18,7 @@ # import interfaces from pyams_content.component.paragraph.interfaces import IParagraphContainerTarget, IParagraphContainer, \ IParagraphPreview -from pyams_content.component.paragraph.interfaces.header import IHeaderParagraph +from pyams_content.component.paragraph.interfaces.header import IHeaderParagraph, HEADER_PARAGRAPH_TYPE from pyams_content.component.paragraph.zmi.interfaces import IParagraphInnerEditor, IParagraphContainerView from pyams_content.interfaces import MANAGE_CONTENT_PERMISSION from pyams_form.interfaces.form import IInnerForm, IEditFormButtons @@ -51,7 +51,7 @@ label = _("Add header paragraph...") label_css_class = 'fa fa-fw fa-header' url = 'add-header-paragraph.html' - paragraph_type = 'Header' + paragraph_type = HEADER_PARAGRAPH_TYPE @pagelet_config(name='add-header-paragraph.html', context=IParagraphContainerTarget, layer=IPyAMSLayer, diff -r 5527bc086216 -r 0ef5de2d5674 src/pyams_content/component/paragraph/zmi/html.py --- a/src/pyams_content/component/paragraph/zmi/html.py Thu Feb 22 12:00:05 2018 +0100 +++ b/src/pyams_content/component/paragraph/zmi/html.py Thu Feb 22 15:58:28 2018 +0100 @@ -19,9 +19,10 @@ from pyams_content.component.association.interfaces import IAssociationTarget from pyams_content.component.association.zmi.interfaces import IAssociationsParentForm from pyams_content.component.illustration.interfaces import IIllustration -from pyams_content.component.paragraph.interfaces import IParagraphContainerTarget, IParagraphContainer, \ - IParagraphPreview -from pyams_content.component.paragraph.interfaces.html import IHTMLParagraph, IRawParagraph +from pyams_content.component.paragraph.interfaces import IParagraphContainerTarget, IParagraphFactorySettings, \ + IParagraphContainer, IParagraphPreview +from pyams_content.component.paragraph.interfaces.html import IHTMLParagraph, IRawParagraph, RAW_PARAGRAPH_TYPE, \ + HTML_PARAGRAPH_TYPE from pyams_content.component.paragraph.zmi.interfaces import IParagraphInnerEditor, IParagraphContainerView from pyams_content.interfaces import MANAGE_CONTENT_PERMISSION from pyams_form.interfaces.form import IInnerForm, IEditFormButtons @@ -39,6 +40,7 @@ from pyams_content.component.paragraph.zmi.container import ParagraphContainerTable, \ ParagraphTitleToolbarViewletManager from pyams_pagelet.pagelet import pagelet_config +from pyams_skin.viewlet.menu import MenuDivider from pyams_template.template import template_config from pyams_utils.adapter import adapter_config from pyams_utils.traversing import get_parent @@ -55,6 +57,18 @@ # Raw HTML paragraph # +@viewlet_config(name='add-raw-paragraph.divider', context=IParagraphContainerTarget, view=IParagraphContainerView, + layer=IPyAMSLayer, manager=IToolbarAddingMenu, weight=990) +class RawParagraphAddMenuDivider(MenuDivider): + """Raw paragraph add menu divider""" + + def __new__(cls, context, request, view, manager): + settings = get_parent(context, IParagraphFactorySettings) + if (settings is not None) and (RawParagraphAddMenu.paragraph_type not in (settings.allowed_paragraphs or ())): + return None + return MenuDivider.__new__(cls) + + @viewlet_config(name='add-raw-paragraph.menu', context=IParagraphContainerTarget, view=IParagraphContainerView, layer=IPyAMSLayer, manager=IToolbarAddingMenu, weight=999) class RawParagraphAddMenu(BaseParagraphAddMenu): @@ -63,7 +77,7 @@ label = _("Add raw HTML paragraph...") label_css_class = 'fa fa-fw fa-code' url = 'add-raw-paragraph.html' - paragraph_type = 'raw' + paragraph_type = RAW_PARAGRAPH_TYPE @pagelet_config(name='add-raw-paragraph.html', context=IParagraphContainerTarget, layer=IPyAMSLayer, @@ -178,7 +192,7 @@ label = _("Add rich text paragraph...") label_css_class = 'fa fa-fw fa-html5' url = 'add-html-paragraph.html' - paragraph_type = 'HTML' + paragraph_type = HTML_PARAGRAPH_TYPE @pagelet_config(name='add-html-paragraph.html', context=IParagraphContainerTarget, layer=IPyAMSLayer, diff -r 5527bc086216 -r 0ef5de2d5674 src/pyams_content/component/paragraph/zmi/video.py --- a/src/pyams_content/component/paragraph/zmi/video.py Thu Feb 22 12:00:05 2018 +0100 +++ b/src/pyams_content/component/paragraph/zmi/video.py Thu Feb 22 15:58:28 2018 +0100 @@ -19,7 +19,7 @@ from pyams_content.component.association.zmi.interfaces import IAssociationsParentForm from pyams_content.component.paragraph.interfaces import IParagraphContainerTarget, IParagraphContainer, \ IParagraphPreview -from pyams_content.component.paragraph.interfaces.video import IVideoParagraph +from pyams_content.component.paragraph.interfaces.video import IVideoParagraph, VIDEO_PARAGRAPH_TYPE from pyams_content.component.paragraph.zmi.interfaces import IParagraphInnerEditor, IParagraphContainerView from pyams_content.interfaces import MANAGE_CONTENT_PERMISSION from pyams_form.interfaces.form import IInnerForm, IEditFormButtons @@ -56,7 +56,7 @@ label = _("Add video paragraph...") label_css_class = 'fa fa-fw fa-film' url = 'add-video-paragraph.html' - paragraph_type = 'Video' + paragraph_type = VIDEO_PARAGRAPH_TYPE @pagelet_config(name='add-video-paragraph.html', context=IParagraphContainerTarget, layer=IPyAMSLayer, diff -r 5527bc086216 -r 0ef5de2d5674 src/pyams_content/component/video/interfaces/__init__.py --- a/src/pyams_content/component/video/interfaces/__init__.py Thu Feb 22 12:00:05 2018 +0100 +++ b/src/pyams_content/component/video/interfaces/__init__.py Thu Feb 22 15:58:28 2018 +0100 @@ -60,6 +60,9 @@ settings = Attribute("Video settings") +EXTERNAL_VIDEO_PARAGRAPH_TYPE = 'External video' + + class IExternalVideoParagraph(IExternalVideo, IBaseParagraph): """External video paragraph""" diff -r 5527bc086216 -r 0ef5de2d5674 src/pyams_content/component/video/paragraph.py --- a/src/pyams_content/component/video/paragraph.py Thu Feb 22 12:00:05 2018 +0100 +++ b/src/pyams_content/component/video/paragraph.py Thu Feb 22 15:58:28 2018 +0100 @@ -9,7 +9,6 @@ # WARRANTIES OF TITLE, MERCHANTABILITY, AGAINST INFRINGEMENT, AND FITNESS # FOR A PARTICULAR PURPOSE. # -from pyams_utils.traversing import get_parent __docformat__ = 'restructuredtext' @@ -18,7 +17,7 @@ # import interfaces from pyams_content.component.paragraph.interfaces import IParagraphFactory -from pyams_content.component.video.interfaces import IExternalVideoParagraph +from pyams_content.component.video.interfaces import IExternalVideoParagraph, EXTERNAL_VIDEO_PARAGRAPH_TYPE from pyams_content.features.checker.interfaces import IContentChecker, MISSING_VALUE, MISSING_LANG_VALUE from pyams_i18n.interfaces import II18n, II18nManager, INegotiator @@ -28,6 +27,7 @@ from pyams_utils.adapter import adapter_config from pyams_utils.registry import utility_config, get_utility from pyams_utils.request import check_request +from pyams_utils.traversing import get_parent from zope.interface import implementer from zope.schema.fieldproperty import FieldProperty @@ -44,7 +44,7 @@ body = FieldProperty(IExternalVideoParagraph['body']) -@utility_config(name='External video', provides=IParagraphFactory) +@utility_config(name=EXTERNAL_VIDEO_PARAGRAPH_TYPE, provides=IParagraphFactory) class ExternalVideoParagraphFactory(BaseParagraphFactory): """External video paragraph factory""" diff -r 5527bc086216 -r 0ef5de2d5674 src/pyams_content/component/video/zmi/paragraph.py --- a/src/pyams_content/component/video/zmi/paragraph.py Thu Feb 22 12:00:05 2018 +0100 +++ b/src/pyams_content/component/video/zmi/paragraph.py Thu Feb 22 15:58:28 2018 +0100 @@ -20,7 +20,7 @@ IBaseParagraph, IParagraphPreview from pyams_content.component.paragraph.zmi.interfaces import IParagraphContainerView, IParagraphInnerEditor from pyams_content.component.video.interfaces import IExternalVideoProvider, IExternalVideoSettings, \ - IExternalVideoParagraph, IExternalVideoRenderer + IExternalVideoParagraph, IExternalVideoRenderer, EXTERNAL_VIDEO_PARAGRAPH_TYPE from pyams_content.interfaces import MANAGE_CONTENT_PERMISSION from pyams_form.interfaces.form import IWidgetsSuffixViewletsManager, IInnerForm, IEditFormButtons from pyams_i18n.interfaces import II18n @@ -60,7 +60,7 @@ label = _("External video...") label_css_class = 'fa fa-fw fa-youtube-play' url = 'add-external-video.html' - paragraph_type = 'External video' + paragraph_type = EXTERNAL_VIDEO_PARAGRAPH_TYPE @pagelet_config(name='add-external-video.html', context=IParagraphContainerTarget, layer=IPyAMSLayer, diff -r 5527bc086216 -r 0ef5de2d5674 src/pyams_content/shared/imagemap/interfaces/__init__.py --- a/src/pyams_content/shared/imagemap/interfaces/__init__.py Thu Feb 22 12:00:05 2018 +0100 +++ b/src/pyams_content/shared/imagemap/interfaces/__init__.py Thu Feb 22 15:58:28 2018 +0100 @@ -75,6 +75,9 @@ """Workflow managed image map interface""" +IMAGEMAP_PARAGRAPH_TYPE = 'ImageMap' + + class IImageMapParagraph(IBaseParagraph): """Image map paragraph""" diff -r 5527bc086216 -r 0ef5de2d5674 src/pyams_content/shared/imagemap/paragraph.py --- a/src/pyams_content/shared/imagemap/paragraph.py Thu Feb 22 12:00:05 2018 +0100 +++ b/src/pyams_content/shared/imagemap/paragraph.py Thu Feb 22 15:58:28 2018 +0100 @@ -18,7 +18,7 @@ # import interfaces from pyams_content.component.paragraph.interfaces import IParagraphFactory from pyams_content.features.checker.interfaces import IContentChecker, ERROR_VALUE, MISSING_VALUE, MISSING_LANG_VALUE -from pyams_content.shared.imagemap.interfaces import IImageMapParagraph +from pyams_content.shared.imagemap.interfaces import IImageMapParagraph, IMAGEMAP_PARAGRAPH_TYPE from pyams_i18n.interfaces import II18nManager, INegotiator, II18n from pyams_workflow.interfaces import IWorkflow, IWorkflowState @@ -47,12 +47,13 @@ return get_reference_target(self.reference, state) -@utility_config(name='ImageMap', provides=IParagraphFactory) +@utility_config(name=IMAGEMAP_PARAGRAPH_TYPE, provides=IParagraphFactory) class ImageMapParagraphFactory(BaseParagraphFactory): """Image map paragraph factory""" name = _("Image map") content_type = ImageMapParagraph + secondary_menu = True @adapter_config(context=IImageMapParagraph, provides=IContentChecker) diff -r 5527bc086216 -r 0ef5de2d5674 src/pyams_content/shared/imagemap/zmi/paragraph.py --- a/src/pyams_content/shared/imagemap/zmi/paragraph.py Thu Feb 22 12:00:05 2018 +0100 +++ b/src/pyams_content/shared/imagemap/zmi/paragraph.py Thu Feb 22 15:58:28 2018 +0100 @@ -22,7 +22,7 @@ from pyams_content.component.paragraph.zmi.interfaces import IParagraphInnerEditor, IParagraphContainerView from pyams_content.interfaces import MANAGE_CONTENT_PERMISSION from pyams_content.shared.common.interfaces import IWfSharedContent -from pyams_content.shared.imagemap.interfaces import IImageMapParagraph +from pyams_content.shared.imagemap.interfaces import IImageMapParagraph, IMAGEMAP_PARAGRAPH_TYPE from pyams_form.interfaces.form import IInnerForm, IEditFormButtons, IWidgetsSuffixViewletsManager from pyams_i18n.interfaces import II18n from pyams_skin.interfaces.viewlet import IToolbarAddingMenu @@ -47,14 +47,14 @@ @viewlet_config(name='add-imagemap-paragraph.menu', context=IParagraphContainerTarget, view=IParagraphContainerView, - layer=IPyAMSLayer, manager=IToolbarAddingMenu, weight=80) + layer=IPyAMSLayer, manager=IToolbarAddingMenu, weight=610) class ImagemapParagraphAddMenu(BaseParagraphAddMenu): """Image map paragraph add menu""" label = _("Add image map...") label_css_class = 'fa fa-fw fa-location-arrow' url = 'add-imagemap-paragraph.html' - paragraph_type = 'ImageMap' + paragraph_type = IMAGEMAP_PARAGRAPH_TYPE @pagelet_config(name='add-imagemap-paragraph.html', context=IParagraphContainerTarget, layer=IPyAMSLayer, diff -r 5527bc086216 -r 0ef5de2d5674 src/pyams_content/shared/logo/interfaces/__init__.py --- a/src/pyams_content/shared/logo/interfaces/__init__.py Thu Feb 22 12:00:05 2018 +0100 +++ b/src/pyams_content/shared/logo/interfaces/__init__.py Thu Feb 22 15:58:28 2018 +0100 @@ -50,6 +50,9 @@ """Workflow managed logo interface""" +LOGOS_PARAGRAPH_TYPE = 'Logos' + + class ILogosParagraph(IBaseParagraph): """Logos paragraph""" diff -r 5527bc086216 -r 0ef5de2d5674 src/pyams_content/shared/logo/paragraph.py --- a/src/pyams_content/shared/logo/paragraph.py Thu Feb 22 12:00:05 2018 +0100 +++ b/src/pyams_content/shared/logo/paragraph.py Thu Feb 22 15:58:28 2018 +0100 @@ -17,7 +17,7 @@ # import interfaces from pyams_content.features.checker.interfaces import IContentChecker, MISSING_VALUE, MISSING_LANG_VALUE, ERROR_VALUE -from pyams_content.shared.logo.interfaces import ILogosParagraph +from pyams_content.shared.logo.interfaces import ILogosParagraph, LOGOS_PARAGRAPH_TYPE from pyams_i18n.interfaces import II18nManager, INegotiator, II18n from pyams_workflow.interfaces import IWorkflow, IWorkflowState @@ -51,12 +51,13 @@ yield get_reference_target(reference, state) -@utility_config(name='Logos', provides=IParagraphFactory) +@utility_config(name=LOGOS_PARAGRAPH_TYPE, provides=IParagraphFactory) class LogosParagraphFactory(BaseParagraphFactory): """Logos paragraph factory""" name = _("Logos") content_type = LogosParagraph + secondary_menu = True @adapter_config(context=ILogosParagraph, provides=IContentChecker) diff -r 5527bc086216 -r 0ef5de2d5674 src/pyams_content/shared/logo/zmi/paragraph.py --- a/src/pyams_content/shared/logo/zmi/paragraph.py Thu Feb 22 12:00:05 2018 +0100 +++ b/src/pyams_content/shared/logo/zmi/paragraph.py Thu Feb 22 15:58:28 2018 +0100 @@ -21,7 +21,7 @@ from pyams_content.component.paragraph.zmi.interfaces import IParagraphInnerEditor from pyams_content.interfaces import MANAGE_CONTENT_PERMISSION from pyams_content.shared.common import IWfSharedContent -from pyams_content.shared.logo.interfaces import ILogosParagraph +from pyams_content.shared.logo.interfaces import ILogosParagraph, LOGOS_PARAGRAPH_TYPE from pyams_form.interfaces.form import IInnerForm, IEditFormButtons from pyams_i18n.interfaces import II18n from pyams_skin.interfaces.viewlet import IToolbarAddingMenu @@ -53,7 +53,7 @@ label = _("Add logos...") label_css_class = 'fa fa-fw fa-th-large' url = 'add-logos-paragraph.html' - paragraph_type = 'Logos' + paragraph_type = LOGOS_PARAGRAPH_TYPE @pagelet_config(name='add-logos-paragraph.html', context=IParagraphContainerTarget, layer=IPyAMSLayer,