# HG changeset patch # User Damien Correia # Date 1528285016 -7200 # Node ID b0bfac7e31609b2dab7baa00d83229c81384259b # Parent 652a551b127eccff07d51375b2a6257f9b2c4023# Parent 4fafaf94701dd23896db920b622a34c71b860a4b merge default diff -r 652a551b127e -r b0bfac7e3160 src/pyams_content/component/association/interfaces/__init__.py --- a/src/pyams_content/component/association/interfaces/__init__.py Wed Jun 06 11:20:14 2018 +0200 +++ b/src/pyams_content/component/association/interfaces/__init__.py Wed Jun 06 13:36:56 2018 +0200 @@ -83,6 +83,7 @@ ASSOCIATION_PARAGRAPH_TYPE = 'Associations' +ASSOCIATION_PARAGRAPH_NAME = _("Associations") ASSOCIATION_PARAGRAPH_RENDERERS = 'PyAMS.associations.renderers' diff -r 652a551b127e -r b0bfac7e3160 src/pyams_content/component/association/paragraph.py --- a/src/pyams_content/component/association/paragraph.py Wed Jun 06 11:20:14 2018 +0200 +++ b/src/pyams_content/component/association/paragraph.py Wed Jun 06 13:36:56 2018 +0200 @@ -17,7 +17,7 @@ # import interfaces from pyams_content.component.association.interfaces import IAssociationParagraph, ASSOCIATION_PARAGRAPH_TYPE, \ - ASSOCIATION_PARAGRAPH_RENDERERS + ASSOCIATION_PARAGRAPH_RENDERERS, ASSOCIATION_PARAGRAPH_NAME from pyams_content.component.extfile.interfaces import IExtFileContainerTarget from pyams_content.component.links.interfaces import ILinkContainerTarget from pyams_content.component.paragraph.interfaces import IParagraphFactory @@ -36,8 +36,6 @@ from zope.interface import implementer from zope.schema.fieldproperty import FieldProperty -from pyams_content import _ - @implementer(IAssociationParagraph, IExtFileContainerTarget, ILinkContainerTarget) @factory_config(provided=IAssociationParagraph) @@ -45,7 +43,7 @@ """Associations paragraph""" icon_class = 'fa-link' - icon_hint = _("Associations paragraph") + icon_hint = ASSOCIATION_PARAGRAPH_NAME renderer = FieldProperty(IAssociationParagraph['renderer']) @@ -54,7 +52,7 @@ class AssociationParagraphFactory(BaseParagraphFactory): """Associations paragraph factory""" - name = _("Associations paragraph") + name = ASSOCIATION_PARAGRAPH_NAME content_type = AssociationParagraph diff -r 652a551b127e -r b0bfac7e3160 src/pyams_content/component/gallery/interfaces/__init__.py --- a/src/pyams_content/component/gallery/interfaces/__init__.py Wed Jun 06 11:20:14 2018 +0200 +++ b/src/pyams_content/component/gallery/interfaces/__init__.py Wed Jun 06 13:36:56 2018 +0200 @@ -127,6 +127,7 @@ GALLERY_PARAGRAPH_TYPE = 'Gallery' +GALLERY_PARAGRAPH_NAME = _("Medias gallery") class IGalleryParagraph(IGallery, IBaseParagraph): diff -r 652a551b127e -r b0bfac7e3160 src/pyams_content/component/gallery/paragraph.py --- a/src/pyams_content/component/gallery/paragraph.py Wed Jun 06 11:20:14 2018 +0200 +++ b/src/pyams_content/component/gallery/paragraph.py Wed Jun 06 13:36:56 2018 +0200 @@ -16,7 +16,7 @@ # import standard library # import interfaces -from pyams_content.component.gallery.interfaces import IGalleryParagraph, GALLERY_PARAGRAPH_TYPE +from pyams_content.component.gallery.interfaces import IGalleryParagraph, GALLERY_PARAGRAPH_TYPE, GALLERY_PARAGRAPH_NAME 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 @@ -29,22 +29,20 @@ from pyams_utils.traversing import get_parent from zope.interface import implementer -from pyams_content import _ - @implementer(IGalleryParagraph) class Gallery(BaseGallery, BaseParagraph): """Gallery class""" icon_class = 'fa-picture-o' - icon_hint = _("Medias gallery") + icon_hint = GALLERY_PARAGRAPH_NAME @utility_config(name=GALLERY_PARAGRAPH_TYPE, provides=IParagraphFactory) class GalleryFactory(BaseParagraphFactory): """Gallery paragraph factory""" - name = _("Medias gallery") + name = GALLERY_PARAGRAPH_NAME content_type = Gallery diff -r 652a551b127e -r b0bfac7e3160 src/pyams_content/component/illustration/interfaces/__init__.py --- a/src/pyams_content/component/illustration/interfaces/__init__.py Wed Jun 06 11:20:14 2018 +0200 +++ b/src/pyams_content/component/illustration/interfaces/__init__.py Wed Jun 06 13:36:56 2018 +0200 @@ -68,6 +68,7 @@ ILLUSTRATION_PARAGRAPH_TYPE = 'Illustration' +ILLUSTRATION_PARAGRAPH_NAME = _("Illustration") class IIllustrationParagraph(IIllustration, IBaseParagraph): diff -r 652a551b127e -r b0bfac7e3160 src/pyams_content/component/illustration/paragraph.py --- a/src/pyams_content/component/illustration/paragraph.py Wed Jun 06 11:20:14 2018 +0200 +++ b/src/pyams_content/component/illustration/paragraph.py Wed Jun 06 13:36:56 2018 +0200 @@ -16,7 +16,8 @@ # import standard library # import interfaces -from pyams_content.component.illustration.interfaces import IIllustrationParagraph, ILLUSTRATION_PARAGRAPH_TYPE +from pyams_content.component.illustration.interfaces import IIllustrationParagraph, ILLUSTRATION_PARAGRAPH_TYPE, \ + ILLUSTRATION_PARAGRAPH_NAME from pyams_content.component.paragraph.interfaces import IParagraphFactory from pyams_content.features.checker.interfaces import IContentChecker from pyams_i18n.interfaces import II18n @@ -29,22 +30,20 @@ from pyams_utils.request import check_request from zope.interface import implementer -from pyams_content import _ - @implementer(IIllustrationParagraph) class Illustration(BaseIllustration, BaseParagraph): """Illustration class""" icon_class = 'fa-file-image-o' - icon_hint = _("Illustration") + icon_hint = ILLUSTRATION_PARAGRAPH_NAME @utility_config(name=ILLUSTRATION_PARAGRAPH_TYPE, provides=IParagraphFactory) class IllustrationFactory(BaseParagraphFactory): """Illustration paragraph factory""" - name = _("Illustration") + name = ILLUSTRATION_PARAGRAPH_NAME content_type = Illustration diff -r 652a551b127e -r b0bfac7e3160 src/pyams_content/component/paragraph/audio.py --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/pyams_content/component/paragraph/audio.py Wed Jun 06 13:36:56 2018 +0200 @@ -0,0 +1,95 @@ +# +# Copyright (c) 2008-2015 Thierry Florac +# All Rights Reserved. +# +# This software is subject to the provisions of the Zope Public License, +# Version 2.1 (ZPL). A copy of the ZPL should accompany this distribution. +# THIS SOFTWARE IS PROVIDED "AS IS" AND ANY AND ALL EXPRESS OR IMPLIED +# WARRANTIES ARE DISCLAIMED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +# WARRANTIES OF TITLE, MERCHANTABILITY, AGAINST INFRINGEMENT, AND FITNESS +# FOR A PARTICULAR PURPOSE. +# + +__docformat__ = 'restructuredtext' + + +# import standard library + +# import interfaces +from pyams_content.component.illustration.interfaces import IIllustrationTarget +from pyams_content.component.paragraph.interfaces import IParagraphFactory +from pyams_content.component.paragraph.interfaces.audio import IAudioParagraph, AUDIO_PARAGRAPH_TYPE, \ + AUDIO_PARAGRAPH_RENDERERS, AUDIO_PARAGRAPH_NAME +from pyams_content.features.checker.interfaces import IContentChecker, MISSING_VALUE, MISSING_LANG_VALUE +from pyams_i18n.interfaces import II18nManager, INegotiator, II18n + +# import packages +from pyams_content.component.paragraph import BaseParagraph, BaseParagraphContentChecker, BaseParagraphFactory +from pyams_content.features.renderer import RenderersVocabulary +from pyams_file.property import FileProperty +from pyams_utils.adapter import adapter_config +from pyams_utils.factory import factory_config +from pyams_utils.registry import utility_config, get_utility +from pyams_utils.traversing import get_parent +from pyams_utils.vocabulary import vocabulary_config +from zope.interface import implementer +from zope.schema.fieldproperty import FieldProperty + + +@implementer(IAudioParagraph, IIllustrationTarget) +@factory_config(provided=IAudioParagraph) +class AudioParagraph(BaseParagraph): + """Audio paragraph class""" + + icon_class = 'fa-volume-up' + icon_hint = AUDIO_PARAGRAPH_NAME + + body = FieldProperty(IAudioParagraph['body']) + description = FieldProperty(IAudioParagraph['description']) + author = FieldProperty(IAudioParagraph['author']) + data = FileProperty(IAudioParagraph['data']) + renderer = FieldProperty(IAudioParagraph['renderer']) + + +@utility_config(name=AUDIO_PARAGRAPH_TYPE, provides=IParagraphFactory) +class AudioParagraphFactory(BaseParagraphFactory): + """Audio paragraph factory""" + + name = AUDIO_PARAGRAPH_NAME + content_type = AudioParagraph + + +@adapter_config(context=IAudioParagraph, provides=IContentChecker) +class AudioParagraphContentChecker(BaseParagraphContentChecker): + """Audio paragraph content checker""" + + def inner_check(self, request): + output = [] + translate = request.localizer.translate + manager = get_parent(self.context, II18nManager) + if manager is not None: + langs = manager.get_languages() + else: + negotiator = get_utility(INegotiator) + langs = (negotiator.server_language, ) + i18n = II18n(self.context) + for lang in langs: + value = i18n.get_attribute('title', lang, request) + if not value: + field_title = translate(IAudioParagraph['title'].title) + if len(langs) == 1: + output.append(translate(MISSING_VALUE).format(field=field_title)) + else: + output.append(translate(MISSING_LANG_VALUE).format(field=field_title, lang=lang)) + for attr in ('author', 'data'): + value = getattr(self.context, attr) + if not value: + output.append(translate(MISSING_VALUE).format(field=translate(IAudioParagraph[attr].title))) + return output + + +@vocabulary_config(name=AUDIO_PARAGRAPH_RENDERERS) +class AudioParagraphRendererVocabulary(RenderersVocabulary): + """Audio paragraph renderers vocabulary""" + + content_interface = IAudioParagraph diff -r 652a551b127e -r b0bfac7e3160 src/pyams_content/component/paragraph/contact.py --- a/src/pyams_content/component/paragraph/contact.py Wed Jun 06 11:20:14 2018 +0200 +++ b/src/pyams_content/component/paragraph/contact.py Wed Jun 06 13:36:56 2018 +0200 @@ -18,7 +18,7 @@ # import interfaces from pyams_content.component.paragraph.interfaces import IParagraphFactory from pyams_content.component.paragraph.interfaces.contact import have_gis, IContactParagraph, CONTACT_PARAGRAPH_TYPE, \ - CONTACT_PARAGRAPH_RENDERERS + CONTACT_PARAGRAPH_RENDERERS, CONTACT_PARAGRAPH_NAME from pyams_content.features.checker.interfaces import IContentChecker, MISSING_VALUE, MISSING_LANG_VALUE from pyams_file.interfaces import IImage, IResponsiveImage from pyams_i18n.interfaces import II18n, II18nManager, INegotiator @@ -35,8 +35,6 @@ from zope.interface import implementer, alsoProvides from zope.schema.fieldproperty import FieldProperty -from pyams_content import _ - @implementer(IContactParagraph) @factory_config(provided=IContactParagraph) @@ -44,7 +42,7 @@ """Contact paragraph""" icon_class = 'fa-id-card-o' - icon_hint = _("Contact card") + icon_hint = CONTACT_PARAGRAPH_NAME name = FieldProperty(IContactParagraph['name']) charge = FieldProperty(IContactParagraph['charge']) @@ -73,7 +71,7 @@ class ContactParagraphFactory(BaseParagraphFactory): """Contact paragraph factory""" - name = _("Contact card") + name = CONTACT_PARAGRAPH_NAME content_type = ContactParagraph secondary_menu = True diff -r 652a551b127e -r b0bfac7e3160 src/pyams_content/component/paragraph/frame.py --- a/src/pyams_content/component/paragraph/frame.py Wed Jun 06 11:20:14 2018 +0200 +++ b/src/pyams_content/component/paragraph/frame.py Wed Jun 06 13:36:56 2018 +0200 @@ -21,7 +21,7 @@ from pyams_content.component.links.interfaces import ILinkContainerTarget from pyams_content.component.paragraph.interfaces import IParagraphFactory from pyams_content.component.paragraph.interfaces.frame import IFrameParagraph, FRAME_PARAGRAPH_TYPE, \ - FRAME_PARAGRAPH_RENDERERS + FRAME_PARAGRAPH_RENDERERS, FRAME_PARAGRAPH_NAME from pyams_content.features.checker.interfaces import IContentChecker, MISSING_VALUE, MISSING_LANG_VALUE from pyams_i18n.interfaces import II18n, II18nManager, INegotiator @@ -36,8 +36,6 @@ from zope.interface import implementer from zope.schema.fieldproperty import FieldProperty -from pyams_content import _ - # # Frame paragraph @@ -49,7 +47,7 @@ """Framed text paragraph""" icon_class = 'fa-list-alt' - icon_hint = _("Framed text") + icon_hint = FRAME_PARAGRAPH_NAME body = FieldProperty(IFrameParagraph['body']) renderer = FieldProperty(IFrameParagraph['renderer']) @@ -59,7 +57,7 @@ class FrameParagraphFactory(BaseParagraphFactory): """Framed text paragraph factory""" - name = _("Framed text paragraph") + name = FRAME_PARAGRAPH_NAME content_type = FrameParagraph secondary_menu = True diff -r 652a551b127e -r b0bfac7e3160 src/pyams_content/component/paragraph/header.py --- a/src/pyams_content/component/paragraph/header.py Wed Jun 06 11:20:14 2018 +0200 +++ b/src/pyams_content/component/paragraph/header.py Wed Jun 06 13:36:56 2018 +0200 @@ -18,7 +18,7 @@ # import interfaces from pyams_content.component.paragraph.interfaces import IParagraphFactory from pyams_content.component.paragraph.interfaces.header import IHeaderParagraph, HEADER_PARAGRAPH_TYPE, \ - HEADER_PARAGRAPH_RENDERERS + HEADER_PARAGRAPH_RENDERERS, HEADER_PARAGRAPH_NAME from pyams_content.features.checker.interfaces import IContentChecker, MISSING_VALUE, MISSING_LANG_VALUE from pyams_i18n.interfaces import II18n, II18nManager, INegotiator @@ -34,8 +34,6 @@ from zope.interface import implementer from zope.schema.fieldproperty import FieldProperty -from pyams_content import _ - @implementer(IHeaderParagraph) @factory_config(provided=IHeaderParagraph) @@ -43,7 +41,7 @@ """Header paragraph""" icon_class = 'fa-download fa-rotate-180' - icon_hint = _("Header") + icon_hint = HEADER_PARAGRAPH_NAME @property def title(self): @@ -58,7 +56,7 @@ class HeaderParagraphFactory(BaseParagraphFactory): """Header paragraph factory""" - name = _("Header paragraph") + name = HEADER_PARAGRAPH_NAME content_type = HeaderParagraph diff -r 652a551b127e -r b0bfac7e3160 src/pyams_content/component/paragraph/html.py --- a/src/pyams_content/component/paragraph/html.py Wed Jun 06 11:20:14 2018 +0200 +++ b/src/pyams_content/component/paragraph/html.py Wed Jun 06 13:36:56 2018 +0200 @@ -22,8 +22,9 @@ 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 RAW_PARAGRAPH_TYPE, IRawParagraph, HTML_PARAGRAPH_TYPE, \ - IHTMLParagraph, RAW_PARAGRAPH_RENDERERS, HTML_PARAGRAPH_RENDERERS +from pyams_content.component.paragraph.interfaces.html import \ + RAW_PARAGRAPH_TYPE, RAW_PARAGRAPH_NAME, RAW_PARAGRAPH_RENDERERS, IRawParagraph, \ + HTML_PARAGRAPH_TYPE, HTML_PARAGRAPH_NAME, HTML_PARAGRAPH_RENDERERS, IHTMLParagraph from pyams_content.features.checker.interfaces import IContentChecker, MISSING_VALUE, MISSING_LANG_VALUE from pyams_i18n.interfaces import II18n, II18nManager, INegotiator from pyams_sequence.interfaces import ISequentialIntIds @@ -47,8 +48,6 @@ from zope.lifecycleevent import ObjectCreatedEvent from zope.schema.fieldproperty import FieldProperty -from pyams_content import _ - # # Raw HTML paragraph @@ -60,7 +59,7 @@ """Raw HTML paragraph""" icon_class = 'fa-code' - icon_hint = _("Raw HTML ") + icon_hint = RAW_PARAGRAPH_NAME body = FieldProperty(IRawParagraph['body']) renderer = FieldProperty(IRawParagraph['renderer']) @@ -70,7 +69,7 @@ class RawParagraphFactory(BaseParagraphFactory): """Raw paragraph factory""" - name = _("Raw HTML paragraph") + name = RAW_PARAGRAPH_NAME content_type = RawParagraph @@ -116,7 +115,7 @@ """HTML paragraph""" icon_class = 'fa-font' - icon_hint = _("Rich text") + icon_hint = HTML_PARAGRAPH_NAME body = FieldProperty(IHTMLParagraph['body']) renderer = FieldProperty(IHTMLParagraph['renderer']) @@ -126,7 +125,7 @@ class HTMLParagraphFactory(BaseParagraphFactory): """HTML paragraph factory""" - name = _("Rich text paragraph") + name = HTML_PARAGRAPH_NAME content_type = HTMLParagraph diff -r 652a551b127e -r b0bfac7e3160 src/pyams_content/component/paragraph/interfaces/audio.py --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/pyams_content/component/paragraph/interfaces/audio.py Wed Jun 06 13:36:56 2018 +0200 @@ -0,0 +1,59 @@ +# +# Copyright (c) 2008-2015 Thierry Florac +# All Rights Reserved. +# +# This software is subject to the provisions of the Zope Public License, +# Version 2.1 (ZPL). A copy of the ZPL should accompany this distribution. +# THIS SOFTWARE IS PROVIDED "AS IS" AND ANY AND ALL EXPRESS OR IMPLIED +# WARRANTIES ARE DISCLAIMED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +# WARRANTIES OF TITLE, MERCHANTABILITY, AGAINST INFRINGEMENT, AND FITNESS +# FOR A PARTICULAR PURPOSE. +# + +__docformat__ = 'restructuredtext' + + +# import standard library + +# import interfaces +from pyams_content.component.paragraph.interfaces import IBaseParagraph + +# import packages +from pyams_file.schema import AudioField +from pyams_i18n.schema import I18nHTMLField, I18nTextField +from zope.schema import TextLine, Choice + +from pyams_content import _ + + +# +# Audio paragraph +# + +AUDIO_PARAGRAPH_TYPE = 'Audio' +AUDIO_PARAGRAPH_NAME = _("Audio") +AUDIO_PARAGRAPH_RENDERERS = 'PyAMS.paragraph.audio.renderers' + + +class IAudioParagraph(IBaseParagraph): + """Audio paragraph""" + + body = I18nHTMLField(title=_("Body"), + required=False) + + description = I18nTextField(title=_("Description"), + description=_("File description displayed by front-office template"), + required=False) + + author = TextLine(title=_("Author"), + description=_("Name of document's author"), + required=False) + + data = AudioField(title=_("Audio data"), + description=_("Audio file content"), + required=True) + + renderer = Choice(title=_("Audio template"), + description=_("Presentation template used for this audio file"), + vocabulary=AUDIO_PARAGRAPH_RENDERERS, + default='default') diff -r 652a551b127e -r b0bfac7e3160 src/pyams_content/component/paragraph/interfaces/contact.py --- a/src/pyams_content/component/paragraph/interfaces/contact.py Wed Jun 06 11:20:14 2018 +0200 +++ b/src/pyams_content/component/paragraph/interfaces/contact.py Wed Jun 06 13:36:56 2018 +0200 @@ -40,6 +40,7 @@ # CONTACT_PARAGRAPH_TYPE = 'Contact' +CONTACT_PARAGRAPH_NAME = _("Contact card") CONTACT_PARAGRAPH_RENDERERS = 'PyAMS.paragraph.contact.renderers' diff -r 652a551b127e -r b0bfac7e3160 src/pyams_content/component/paragraph/interfaces/frame.py --- a/src/pyams_content/component/paragraph/interfaces/frame.py Wed Jun 06 11:20:14 2018 +0200 +++ b/src/pyams_content/component/paragraph/interfaces/frame.py Wed Jun 06 13:36:56 2018 +0200 @@ -30,6 +30,7 @@ # FRAME_PARAGRAPH_TYPE = 'FramedText' +FRAME_PARAGRAPH_NAME = _("Framed text") FRAME_PARAGRAPH_RENDERERS = 'PyAMS.paragraph.text.renderers' diff -r 652a551b127e -r b0bfac7e3160 src/pyams_content/component/paragraph/interfaces/header.py --- a/src/pyams_content/component/paragraph/interfaces/header.py Wed Jun 06 11:20:14 2018 +0200 +++ b/src/pyams_content/component/paragraph/interfaces/header.py Wed Jun 06 13:36:56 2018 +0200 @@ -30,6 +30,7 @@ # HEADER_PARAGRAPH_TYPE = 'Header' +HEADER_PARAGRAPH_NAME = _("Header") HEADER_PARAGRAPH_RENDERERS = 'PyAMS.paragraph.header.renderers' diff -r 652a551b127e -r b0bfac7e3160 src/pyams_content/component/paragraph/interfaces/html.py --- a/src/pyams_content/component/paragraph/interfaces/html.py Wed Jun 06 11:20:14 2018 +0200 +++ b/src/pyams_content/component/paragraph/interfaces/html.py Wed Jun 06 13:36:56 2018 +0200 @@ -30,6 +30,7 @@ # RAW_PARAGRAPH_TYPE = 'raw' +RAW_PARAGRAPH_NAME = _("Raw HTML ") RAW_PARAGRAPH_RENDERERS = 'PyAMS.paragraph.raw.renderers' @@ -52,6 +53,7 @@ # HTML_PARAGRAPH_TYPE = 'HTML' +HTML_PARAGRAPH_NAME = _("Rich text") HTML_PARAGRAPH_RENDERERS = 'PyAMS.paragraph.html.renderers' diff -r 652a551b127e -r b0bfac7e3160 src/pyams_content/component/paragraph/interfaces/keynumber.py --- a/src/pyams_content/component/paragraph/interfaces/keynumber.py Wed Jun 06 11:20:14 2018 +0200 +++ b/src/pyams_content/component/paragraph/interfaces/keynumber.py Wed Jun 06 13:36:56 2018 +0200 @@ -73,6 +73,7 @@ KEYNUMBER_PARAGRAPH_TYPE = 'KeyNumbers' +KEYNUMBER_PARAGRAPH_NAME = _("Key numbers") KEYNUMBER_PARAGRAPH_RENDERERS = 'PyAMS.keynumbers.renderers' diff -r 652a551b127e -r b0bfac7e3160 src/pyams_content/component/paragraph/interfaces/keypoint.py --- a/src/pyams_content/component/paragraph/interfaces/keypoint.py Wed Jun 06 11:20:14 2018 +0200 +++ b/src/pyams_content/component/paragraph/interfaces/keypoint.py Wed Jun 06 13:36:56 2018 +0200 @@ -30,6 +30,7 @@ # KEYPOINTS_PARAGRAPH_TYPE = 'Keypoints' +KEYPOINTS_PARAGRAPH_NAME = _("Key points") KEYPOINTS_PARAGRAPH_RENDERERS = 'PyAMS.paragraph.keypoint.renderers' diff -r 652a551b127e -r b0bfac7e3160 src/pyams_content/component/paragraph/interfaces/milestone.py --- a/src/pyams_content/component/paragraph/interfaces/milestone.py Wed Jun 06 11:20:14 2018 +0200 +++ b/src/pyams_content/component/paragraph/interfaces/milestone.py Wed Jun 06 13:36:56 2018 +0200 @@ -73,6 +73,7 @@ MILESTONE_PARAGRAPH_TYPE = 'Milestones' +MILESTONE_PARAGRAPH_NAME = _("Milestones") MILESTONE_PARAGRAPH_RENDERERS = 'PyAMS.milestones.renderers' diff -r 652a551b127e -r b0bfac7e3160 src/pyams_content/component/paragraph/interfaces/pictogram.py --- a/src/pyams_content/component/paragraph/interfaces/pictogram.py Wed Jun 06 11:20:14 2018 +0200 +++ b/src/pyams_content/component/paragraph/interfaces/pictogram.py Wed Jun 06 13:36:56 2018 +0200 @@ -77,6 +77,7 @@ PICTOGRAM_PARAGRAPH_TYPE = 'Pictograms' +PICTOGRAM_PARAGRAPH_NAME = _("Pictograms") PICTOGRAM_PARAGRAPH_RENDERERS = 'MyAMS.pictograms.renderers' diff -r 652a551b127e -r b0bfac7e3160 src/pyams_content/component/paragraph/interfaces/verbatim.py --- a/src/pyams_content/component/paragraph/interfaces/verbatim.py Wed Jun 06 11:20:14 2018 +0200 +++ b/src/pyams_content/component/paragraph/interfaces/verbatim.py Wed Jun 06 13:36:56 2018 +0200 @@ -30,6 +30,7 @@ # VERBATIM_PARAGRAPH_TYPE = 'Verbatim' +VERBATIM_PARAGRAPH_NAME = _("Verbatim") VERBATIM_PARAGRAPH_RENDERERS = 'PyAMS.paragraph.verbatim.renderers' diff -r 652a551b127e -r b0bfac7e3160 src/pyams_content/component/paragraph/interfaces/video.py --- a/src/pyams_content/component/paragraph/interfaces/video.py Wed Jun 06 11:20:14 2018 +0200 +++ b/src/pyams_content/component/paragraph/interfaces/video.py Wed Jun 06 13:36:56 2018 +0200 @@ -31,6 +31,7 @@ # VIDEO_PARAGRAPH_TYPE = 'Video' +VIDEO_PARAGRAPH_NAME = _("Video") VIDEO_PARAGRAPH_RENDERERS = 'PyAMS.paragraph.video.renderers' diff -r 652a551b127e -r b0bfac7e3160 src/pyams_content/component/paragraph/keynumber.py --- a/src/pyams_content/component/paragraph/keynumber.py Wed Jun 06 11:20:14 2018 +0200 +++ b/src/pyams_content/component/paragraph/keynumber.py Wed Jun 06 13:36:56 2018 +0200 @@ -20,7 +20,7 @@ from pyams_content.component.paragraph.interfaces import IParagraphFactory from pyams_content.component.paragraph.interfaces.keynumber import IKeyNumber, IKeyNumberContainer, \ IKeyNumberContainerTarget, KEYNUMBER_CONTAINER_KEY, IKeyNumberParagraph, KEYNUMBER_PARAGRAPH_TYPE, \ - KEYNUMBER_PARAGRAPH_RENDERERS + KEYNUMBER_PARAGRAPH_RENDERERS, KEYNUMBER_PARAGRAPH_NAME from pyams_content.features.checker.interfaces import IContentChecker, MISSING_VALUE, MISSING_LANG_VALUE from pyams_form.interfaces.form import IFormContextPermissionChecker from pyams_i18n.interfaces import II18n, II18nManager, INegotiator @@ -47,8 +47,6 @@ from zope.location import locate from zope.schema.fieldproperty import FieldProperty -from pyams_content import _ - # # Key number class and adapters @@ -180,7 +178,7 @@ class KeyNumberContainerContentChecker(BaseContentChecker): """Key numbers container content checker""" - label = _("Key numbers") + label = KEYNUMBER_PARAGRAPH_NAME sep = '\n' weight = 200 @@ -203,8 +201,8 @@ class KeyNumberParagraph(BaseParagraph): """Key numbers paragraph""" - icon_class = 'fa-list-ol' - icon_hint = _("Key numbers") + icon_class = 'fa-dashboard' + icon_hint = KEYNUMBER_PARAGRAPH_NAME renderer = FieldProperty(IKeyNumberParagraph['renderer']) @@ -213,7 +211,7 @@ class KeyNumberParagraphFactory(BaseParagraphFactory): """Key numbers paragraph factory""" - name = _("Key numbers paragraph") + name = KEYNUMBER_PARAGRAPH_NAME content_type = KeyNumberParagraph diff -r 652a551b127e -r b0bfac7e3160 src/pyams_content/component/paragraph/keypoint.py --- a/src/pyams_content/component/paragraph/keypoint.py Wed Jun 06 11:20:14 2018 +0200 +++ b/src/pyams_content/component/paragraph/keypoint.py Wed Jun 06 13:36:56 2018 +0200 @@ -18,7 +18,7 @@ # import interfaces from pyams_content.component.paragraph.interfaces import IParagraphFactory from pyams_content.component.paragraph.interfaces.keypoint import IKeypointsParagraph, KEYPOINTS_PARAGRAPH_TYPE, \ - KEYPOINTS_PARAGRAPH_RENDERERS + KEYPOINTS_PARAGRAPH_RENDERERS, KEYPOINTS_PARAGRAPH_NAME from pyams_content.features.checker.interfaces import IContentChecker, MISSING_VALUE, MISSING_LANG_VALUE from pyams_i18n.interfaces import II18n, II18nManager, INegotiator @@ -28,27 +28,19 @@ from pyams_utils.adapter import adapter_config from pyams_utils.factory import factory_config from pyams_utils.registry import utility_config, get_utility -from pyams_utils.text import get_text_start from pyams_utils.traversing import get_parent from pyams_utils.vocabulary import vocabulary_config from zope.interface import implementer from zope.schema.fieldproperty import FieldProperty -from pyams_content import _ - @implementer(IKeypointsParagraph) @factory_config(provided=IKeypointsParagraph) class KeypointsParagraph(BaseParagraph): """Key points paragraph""" - icon_class = 'fa-key' - icon_hint = _("Key points") - - @property - def title(self): - body = II18n(self).query_attribute('body') - return get_text_start(body, 50, 10) + icon_class = 'fa-list-ol' + icon_hint = KEYPOINTS_PARAGRAPH_NAME body = FieldProperty(IKeypointsParagraph['body']) renderer = FieldProperty(IKeypointsParagraph['renderer']) @@ -58,7 +50,7 @@ class KeypointsParagraphFactory(BaseParagraphFactory): """Key points paragraph factory""" - name = _("Key points paragraph") + name = KEYPOINTS_PARAGRAPH_NAME content_type = KeypointsParagraph secondary_menu = True diff -r 652a551b127e -r b0bfac7e3160 src/pyams_content/component/paragraph/milestone.py --- a/src/pyams_content/component/paragraph/milestone.py Wed Jun 06 11:20:14 2018 +0200 +++ b/src/pyams_content/component/paragraph/milestone.py Wed Jun 06 13:36:56 2018 +0200 @@ -21,7 +21,7 @@ IParagraphFactory from pyams_content.component.paragraph.interfaces.milestone import IMilestone, IMilestoneContainer, \ IMilestoneContainerTarget, MILESTONE_CONTAINER_KEY, IMilestoneParagraph, MILESTONE_PARAGRAPH_TYPE, \ - MILESTONE_PARAGRAPH_RENDERERS + MILESTONE_PARAGRAPH_RENDERERS, MILESTONE_PARAGRAPH_NAME from pyams_content.features.checker.interfaces import IContentChecker, MISSING_VALUE, MISSING_LANG_VALUE, ERROR_VALUE from pyams_form.interfaces.form import IFormContextPermissionChecker from pyams_i18n.interfaces import II18n, II18nManager, INegotiator @@ -196,7 +196,7 @@ class MilestoneContainerContentChecker(BaseContentChecker): """Milestones container content checker""" - label = _("Milestones") + label = MILESTONE_PARAGRAPH_NAME sep = '\n' weight = 200 @@ -219,7 +219,7 @@ """Milestones paragraph""" icon_class = 'fa-arrows-h' - icon_hint = _("Milestones") + icon_hint = MILESTONE_PARAGRAPH_NAME renderer = FieldProperty(IMilestoneParagraph['renderer']) @@ -228,7 +228,7 @@ class MilestoneParagraphFactory(BaseParagraphFactory): """Milestones paragraph factory""" - name = _("Milestones paragraph") + name = MILESTONE_PARAGRAPH_NAME content_type = MilestoneParagraph diff -r 652a551b127e -r b0bfac7e3160 src/pyams_content/component/paragraph/pictogram.py --- a/src/pyams_content/component/paragraph/pictogram.py Wed Jun 06 11:20:14 2018 +0200 +++ b/src/pyams_content/component/paragraph/pictogram.py Wed Jun 06 13:36:56 2018 +0200 @@ -21,7 +21,7 @@ from pyams_content.component.paragraph import IParagraphFactory from pyams_content.component.paragraph.interfaces.pictogram import IPictogramItem, IPictogramContainerTarget, \ IPictogramContainer, PICTOGRAM_CONTAINER_KEY, IPictogramParagraph, PICTOGRAM_PARAGRAPH_TYPE, \ - PICTOGRAM_PARAGRAPH_RENDERERS + PICTOGRAM_PARAGRAPH_RENDERERS, PICTOGRAM_PARAGRAPH_NAME from pyams_content.features.checker.interfaces import IContentChecker, MISSING_VALUE, MISSING_LANG_VALUE, ERROR_VALUE from pyams_content.reference.pictograms.interfaces import IPictogramTable from pyams_form.interfaces.form import IFormContextPermissionChecker @@ -186,7 +186,7 @@ class PictogramContainerContentChecker(BaseContentChecker): """Pictogram container content checker""" - label = _("Pictograms") + label = PICTOGRAM_PARAGRAPH_NAME sep = '\n' weight = 210 @@ -209,7 +209,7 @@ """Pictograms paragraph""" icon_class = 'fa-linode' - icon_hint = _("Pictograms") + icon_hint = PICTOGRAM_PARAGRAPH_NAME renderer = FieldProperty(IPictogramParagraph['renderer']) @@ -218,7 +218,7 @@ class PictogramParagraphFactory(BaseParagraphFactory): """Pictograms paragraph factory""" - name = _("Pictograms paragraph") + name = PICTOGRAM_PARAGRAPH_NAME content_type = PictogramParagraph diff -r 652a551b127e -r b0bfac7e3160 src/pyams_content/component/paragraph/verbatim.py --- a/src/pyams_content/component/paragraph/verbatim.py Wed Jun 06 11:20:14 2018 +0200 +++ b/src/pyams_content/component/paragraph/verbatim.py Wed Jun 06 13:36:56 2018 +0200 @@ -19,7 +19,7 @@ from pyams_content.component.illustration.interfaces import IIllustrationTarget from pyams_content.component.paragraph.interfaces import IParagraphFactory from pyams_content.component.paragraph.interfaces.verbatim import IVerbatimParagraph, VERBATIM_PARAGRAPH_TYPE, \ - VERBATIM_PARAGRAPH_RENDERERS + VERBATIM_PARAGRAPH_RENDERERS, VERBATIM_PARAGRAPH_NAME from pyams_content.features.checker.interfaces import IContentChecker, MISSING_VALUE, MISSING_LANG_VALUE from pyams_i18n.interfaces import II18n, II18nManager, INegotiator @@ -34,8 +34,6 @@ from zope.interface import implementer from zope.schema.fieldproperty import FieldProperty -from pyams_content import _ - # # Frame paragraph @@ -47,7 +45,7 @@ """Verbatim paragraph""" icon_class = 'fa-quote-right' - icon_hint = _("Verbatim") + icon_hint = VERBATIM_PARAGRAPH_NAME quote = FieldProperty(IVerbatimParagraph['quote']) author = FieldProperty(IVerbatimParagraph['author']) @@ -59,7 +57,7 @@ class VerbatimParagraphFactory(BaseParagraphFactory): """Verbatim paragraph factory""" - name = _("Verbatim paragraph") + name = VERBATIM_PARAGRAPH_NAME content_type = VerbatimParagraph secondary_menu = True diff -r 652a551b127e -r b0bfac7e3160 src/pyams_content/component/paragraph/video.py --- a/src/pyams_content/component/paragraph/video.py Wed Jun 06 11:20:14 2018 +0200 +++ b/src/pyams_content/component/paragraph/video.py Wed Jun 06 13:36:56 2018 +0200 @@ -18,14 +18,12 @@ # import interfaces from pyams_content.component.paragraph.interfaces import IParagraphFactory from pyams_content.component.paragraph.interfaces.video import IVideoParagraph, VIDEO_PARAGRAPH_TYPE, \ - VIDEO_PARAGRAPH_RENDERERS + VIDEO_PARAGRAPH_RENDERERS, VIDEO_PARAGRAPH_NAME 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 # import packages from pyams_content.component.paragraph import BaseParagraph, BaseParagraphContentChecker, BaseParagraphFactory -from pyams_content.component.paragraph.html import check_associations from pyams_content.features.renderer import RenderersVocabulary from pyams_file.property import FileProperty from pyams_utils.adapter import adapter_config @@ -33,12 +31,9 @@ from pyams_utils.registry import utility_config, get_utility from pyams_utils.traversing import get_parent from pyams_utils.vocabulary import vocabulary_config -from pyramid.events import subscriber from zope.interface import implementer from zope.schema.fieldproperty import FieldProperty -from pyams_content import _ - @implementer(IVideoParagraph) @factory_config(provided=IVideoParagraph) @@ -46,7 +41,7 @@ """Video paragraph class""" icon_class = 'fa-film' - icon_hint = _("Video") + icon_hint = VIDEO_PARAGRAPH_NAME body = FieldProperty(IVideoParagraph['body']) description = FieldProperty(IVideoParagraph['description']) @@ -59,26 +54,10 @@ class VideoParagraphFactory(BaseParagraphFactory): """Video paragraph factory""" - name = _("Video") + name = VIDEO_PARAGRAPH_NAME content_type = VideoParagraph -@subscriber(IObjectAddedEvent, context_selector=IVideoParagraph) -def handle_added_video_paragraph(event): - """Check for new associations from added paragraph""" - paragraph = event.object - for lang, body in (paragraph.body or {}).items(): - check_associations(paragraph, body, lang, notify=False) - - -@subscriber(IObjectModifiedEvent, context_selector=IVideoParagraph) -def handle_modified_video_paragraph(event): - """Check for new associations from modified paragraph""" - paragraph = event.object - for lang, body in (paragraph.body or {}).items(): - check_associations(paragraph, body, lang, notify=False) - - @adapter_config(context=IVideoParagraph, provides=IContentChecker) class VideoParagraphContentChecker(BaseParagraphContentChecker): """Video paragraph content checker""" diff -r 652a551b127e -r b0bfac7e3160 src/pyams_content/component/paragraph/zmi/audio.py --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/pyams_content/component/paragraph/zmi/audio.py Wed Jun 06 13:36:56 2018 +0200 @@ -0,0 +1,182 @@ +# +# Copyright (c) 2008-2015 Thierry Florac +# All Rights Reserved. +# +# This software is subject to the provisions of the Zope Public License, +# Version 2.1 (ZPL). A copy of the ZPL should accompany this distribution. +# THIS SOFTWARE IS PROVIDED "AS IS" AND ANY AND ALL EXPRESS OR IMPLIED +# WARRANTIES ARE DISCLAIMED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +# WARRANTIES OF TITLE, MERCHANTABILITY, AGAINST INFRINGEMENT, AND FITNESS +# FOR A PARTICULAR PURPOSE. +# + +__docformat__ = 'restructuredtext' + + +# import standard library + +# import interfaces +from pyams_content.component.association.zmi.interfaces import IAssociationsParentForm +from pyams_content.component.paragraph.interfaces import IParagraphContainerTarget, IParagraphContainer +from pyams_content.component.paragraph.interfaces.audio import IAudioParagraph, AUDIO_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 +from pyams_skin.interfaces.viewlet import IToolbarAddingMenu +from pyams_skin.layer import IPyAMSLayer +from pyams_zmi.interfaces import IPropertiesEditForm +from transaction.interfaces import ITransactionManager +from z3c.form.interfaces import INPUT_MODE + +# import packages +from pyams_content.component.paragraph.audio import AudioParagraph +from pyams_content.component.paragraph.zmi import BaseParagraphAJAXAddForm, BaseParagraphAJAXEditForm, \ + BaseParagraphAddMenu, BaseParagraphPropertiesEditForm, IParagraphEditFormButtons +from pyams_content.features.renderer.zmi.widget import RendererFieldWidget +from pyams_form.group import NamedWidgetsGroup +from pyams_pagelet.pagelet import pagelet_config +from pyams_skin.event import get_json_form_refresh_event, get_json_widget_refresh_event +from pyams_utils.adapter import adapter_config +from pyams_viewlet.viewlet import viewlet_config +from pyams_zmi.form import AdminDialogAddForm +from pyramid.view import view_config +from z3c.form import field, button +from zope.interface import implementer + +from pyams_content import _ + + +@viewlet_config(name='add-audio-paragraph.menu', context=IParagraphContainerTarget, view=IParagraphContainerView, + layer=IPyAMSLayer, manager=IToolbarAddingMenu, weight=80) +class AudioParagraphAddMenu(BaseParagraphAddMenu): + """Audio paragraph add menu""" + + label = _("Audio paragraph...") + label_css_class = 'fa fa-fw fa-volume-up' + url = 'add-audio-paragraph.html' + paragraph_type = AUDIO_PARAGRAPH_TYPE + + +@pagelet_config(name='add-audio-paragraph.html', context=IParagraphContainerTarget, layer=IPyAMSLayer, + permission=MANAGE_CONTENT_PERMISSION) +class AudioParagraphAddForm(AdminDialogAddForm): + """Audio paragraph add form""" + + legend = _("Add new audio paragraph") + dialog_class = 'modal-large' + icon_css_class = 'fa fa-fw fa-volume-up' + + fields = field.Fields(IAudioParagraph).omit('__parent__', '__name__', 'visible') + ajax_handler = 'add-audio-paragraph.json' + edit_permission = MANAGE_CONTENT_PERMISSION + + def updateWidgets(self, prefix=None): + super(AudioParagraphAddForm, self).updateWidgets(prefix) + if 'description' in self.widgets: + self.widgets['description'].widget_css_class = 'textarea' + if 'body' in self.widgets: + self.widgets['body'].label = '' + + def updateGroups(self): + self.add_group(NamedWidgetsGroup(self, 'body_group', self.widgets, ('body',), + bordered=False, + legend=_("HTML content"), + css_class='inner switcher padding-right-10 no-y-padding pull-left', + switch=True, + display_mode='auto')) + self.add_group(NamedWidgetsGroup(self, 'data_group', self.widgets, + ('description', 'author', 'data', 'renderer'), + bordered=False)) + super(AudioParagraphAddForm, self).updateGroups() + + def create(self, data): + return AudioParagraph() + + def add(self, object): + IParagraphContainer(self.context).append(object) + + +@view_config(name='add-audio-paragraph.json', context=IParagraphContainerTarget, request_type=IPyAMSLayer, + permission=MANAGE_CONTENT_PERMISSION, renderer='json', xhr=True) +class AudioParagraphAJAXAddForm(BaseParagraphAJAXAddForm, AudioParagraphAddForm): + """Audio paragraph add form, JSON renderer""" + + +@pagelet_config(name='properties.html', context=IAudioParagraph, layer=IPyAMSLayer, + permission=MANAGE_CONTENT_PERMISSION) +class AudioParagraphPropertiesEditForm(BaseParagraphPropertiesEditForm): + """Audio paragraph properties edit form""" + + prefix = 'audio_properties.' + + legend = _("Edit audio properties") + dialog_class = 'modal-large' + icon_css_class = 'fa fa-fw fa-volume-up' + + fields = field.Fields(IAudioParagraph).omit('__parent__', '__name__', 'visible') + fields['renderer'].widgetFactory = RendererFieldWidget + + ajax_handler = 'properties.json' + edit_permission = MANAGE_CONTENT_PERMISSION + + def updateWidgets(self, prefix=None): + super(AudioParagraphPropertiesEditForm, self).updateWidgets(prefix) + if 'description' in self.widgets: + self.widgets['description'].widget_css_class = 'textarea' + if 'body' in self.widgets: + self.widgets['body'].label = '' + + def updateGroups(self): + self.add_group(NamedWidgetsGroup(self, 'body_group', self.widgets, ('body',), + bordered=False, + fieldset_class='margin-top-10 padding-y-5', + legend=_("HTML content"), + css_class='inner switcher padding-right-10 no-y-padding pull-left', + switch=True, + display_mode='auto')) + self.add_group(NamedWidgetsGroup(self, 'data_group', self.widgets, + ('description', 'author', 'data', 'renderer'), + bordered=False)) + super(AudioParagraphPropertiesEditForm, self).updateGroups() + + +@view_config(name='properties.json', context=IAudioParagraph, request_type=IPyAMSLayer, + permission=MANAGE_CONTENT_PERMISSION, renderer='json', xhr=True) +class AudioParagraphPropertiesAJAXEditForm(BaseParagraphAJAXEditForm, AudioParagraphPropertiesEditForm): + """Audio paragraph properties edit form, JSON renderer""" + + +@adapter_config(context=(IAudioParagraph, IPyAMSLayer), provides=IParagraphInnerEditor) +@implementer(IInnerForm, IPropertiesEditForm, IAssociationsParentForm) +class AudioParagraphPropertiesInnerEditForm(AudioParagraphPropertiesEditForm): + """Audio paragraph properties inner edit form""" + + legend = None + ajax_handler = 'inner-properties.json' + + @property + def buttons(self): + if self.mode == INPUT_MODE: + return button.Buttons(IParagraphEditFormButtons) + else: + return button.Buttons() + + +@view_config(name='inner-properties.json', context=IAudioParagraph, request_type=IPyAMSLayer, + permission=MANAGE_CONTENT_PERMISSION, renderer='json', xhr=True) +class AudioParagraphPropertiesInnerAJAXEditForm(BaseParagraphAJAXEditForm, AudioParagraphPropertiesInnerEditForm): + """Audio paragraph properties inner deit form, JSON renderer""" + + def get_ajax_output(self, changes): + output = super(AudioParagraphPropertiesInnerAJAXEditForm, self).get_ajax_output(changes) + updated = changes.get(IAudioParagraph, ()) + if 'data' in updated: + # we have to commit transaction to be able to handle blobs... + ITransactionManager(self.context).get().commit() + output.setdefault('events', []).append( + get_json_form_refresh_event(self.context, self.request, AudioParagraphPropertiesInnerEditForm)) + elif 'renderer' in updated: + output.setdefault('events', []).append( + get_json_widget_refresh_event(self.context, self.request, + AudioParagraphPropertiesInnerEditForm, 'renderer')) + return output diff -r 652a551b127e -r b0bfac7e3160 src/pyams_content/component/paragraph/zmi/keynumber.py --- a/src/pyams_content/component/paragraph/zmi/keynumber.py Wed Jun 06 11:20:14 2018 +0200 +++ b/src/pyams_content/component/paragraph/zmi/keynumber.py Wed Jun 06 13:36:56 2018 +0200 @@ -74,7 +74,7 @@ """Key number paragraph add menu""" label = _("Key numbers...") - label_css_class = 'fa fa-fw fa-list-ol' + label_css_class = 'fa fa-fw fa-dashboard' url = 'add-keynumber-paragraph.html' paragraph_type = KEYNUMBER_PARAGRAPH_TYPE @@ -85,7 +85,7 @@ """Key number paragraph add form""" legend = _("Add new key number paragraph") - icon_css_class = 'fa fa-fw fa-list-ol' + icon_css_class = 'fa fa-fw fa-dashboard' fields = field.Fields(IKeyNumberParagraph).select('title', 'renderer') ajax_handler = 'add-keynumber-paragraph.json' @@ -117,7 +117,7 @@ return II18n(content).query_attribute('title', request=self.request) legend = _("Edit key number paragraph properties") - icon_css_class = 'fa fa-fw fa-list-ol' + icon_css_class = 'fa fa-fw fa-dashboard' fields = field.Fields(IKeyNumberParagraph).select('title', 'renderer') fields['renderer'].widgetFactory = RendererFieldWidget @@ -306,7 +306,7 @@ """Key number add form""" legend = _("Add new keynumber") - icon_css_class = 'fa fa-fw fa-list-ol' + icon_css_class = 'fa fa-fw fa-dashboard' fields = field.Fields(IKeyNumber).omit('__parent__', '__name__', 'visible') ajax_handler = 'add-keynumber.json' @@ -339,7 +339,7 @@ prefix = 'keynumber_properties.' legend = _("Edit keynumber properties") - icon_css_class = 'fa fa-fw fa-list-ol' + icon_css_class = 'fa fa-fw fa-dashboard' fields = field.Fields(IKeyNumber).omit('__parent__', '__name__', 'visible') ajax_handler = 'properties.json' diff -r 652a551b127e -r b0bfac7e3160 src/pyams_content/component/paragraph/zmi/keypoint.py --- a/src/pyams_content/component/paragraph/zmi/keypoint.py Wed Jun 06 11:20:14 2018 +0200 +++ b/src/pyams_content/component/paragraph/zmi/keypoint.py Wed Jun 06 13:36:56 2018 +0200 @@ -48,7 +48,7 @@ """Key points paragraph add menu""" label = _("Key points...") - label_css_class = 'fa fa-fw fa-key' + label_css_class = 'fa fa-fw fa-list-ol' url = 'add-keypoints-paragraph.html' paragraph_type = KEYPOINTS_PARAGRAPH_TYPE @@ -59,9 +59,9 @@ """Key points paragraph add form""" legend = _("Add new key points paragraph") - icon_css_class = 'fa fa-fw fa-key' + icon_css_class = 'fa fa-fw fa-list-ol' - fields = field.Fields(IKeypointsParagraph).select('body', 'renderer') + fields = field.Fields(IKeypointsParagraph).omit('__parent__', '__name__', 'visible') ajax_handler = 'add-keypoints-paragraph.json' edit_permission = MANAGE_CONTENT_PERMISSION @@ -91,9 +91,9 @@ prefix = 'keypoints_properties.' legend = _("Edit key points paragraph properties") - icon_css_class = 'fa fa-fw fa-key' + icon_css_class = 'fa fa-fw fa-list-ol' - fields = field.Fields(IKeypointsParagraph).select('body', 'renderer') + fields = field.Fields(IKeypointsParagraph).omit('__parent__', '__name__', 'visible') fields['renderer'].widgetFactory = RendererFieldWidget ajax_handler = 'properties.json' @@ -110,13 +110,6 @@ class KeypointsParagraphPropertiesAJAXEditForm(BaseParagraphAJAXEditForm, KeypointsParagraphPropertiesEditForm): """Key points paragraph properties edit form, JSON renderer""" - def get_ajax_output(self, changes): - output = super(KeypointsParagraphPropertiesAJAXEditForm, self).get_ajax_output(changes) - if 'body' in changes.get(IKeypointsParagraph, ()): - output.setdefault('events', []).append( - get_json_paragraph_refresh_event(self.context, self.request)) - return output - @adapter_config(context=(IKeypointsParagraph, IPyAMSLayer), provides=IParagraphInnerEditor) @implementer(IInnerForm) diff -r 652a551b127e -r b0bfac7e3160 src/pyams_content/component/paragraph/zmi/milestone.py --- a/src/pyams_content/component/paragraph/zmi/milestone.py Wed Jun 06 11:20:14 2018 +0200 +++ b/src/pyams_content/component/paragraph/zmi/milestone.py Wed Jun 06 13:36:56 2018 +0200 @@ -280,13 +280,9 @@ return self.defaultValue try: vocabulary = getVocabularyRegistry().get(obj, 'PyAMS content paragraphs') + return vocabulary.getTermByToken(obj.anchor).title except LookupError: - paragraph = IParagraphContainer(target).get(obj.anchor) - if paragraph is None: - return self.defaultValue - return II18n(paragraph).query_attribute('title', request=self.request) or self.defaultValue - else: - return vocabulary.getTermByToken(obj.anchor).title + return self.request.localizer.translate(_("(missing paragraph)")).format(obj.anchor) @adapter_config(name='trash', context=(IMilestoneContainerTarget, IPyAMSLayer, MilestonesTable), provides=IColumn) diff -r 652a551b127e -r b0bfac7e3160 src/pyams_content/component/paragraph/zmi/video.py --- a/src/pyams_content/component/paragraph/zmi/video.py Wed Jun 06 11:20:14 2018 +0200 +++ b/src/pyams_content/component/paragraph/zmi/video.py Wed Jun 06 13:36:56 2018 +0200 @@ -29,7 +29,6 @@ from z3c.form.interfaces import INPUT_MODE # import packages -from pyams_content.component.association.zmi import AssociationsTable from pyams_content.component.paragraph.video import VideoParagraph from pyams_content.component.paragraph.zmi import BaseParagraphAJAXAddForm, BaseParagraphAJAXEditForm, \ BaseParagraphAddMenu, BaseParagraphPropertiesEditForm, IParagraphEditFormButtons @@ -146,18 +145,6 @@ class VideoParagraphPropertiesAJAXEditForm(BaseParagraphAJAXEditForm, VideoParagraphPropertiesEditForm): """Video paragraph properties edit form, JSON renderer""" - def get_ajax_output(self, changes): - output = super(VideoParagraphPropertiesAJAXEditForm, self).get_ajax_output(changes) - if 'body' in changes.get(IVideoParagraph, ()): - associations_table = AssociationsTable(self.context, self.request) - associations_table.update() - output.setdefault('events', []).append({ - 'event': 'PyAMS_content.changed_item', - 'options': {'handler': 'PyAMS_content.associations.refreshAssociations', - 'object_name': associations_table.id, - 'table': associations_table.render()}}) - return output - @adapter_config(context=(IVideoParagraph, IPyAMSLayer), provides=IParagraphInnerEditor) @implementer(IInnerForm, IPropertiesEditForm, IAssociationsParentForm) @@ -183,15 +170,6 @@ def get_ajax_output(self, changes): output = super(VideoParagraphPropertiesInnerAJAXEditForm, self).get_ajax_output(changes) updated = changes.get(IVideoParagraph, ()) - if 'body' in updated: - associations_table = AssociationsTable(self.context, self.request) - associations_table.update() - output.setdefault('events', []).append({ - 'event': 'PyAMS_content.changed_item', - 'options': {'handler': 'PyAMS_content.associations.refreshAssociations', - 'object_name': associations_table.id, - 'table': associations_table.render()} - }) if 'data' in updated: # we have to commit transaction to be able to handle blobs... ITransactionManager(self.context).get().commit() diff -r 652a551b127e -r b0bfac7e3160 src/pyams_content/component/video/interfaces/__init__.py --- a/src/pyams_content/component/video/interfaces/__init__.py Wed Jun 06 11:20:14 2018 +0200 +++ b/src/pyams_content/component/video/interfaces/__init__.py Wed Jun 06 13:36:56 2018 +0200 @@ -65,6 +65,7 @@ EXTERNAL_VIDEO_PARAGRAPH_TYPE = 'External video' +EXTERNAL_VIDEO_PARAGRAPH_NAME = _("External video") EXTERNAL_VIDEO_PARAGRAPH_RENDERERS = 'PyAMS.paragraph.video.renderers' diff -r 652a551b127e -r b0bfac7e3160 src/pyams_content/component/video/paragraph.py --- a/src/pyams_content/component/video/paragraph.py Wed Jun 06 11:20:14 2018 +0200 +++ b/src/pyams_content/component/video/paragraph.py Wed Jun 06 13:36:56 2018 +0200 @@ -18,7 +18,7 @@ # import interfaces from pyams_content.component.paragraph.interfaces import IParagraphFactory from pyams_content.component.video.interfaces import IExternalVideoParagraph, EXTERNAL_VIDEO_PARAGRAPH_TYPE, \ - EXTERNAL_VIDEO_PARAGRAPH_RENDERERS + EXTERNAL_VIDEO_PARAGRAPH_RENDERERS, EXTERNAL_VIDEO_PARAGRAPH_NAME from pyams_content.features.checker.interfaces import IContentChecker, MISSING_VALUE, MISSING_LANG_VALUE from pyams_i18n.interfaces import II18n, II18nManager, INegotiator @@ -35,8 +35,6 @@ from zope.interface import implementer from zope.schema.fieldproperty import FieldProperty -from pyams_content import _ - @implementer(IExternalVideoParagraph) @factory_config(provided=IExternalVideoParagraph) @@ -44,7 +42,7 @@ """External video paragraph""" icon_class = 'fa-youtube-play' - icon_hint = _("External video") + icon_hint = EXTERNAL_VIDEO_PARAGRAPH_NAME body = FieldProperty(IExternalVideoParagraph['body']) renderer = FieldProperty(IExternalVideoParagraph['renderer']) @@ -54,7 +52,7 @@ class ExternalVideoParagraphFactory(BaseParagraphFactory): """External video paragraph factory""" - name = _("External video") + name = EXTERNAL_VIDEO_PARAGRAPH_NAME content_type = ExternalVideoParagraph diff -r 652a551b127e -r b0bfac7e3160 src/pyams_content/features/alert/interfaces.py --- a/src/pyams_content/features/alert/interfaces.py Wed Jun 06 11:20:14 2018 +0200 +++ b/src/pyams_content/features/alert/interfaces.py Wed Jun 06 13:36:56 2018 +0200 @@ -62,8 +62,8 @@ default='info', vocabulary=ALERT_GRAVITY_VOCABULARY) - header = I18nTextLineField(title=_("Header"), - description=_("Short alert header"), + header = I18nTextLineField(title=_('alert-header', default="Heading"), + description=_("Short alert header (Alert, Important...)"), required=False) message = I18nTextLineField(title=_("Message"), diff -r 652a551b127e -r b0bfac7e3160 src/pyams_content/features/alert/zmi/container.py --- a/src/pyams_content/features/alert/zmi/container.py Wed Jun 06 11:20:14 2018 +0200 +++ b/src/pyams_content/features/alert/zmi/container.py Wed Jun 06 13:36:56 2018 +0200 @@ -155,7 +155,7 @@ class AlertContainerHeaderColumn(I18nColumn, I18nAttrColumn): """Alert container header column""" - _header = _("Header") + _header = _('alert-header', default="Heading") attrName = 'header' weight = 20 diff -r 652a551b127e -r b0bfac7e3160 src/pyams_content/locales/fr/LC_MESSAGES/pyams_content.mo Binary file src/pyams_content/locales/fr/LC_MESSAGES/pyams_content.mo has changed diff -r 652a551b127e -r b0bfac7e3160 src/pyams_content/locales/fr/LC_MESSAGES/pyams_content.po --- a/src/pyams_content/locales/fr/LC_MESSAGES/pyams_content.po Wed Jun 06 11:20:14 2018 +0200 +++ b/src/pyams_content/locales/fr/LC_MESSAGES/pyams_content.po Wed Jun 06 13:36:56 2018 +0200 @@ -5,7 +5,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE 1.0\n" -"POT-Creation-Date: 2018-06-06 10:19+0200\n" +"POT-Creation-Date: 2018-06-06 13:20+0200\n" "PO-Revision-Date: 2015-09-10 10:42+0200\n" "Last-Translator: Thierry Florac \n" "Language-Team: French\n" @@ -76,11 +76,6 @@ msgid "Guest user (role)" msgstr "Invité (rôle)" -#: src/pyams_content/component/gallery/paragraph.py:40 -#: src/pyams_content/component/gallery/paragraph.py:47 -msgid "Medias gallery" -msgstr "Galerie de médias" - #: src/pyams_content/component/gallery/__init__.py:154 msgid "Gallery" msgstr "Galerie de médias" @@ -141,8 +136,9 @@ #: src/pyams_content/component/gallery/interfaces/__init__.py:61 #: src/pyams_content/component/extfile/interfaces/__init__.py:44 #: src/pyams_content/component/illustration/interfaces/__init__.py:56 -#: src/pyams_content/component/paragraph/interfaces/video.py:47 -#: src/pyams_content/component/paragraph/interfaces/verbatim.py:43 +#: src/pyams_content/component/paragraph/interfaces/video.py:48 +#: src/pyams_content/component/paragraph/interfaces/audio.py:48 +#: src/pyams_content/component/paragraph/interfaces/verbatim.py:44 #: src/pyams_content/component/video/interfaces/__init__.py:52 msgid "Author" msgstr "Auteur" @@ -150,7 +146,8 @@ #: src/pyams_content/component/gallery/zmi/interfaces.py:41 #: src/pyams_content/component/gallery/interfaces/__init__.py:62 #: src/pyams_content/component/extfile/interfaces/__init__.py:45 -#: src/pyams_content/component/paragraph/interfaces/video.py:48 +#: src/pyams_content/component/paragraph/interfaces/video.py:49 +#: src/pyams_content/component/paragraph/interfaces/audio.py:49 #: src/pyams_content/component/video/interfaces/__init__.py:53 msgid "Name of document's author" msgstr "Sous la forme \"Prénom Nom / Organisme\"" @@ -178,15 +175,19 @@ msgid "Zoom image" msgstr "Agrandir l'image" +#: src/pyams_content/component/gallery/interfaces/__init__.py:130 +msgid "Medias gallery" +msgstr "Galerie de médias" + #: src/pyams_content/component/gallery/interfaces/__init__.py:47 #: src/pyams_content/component/illustration/interfaces/__init__.py:41 -#: src/pyams_content/component/illustration/interfaces/__init__.py:76 +#: src/pyams_content/component/illustration/interfaces/__init__.py:77 msgid "Image or video data" msgstr "Fichier (image ou vidéo)" #: src/pyams_content/component/gallery/interfaces/__init__.py:48 #: src/pyams_content/component/illustration/interfaces/__init__.py:42 -#: src/pyams_content/component/illustration/interfaces/__init__.py:77 +#: src/pyams_content/component/illustration/interfaces/__init__.py:78 msgid "Image or video content" msgstr "" "Cliquez sur le bouton 'Parcourir...' pour sélectionner un nouveau contenu..." @@ -214,7 +215,8 @@ #: src/pyams_content/component/gallery/interfaces/__init__.py:98 #: src/pyams_content/component/extfile/interfaces/__init__.py:40 #: src/pyams_content/component/illustration/interfaces/__init__.py:52 -#: src/pyams_content/component/paragraph/interfaces/video.py:43 +#: src/pyams_content/component/paragraph/interfaces/video.py:44 +#: src/pyams_content/component/paragraph/interfaces/audio.py:44 #: src/pyams_content/component/links/interfaces/__init__.py:37 #: src/pyams_content/component/video/interfaces/__init__.py:48 #: src/pyams_content/shared/common/interfaces/__init__.py:145 @@ -238,6 +240,7 @@ #: src/pyams_content/component/gallery/interfaces/__init__.py:73 #: src/pyams_content/component/extfile/interfaces/__init__.py:89 +#: src/pyams_content/component/paragraph/interfaces/audio.py:52 msgid "Audio data" msgstr "Fichier" @@ -318,8 +321,7 @@ #: src/pyams_content/component/extfile/__init__.py:253 #: src/pyams_content/component/extfile/__init__.py:257 -#: src/pyams_content/component/paragraph/video.py:49 -#: src/pyams_content/component/paragraph/video.py:62 +#: src/pyams_content/component/paragraph/interfaces/video.py:34 msgid "Video" msgstr "Vidéo" @@ -382,15 +384,15 @@ #: src/pyams_content/component/extfile/zmi/__init__.py:386 msgid "Add audio file" -msgstr "Audio téléchargeable" +msgstr "Bande son téléchargeable" #: src/pyams_content/component/extfile/zmi/__init__.py:398 msgid "Add new audio file" -msgstr "Ajout d'un fichier audio téléchargeable" +msgstr "Ajout d'une bande son téléchargeable" #: src/pyams_content/component/extfile/zmi/__init__.py:427 msgid "Update audio file properties" -msgstr "Propriétés du fichier audio téléchargeable" +msgstr "Propriétés de la bande son téléchargeable" #: src/pyams_content/component/extfile/zmi/__init__.py:50 msgid "External file type" @@ -408,7 +410,8 @@ msgstr "Titre présenté aux internautes" #: src/pyams_content/component/extfile/interfaces/__init__.py:41 -#: src/pyams_content/component/paragraph/interfaces/video.py:44 +#: src/pyams_content/component/paragraph/interfaces/video.py:45 +#: src/pyams_content/component/paragraph/interfaces/audio.py:45 #: src/pyams_content/component/video/interfaces/__init__.py:49 msgid "File description displayed by front-office template" msgstr "Description du fichier, présentée aux internautes" @@ -453,7 +456,7 @@ "Cliquez sur le bouton 'Parcourir...' pour sélectionner un nouveau contenu..." #: src/pyams_content/component/extfile/interfaces/__init__.py:81 -#: src/pyams_content/component/paragraph/interfaces/video.py:51 +#: src/pyams_content/component/paragraph/interfaces/video.py:52 msgid "Video data" msgstr "Fichier" @@ -463,15 +466,15 @@ "Cliquez sur le bouton 'Parcourir...' pour sélectionner un nouveau contenu" #: src/pyams_content/component/extfile/interfaces/__init__.py:90 +#: src/pyams_content/component/paragraph/interfaces/audio.py:53 msgid "Audio file content" msgstr "" "Cliquez sur le bouton 'Parcourir...' pour sélectionner un nouveau contenu" -#: src/pyams_content/component/illustration/paragraph.py:40 -#: src/pyams_content/component/illustration/paragraph.py:47 #: src/pyams_content/component/illustration/__init__.py:132 #: src/pyams_content/component/illustration/zmi/__init__.py:54 #: src/pyams_content/component/illustration/zmi/__init__.py:81 +#: src/pyams_content/component/illustration/interfaces/__init__.py:71 msgid "Illustration" msgstr "Illustration" @@ -515,16 +518,6 @@ ">ATTENTION : certains modes de rendu ne prennent pas en " "compte tous les types de médias !" -#: src/pyams_content/component/paragraph/milestone.py:199 -#: src/pyams_content/component/paragraph/milestone.py:222 -#: src/pyams_content/component/paragraph/zmi/milestone.py:303 -msgid "Milestones" -msgstr "Chronologie" - -#: src/pyams_content/component/paragraph/milestone.py:231 -msgid "Milestones paragraph" -msgstr "Chronologie" - #: src/pyams_content/component/paragraph/milestone.py:140 msgid "Selected paragraph is missing" msgstr "le bloc sélectionné est introuvable" @@ -533,15 +526,6 @@ msgid "Selected paragraph is not visible" msgstr "le bloc sélectionné n'est pas visible" -#: src/pyams_content/component/paragraph/keypoint.py:46 -#: src/pyams_content/component/paragraph/interfaces/keypoint.py:39 -msgid "Key points" -msgstr "Points clés" - -#: src/pyams_content/component/paragraph/keypoint.py:61 -msgid "Key points paragraph" -msgstr "Points clés" - #: src/pyams_content/component/paragraph/container.py:73 msgid "Paragraphs" msgstr "Blocs de contenu" @@ -550,78 +534,10 @@ msgid "no visible paragraph" msgstr "aucun bloc de contenu visible" -#: src/pyams_content/component/paragraph/pictogram.py:189 -#: src/pyams_content/component/paragraph/pictogram.py:212 -#: src/pyams_content/component/paragraph/zmi/pictogram.py:305 -msgid "Pictograms" -msgstr "Pictogrammes" - -#: src/pyams_content/component/paragraph/pictogram.py:221 -msgid "Pictograms paragraph" -msgstr "Pictogrammes" - #: src/pyams_content/component/paragraph/pictogram.py:134 msgid "Selected pictogram is missing" msgstr "le pictogramme sélectionné est introuvable" -#: src/pyams_content/component/paragraph/keynumber.py:183 -#: src/pyams_content/component/paragraph/keynumber.py:207 -#: src/pyams_content/component/paragraph/zmi/keynumber.py:282 -msgid "Key numbers" -msgstr "Chiffres-clés" - -#: src/pyams_content/component/paragraph/keynumber.py:216 -msgid "Key numbers paragraph" -msgstr "Chiffres-clés" - -#: src/pyams_content/component/paragraph/frame.py:52 -msgid "Framed text" -msgstr "Encadré" - -#: src/pyams_content/component/paragraph/frame.py:62 -msgid "Framed text paragraph" -msgstr "Encadré" - -#: src/pyams_content/component/paragraph/verbatim.py:50 -msgid "Verbatim" -msgstr "Verbatim" - -#: src/pyams_content/component/paragraph/verbatim.py:62 -msgid "Verbatim paragraph" -msgstr "Verbatim" - -#: src/pyams_content/component/paragraph/html.py:63 -msgid "Raw HTML " -msgstr "Code HTML" - -#: src/pyams_content/component/paragraph/html.py:73 -msgid "Raw HTML paragraph" -msgstr "Code HTML" - -#: src/pyams_content/component/paragraph/html.py:119 -msgid "Rich text" -msgstr "Texte enrichi" - -#: src/pyams_content/component/paragraph/html.py:129 -msgid "Rich text paragraph" -msgstr "Texte enrichi" - -#: src/pyams_content/component/paragraph/contact.py:47 -#: src/pyams_content/component/paragraph/contact.py:76 -msgid "Contact card" -msgstr "Fiche contact" - -#: src/pyams_content/component/paragraph/header.py:46 -#: src/pyams_content/component/paragraph/interfaces/header.py:39 -#: src/pyams_content/features/alert/interfaces.py:65 -#: src/pyams_content/features/alert/zmi/container.py:158 -msgid "Header" -msgstr "Chapô" - -#: src/pyams_content/component/paragraph/header.py:61 -msgid "Header paragraph" -msgstr "Chapô" - #: src/pyams_content/component/paragraph/zmi/milestone.py:77 msgid "Milestones..." msgstr "Chronologie" @@ -644,22 +560,31 @@ msgid "Anchor" msgstr "Ancre" -#: src/pyams_content/component/paragraph/zmi/milestone.py:318 +#: src/pyams_content/component/paragraph/zmi/milestone.py:299 +#: src/pyams_content/component/paragraph/interfaces/milestone.py:76 +msgid "Milestones" +msgstr "Chronologie" + +#: src/pyams_content/component/paragraph/zmi/milestone.py:314 msgid "Add milestone" msgstr "Ajouter un jalon" -#: src/pyams_content/component/paragraph/zmi/milestone.py:329 +#: src/pyams_content/component/paragraph/zmi/milestone.py:325 msgid "Add new milestone" msgstr "Ajout d'un jalon" -#: src/pyams_content/component/paragraph/zmi/milestone.py:362 +#: src/pyams_content/component/paragraph/zmi/milestone.py:358 msgid "Edit milestone properties" msgstr "Propriétés du jalon" -#: src/pyams_content/component/paragraph/zmi/milestone.py:351 +#: src/pyams_content/component/paragraph/zmi/milestone.py:347 msgid "Milestone was correctly added" msgstr "Le jalon a été ajouté." +#: src/pyams_content/component/paragraph/zmi/milestone.py:285 +msgid "(missing paragraph)" +msgstr "(paragraphe supprimé)" + #: src/pyams_content/component/paragraph/zmi/keypoint.py:50 msgid "Key points..." msgstr "Points clés" @@ -732,21 +657,23 @@ msgid "Paragraph was correctly added." msgstr "Le bloc a été ajouté." -#: src/pyams_content/component/paragraph/zmi/video.py:55 +#: src/pyams_content/component/paragraph/zmi/video.py:54 msgid "Video paragraph..." msgstr "Vidéo" -#: src/pyams_content/component/paragraph/zmi/video.py:66 +#: src/pyams_content/component/paragraph/zmi/video.py:65 msgid "Add new video paragraph" msgstr "Ajout d'une vidéo" -#: src/pyams_content/component/paragraph/zmi/video.py:113 +#: src/pyams_content/component/paragraph/zmi/video.py:112 #: src/pyams_content/component/video/zmi/paragraph.py:209 msgid "Edit video properties" msgstr "Propriétés de la vidéo" -#: src/pyams_content/component/paragraph/zmi/video.py:84 -#: src/pyams_content/component/paragraph/zmi/video.py:134 +#: src/pyams_content/component/paragraph/zmi/video.py:83 +#: src/pyams_content/component/paragraph/zmi/video.py:133 +#: src/pyams_content/component/paragraph/zmi/audio.py:83 +#: src/pyams_content/component/paragraph/zmi/audio.py:133 #: src/pyams_content/component/video/zmi/paragraph.py:103 #: src/pyams_content/component/video/zmi/paragraph.py:238 msgid "HTML content" @@ -816,6 +743,11 @@ msgid "Associated text" msgstr "Texte associé" +#: src/pyams_content/component/paragraph/zmi/pictogram.py:305 +#: src/pyams_content/component/paragraph/interfaces/pictogram.py:80 +msgid "Pictograms" +msgstr "Pictogrammes" + #: src/pyams_content/component/paragraph/zmi/pictogram.py:320 #: src/pyams_content/reference/pictograms/zmi/__init__.py:62 msgid "Add pictogram" @@ -851,6 +783,18 @@ msgid "Default header: {0}" msgstr "En-tête par défaut : {0}" +#: src/pyams_content/component/paragraph/zmi/audio.py:54 +msgid "Audio paragraph..." +msgstr "Bande son" + +#: src/pyams_content/component/paragraph/zmi/audio.py:65 +msgid "Add new audio paragraph" +msgstr "Ajout d'une bande son" + +#: src/pyams_content/component/paragraph/zmi/audio.py:112 +msgid "Edit audio properties" +msgstr "Propriétés de la bande son" + #: src/pyams_content/component/paragraph/zmi/keynumber.py:76 msgid "Key numbers..." msgstr "Chiffres-clés" @@ -874,6 +818,11 @@ msgid "key-number-label" msgstr "En-tête" +#: src/pyams_content/component/paragraph/zmi/keynumber.py:282 +#: src/pyams_content/component/paragraph/interfaces/keynumber.py:76 +msgid "Key numbers" +msgstr "Chiffres-clés" + #: src/pyams_content/component/paragraph/zmi/keynumber.py:297 msgid "Add keynumber" msgstr "Ajouter un chiffre-clé" @@ -991,31 +940,36 @@ msgid "Paragraph to which this milestone should lead" msgstr "Bloc de contenu vers lequel ce jalon doit conduire" -#: src/pyams_content/component/paragraph/interfaces/milestone.py:82 +#: src/pyams_content/component/paragraph/interfaces/milestone.py:83 msgid "Milestones template" msgstr "Mode de rendu" -#: src/pyams_content/component/paragraph/interfaces/milestone.py:83 +#: src/pyams_content/component/paragraph/interfaces/milestone.py:84 msgid "Presentation template used for milestones" msgstr "Modèle de présentation utilisé par ce bloc de contenu" +#: src/pyams_content/component/paragraph/interfaces/keypoint.py:33 #: src/pyams_content/component/paragraph/interfaces/keypoint.py:40 +msgid "Key points" +msgstr "Points clés" + +#: src/pyams_content/component/paragraph/interfaces/keypoint.py:41 msgid "Enter one key point by line, without hyphen or prefix" msgstr "" "Indiquez un point clé par ligne, sans tiret. Passez à la ligne entre chaque " "point clé, la mise en forme sera effectuée automatiquement." -#: src/pyams_content/component/paragraph/interfaces/keypoint.py:43 +#: src/pyams_content/component/paragraph/interfaces/keypoint.py:44 msgid "Presentation template" msgstr "Mode de rendu" -#: src/pyams_content/component/paragraph/interfaces/keypoint.py:44 -#: src/pyams_content/component/paragraph/interfaces/frame.py:43 -#: src/pyams_content/component/paragraph/interfaces/verbatim.py:52 -#: src/pyams_content/component/paragraph/interfaces/html.py:45 -#: src/pyams_content/component/paragraph/interfaces/html.py:65 -#: src/pyams_content/shared/imagemap/interfaces/__init__.py:99 -#: src/pyams_content/shared/logo/interfaces/__init__.py:75 +#: src/pyams_content/component/paragraph/interfaces/keypoint.py:45 +#: src/pyams_content/component/paragraph/interfaces/frame.py:44 +#: src/pyams_content/component/paragraph/interfaces/verbatim.py:53 +#: src/pyams_content/component/paragraph/interfaces/html.py:46 +#: src/pyams_content/component/paragraph/interfaces/html.py:67 +#: src/pyams_content/shared/imagemap/interfaces/__init__.py:100 +#: src/pyams_content/shared/logo/interfaces/__init__.py:76 msgid "Presentation template used for this paragraph" msgstr "Mode de rendu utilisé par ce bloc de contenu" @@ -1045,24 +999,25 @@ msgid "List of paragraphs automatically added to a new content" msgstr "Liste des types de blocs ajoutés automatiquement aux nouveaux contenus" -#: src/pyams_content/component/paragraph/interfaces/video.py:40 -#: src/pyams_content/component/paragraph/interfaces/html.py:61 -#: src/pyams_content/component/video/interfaces/__init__.py:74 +#: src/pyams_content/component/paragraph/interfaces/video.py:41 +#: src/pyams_content/component/paragraph/interfaces/audio.py:41 +#: src/pyams_content/component/paragraph/interfaces/html.py:63 +#: src/pyams_content/component/video/interfaces/__init__.py:75 msgid "Body" msgstr "Contenu HTML" -#: src/pyams_content/component/paragraph/interfaces/video.py:52 +#: src/pyams_content/component/paragraph/interfaces/video.py:53 msgid "Video file content" msgstr "" "Cliquez sur le bouton 'Parcourir...' pour sélectionner un nouveau contenu" -#: src/pyams_content/component/paragraph/interfaces/video.py:55 -#: src/pyams_content/component/video/interfaces/__init__.py:77 +#: src/pyams_content/component/paragraph/interfaces/video.py:56 +#: src/pyams_content/component/video/interfaces/__init__.py:78 msgid "Video template" msgstr "Mode de rendu" -#: src/pyams_content/component/paragraph/interfaces/video.py:56 -#: src/pyams_content/component/video/interfaces/__init__.py:78 +#: src/pyams_content/component/paragraph/interfaces/video.py:57 +#: src/pyams_content/component/video/interfaces/__init__.py:79 msgid "Presentation template used for this video" msgstr "Mode de rendu utilisé par cette vidéo" @@ -1097,14 +1052,26 @@ msgid "Additional text associated to this pictogram" msgstr "Texte complémentaire associé à ce pictogramme" -#: src/pyams_content/component/paragraph/interfaces/pictogram.py:86 +#: src/pyams_content/component/paragraph/interfaces/pictogram.py:87 msgid "Pictograms template" msgstr "Mode de rendu" -#: src/pyams_content/component/paragraph/interfaces/pictogram.py:87 +#: src/pyams_content/component/paragraph/interfaces/pictogram.py:88 msgid "Presentation template used for pictograms" msgstr "Modèle de présentation utilisé par ce bloc de contenu" +#: src/pyams_content/component/paragraph/interfaces/audio.py:34 +msgid "Audio" +msgstr "Bande son" + +#: src/pyams_content/component/paragraph/interfaces/audio.py:56 +msgid "Audio template" +msgstr "Mode de rendu" + +#: src/pyams_content/component/paragraph/interfaces/audio.py:57 +msgid "Presentation template used for this audio file" +msgstr "Mode de rendu utilisé pour cette bande son" + #: src/pyams_content/component/paragraph/interfaces/keynumber.py:41 msgid "Is this key number visible in front-office?" msgstr "Si 'non', ce chiffre-clé ne sera pas présenté aux internautes" @@ -1125,52 +1092,68 @@ "La présentation de cette information peut varier en fonction du mode de " "rendu choisi" -#: src/pyams_content/component/paragraph/interfaces/keynumber.py:82 +#: src/pyams_content/component/paragraph/interfaces/keynumber.py:83 msgid "Key numbers template" msgstr "Mode de rendu" -#: src/pyams_content/component/paragraph/interfaces/keynumber.py:83 +#: src/pyams_content/component/paragraph/interfaces/keynumber.py:84 msgid "Presentation template used for key numbers" msgstr "Modèle de présentation utilisé par ce bloc de contenu" -#: src/pyams_content/component/paragraph/interfaces/frame.py:39 +#: src/pyams_content/component/paragraph/interfaces/frame.py:33 +msgid "Framed text" +msgstr "Encadré" + +#: src/pyams_content/component/paragraph/interfaces/frame.py:40 msgid "Frame body" msgstr "Contenu" -#: src/pyams_content/component/paragraph/interfaces/frame.py:42 +#: src/pyams_content/component/paragraph/interfaces/frame.py:43 msgid "Text template" msgstr "Mode de rendu" -#: src/pyams_content/component/paragraph/interfaces/verbatim.py:39 +#: src/pyams_content/component/paragraph/interfaces/verbatim.py:33 +msgid "Verbatim" +msgstr "Verbatim" + +#: src/pyams_content/component/paragraph/interfaces/verbatim.py:40 msgid "Quoted text" msgstr "Citation" -#: src/pyams_content/component/paragraph/interfaces/verbatim.py:40 +#: src/pyams_content/component/paragraph/interfaces/verbatim.py:41 msgid "Quotation marks will be added automatically by presentation template" msgstr "Les guillemets seront ajoutés automatiquement par le mode de rendu..." -#: src/pyams_content/component/paragraph/interfaces/verbatim.py:44 +#: src/pyams_content/component/paragraph/interfaces/verbatim.py:45 msgid "Name of the quote author" msgstr "Nom de l'auteur de la citation" -#: src/pyams_content/component/paragraph/interfaces/verbatim.py:47 -#: src/pyams_content/component/paragraph/interfaces/contact.py:53 -msgid "In charge of" -msgstr "Fonction" - #: src/pyams_content/component/paragraph/interfaces/verbatim.py:48 +#: src/pyams_content/component/paragraph/interfaces/contact.py:54 +msgid "In charge of" +msgstr "Fonction" + +#: src/pyams_content/component/paragraph/interfaces/verbatim.py:49 msgid "Label of author function" msgstr "Fonction de l'auteur" -#: src/pyams_content/component/paragraph/interfaces/verbatim.py:51 +#: src/pyams_content/component/paragraph/interfaces/verbatim.py:52 msgid "Verbatim template" msgstr "Mode de rendu" -#: src/pyams_content/component/paragraph/interfaces/html.py:39 +#: src/pyams_content/component/paragraph/interfaces/html.py:33 +msgid "Raw HTML " +msgstr "Code HTML" + +#: src/pyams_content/component/paragraph/interfaces/html.py:56 +msgid "Rich text" +msgstr "Texte enrichi" + +#: src/pyams_content/component/paragraph/interfaces/html.py:40 msgid "Raw HTML code" msgstr "Code HTML" -#: src/pyams_content/component/paragraph/interfaces/html.py:40 +#: src/pyams_content/component/paragraph/interfaces/html.py:41 msgid "" "This HTML code will be used 'as is', without any transformation. Use with " "care!!" @@ -1178,76 +1161,85 @@ "Ce code HTML sera utilisé en l'état et intégré dans les pages sans " "modification. À utiliser avec précaution !!!" -#: src/pyams_content/component/paragraph/interfaces/html.py:44 +#: src/pyams_content/component/paragraph/interfaces/html.py:45 msgid "Raw HTML code template" msgstr "Mode de rendu" -#: src/pyams_content/component/paragraph/interfaces/html.py:64 +#: src/pyams_content/component/paragraph/interfaces/html.py:66 msgid "Body template" msgstr "Mode de rendu" -#: src/pyams_content/component/paragraph/interfaces/contact.py:49 +#: src/pyams_content/component/paragraph/interfaces/contact.py:43 +msgid "Contact card" +msgstr "Fiche contact" + +#: src/pyams_content/component/paragraph/interfaces/contact.py:50 msgid "Contact identity" msgstr "Nom du contact" -#: src/pyams_content/component/paragraph/interfaces/contact.py:50 +#: src/pyams_content/component/paragraph/interfaces/contact.py:51 msgid "Name of the contact" msgstr "Nom complet du contact" -#: src/pyams_content/component/paragraph/interfaces/contact.py:54 +#: src/pyams_content/component/paragraph/interfaces/contact.py:55 msgid "Label of contact function" msgstr "Fonction du contact" -#: src/pyams_content/component/paragraph/interfaces/contact.py:57 +#: src/pyams_content/component/paragraph/interfaces/contact.py:58 msgid "Email address" msgstr "Adresse de messagerie" -#: src/pyams_content/component/paragraph/interfaces/contact.py:58 +#: src/pyams_content/component/paragraph/interfaces/contact.py:59 msgid "Contact email address" msgstr "Adresse de messagerie \"stricte\", soit uniquement \"xxx@yyy.com\"" -#: src/pyams_content/component/paragraph/interfaces/contact.py:61 -msgid "Contact form" -msgstr "Formulaire de contact" - #: src/pyams_content/component/paragraph/interfaces/contact.py:62 +msgid "Contact form" +msgstr "Formulaire de contact" + +#: src/pyams_content/component/paragraph/interfaces/contact.py:63 msgid "Reference of contact form" msgstr "Référence d'un formulaire de contact" -#: src/pyams_content/component/paragraph/interfaces/contact.py:66 +#: src/pyams_content/component/paragraph/interfaces/contact.py:67 msgid "Photo" msgstr "Photo" -#: src/pyams_content/component/paragraph/interfaces/contact.py:67 +#: src/pyams_content/component/paragraph/interfaces/contact.py:68 msgid "Use 'browse' button to select contact picture" msgstr "Utilisez le bouton 'Parcourir' pour sélectionner la photo du contact" -#: src/pyams_content/component/paragraph/interfaces/contact.py:75 +#: src/pyams_content/component/paragraph/interfaces/contact.py:76 msgid "Address" msgstr "Adresse" -#: src/pyams_content/component/paragraph/interfaces/contact.py:78 +#: src/pyams_content/component/paragraph/interfaces/contact.py:79 msgid "Contact template" msgstr "Mode de rendu" -#: src/pyams_content/component/paragraph/interfaces/contact.py:79 +#: src/pyams_content/component/paragraph/interfaces/contact.py:80 msgid "Presentation template used for this contact" msgstr "Modèle de présentation utilisé pour ce contact" -#: src/pyams_content/component/paragraph/interfaces/contact.py:71 +#: src/pyams_content/component/paragraph/interfaces/contact.py:72 msgid "GPS location" msgstr "Position GPS" -#: src/pyams_content/component/paragraph/interfaces/contact.py:72 +#: src/pyams_content/component/paragraph/interfaces/contact.py:73 msgid "GPS coordinates used to locate contact" msgstr "Coordonnées GPS de situation du contact" -#: src/pyams_content/component/paragraph/interfaces/header.py:42 +#: src/pyams_content/component/paragraph/interfaces/header.py:33 +#: src/pyams_content/component/paragraph/interfaces/header.py:40 +msgid "Header" +msgstr "Chapô" + +#: src/pyams_content/component/paragraph/interfaces/header.py:43 #: src/pyams_content/features/header/interfaces/__init__.py:39 msgid "Header template" msgstr "Mode de rendu" -#: src/pyams_content/component/paragraph/interfaces/header.py:43 +#: src/pyams_content/component/paragraph/interfaces/header.py:44 #: src/pyams_content/features/header/interfaces/__init__.py:40 msgid "Presentation template used for this header" msgstr "Mode de rendu utilisé par ce chapô" @@ -1279,13 +1271,9 @@ msgid "Selected themes" msgstr "Thèmes sélectionnés" -#: src/pyams_content/component/association/paragraph.py:48 -#: src/pyams_content/component/association/paragraph.py:57 -msgid "Associations paragraph" -msgstr "Liens et pièces jointes" - #: src/pyams_content/component/association/container.py:88 #: src/pyams_content/component/association/zmi/__init__.py:296 +#: src/pyams_content/component/association/interfaces/__init__.py:86 msgid "Associations" msgstr "Liens et pièces jointes" @@ -1327,11 +1315,11 @@ msgid "Is this item visible in front-office?" msgstr "Si 'non', ce lien ne sera pas présenté aux internautes" -#: src/pyams_content/component/association/interfaces/__init__.py:92 +#: src/pyams_content/component/association/interfaces/__init__.py:93 msgid "Associations template" msgstr "Mode de rendu" -#: src/pyams_content/component/association/interfaces/__init__.py:93 +#: src/pyams_content/component/association/interfaces/__init__.py:94 msgid "Presentation template used for associations" msgstr "Modèle de présentation utilisé par ce bloc de contenu" @@ -1453,9 +1441,8 @@ "Nom de la boîte aux lettres, tel qu'il sera affiché dans l'application de " "messagerie." -#: src/pyams_content/component/video/paragraph.py:47 -#: src/pyams_content/component/video/paragraph.py:57 #: src/pyams_content/component/video/__init__.py:73 +#: src/pyams_content/component/video/interfaces/__init__.py:68 msgid "External video" msgstr "Vidéo externe" @@ -3538,12 +3525,6 @@ msgid "Other terms" msgstr "Autres thèmes" -#: src/pyams_content/shared/imagemap/paragraph.py:47 -#: src/pyams_content/shared/imagemap/paragraph.py:60 -#: src/pyams_content/shared/imagemap/interfaces/__init__.py:35 -msgid "Image map" -msgstr "Image cliquable" - #: src/pyams_content/shared/imagemap/paragraph.py:91 msgid "no selected image map" msgstr "aucune image cliquable sélectionnée" @@ -3643,6 +3624,11 @@ msgid "Edit image map properties" msgstr "Propriétés de l'image" +#: src/pyams_content/shared/imagemap/interfaces/__init__.py:35 +#: src/pyams_content/shared/imagemap/interfaces/__init__.py:88 +msgid "Image map" +msgstr "Image cliquable" + #: src/pyams_content/shared/imagemap/interfaces/__init__.py:50 msgid "Internal or external link associated with this map area" msgstr "Lien interne ou externe associé à cette zone" @@ -3667,18 +3653,18 @@ msgid "List of defined map areas" msgstr "Liste des zones cliquables définies sur l'image" -#: src/pyams_content/shared/imagemap/interfaces/__init__.py:94 +#: src/pyams_content/shared/imagemap/interfaces/__init__.py:95 #: src/pyams_content/features/alert/interfaces.py:73 msgid "Internal reference" msgstr "Référence interne" -#: src/pyams_content/shared/imagemap/interfaces/__init__.py:95 +#: src/pyams_content/shared/imagemap/interfaces/__init__.py:96 msgid "Reference to image map object" msgstr "" "Référence interne de l'image cliquable. Vous pouvez la rechercher par des " "mots de son titre, ou par son numéro interne (précédé d'un '+')." -#: src/pyams_content/shared/imagemap/interfaces/__init__.py:98 +#: src/pyams_content/shared/imagemap/interfaces/__init__.py:99 msgid "Image map template" msgstr "Mode de rendu" @@ -3846,7 +3832,9 @@ #: src/pyams_content/shared/site/interfaces/__init__.py:59 msgid "Heading displayed according to presentation template" -msgstr "Ce chapô pourra être affiché ou non en fonction du modèle de présentation retenu" +msgstr "" +"Ce chapô pourra être affiché ou non en fonction du modèle de présentation " +"retenu" #: src/pyams_content/shared/site/interfaces/__init__.py:62 msgid "Navigation title" @@ -3866,21 +3854,16 @@ msgid "If 'no', link is not visible" msgstr "Si 'non', le lien ne sera pas visible" -#: src/pyams_content/shared/logo/paragraph.py:46 -#: src/pyams_content/shared/logo/paragraph.py:63 -msgid "Logos" -msgstr "Logos" - -#: src/pyams_content/shared/logo/paragraph.py:94 +#: src/pyams_content/shared/logo/paragraph.py:95 msgid "no selected logo" msgstr "aucun logo sélectionné" -#: src/pyams_content/shared/logo/paragraph.py:100 +#: src/pyams_content/shared/logo/paragraph.py:101 #, python-format msgid "logo '{0}' can't be found" msgstr "le logo '{0}' est introuvable" -#: src/pyams_content/shared/logo/paragraph.py:108 +#: src/pyams_content/shared/logo/paragraph.py:109 #, python-format msgid "logo '{0}' is not published" msgstr "le logo '{0}' n'est pas publié" @@ -3923,15 +3906,19 @@ msgid "Logo" msgstr "Logo" -#: src/pyams_content/shared/logo/interfaces/__init__.py:70 -msgid "Logos references" -msgstr "Logos sélectionnés" +#: src/pyams_content/shared/logo/interfaces/__init__.py:64 +msgid "Logos" +msgstr "Logos" #: src/pyams_content/shared/logo/interfaces/__init__.py:71 +msgid "Logos references" +msgstr "Logos sélectionnés" + +#: src/pyams_content/shared/logo/interfaces/__init__.py:72 msgid "List of internal logos references" msgstr "Liste de références internes vers les logos à afficher" -#: src/pyams_content/shared/logo/interfaces/__init__.py:74 +#: src/pyams_content/shared/logo/interfaces/__init__.py:75 msgid "Logos template" msgstr "Mode de rendu" @@ -4557,11 +4544,17 @@ #: src/pyams_content/features/alert/interfaces.py:60 msgid "Alert gravity will affect rendered alert style" -msgstr "Le niveau de gravité chosi affectera le style de rendu de l'alerte" +msgstr "Le niveau de gravité choisi affectera le style de rendu de l'alerte" + +#. Default: Heading +#: src/pyams_content/features/alert/interfaces.py:65 +#: src/pyams_content/features/alert/zmi/container.py:158 +msgid "alert-header" +msgstr "En-tête" #: src/pyams_content/features/alert/interfaces.py:66 -msgid "Short alert header" -msgstr "En-tête de l'alerte" +msgid "Short alert header (Alert, Important...)" +msgstr "En-tête de l'alerte (« Alerte », « Important », « Prudence »...)" #: src/pyams_content/features/alert/interfaces.py:69 #: src/pyams_content/features/alert/zmi/container.py:170 @@ -4610,7 +4603,7 @@ "Maximum interval between alert displays on a given device, given in hours; " "set to 0 to always display the alert" msgstr "" -"Cet intervalle est donnée en heures ; passé ce délai, pour un internaute " +"Cet intervalle est donné en heures ; passé ce délai, pour un internaute " "donné, l'alerte apparaîtra à nouveau. Si aucun intervalle n'est indiqué, " "l'alerte s'affichera en permanence." @@ -4882,6 +4875,33 @@ msgid "Hidden header" msgstr "Ne pas afficher d'en-tête de pages" +#~ msgid "Milestones paragraph" +#~ msgstr "Chronologie" + +#~ msgid "Key points paragraph" +#~ msgstr "Points clés" + +#~ msgid "Pictograms paragraph" +#~ msgstr "Pictogrammes" + +#~ msgid "Key numbers paragraph" +#~ msgstr "Chiffres-clés" + +#~ msgid "Framed text paragraph" +#~ msgstr "Encadré" + +#~ msgid "Verbatim paragraph" +#~ msgstr "Verbatim" + +#~ msgid "Raw HTML paragraph" +#~ msgstr "Code HTML" + +#~ msgid "Rich text paragraph" +#~ msgstr "Texte enrichi" + +#~ msgid "Header paragraph" +#~ msgstr "Chapô" + #~ msgid "File legend, as shown in front-office" #~ msgstr "Titre du fichier, tel que présenté aux internautes" diff -r 652a551b127e -r b0bfac7e3160 src/pyams_content/locales/pyams_content.pot --- a/src/pyams_content/locales/pyams_content.pot Wed Jun 06 11:20:14 2018 +0200 +++ b/src/pyams_content/locales/pyams_content.pot Wed Jun 06 13:36:56 2018 +0200 @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE 1.0\n" -"POT-Creation-Date: 2018-06-06 10:19+0200\n" +"POT-Creation-Date: 2018-06-06 13:20+0200\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" @@ -77,11 +77,6 @@ msgid "Guest user (role)" msgstr "" -#: ./src/pyams_content/component/gallery/paragraph.py:40 -#: ./src/pyams_content/component/gallery/paragraph.py:47 -msgid "Medias gallery" -msgstr "" - #: ./src/pyams_content/component/gallery/__init__.py:154 msgid "Gallery" msgstr "" @@ -140,8 +135,9 @@ #: ./src/pyams_content/component/gallery/interfaces/__init__.py:61 #: ./src/pyams_content/component/extfile/interfaces/__init__.py:44 #: ./src/pyams_content/component/illustration/interfaces/__init__.py:56 -#: ./src/pyams_content/component/paragraph/interfaces/video.py:47 -#: ./src/pyams_content/component/paragraph/interfaces/verbatim.py:43 +#: ./src/pyams_content/component/paragraph/interfaces/video.py:48 +#: ./src/pyams_content/component/paragraph/interfaces/audio.py:48 +#: ./src/pyams_content/component/paragraph/interfaces/verbatim.py:44 #: ./src/pyams_content/component/video/interfaces/__init__.py:52 msgid "Author" msgstr "" @@ -149,7 +145,8 @@ #: ./src/pyams_content/component/gallery/zmi/interfaces.py:41 #: ./src/pyams_content/component/gallery/interfaces/__init__.py:62 #: ./src/pyams_content/component/extfile/interfaces/__init__.py:45 -#: ./src/pyams_content/component/paragraph/interfaces/video.py:48 +#: ./src/pyams_content/component/paragraph/interfaces/video.py:49 +#: ./src/pyams_content/component/paragraph/interfaces/audio.py:49 #: ./src/pyams_content/component/video/interfaces/__init__.py:53 msgid "Name of document's author" msgstr "" @@ -175,15 +172,19 @@ msgid "Zoom image" msgstr "" +#: ./src/pyams_content/component/gallery/interfaces/__init__.py:130 +msgid "Medias gallery" +msgstr "" + #: ./src/pyams_content/component/gallery/interfaces/__init__.py:47 #: ./src/pyams_content/component/illustration/interfaces/__init__.py:41 -#: ./src/pyams_content/component/illustration/interfaces/__init__.py:76 +#: ./src/pyams_content/component/illustration/interfaces/__init__.py:77 msgid "Image or video data" msgstr "" #: ./src/pyams_content/component/gallery/interfaces/__init__.py:48 #: ./src/pyams_content/component/illustration/interfaces/__init__.py:42 -#: ./src/pyams_content/component/illustration/interfaces/__init__.py:77 +#: ./src/pyams_content/component/illustration/interfaces/__init__.py:78 msgid "Image or video content" msgstr "" @@ -206,7 +207,8 @@ #: ./src/pyams_content/component/gallery/interfaces/__init__.py:98 #: ./src/pyams_content/component/extfile/interfaces/__init__.py:40 #: ./src/pyams_content/component/illustration/interfaces/__init__.py:52 -#: ./src/pyams_content/component/paragraph/interfaces/video.py:43 +#: ./src/pyams_content/component/paragraph/interfaces/video.py:44 +#: ./src/pyams_content/component/paragraph/interfaces/audio.py:44 #: ./src/pyams_content/component/links/interfaces/__init__.py:37 #: ./src/pyams_content/component/video/interfaces/__init__.py:48 #: ./src/pyams_content/shared/common/interfaces/__init__.py:145 @@ -228,6 +230,7 @@ #: ./src/pyams_content/component/gallery/interfaces/__init__.py:73 #: ./src/pyams_content/component/extfile/interfaces/__init__.py:89 +#: ./src/pyams_content/component/paragraph/interfaces/audio.py:52 msgid "Audio data" msgstr "" @@ -305,8 +308,7 @@ #: ./src/pyams_content/component/extfile/__init__.py:253 #: ./src/pyams_content/component/extfile/__init__.py:257 -#: ./src/pyams_content/component/paragraph/video.py:49 -#: ./src/pyams_content/component/paragraph/video.py:62 +#: ./src/pyams_content/component/paragraph/interfaces/video.py:34 msgid "Video" msgstr "" @@ -395,7 +397,8 @@ msgstr "" #: ./src/pyams_content/component/extfile/interfaces/__init__.py:41 -#: ./src/pyams_content/component/paragraph/interfaces/video.py:44 +#: ./src/pyams_content/component/paragraph/interfaces/video.py:45 +#: ./src/pyams_content/component/paragraph/interfaces/audio.py:45 #: ./src/pyams_content/component/video/interfaces/__init__.py:49 msgid "File description displayed by front-office template" msgstr "" @@ -435,7 +438,7 @@ msgstr "" #: ./src/pyams_content/component/extfile/interfaces/__init__.py:81 -#: ./src/pyams_content/component/paragraph/interfaces/video.py:51 +#: ./src/pyams_content/component/paragraph/interfaces/video.py:52 msgid "Video data" msgstr "" @@ -444,14 +447,14 @@ msgstr "" #: ./src/pyams_content/component/extfile/interfaces/__init__.py:90 +#: ./src/pyams_content/component/paragraph/interfaces/audio.py:53 msgid "Audio file content" msgstr "" -#: ./src/pyams_content/component/illustration/paragraph.py:40 -#: ./src/pyams_content/component/illustration/paragraph.py:47 #: ./src/pyams_content/component/illustration/__init__.py:132 #: ./src/pyams_content/component/illustration/zmi/__init__.py:54 #: ./src/pyams_content/component/illustration/zmi/__init__.py:81 +#: ./src/pyams_content/component/illustration/interfaces/__init__.py:71 msgid "Illustration" msgstr "" @@ -488,16 +491,6 @@ msgid "Presentation template used for illustration" msgstr "" -#: ./src/pyams_content/component/paragraph/milestone.py:199 -#: ./src/pyams_content/component/paragraph/milestone.py:222 -#: ./src/pyams_content/component/paragraph/zmi/milestone.py:303 -msgid "Milestones" -msgstr "" - -#: ./src/pyams_content/component/paragraph/milestone.py:231 -msgid "Milestones paragraph" -msgstr "" - #: ./src/pyams_content/component/paragraph/milestone.py:140 msgid "Selected paragraph is missing" msgstr "" @@ -506,15 +499,6 @@ msgid "Selected paragraph is not visible" msgstr "" -#: ./src/pyams_content/component/paragraph/keypoint.py:46 -#: ./src/pyams_content/component/paragraph/interfaces/keypoint.py:39 -msgid "Key points" -msgstr "" - -#: ./src/pyams_content/component/paragraph/keypoint.py:61 -msgid "Key points paragraph" -msgstr "" - #: ./src/pyams_content/component/paragraph/container.py:73 msgid "Paragraphs" msgstr "" @@ -523,78 +507,10 @@ msgid "no visible paragraph" msgstr "" -#: ./src/pyams_content/component/paragraph/pictogram.py:189 -#: ./src/pyams_content/component/paragraph/pictogram.py:212 -#: ./src/pyams_content/component/paragraph/zmi/pictogram.py:305 -msgid "Pictograms" -msgstr "" - -#: ./src/pyams_content/component/paragraph/pictogram.py:221 -msgid "Pictograms paragraph" -msgstr "" - #: ./src/pyams_content/component/paragraph/pictogram.py:134 msgid "Selected pictogram is missing" msgstr "" -#: ./src/pyams_content/component/paragraph/keynumber.py:183 -#: ./src/pyams_content/component/paragraph/keynumber.py:207 -#: ./src/pyams_content/component/paragraph/zmi/keynumber.py:282 -msgid "Key numbers" -msgstr "" - -#: ./src/pyams_content/component/paragraph/keynumber.py:216 -msgid "Key numbers paragraph" -msgstr "" - -#: ./src/pyams_content/component/paragraph/frame.py:52 -msgid "Framed text" -msgstr "" - -#: ./src/pyams_content/component/paragraph/frame.py:62 -msgid "Framed text paragraph" -msgstr "" - -#: ./src/pyams_content/component/paragraph/verbatim.py:50 -msgid "Verbatim" -msgstr "" - -#: ./src/pyams_content/component/paragraph/verbatim.py:62 -msgid "Verbatim paragraph" -msgstr "" - -#: ./src/pyams_content/component/paragraph/html.py:63 -msgid "Raw HTML " -msgstr "" - -#: ./src/pyams_content/component/paragraph/html.py:73 -msgid "Raw HTML paragraph" -msgstr "" - -#: ./src/pyams_content/component/paragraph/html.py:119 -msgid "Rich text" -msgstr "" - -#: ./src/pyams_content/component/paragraph/html.py:129 -msgid "Rich text paragraph" -msgstr "" - -#: ./src/pyams_content/component/paragraph/contact.py:47 -#: ./src/pyams_content/component/paragraph/contact.py:76 -msgid "Contact card" -msgstr "" - -#: ./src/pyams_content/component/paragraph/header.py:46 -#: ./src/pyams_content/component/paragraph/interfaces/header.py:39 -#: ./src/pyams_content/features/alert/interfaces.py:65 -#: ./src/pyams_content/features/alert/zmi/container.py:158 -msgid "Header" -msgstr "" - -#: ./src/pyams_content/component/paragraph/header.py:61 -msgid "Header paragraph" -msgstr "" - #: ./src/pyams_content/component/paragraph/zmi/milestone.py:77 msgid "Milestones..." msgstr "" @@ -617,22 +533,31 @@ msgid "Anchor" msgstr "" -#: ./src/pyams_content/component/paragraph/zmi/milestone.py:318 +#: ./src/pyams_content/component/paragraph/zmi/milestone.py:299 +#: ./src/pyams_content/component/paragraph/interfaces/milestone.py:76 +msgid "Milestones" +msgstr "" + +#: ./src/pyams_content/component/paragraph/zmi/milestone.py:314 msgid "Add milestone" msgstr "" -#: ./src/pyams_content/component/paragraph/zmi/milestone.py:329 +#: ./src/pyams_content/component/paragraph/zmi/milestone.py:325 msgid "Add new milestone" msgstr "" -#: ./src/pyams_content/component/paragraph/zmi/milestone.py:362 +#: ./src/pyams_content/component/paragraph/zmi/milestone.py:358 msgid "Edit milestone properties" msgstr "" -#: ./src/pyams_content/component/paragraph/zmi/milestone.py:351 +#: ./src/pyams_content/component/paragraph/zmi/milestone.py:347 msgid "Milestone was correctly added" msgstr "" +#: ./src/pyams_content/component/paragraph/zmi/milestone.py:285 +msgid "(missing paragraph)" +msgstr "" + #: ./src/pyams_content/component/paragraph/zmi/keypoint.py:50 msgid "Key points..." msgstr "" @@ -695,21 +620,23 @@ msgid "Paragraph was correctly added." msgstr "" -#: ./src/pyams_content/component/paragraph/zmi/video.py:55 +#: ./src/pyams_content/component/paragraph/zmi/video.py:54 msgid "Video paragraph..." msgstr "" -#: ./src/pyams_content/component/paragraph/zmi/video.py:66 +#: ./src/pyams_content/component/paragraph/zmi/video.py:65 msgid "Add new video paragraph" msgstr "" -#: ./src/pyams_content/component/paragraph/zmi/video.py:113 +#: ./src/pyams_content/component/paragraph/zmi/video.py:112 #: ./src/pyams_content/component/video/zmi/paragraph.py:209 msgid "Edit video properties" msgstr "" -#: ./src/pyams_content/component/paragraph/zmi/video.py:84 -#: ./src/pyams_content/component/paragraph/zmi/video.py:134 +#: ./src/pyams_content/component/paragraph/zmi/video.py:83 +#: ./src/pyams_content/component/paragraph/zmi/video.py:133 +#: ./src/pyams_content/component/paragraph/zmi/audio.py:83 +#: ./src/pyams_content/component/paragraph/zmi/audio.py:133 #: ./src/pyams_content/component/video/zmi/paragraph.py:103 #: ./src/pyams_content/component/video/zmi/paragraph.py:238 msgid "HTML content" @@ -777,6 +704,11 @@ msgid "Associated text" msgstr "" +#: ./src/pyams_content/component/paragraph/zmi/pictogram.py:305 +#: ./src/pyams_content/component/paragraph/interfaces/pictogram.py:80 +msgid "Pictograms" +msgstr "" + #: ./src/pyams_content/component/paragraph/zmi/pictogram.py:320 #: ./src/pyams_content/reference/pictograms/zmi/__init__.py:62 msgid "Add pictogram" @@ -812,6 +744,18 @@ msgid "Default header: {0}" msgstr "" +#: ./src/pyams_content/component/paragraph/zmi/audio.py:54 +msgid "Audio paragraph..." +msgstr "" + +#: ./src/pyams_content/component/paragraph/zmi/audio.py:65 +msgid "Add new audio paragraph" +msgstr "" + +#: ./src/pyams_content/component/paragraph/zmi/audio.py:112 +msgid "Edit audio properties" +msgstr "" + #: ./src/pyams_content/component/paragraph/zmi/keynumber.py:76 msgid "Key numbers..." msgstr "" @@ -835,6 +779,11 @@ msgid "key-number-label" msgstr "" +#: ./src/pyams_content/component/paragraph/zmi/keynumber.py:282 +#: ./src/pyams_content/component/paragraph/interfaces/keynumber.py:76 +msgid "Key numbers" +msgstr "" + #: ./src/pyams_content/component/paragraph/zmi/keynumber.py:297 msgid "Add keynumber" msgstr "" @@ -950,29 +899,34 @@ msgid "Paragraph to which this milestone should lead" msgstr "" -#: ./src/pyams_content/component/paragraph/interfaces/milestone.py:82 +#: ./src/pyams_content/component/paragraph/interfaces/milestone.py:83 msgid "Milestones template" msgstr "" -#: ./src/pyams_content/component/paragraph/interfaces/milestone.py:83 +#: ./src/pyams_content/component/paragraph/interfaces/milestone.py:84 msgid "Presentation template used for milestones" msgstr "" +#: ./src/pyams_content/component/paragraph/interfaces/keypoint.py:33 #: ./src/pyams_content/component/paragraph/interfaces/keypoint.py:40 +msgid "Key points" +msgstr "" + +#: ./src/pyams_content/component/paragraph/interfaces/keypoint.py:41 msgid "Enter one key point by line, without hyphen or prefix" msgstr "" -#: ./src/pyams_content/component/paragraph/interfaces/keypoint.py:43 -msgid "Presentation template" -msgstr "" - #: ./src/pyams_content/component/paragraph/interfaces/keypoint.py:44 -#: ./src/pyams_content/component/paragraph/interfaces/frame.py:43 -#: ./src/pyams_content/component/paragraph/interfaces/verbatim.py:52 -#: ./src/pyams_content/component/paragraph/interfaces/html.py:45 -#: ./src/pyams_content/component/paragraph/interfaces/html.py:65 -#: ./src/pyams_content/shared/imagemap/interfaces/__init__.py:99 -#: ./src/pyams_content/shared/logo/interfaces/__init__.py:75 +msgid "Presentation template" +msgstr "" + +#: ./src/pyams_content/component/paragraph/interfaces/keypoint.py:45 +#: ./src/pyams_content/component/paragraph/interfaces/frame.py:44 +#: ./src/pyams_content/component/paragraph/interfaces/verbatim.py:53 +#: ./src/pyams_content/component/paragraph/interfaces/html.py:46 +#: ./src/pyams_content/component/paragraph/interfaces/html.py:67 +#: ./src/pyams_content/shared/imagemap/interfaces/__init__.py:100 +#: ./src/pyams_content/shared/logo/interfaces/__init__.py:76 msgid "Presentation template used for this paragraph" msgstr "" @@ -1002,23 +956,24 @@ msgid "List of paragraphs automatically added to a new content" msgstr "" -#: ./src/pyams_content/component/paragraph/interfaces/video.py:40 -#: ./src/pyams_content/component/paragraph/interfaces/html.py:61 -#: ./src/pyams_content/component/video/interfaces/__init__.py:74 +#: ./src/pyams_content/component/paragraph/interfaces/video.py:41 +#: ./src/pyams_content/component/paragraph/interfaces/audio.py:41 +#: ./src/pyams_content/component/paragraph/interfaces/html.py:63 +#: ./src/pyams_content/component/video/interfaces/__init__.py:75 msgid "Body" msgstr "" -#: ./src/pyams_content/component/paragraph/interfaces/video.py:52 +#: ./src/pyams_content/component/paragraph/interfaces/video.py:53 msgid "Video file content" msgstr "" -#: ./src/pyams_content/component/paragraph/interfaces/video.py:55 -#: ./src/pyams_content/component/video/interfaces/__init__.py:77 -msgid "Video template" -msgstr "" - #: ./src/pyams_content/component/paragraph/interfaces/video.py:56 #: ./src/pyams_content/component/video/interfaces/__init__.py:78 +msgid "Video template" +msgstr "" + +#: ./src/pyams_content/component/paragraph/interfaces/video.py:57 +#: ./src/pyams_content/component/video/interfaces/__init__.py:79 msgid "Presentation template used for this video" msgstr "" @@ -1051,14 +1006,26 @@ msgid "Additional text associated to this pictogram" msgstr "" -#: ./src/pyams_content/component/paragraph/interfaces/pictogram.py:86 +#: ./src/pyams_content/component/paragraph/interfaces/pictogram.py:87 msgid "Pictograms template" msgstr "" -#: ./src/pyams_content/component/paragraph/interfaces/pictogram.py:87 +#: ./src/pyams_content/component/paragraph/interfaces/pictogram.py:88 msgid "Presentation template used for pictograms" msgstr "" +#: ./src/pyams_content/component/paragraph/interfaces/audio.py:34 +msgid "Audio" +msgstr "" + +#: ./src/pyams_content/component/paragraph/interfaces/audio.py:56 +msgid "Audio template" +msgstr "" + +#: ./src/pyams_content/component/paragraph/interfaces/audio.py:57 +msgid "Presentation template used for this audio file" +msgstr "" + #: ./src/pyams_content/component/paragraph/interfaces/keynumber.py:41 msgid "Is this key number visible in front-office?" msgstr "" @@ -1076,127 +1043,152 @@ msgid "The way this text will be rendered depends on presentation template" msgstr "" -#: ./src/pyams_content/component/paragraph/interfaces/keynumber.py:82 +#: ./src/pyams_content/component/paragraph/interfaces/keynumber.py:83 msgid "Key numbers template" msgstr "" -#: ./src/pyams_content/component/paragraph/interfaces/keynumber.py:83 +#: ./src/pyams_content/component/paragraph/interfaces/keynumber.py:84 msgid "Presentation template used for key numbers" msgstr "" -#: ./src/pyams_content/component/paragraph/interfaces/frame.py:39 +#: ./src/pyams_content/component/paragraph/interfaces/frame.py:33 +msgid "Framed text" +msgstr "" + +#: ./src/pyams_content/component/paragraph/interfaces/frame.py:40 msgid "Frame body" msgstr "" -#: ./src/pyams_content/component/paragraph/interfaces/frame.py:42 +#: ./src/pyams_content/component/paragraph/interfaces/frame.py:43 msgid "Text template" msgstr "" -#: ./src/pyams_content/component/paragraph/interfaces/verbatim.py:39 -msgid "Quoted text" +#: ./src/pyams_content/component/paragraph/interfaces/verbatim.py:33 +msgid "Verbatim" msgstr "" #: ./src/pyams_content/component/paragraph/interfaces/verbatim.py:40 +msgid "Quoted text" +msgstr "" + +#: ./src/pyams_content/component/paragraph/interfaces/verbatim.py:41 msgid "Quotation marks will be added automatically by presentation template" msgstr "" -#: ./src/pyams_content/component/paragraph/interfaces/verbatim.py:44 +#: ./src/pyams_content/component/paragraph/interfaces/verbatim.py:45 msgid "Name of the quote author" msgstr "" -#: ./src/pyams_content/component/paragraph/interfaces/verbatim.py:47 -#: ./src/pyams_content/component/paragraph/interfaces/contact.py:53 -msgid "In charge of" -msgstr "" - #: ./src/pyams_content/component/paragraph/interfaces/verbatim.py:48 +#: ./src/pyams_content/component/paragraph/interfaces/contact.py:54 +msgid "In charge of" +msgstr "" + +#: ./src/pyams_content/component/paragraph/interfaces/verbatim.py:49 msgid "Label of author function" msgstr "" -#: ./src/pyams_content/component/paragraph/interfaces/verbatim.py:51 +#: ./src/pyams_content/component/paragraph/interfaces/verbatim.py:52 msgid "Verbatim template" msgstr "" -#: ./src/pyams_content/component/paragraph/interfaces/html.py:39 -msgid "Raw HTML code" +#: ./src/pyams_content/component/paragraph/interfaces/html.py:33 +msgid "Raw HTML " +msgstr "" + +#: ./src/pyams_content/component/paragraph/interfaces/html.py:56 +msgid "Rich text" msgstr "" #: ./src/pyams_content/component/paragraph/interfaces/html.py:40 +msgid "Raw HTML code" +msgstr "" + +#: ./src/pyams_content/component/paragraph/interfaces/html.py:41 msgid "" "This HTML code will be used 'as is', without any transformation. Use with " "care!!" msgstr "" -#: ./src/pyams_content/component/paragraph/interfaces/html.py:44 +#: ./src/pyams_content/component/paragraph/interfaces/html.py:45 msgid "Raw HTML code template" msgstr "" -#: ./src/pyams_content/component/paragraph/interfaces/html.py:64 +#: ./src/pyams_content/component/paragraph/interfaces/html.py:66 msgid "Body template" msgstr "" -#: ./src/pyams_content/component/paragraph/interfaces/contact.py:49 -msgid "Contact identity" +#: ./src/pyams_content/component/paragraph/interfaces/contact.py:43 +msgid "Contact card" msgstr "" #: ./src/pyams_content/component/paragraph/interfaces/contact.py:50 +msgid "Contact identity" +msgstr "" + +#: ./src/pyams_content/component/paragraph/interfaces/contact.py:51 msgid "Name of the contact" msgstr "" -#: ./src/pyams_content/component/paragraph/interfaces/contact.py:54 +#: ./src/pyams_content/component/paragraph/interfaces/contact.py:55 msgid "Label of contact function" msgstr "" -#: ./src/pyams_content/component/paragraph/interfaces/contact.py:57 -msgid "Email address" -msgstr "" - #: ./src/pyams_content/component/paragraph/interfaces/contact.py:58 +msgid "Email address" +msgstr "" + +#: ./src/pyams_content/component/paragraph/interfaces/contact.py:59 msgid "Contact email address" msgstr "" -#: ./src/pyams_content/component/paragraph/interfaces/contact.py:61 -msgid "Contact form" -msgstr "" - #: ./src/pyams_content/component/paragraph/interfaces/contact.py:62 +msgid "Contact form" +msgstr "" + +#: ./src/pyams_content/component/paragraph/interfaces/contact.py:63 msgid "Reference of contact form" msgstr "" -#: ./src/pyams_content/component/paragraph/interfaces/contact.py:66 -msgid "Photo" -msgstr "" - #: ./src/pyams_content/component/paragraph/interfaces/contact.py:67 +msgid "Photo" +msgstr "" + +#: ./src/pyams_content/component/paragraph/interfaces/contact.py:68 msgid "Use 'browse' button to select contact picture" msgstr "" -#: ./src/pyams_content/component/paragraph/interfaces/contact.py:75 +#: ./src/pyams_content/component/paragraph/interfaces/contact.py:76 msgid "Address" msgstr "" -#: ./src/pyams_content/component/paragraph/interfaces/contact.py:78 -msgid "Contact template" -msgstr "" - #: ./src/pyams_content/component/paragraph/interfaces/contact.py:79 +msgid "Contact template" +msgstr "" + +#: ./src/pyams_content/component/paragraph/interfaces/contact.py:80 msgid "Presentation template used for this contact" msgstr "" -#: ./src/pyams_content/component/paragraph/interfaces/contact.py:71 -msgid "GPS location" -msgstr "" - #: ./src/pyams_content/component/paragraph/interfaces/contact.py:72 +msgid "GPS location" +msgstr "" + +#: ./src/pyams_content/component/paragraph/interfaces/contact.py:73 msgid "GPS coordinates used to locate contact" msgstr "" -#: ./src/pyams_content/component/paragraph/interfaces/header.py:42 -#: ./src/pyams_content/features/header/interfaces/__init__.py:39 -msgid "Header template" +#: ./src/pyams_content/component/paragraph/interfaces/header.py:33 +#: ./src/pyams_content/component/paragraph/interfaces/header.py:40 +msgid "Header" msgstr "" #: ./src/pyams_content/component/paragraph/interfaces/header.py:43 +#: ./src/pyams_content/features/header/interfaces/__init__.py:39 +msgid "Header template" +msgstr "" + +#: ./src/pyams_content/component/paragraph/interfaces/header.py:44 #: ./src/pyams_content/features/header/interfaces/__init__.py:40 msgid "Presentation template used for this header" msgstr "" @@ -1228,13 +1220,9 @@ msgid "Selected themes" msgstr "" -#: ./src/pyams_content/component/association/paragraph.py:48 -#: ./src/pyams_content/component/association/paragraph.py:57 -msgid "Associations paragraph" -msgstr "" - #: ./src/pyams_content/component/association/container.py:88 #: ./src/pyams_content/component/association/zmi/__init__.py:296 +#: ./src/pyams_content/component/association/interfaces/__init__.py:86 msgid "Associations" msgstr "" @@ -1276,11 +1264,11 @@ msgid "Is this item visible in front-office?" msgstr "" -#: ./src/pyams_content/component/association/interfaces/__init__.py:92 +#: ./src/pyams_content/component/association/interfaces/__init__.py:93 msgid "Associations template" msgstr "" -#: ./src/pyams_content/component/association/interfaces/__init__.py:93 +#: ./src/pyams_content/component/association/interfaces/__init__.py:94 msgid "Presentation template used for associations" msgstr "" @@ -1394,9 +1382,8 @@ msgid "Address as displayed in address book" msgstr "" -#: ./src/pyams_content/component/video/paragraph.py:47 -#: ./src/pyams_content/component/video/paragraph.py:57 #: ./src/pyams_content/component/video/__init__.py:73 +#: ./src/pyams_content/component/video/interfaces/__init__.py:68 msgid "External video" msgstr "" @@ -3327,12 +3314,6 @@ msgid "Other terms" msgstr "" -#: ./src/pyams_content/shared/imagemap/paragraph.py:47 -#: ./src/pyams_content/shared/imagemap/paragraph.py:60 -#: ./src/pyams_content/shared/imagemap/interfaces/__init__.py:35 -msgid "Image map" -msgstr "" - #: ./src/pyams_content/shared/imagemap/paragraph.py:91 msgid "no selected image map" msgstr "" @@ -3432,6 +3413,11 @@ msgid "Edit image map properties" msgstr "" +#: ./src/pyams_content/shared/imagemap/interfaces/__init__.py:35 +#: ./src/pyams_content/shared/imagemap/interfaces/__init__.py:88 +msgid "Image map" +msgstr "" + #: ./src/pyams_content/shared/imagemap/interfaces/__init__.py:50 msgid "Internal or external link associated with this map area" msgstr "" @@ -3456,16 +3442,16 @@ msgid "List of defined map areas" msgstr "" -#: ./src/pyams_content/shared/imagemap/interfaces/__init__.py:94 +#: ./src/pyams_content/shared/imagemap/interfaces/__init__.py:95 #: ./src/pyams_content/features/alert/interfaces.py:73 msgid "Internal reference" msgstr "" -#: ./src/pyams_content/shared/imagemap/interfaces/__init__.py:95 +#: ./src/pyams_content/shared/imagemap/interfaces/__init__.py:96 msgid "Reference to image map object" msgstr "" -#: ./src/pyams_content/shared/imagemap/interfaces/__init__.py:98 +#: ./src/pyams_content/shared/imagemap/interfaces/__init__.py:99 msgid "Image map template" msgstr "" @@ -3647,21 +3633,16 @@ msgid "If 'no', link is not visible" msgstr "" -#: ./src/pyams_content/shared/logo/paragraph.py:46 -#: ./src/pyams_content/shared/logo/paragraph.py:63 -msgid "Logos" -msgstr "" - -#: ./src/pyams_content/shared/logo/paragraph.py:94 +#: ./src/pyams_content/shared/logo/paragraph.py:95 msgid "no selected logo" msgstr "" -#: ./src/pyams_content/shared/logo/paragraph.py:100 +#: ./src/pyams_content/shared/logo/paragraph.py:101 #, python-format msgid "logo '{0}' can't be found" msgstr "" -#: ./src/pyams_content/shared/logo/paragraph.py:108 +#: ./src/pyams_content/shared/logo/paragraph.py:109 #, python-format msgid "logo '{0}' is not published" msgstr "" @@ -3704,15 +3685,19 @@ msgid "Logo" msgstr "" -#: ./src/pyams_content/shared/logo/interfaces/__init__.py:70 -msgid "Logos references" +#: ./src/pyams_content/shared/logo/interfaces/__init__.py:64 +msgid "Logos" msgstr "" #: ./src/pyams_content/shared/logo/interfaces/__init__.py:71 +msgid "Logos references" +msgstr "" + +#: ./src/pyams_content/shared/logo/interfaces/__init__.py:72 msgid "List of internal logos references" msgstr "" -#: ./src/pyams_content/shared/logo/interfaces/__init__.py:74 +#: ./src/pyams_content/shared/logo/interfaces/__init__.py:75 msgid "Logos template" msgstr "" @@ -4335,8 +4320,14 @@ msgid "Alert gravity will affect rendered alert style" msgstr "" +#. Default: Heading +#: ./src/pyams_content/features/alert/interfaces.py:65 +#: ./src/pyams_content/features/alert/zmi/container.py:158 +msgid "alert-header" +msgstr "" + #: ./src/pyams_content/features/alert/interfaces.py:66 -msgid "Short alert header" +msgid "Short alert header (Alert, Important...)" msgstr "" #: ./src/pyams_content/features/alert/interfaces.py:69 diff -r 652a551b127e -r b0bfac7e3160 src/pyams_content/shared/imagemap/interfaces/__init__.py --- a/src/pyams_content/shared/imagemap/interfaces/__init__.py Wed Jun 06 11:20:14 2018 +0200 +++ b/src/pyams_content/shared/imagemap/interfaces/__init__.py Wed Jun 06 13:36:56 2018 +0200 @@ -85,6 +85,7 @@ IMAGEMAP_PARAGRAPH_TYPE = 'ImageMap' +IMAGEMAP_PARAGRAPH_NAME = _("Image map") IMAGEMAP_PARAGRAPH_RENDERERS = 'PyAMS.paragraph.imagemap.renderers' diff -r 652a551b127e -r b0bfac7e3160 src/pyams_content/shared/imagemap/paragraph.py --- a/src/pyams_content/shared/imagemap/paragraph.py Wed Jun 06 11:20:14 2018 +0200 +++ b/src/pyams_content/shared/imagemap/paragraph.py Wed Jun 06 13:36:56 2018 +0200 @@ -19,7 +19,7 @@ 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, IMAGEMAP_PARAGRAPH_TYPE, \ - IMAGEMAP_PARAGRAPH_RENDERERS + IMAGEMAP_PARAGRAPH_RENDERERS, IMAGEMAP_PARAGRAPH_NAME from pyams_i18n.interfaces import II18nManager, INegotiator, II18n from pyams_workflow.interfaces import IWorkflow, IWorkflowState @@ -44,7 +44,7 @@ """Image map paragraph""" icon_class = 'fa-location-arrow' - icon_hint = _("Image map") + icon_hint = IMAGEMAP_PARAGRAPH_NAME reference = FieldProperty(IImageMapParagraph['reference']) renderer = FieldProperty(IImageMapParagraph['renderer']) @@ -57,7 +57,7 @@ class ImageMapParagraphFactory(BaseParagraphFactory): """Image map paragraph factory""" - name = _("Image map") + name = IMAGEMAP_PARAGRAPH_NAME content_type = ImageMapParagraph secondary_menu = True diff -r 652a551b127e -r b0bfac7e3160 src/pyams_content/shared/logo/interfaces/__init__.py --- a/src/pyams_content/shared/logo/interfaces/__init__.py Wed Jun 06 11:20:14 2018 +0200 +++ b/src/pyams_content/shared/logo/interfaces/__init__.py Wed Jun 06 13:36:56 2018 +0200 @@ -61,6 +61,7 @@ LOGOS_PARAGRAPH_TYPE = 'Logos' +LOGOS_PARAGRAPH_NAME = _("Logos") LOGOS_PARAGRAPH_RENDERERS = 'PyAMS.shared.logos.renderers' diff -r 652a551b127e -r b0bfac7e3160 src/pyams_content/shared/logo/paragraph.py --- a/src/pyams_content/shared/logo/paragraph.py Wed Jun 06 11:20:14 2018 +0200 +++ b/src/pyams_content/shared/logo/paragraph.py Wed Jun 06 13:36:56 2018 +0200 @@ -18,7 +18,8 @@ # import interfaces from pyams_content.features.checker.interfaces import IContentChecker, MISSING_VALUE, MISSING_LANG_VALUE, ERROR_VALUE from pyams_content.features.renderer.interfaces import IContentRenderer -from pyams_content.shared.logo.interfaces import ILogosParagraph, LOGOS_PARAGRAPH_TYPE, LOGOS_PARAGRAPH_RENDERERS +from pyams_content.shared.logo.interfaces import ILogosParagraph, LOGOS_PARAGRAPH_TYPE, LOGOS_PARAGRAPH_RENDERERS, \ + LOGOS_PARAGRAPH_NAME from pyams_i18n.interfaces import II18nManager, INegotiator, II18n from pyams_workflow.interfaces import IWorkflow, IWorkflowState @@ -43,7 +44,7 @@ """Logos paragraph""" icon_class = 'fa-th-large' - icon_hint = _("Logos") + icon_hint = LOGOS_PARAGRAPH_NAME references = FieldProperty(ILogosParagraph['references']) renderer = FieldProperty(ILogosParagraph['renderer']) @@ -60,7 +61,7 @@ class LogosParagraphFactory(BaseParagraphFactory): """Logos paragraph factory""" - name = _("Logos") + name = LOGOS_PARAGRAPH_NAME content_type = LogosParagraph secondary_menu = True