# HG changeset patch # User Damien Correia # Date 1524823207 -7200 # Node ID 06ab962b04c5b71e0fb9798337f61f00fd02351c # Parent b156fba7e4fe7f69fea6d02264a44da52ca66bfd# Parent 60923751ba2f8429a6f4a9c7fb837fa160df57a7 merge default diff -r b156fba7e4fe -r 06ab962b04c5 .hgtags --- a/.hgtags Fri Apr 20 16:52:36 2018 +0200 +++ b/.hgtags Fri Apr 27 12:00:07 2018 +0200 @@ -14,3 +14,4 @@ 930ead384f3c0326c029d809d48827de44381a34 0.1.10.1 d73905f6a2eb2949b3979671bf261965473bb7b9 0.1.11 5d94baef6923642af27a9f30f377d45f67f04bbf 0.1.12 +cf2d19055dd754ce3ed30be24f83dae351b3ae5c 0.1.13 diff -r b156fba7e4fe -r 06ab962b04c5 docs/HISTORY.txt --- a/docs/HISTORY.txt Fri Apr 20 16:52:36 2018 +0200 +++ b/docs/HISTORY.txt Fri Apr 27 12:00:07 2018 +0200 @@ -1,6 +1,18 @@ History ======= +0.1.13 +------ + - renamed factories to use snake_case on functions + - updated custom "update_content" methods for last PyAMS_form package + - added checks for "pyams_gis" package availability to enable GPS coordinates attributes + - refactored blog post add form + - added ProtectedFormObjectMixin as base class to menu dividers to avoid menus only containing dividers + - added prefix to edit forms + - updated TinyMCE editor initialization + - updated contact paragraph properties + - updated JSON events responses + 0.1.12 ------ - updated site upgrade code to use factory interfaces for shared tools diff -r b156fba7e4fe -r 06ab962b04c5 src/pyams_content.egg-info/PKG-INFO --- a/src/pyams_content.egg-info/PKG-INFO Fri Apr 20 16:52:36 2018 +0200 +++ b/src/pyams_content.egg-info/PKG-INFO Fri Apr 27 12:00:07 2018 +0200 @@ -1,6 +1,6 @@ Metadata-Version: 1.1 Name: pyams-content -Version: 0.1.12 +Version: 0.1.13 Summary: PyAMS base content interfaces and classes Home-page: http://hg.ztfy.org/pyams/pyams_content Author: Thierry Florac @@ -73,6 +73,18 @@ History ======= + 0.1.13 + ------ + - renamed factories to use snake_case on functions + - updated custom "update_content" methods for last PyAMS_form package + - added checks for "pyams_gis" package availability to enable GPS coordinates attributes + - refactored blog post add form + - added ProtectedFormObjectMixin as base class to menu dividers to avoid menus only containing dividers + - added prefix to edit forms + - updated TinyMCE editor initialization + - updated contact paragraph properties + - updated JSON events responses + 0.1.12 ------ - updated site upgrade code to use factory interfaces for shared tools diff -r b156fba7e4fe -r 06ab962b04c5 src/pyams_content.egg-info/SOURCES.txt --- a/src/pyams_content.egg-info/SOURCES.txt Fri Apr 20 16:52:36 2018 +0200 +++ b/src/pyams_content.egg-info/SOURCES.txt Fri Apr 27 12:00:07 2018 +0200 @@ -23,7 +23,6 @@ src/pyams_content/component/association/zmi/__init__.py src/pyams_content/component/association/zmi/interfaces.py src/pyams_content/component/association/zmi/paragraph.py -src/pyams_content/component/association/zmi/templates/associations.pt src/pyams_content/component/extfile/__init__.py src/pyams_content/component/extfile/interfaces/__init__.py src/pyams_content/component/extfile/zmi/__init__.py @@ -56,6 +55,7 @@ src/pyams_content/component/paragraph/frame.py src/pyams_content/component/paragraph/header.py src/pyams_content/component/paragraph/html.py +src/pyams_content/component/paragraph/keynumber.py src/pyams_content/component/paragraph/keypoint.py src/pyams_content/component/paragraph/milestone.py src/pyams_content/component/paragraph/pictogram.py @@ -66,6 +66,7 @@ src/pyams_content/component/paragraph/interfaces/frame.py src/pyams_content/component/paragraph/interfaces/header.py src/pyams_content/component/paragraph/interfaces/html.py +src/pyams_content/component/paragraph/interfaces/keynumber.py src/pyams_content/component/paragraph/interfaces/keypoint.py src/pyams_content/component/paragraph/interfaces/milestone.py src/pyams_content/component/paragraph/interfaces/pictogram.py @@ -78,6 +79,7 @@ src/pyams_content/component/paragraph/zmi/header.py src/pyams_content/component/paragraph/zmi/html.py src/pyams_content/component/paragraph/zmi/interfaces.py +src/pyams_content/component/paragraph/zmi/keynumber.py src/pyams_content/component/paragraph/zmi/keypoint.py src/pyams_content/component/paragraph/zmi/milestone.py src/pyams_content/component/paragraph/zmi/pictogram.py @@ -86,11 +88,8 @@ src/pyams_content/component/paragraph/zmi/video.py src/pyams_content/component/paragraph/zmi/templates/associations.pt src/pyams_content/component/paragraph/zmi/templates/html-render.pt -src/pyams_content/component/paragraph/zmi/templates/milestones.pt src/pyams_content/component/paragraph/zmi/templates/paragraph-title-icon.pt src/pyams_content/component/paragraph/zmi/templates/paragraph-title-toolbar.pt -src/pyams_content/component/paragraph/zmi/templates/paragraphs.pt -src/pyams_content/component/paragraph/zmi/templates/pictograms.pt src/pyams_content/component/paragraph/zmi/templates/raw-render.pt src/pyams_content/component/theme/__init__.py src/pyams_content/component/theme/portlet.py @@ -108,6 +107,7 @@ src/pyams_content/component/video/provider/vimeo.py src/pyams_content/component/video/provider/youtube.py src/pyams_content/component/video/provider/zmi/__init__.py +src/pyams_content/component/video/provider/zmi/templates/custom-render.pt src/pyams_content/component/video/provider/zmi/templates/dailymotion-render.pt src/pyams_content/component/video/provider/zmi/templates/vimeo-render.pt src/pyams_content/component/video/provider/zmi/templates/youtube-render.pt @@ -117,6 +117,11 @@ src/pyams_content/component/video/zmi/templates/video-settings.pt src/pyams_content/doctests/README.txt src/pyams_content/features/__init__.py +src/pyams_content/features/alert/__init__.py +src/pyams_content/features/alert/container.py +src/pyams_content/features/alert/interfaces.py +src/pyams_content/features/alert/zmi/__init__.py +src/pyams_content/features/alert/zmi/container.py src/pyams_content/features/checker/__init__.py src/pyams_content/features/checker/interfaces.py src/pyams_content/features/checker/zmi/__init__.py @@ -284,6 +289,7 @@ src/pyams_content/skin/routes.py src/pyams_content/skin/resources/css/pyams_content.css src/pyams_content/skin/resources/css/pyams_content.min.css +src/pyams_content/skin/resources/img/internal-link.png src/pyams_content/skin/resources/js/jquery-canvasAreaDraw.js src/pyams_content/skin/resources/js/jquery-canvasAreaDraw.min.js src/pyams_content/skin/resources/js/jquery-imagemapster-1.2.10.js diff -r b156fba7e4fe -r 06ab962b04c5 src/pyams_content/component/illustration/__init__.py --- a/src/pyams_content/component/illustration/__init__.py Fri Apr 20 16:52:36 2018 +0200 +++ b/src/pyams_content/component/illustration/__init__.py Fri Apr 27 12:00:07 2018 +0200 @@ -52,13 +52,11 @@ class Illustration(Persistent, Contained, RenderedContentMixin): """Illustration persistent class""" + _data = I18nFileProperty(IIllustration['data']) title = FieldProperty(IIllustration['title']) alt_title = FieldProperty(IIllustration['alt_title']) description = FieldProperty(IIllustration['description']) author = FieldProperty(IIllustration['author']) - _data = I18nFileProperty(IIllustration['data']) - filename = FieldProperty(IIllustration['filename']) - language = FieldProperty(IIllustration['language']) renderer = FieldProperty(IIllustration['renderer']) @property @@ -98,11 +96,6 @@ info = IFileInfo(data) info.title = II18n(illustration).get_attribute('title', lang, request) info.description = II18n(illustration).get_attribute('alt_title', lang, request) - if not illustration.filename: - illustration.filename = info.filename - else: - info.filename = illustration.filename - info.language = illustration.language @subscriber(IObjectAddedEvent, context_selector=IIllustration) @@ -169,7 +162,7 @@ output.append(missing_lang_value.format(field=translate(IIllustration[attr].title), lang=lang)) if has_data: - for attr in ('author', 'filename'): + for attr in ('author', ): value = getattr(self.context, attr) if not value: output.append(missing_value.format(field=translate(IIllustration[attr].title))) diff -r b156fba7e4fe -r 06ab962b04c5 src/pyams_content/component/illustration/interfaces/__init__.py --- a/src/pyams_content/component/illustration/interfaces/__init__.py Fri Apr 20 16:52:36 2018 +0200 +++ b/src/pyams_content/component/illustration/interfaces/__init__.py Fri Apr 27 12:00:07 2018 +0200 @@ -38,6 +38,10 @@ class IIllustration(IRenderedContent): """Illustration paragraph""" + data = I18nThumbnailMediaField(title=_("Image or video data"), + description=_("Image or video content"), + required=False) + title = I18nTextLineField(title=_("Legend"), required=False) @@ -53,19 +57,6 @@ description=_("Name of picture's author"), required=False) - data = I18nThumbnailMediaField(title=_("Image or video data"), - description=_("Image or video content"), - required=False) - - filename = TextLine(title=_("Save file as..."), - description=_("Name under which the file will be saved"), - required=False) - - language = Choice(title=_("Language"), - description=_("File's content language"), - vocabulary="PyAMS base languages", - required=False) - renderer = Choice(title=_("Illustration template"), description=_("Presentation template used for illustration"), vocabulary=ILLUSTRATION_RENDERERS, @@ -85,17 +76,3 @@ data = I18nThumbnailMediaField(title=_("Image or video data"), description=_("Image or video content"), required=True) - - filename = TextLine(title=_("Save file as..."), - description=_("Name under which the file will be saved"), - required=False) - - language = Choice(title=_("Language"), - description=_("File's content language"), - vocabulary="PyAMS base languages", - required=False) - - renderer = Choice(title=_("Illustration template"), - description=_("Presentation template used for illustration"), - vocabulary=ILLUSTRATION_RENDERERS, - default='default') diff -r b156fba7e4fe -r 06ab962b04c5 src/pyams_content/component/illustration/zmi/__init__.py --- a/src/pyams_content/component/illustration/zmi/__init__.py Fri Apr 20 16:52:36 2018 +0200 +++ b/src/pyams_content/component/illustration/zmi/__init__.py Fri Apr 27 12:00:07 2018 +0200 @@ -22,24 +22,18 @@ from pyams_form.interfaces.form import IInnerSubForm, IWidgetsPrefixViewletsManager from pyams_skin.layer import IPyAMSLayer from pyams_utils.interfaces import VIEW_SYSTEM_PERMISSION -from pyams_utils.interfaces.data import IObjectData from pyams_zmi.interfaces import IPropertiesEditForm from transaction.interfaces import ITransactionManager # import packages from pyams_content.component.paragraph.zmi import get_json_paragraph_markers_refresh_event from pyams_content.features.renderer.zmi.widget import RendererFieldWidget -from pyams_content.skin import pyams_content -from pyams_form.security import ProtectedFormObjectMixin from pyams_skin.event import get_json_form_refresh_event, get_json_widget_refresh_event -from pyams_skin.viewlet.toolbar import JsToolbarAction from pyams_template.template import template_config from pyams_utils.adapter import adapter_config -from pyams_utils.fanstatic import get_resource_path from pyams_viewlet.viewlet import viewlet_config, Viewlet, EmptyViewlet from pyams_zmi.form import InnerAdminEditForm from z3c.form import field -from zope.interface import implementer from pyams_content import _ @@ -56,7 +50,7 @@ weight = 5 action_class = 'action illustration nowrap width-40' - icon_class = 'fa fa-fw fa-file-image-o' + icon_class = 'fa fa-fw fa-picture-o' icon_hint = _("Illustration") marker_type = 'illustration' @@ -81,8 +75,19 @@ padding_class = '' fieldset_class = 'margin-top-10 padding-y-5' - legend = _("Illustration") - legend_class = 'illustration switcher no-y-padding padding-right-10 pull-left width-auto' + @property + def legend(self): + if IBaseParagraph.providedBy(self.context): + return _("Illustration") + else: + return _("Header illustration") + + @property + def legend_class(self): + if IBaseParagraph.providedBy(self.context): + return 'illustration switcher no-y-padding padding-right-10 pull-left width-auto' + else: + return 'illustration no-y-padding' fields = field.Fields(IIllustration).omit('__parent__', '__name__') fields['renderer'].widgetFactory = RendererFieldWidget @@ -125,39 +130,15 @@ return output -@viewlet_config(name='add-illustration.action', context=IIllustrationTarget, layer=IPyAMSLayer, - view=IllustrationPropertiesInnerEditForm, manager=IWidgetsPrefixViewletsManager) -@implementer(IObjectData) -class AddIllustrationAction(ProtectedFormObjectMixin, JsToolbarAction): - """Add illustration action""" - - group_css_class = 'btn-group clearfix persistent' - label = _("Add illustration") - url = 'PyAMS_content.illustration.addIllustration' - - def __new__(cls, context, request, view, manager): - illustration = IIllustration(context, None) - if illustration and illustration.data: - for value in illustration.data.values(): - if value: - return None - return JsToolbarAction.__new__(cls) - - @property - def object_data(self): - return { - 'ams-plugins': 'pyams_content', - 'ams-plugin-pyams_content-src': get_resource_path(pyams_content) - } - - @viewlet_config(name='illustration-thumbnail', context=IIllustrationTarget, layer=IPyAMSLayer, view=IllustrationPropertiesInnerEditForm, manager=IWidgetsPrefixViewletsManager) @template_config(template='templates/illustration-thumbnail.pt', layer=IPyAMSLayer) class IllustrationThumbnail(Viewlet): - """Illustration thumbnail""" + """Paragraph illustration thumbnail""" def __new__(cls, context, request, view, manager): + if not IBaseParagraph.providedBy(context): + return None illustration = IIllustration(context, None) if (not illustration) or not illustration.data: return None diff -r b156fba7e4fe -r 06ab962b04c5 src/pyams_content/component/illustration/zmi/paragraph.py --- a/src/pyams_content/component/illustration/zmi/paragraph.py Fri Apr 20 16:52:36 2018 +0200 +++ b/src/pyams_content/component/illustration/zmi/paragraph.py Fri Apr 27 12:00:07 2018 +0200 @@ -9,6 +9,7 @@ # WARRANTIES OF TITLE, MERCHANTABILITY, AGAINST INFRINGEMENT, AND FITNESS # FOR A PARTICULAR PURPOSE. # +from zope.schema._schema import getFieldNamesInOrder __docformat__ = 'restructuredtext' @@ -70,7 +71,8 @@ dialog_class = 'modal-large' icon_css_class = 'fa fa-fw fa-file-image-o' - fields = field.Fields(IIllustrationParagraph).omit('__parent__', '__name__', 'visible') + fields = field.Fields(IIllustrationParagraph).select('data', 'title', 'alt_title', 'description', + 'author', 'renderer') ajax_handler = 'add-illustration.json' edit_permission = MANAGE_CONTENT_PERMISSION @@ -103,7 +105,8 @@ dialog_class = 'modal-large' icon_css_class = 'fa fa-fw fa-file-image-o' - fields = field.Fields(IIllustrationParagraph).omit('__parent__', '__name__', 'visible') + fields = field.Fields(IIllustrationParagraph).select('data', 'title', 'alt_title', 'description', + 'author', 'renderer') fields['renderer'].widgetFactory = RendererFieldWidget ajax_handler = 'properties.json' diff -r b156fba7e4fe -r 06ab962b04c5 src/pyams_content/component/paragraph/header.py --- a/src/pyams_content/component/paragraph/header.py Fri Apr 20 16:52:36 2018 +0200 +++ b/src/pyams_content/component/paragraph/header.py Fri Apr 27 12:00:07 2018 +0200 @@ -43,7 +43,7 @@ class HeaderParagraph(RenderedContentMixin, BaseParagraph): """Header paragraph""" - icon_class = 'fa-header' + icon_class = 'fa-download fa-rotate-180' icon_hint = _("Header") @property diff -r b156fba7e4fe -r 06ab962b04c5 src/pyams_content/component/paragraph/html.py --- a/src/pyams_content/component/paragraph/html.py Fri Apr 20 16:52:36 2018 +0200 +++ b/src/pyams_content/component/paragraph/html.py Fri Apr 27 12:00:07 2018 +0200 @@ -102,7 +102,7 @@ class HTMLParagraph(BaseParagraph): """HTML paragraph""" - icon_class = 'fa-html5' + icon_class = 'fa-font' icon_hint = _("Rich text") body = FieldProperty(IHTMLParagraph['body']) diff -r b156fba7e4fe -r 06ab962b04c5 src/pyams_content/component/paragraph/zmi/__init__.py --- a/src/pyams_content/component/paragraph/zmi/__init__.py Fri Apr 20 16:52:36 2018 +0200 +++ b/src/pyams_content/component/paragraph/zmi/__init__.py Fri Apr 27 12:00:07 2018 +0200 @@ -60,7 +60,7 @@ class DefaultParagraphsSettingsMenu(MenuItem): """Default paragraphs settings menu""" - label = _("Paragraphs types...") + label = _("Content block types...") icon_class = 'fa-paragraph' url = 'default-paragraphs.html' modal_target = True @@ -73,7 +73,7 @@ prefix = 'default_paragraphs.' - legend = _("Paragraphs types") + legend = _("Content block types") fields = field.Fields(IParagraphFactorySettings) ajax_handler = 'default-paragraphs.json' diff -r b156fba7e4fe -r 06ab962b04c5 src/pyams_content/component/paragraph/zmi/container.py --- a/src/pyams_content/component/paragraph/zmi/container.py Fri Apr 20 16:52:36 2018 +0200 +++ b/src/pyams_content/component/paragraph/zmi/container.py Fri Apr 27 12:00:07 2018 +0200 @@ -71,7 +71,7 @@ class ParagraphsContainerMenu(MenuItem): """Paragraphs container menu""" - label = _("Paragraphs...") + label = _("Contents...") icon_class = 'fa-paragraph' url = '#paragraphs.html' @@ -285,7 +285,7 @@ class ParagraphContainerView(ContainerAdminView): """Paragraphs container view""" - title = _("Paragraphs list") + title = _("Content blocks") table_class = ParagraphContainerTable @@ -294,7 +294,7 @@ class ParagraphContainerDialogView(AdminDialogDisplayForm): """Paragraphs container dialog view""" - title = _("Paragraphs list") + title = _("Content blocks") dialog_class = 'modal-large no-widget-toolbar' fieldset_class = 'height-300' @@ -307,7 +307,7 @@ class ParagraphsView(InnerTableView): """Paragraphs view""" - title = _("Paragraphs") + title = _("Content blocks") table_class = ParagraphContainerBaseTable weight = 90 @@ -364,7 +364,7 @@ class ParagraphsAssociationsMenu(MenuItem): """Paragraphs associations container menu""" - label = _("Associations...") + label = _("Links and attachments...") icon_class = 'fa-link' url = '#paragraphs-associations.html' @@ -376,7 +376,7 @@ class ParagraphsAssociationsView(AdminView): """Paragraphs associations view""" - title = _("Paragraphs associations") + title = _("Content blocks links and attachments") @reify def associations(self): diff -r b156fba7e4fe -r 06ab962b04c5 src/pyams_content/component/paragraph/zmi/header.py --- a/src/pyams_content/component/paragraph/zmi/header.py Fri Apr 20 16:52:36 2018 +0200 +++ b/src/pyams_content/component/paragraph/zmi/header.py Fri Apr 27 12:00:07 2018 +0200 @@ -50,7 +50,7 @@ """Header paragraph add menu""" label = _("Header...") - label_css_class = 'fa fa-fw fa-header' + label_css_class = 'fa fa-fw fa-download fa-rotate-180' url = 'add-header-paragraph.html' paragraph_type = HEADER_PARAGRAPH_TYPE @@ -61,7 +61,7 @@ """Header paragraph add form""" legend = _("Add new header paragraph") - icon_css_class = 'fa fa-fw fa-header' + icon_css_class = 'fa fa-fw fa-download fa-rotate-180' fields = field.Fields(IHeaderParagraph).select('header', 'renderer') ajax_handler = 'add-header-paragraph.json' @@ -93,7 +93,7 @@ prefix = 'header_properties.' legend = _("Edit header paragraph properties") - icon_css_class = 'fa fa-fw fa-header' + icon_css_class = 'fa fa-fw fa-download fa-rotate-180' fields = field.Fields(IHeaderParagraph).select('header', 'renderer') fields['renderer'].widgetFactory = RendererFieldWidget diff -r b156fba7e4fe -r 06ab962b04c5 src/pyams_content/component/paragraph/zmi/html.py --- a/src/pyams_content/component/paragraph/zmi/html.py Fri Apr 20 16:52:36 2018 +0200 +++ b/src/pyams_content/component/paragraph/zmi/html.py Fri Apr 27 12:00:07 2018 +0200 @@ -192,7 +192,7 @@ """Rich text paragraph add menu""" label = _("Rich text...") - label_css_class = 'fa fa-fw fa-html5' + label_css_class = 'fa fa-fw fa-font' url = 'add-html-paragraph.html' paragraph_type = HTML_PARAGRAPH_TYPE @@ -204,7 +204,7 @@ legend = _("Add new rich text paragraph") dialog_class = 'modal-max' - icon_css_class = 'fa fa-fw fa-html5' + icon_css_class = 'fa fa-fw fa-font' label_css_class = 'control-label col-md-2' input_css_class = 'col-md-10' @@ -239,7 +239,7 @@ legend = _("Edit rich text paragraph properties") dialog_class = 'modal-max' - icon_css_class = 'fa fa-fw fa-html5' + icon_css_class = 'fa fa-fw fa-font' label_css_class = 'control-label col-md-2' input_css_class = 'col-md-10' diff -r b156fba7e4fe -r 06ab962b04c5 src/pyams_content/component/video/interfaces/__init__.py --- a/src/pyams_content/component/video/interfaces/__init__.py Fri Apr 20 16:52:36 2018 +0200 +++ b/src/pyams_content/component/video/interfaces/__init__.py Fri Apr 27 12:00:07 2018 +0200 @@ -37,6 +37,8 @@ class IExternalVideoProvider(Interface): """External video provider""" + label = Attribute("Video provider label") + weight = Attribute("Video provider weight (used for ordering)") settings_interface = Attribute("Video provider settings interface") diff -r b156fba7e4fe -r 06ab962b04c5 src/pyams_content/component/video/provider/__init__.py --- a/src/pyams_content/component/video/provider/__init__.py Fri Apr 20 16:52:36 2018 +0200 +++ b/src/pyams_content/component/video/provider/__init__.py Fri Apr 27 12:00:07 2018 +0200 @@ -9,6 +9,10 @@ # WARRANTIES OF TITLE, MERCHANTABILITY, AGAINST INFRINGEMENT, AND FITNESS # FOR A PARTICULAR PURPOSE. # +from zope.component._api import getUtilitiesFor +from zope.schema.vocabulary import SimpleVocabulary, SimpleTerm + +from pyams_utils.request import check_request __docformat__ = 'restructuredtext' @@ -16,16 +20,78 @@ # import standard library # import interfaces -from pyams_content.component.video.interfaces import IExternalVideoProvider +from pyams_content.component.video.interfaces import IExternalVideo, IExternalVideoProvider, IExternalVideoSettings +from pyams_content.component.video.provider.interfaces import ICustomVideoSettings +from pyams_content.features.checker.interfaces import IContentChecker # import packages +from persistent import Persistent +from pyams_content.component.video import external_video_settings_factory +from pyams_content.features.checker import BaseContentChecker +from pyams_utils.adapter import adapter_config +from pyams_utils.registry import utility_config from pyams_utils.vocabulary import vocabulary_config -from zope.componentvocabulary.vocabulary import UtilityVocabulary +from zope.interface import implementer +from zope.schema.fieldproperty import FieldProperty + +from pyams_content import _ @vocabulary_config(name='PyAMS video providers') -class VideoProvidersVocabulary(UtilityVocabulary): +class VideoProvidersVocabulary(SimpleVocabulary): """Video providers vocabulary""" interface = IExternalVideoProvider - nameOnly = True + + def __init__(self, context): + request = check_request() + translate = request.localizer.translate + utils = sorted(getUtilitiesFor(self.interface, context), + key=lambda x: getattr(x[1], 'weight', 0)) + terms = [SimpleTerm(name, title=translate(getattr(util, 'label', name))) for name, util in utils] + super(VideoProvidersVocabulary, self).__init__(terms) + + +# +# Custom video provider settings +# + +@implementer(ICustomVideoSettings) +class CustomVideoSettings(Persistent): + """Custom video provider settings""" + + integration_code = FieldProperty(ICustomVideoSettings['integration_code']) + + +@utility_config(name='custom', provides=IExternalVideoProvider) +class CustomVideoProvider(object): + """Custom video provider""" + + label = _("Other provider") + weight = 99 + + settings_interface = ICustomVideoSettings + + +@adapter_config(context=IExternalVideo, provides=ICustomVideoSettings) +def custom_video_settings_factory(context): + """Customp video settings factory""" + if context.provider_name != 'custom': + return None + return external_video_settings_factory(context) + + +@adapter_config(context=CustomVideoProvider, provides=IExternalVideoSettings) +def custom_video_provider_settings_factory(context): + """Custom video provider settings factory""" + return CustomVideoSettings() + + +@adapter_config(context=ICustomVideoSettings, provides=IContentChecker) +class CustomVideoSettingsContentChecker(BaseContentChecker): + """Custom video settings content checker""" + + label = _("Custom video settings") + + def inner_check(self, request): + return [] diff -r b156fba7e4fe -r 06ab962b04c5 src/pyams_content/component/video/provider/dailymotion.py --- a/src/pyams_content/component/video/provider/dailymotion.py Fri Apr 20 16:52:36 2018 +0200 +++ b/src/pyams_content/component/video/provider/dailymotion.py Fri Apr 27 12:00:07 2018 +0200 @@ -41,8 +41,6 @@ """Dailymotion video settings""" _video_id = FieldProperty(IDailymotionVideoSettings['video_id']) - width = FieldProperty(IDailymotionVideoSettings['width']) - height = FieldProperty(IDailymotionVideoSettings['height']) start_at = FieldProperty(IDailymotionVideoSettings['start_at']) autoplay = FieldProperty(IDailymotionVideoSettings['autoplay']) show_info = FieldProperty(IDailymotionVideoSettings['show_info']) @@ -52,6 +50,8 @@ show_endscreen = FieldProperty(IDailymotionVideoSettings['show_endscreen']) allow_fullscreen = FieldProperty(IDailymotionVideoSettings['allow_fullscreen']) allow_sharing = FieldProperty(IDailymotionVideoSettings['allow_sharing']) + width = FieldProperty(IDailymotionVideoSettings['width']) + height = FieldProperty(IDailymotionVideoSettings['height']) @property def video_id(self): diff -r b156fba7e4fe -r 06ab962b04c5 src/pyams_content/component/video/provider/interfaces.py --- a/src/pyams_content/component/video/provider/interfaces.py Fri Apr 20 16:52:36 2018 +0200 +++ b/src/pyams_content/component/video/provider/interfaces.py Fri Apr 27 12:00:07 2018 +0200 @@ -20,11 +20,20 @@ # import packages from pyams_utils.schema import ColorField -from zope.schema import TextLine, Bool, Int, Choice +from zope.schema import Text, TextLine, Bool, Int, Choice from pyams_content import _ +class ICustomVideoSettings(IExternalVideoSettings): + """Custom external video provider settings""" + + integration_code = Text(title=_("Integration code"), + description=_("Please select integration code provided by your video provider, " + "and paste it here"), + required=True) + + class IYoutubeVideoSettings(IExternalVideoSettings): """Youtube video provider settings""" @@ -33,20 +42,6 @@ "copy/paste the given URL here"), required=True) - width = Int(title=_("Video width"), - description=_("Initial video frame width; mandatory for old browsers but may be overridden by " - "presentation skin"), - required=True, - min=200, - default=720) - - height = Int(title=_("Video height"), - description=_("Initial video frame height; mandatory for old browsers but may be overridden by " - "presentation skin"), - required=True, - min=200, - default=405) - start_at = TextLine(title=_("Start at"), description=_("Position at which to start video, in 'seconds' or 'minutes:seconds' format"), required=False, @@ -77,14 +72,14 @@ default=True) hide_branding = Bool(title=_("Hide branding?"), - description=_("If 'yes', Youtube branding won't be displayed"), + description=_("If 'no', Youtube branding will be displayed"), required=True, - default=False) + default=True) show_related = Bool(title=_("Show related videos?"), description=_("Show related videos when video end"), required=True, - default=True) + default=False) allow_fullscreen = Bool(title=_("Allow full screen?"), description=_("If 'yes', video can be displayed in full screen"), @@ -96,15 +91,6 @@ required=True, default=False) - -class IDailymotionVideoSettings(IExternalVideoSettings): - """Dailymotion video provider settings""" - - video_id = TextLine(title=_("Video ID"), - description=_("To get video ID, just use the 'Share' button in Dailymotion platform, " - "click on \"Copy link\" and paste the given URL here"), - required=True) - width = Int(title=_("Video width"), description=_("Initial video frame width; mandatory for old browsers but may be overridden by " "presentation skin"), @@ -119,6 +105,15 @@ min=200, default=405) + +class IDailymotionVideoSettings(IExternalVideoSettings): + """Dailymotion video provider settings""" + + video_id = TextLine(title=_("Video ID"), + description=_("To get video ID, just use the 'Share' button in Dailymotion platform, " + "click on \"Copy link\" and paste the given URL here"), + required=True) + start_at = TextLine(title=_("Start at"), description=_("Position at which to start video, in 'seconds' or 'minutes:seconds' format"), required=False, @@ -145,14 +140,14 @@ default='dark') show_branding = Bool(title=_("Show branding?"), - description=_("If 'no', Dailymotion branding won't be displayed"), + description=_("If 'yes', Dailymotion branding will be displayed"), required=True, - default=True) + default=False) show_endscreen = Bool(title=_("Show end screen?"), description=_("Show end screen when video end"), required=True, - default=True) + default=False) allow_fullscreen = Bool(title=_("Allow full screen?"), description=_("If 'yes', video can be displayed in full screen"), @@ -164,15 +159,6 @@ required=True, default=True) - -class IVimeoVideoSettings(IExternalVideoSettings): - """Vimeo video provider settings""" - - video_id = TextLine(title=_("Video ID"), - description=_("To get video ID, just use the 'Share' button in Vimeo platform, " - "click on \"Link\" entry and copy/paste the given URL here"), - required=True) - width = Int(title=_("Video width"), description=_("Initial video frame width; mandatory for old browsers but may be overridden by " "presentation skin"), @@ -187,13 +173,22 @@ min=200, default=405) + +class IVimeoVideoSettings(IExternalVideoSettings): + """Vimeo video provider settings""" + + video_id = TextLine(title=_("Video ID"), + description=_("To get video ID, just use the 'Share' button in Vimeo platform, " + "click on \"Link\" entry and copy/paste the given URL here"), + required=True) + show_title = Bool(title=_("Show title?"), description=_("If 'no', video title won't be displayed"), required=True, default=True) show_signature = Bool(title=_("Show signature?"), - description=_("If 'no', video signature won't be displayed"), + description=_("If 'no', video's author signature won't be displayed"), required=True, default=True) @@ -216,3 +211,17 @@ description=_("If 'yes', video can be displayed in full screen"), required=True, default=True) + + width = Int(title=_("Video width"), + description=_("Initial video frame width; mandatory for old browsers but may be overridden by " + "presentation skin"), + required=True, + min=200, + default=720) + + height = Int(title=_("Video height"), + description=_("Initial video frame height; mandatory for old browsers but may be overridden by " + "presentation skin"), + required=True, + min=200, + default=405) diff -r b156fba7e4fe -r 06ab962b04c5 src/pyams_content/component/video/provider/vimeo.py --- a/src/pyams_content/component/video/provider/vimeo.py Fri Apr 20 16:52:36 2018 +0200 +++ b/src/pyams_content/component/video/provider/vimeo.py Fri Apr 27 12:00:07 2018 +0200 @@ -42,14 +42,14 @@ """Vimeo video settings""" _video_id = FieldProperty(IVimeoVideoSettings['video_id']) - width = FieldProperty(IVimeoVideoSettings['width']) - height = FieldProperty(IVimeoVideoSettings['height']) show_title = FieldProperty(IVimeoVideoSettings['show_title']) show_signature = FieldProperty(IVimeoVideoSettings['show_signature']) color = FieldProperty(IVimeoVideoSettings['color']) autoplay = FieldProperty(IVimeoVideoSettings['autoplay']) loop = FieldProperty(IVimeoVideoSettings['loop']) allow_fullscreen = FieldProperty(IVimeoVideoSettings['allow_fullscreen']) + width = FieldProperty(IVimeoVideoSettings['width']) + height = FieldProperty(IVimeoVideoSettings['height']) @property def video_id(self): diff -r b156fba7e4fe -r 06ab962b04c5 src/pyams_content/component/video/provider/youtube.py --- a/src/pyams_content/component/video/provider/youtube.py Fri Apr 20 16:52:36 2018 +0200 +++ b/src/pyams_content/component/video/provider/youtube.py Fri Apr 27 12:00:07 2018 +0200 @@ -42,8 +42,6 @@ """Youtube video settings""" _video_id = FieldProperty(IYoutubeVideoSettings['video_id']) - width = FieldProperty(IYoutubeVideoSettings['width']) - height = FieldProperty(IYoutubeVideoSettings['height']) start_at = FieldProperty(IYoutubeVideoSettings['start_at']) stop_at = FieldProperty(IYoutubeVideoSettings['stop_at']) autoplay = FieldProperty(IYoutubeVideoSettings['autoplay']) @@ -54,6 +52,8 @@ show_related = FieldProperty(IYoutubeVideoSettings['show_related']) allow_fullscreen = FieldProperty(IYoutubeVideoSettings['allow_fullscreen']) disable_keyboard = FieldProperty(IYoutubeVideoSettings['disable_keyboard']) + width = FieldProperty(IYoutubeVideoSettings['width']) + height = FieldProperty(IYoutubeVideoSettings['height']) @property def video_id(self): diff -r b156fba7e4fe -r 06ab962b04c5 src/pyams_content/component/video/provider/zmi/__init__.py --- a/src/pyams_content/component/video/provider/zmi/__init__.py Fri Apr 20 16:52:36 2018 +0200 +++ b/src/pyams_content/component/video/provider/zmi/__init__.py Fri Apr 27 12:00:07 2018 +0200 @@ -9,6 +9,7 @@ # WARRANTIES OF TITLE, MERCHANTABILITY, AGAINST INFRINGEMENT, AND FITNESS # FOR A PARTICULAR PURPOSE. # +from pyams_content.component.video.provider import CustomVideoSettings __docformat__ = 'restructuredtext' @@ -86,6 +87,12 @@ return urlencode(params) +@adapter_config(context=(CustomVideoSettings, IPyAMSLayer), provides=IExternalVideoRenderer) +@template_config(template='templates/custom-render.pt', layer=IPyAMSLayer) +class CustomVideoRenderer(BaseExternalVideoRenderer): + """Custom video renderer""" + + @adapter_config(context=(YoutubeVideoSettings, IPyAMSLayer), provides=IExternalVideoRenderer) @template_config(template='templates/youtube-render.pt', layer=IPyAMSLayer) class YoutubeVideoRenderer(BaseExternalVideoRenderer): diff -r b156fba7e4fe -r 06ab962b04c5 src/pyams_content/component/video/provider/zmi/templates/custom-render.pt --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/pyams_content/component/video/provider/zmi/templates/custom-render.pt Fri Apr 27 12:00:07 2018 +0200 @@ -0,0 +1,3 @@ +
+ Integration code +
diff -r b156fba7e4fe -r 06ab962b04c5 src/pyams_content/component/video/zmi/paragraph.py --- a/src/pyams_content/component/video/zmi/paragraph.py Fri Apr 20 16:52:36 2018 +0200 +++ b/src/pyams_content/component/video/zmi/paragraph.py Fri Apr 27 12:00:07 2018 +0200 @@ -113,6 +113,7 @@ if settings is not None: provider = content.get_provider() form = InnerAdminEditForm(settings, self.request) + form.prefix = self.prefix form.edit_permission = MANAGE_CONTENT_PERMISSION form.fields = field.Fields(provider.settings_interface) form.update() @@ -158,19 +159,27 @@ else: provider = get_utility(IExternalVideoProvider, name=provider_name) form = InnerAdminAddForm(request.context, request) + form.prefix = ExternalVideoParagraphAddForm.prefix form.legend = request.localizer.translate(_("Video provider settings")) form.label_css_class = 'control-label col-md-4' form.input_css_class = 'col-md-8' form.fields = field.Fields(provider.settings_interface) form.update() - form.add_group(NamedWidgetsGroup(form, 'video_id', form.widgets, ('video_id', ), bordered=False)) - form.add_group(NamedWidgetsGroup(form, 'provider_group', form.widgets, - getFieldNamesInOrder(provider.settings_interface)[1:], - bordered=False, - legend=_("Other settings"), - css_class="inner switcher padding-right-10 no-y-padding", - switch=True, - hide_if_empty=True)) + if 'integration_code' in form.widgets: # custom video provider + form.widgets['integration_code'].widget_css_class = 'textarea' + form.add_group(NamedWidgetsGroup(form, 'integration_code', form.widgets, ('integration_code', ), + bordered=False)) + elif 'video_id' in form.widgets: + form.add_group(NamedWidgetsGroup(form, 'video_id', form.widgets, ('video_id', ), bordered=False)) + field_names = getFieldNamesInOrder(provider.settings_interface) + if len(field_names) > 1: + form.add_group(NamedWidgetsGroup(form, 'provider_group', form.widgets, + field_names[1:], + bordered=False, + legend=_("Other settings"), + css_class="inner switcher padding-right-10 no-y-padding", + switch=True, + hide_if_empty=True)) return Response(form.render()) @@ -215,15 +224,22 @@ self.widgets['provider_name'].mode = DISPLAY_MODE provider = self.context.get_provider() if provider is not None: - self.add_group(NamedWidgetsGroup(self, 'video_id', self.widgets, ('video_id',), bordered=False)) - self.add_group(NamedWidgetsGroup(self, 'provider_group', self.widgets, - getFieldNamesInOrder(provider.settings_interface)[1:], - bordered=False, - legend=_("Video provider settings"), - fieldset_class='margin-top-10 padding-y-5', - css_class='inner switcher padding-right-10 no-y-padding pull-left', - switch=True, - hide_if_empty=True)) + if 'integration_code' in self.widgets: # custom video provider + self.widgets['integration_code'].widget_css_class = 'textarea' + self.add_group(NamedWidgetsGroup(self, 'integration_code', self.widgets, ('integration_code',), + bordered=False)) + elif 'video_id' in self.widgets: + self.add_group(NamedWidgetsGroup(self, 'video_id', self.widgets, ('video_id',), bordered=False)) + field_names = getFieldNamesInOrder(provider.settings_interface) + if len(field_names) > 1: + self.add_group(NamedWidgetsGroup(self, 'provider_group', self.widgets, + field_names[1:], + bordered=False, + legend=_("Video provider settings"), + fieldset_class='margin-top-10 padding-y-5', + css_class='inner switcher padding-right-10 no-y-padding pull-left', + switch=True, + hide_if_empty=True)) @view_config(name='properties.json', context=IExternalVideoParagraph, request_type=IPyAMSLayer, diff -r b156fba7e4fe -r 06ab962b04c5 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 b156fba7e4fe -r 06ab962b04c5 src/pyams_content/locales/fr/LC_MESSAGES/pyams_content.po --- a/src/pyams_content/locales/fr/LC_MESSAGES/pyams_content.po Fri Apr 20 16:52:36 2018 +0200 +++ b/src/pyams_content/locales/fr/LC_MESSAGES/pyams_content.po Fri Apr 27 12:00:07 2018 +0200 @@ -5,7 +5,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE 1.0\n" -"POT-Creation-Date: 2018-04-06 13:47+0200\n" +"POT-Creation-Date: 2018-04-26 16:39+0200\n" "PO-Revision-Date: 2015-09-10 10:42+0200\n" "Last-Translator: Thierry Florac \n" "Language-Team: French\n" @@ -87,41 +87,26 @@ #: src/pyams_content/component/gallery/zmi/file.py:58 #: src/pyams_content/component/gallery/zmi/file.py:69 -#: src/pyams_content/component/gallery/zmi/paragraph.py:180 +#: src/pyams_content/component/gallery/zmi/paragraph.py:176 msgid "Add media(s)" msgstr "Ajouter des médias" -#: src/pyams_content/component/gallery/zmi/file.py:185 +#: src/pyams_content/component/gallery/zmi/file.py:189 msgid "Update media properties" msgstr "Propriétés du média" -#: src/pyams_content/component/gallery/zmi/file.py:242 +#: src/pyams_content/component/gallery/zmi/file.py:246 msgid "Remove media..." msgstr "Supprimer le média" -#: src/pyams_content/component/gallery/zmi/file.py:152 +#: src/pyams_content/component/gallery/zmi/file.py:154 msgid "Show/hide media" msgstr "Cliquez pour rendre le média visible ou non" -#: src/pyams_content/component/gallery/zmi/file.py:210 +#: src/pyams_content/component/gallery/zmi/file.py:214 msgid "Audio content" msgstr "Contenu audio associé" -#: src/pyams_content/component/gallery/zmi/file.py:258 -#: src/pyams_content/component/association/zmi/__init__.py:268 -#: src/pyams_content/shared/common/zmi/types.py:208 -#: src/pyams_content/shared/common/zmi/types.py:457 -#: src/pyams_content/shared/imagemap/zmi/container.py:169 -#: src/pyams_content/shared/site/zmi/container.py:573 -#: src/pyams_content/root/zmi/sites.py:197 -#: src/pyams_content/features/alert/zmi/container.py:215 -msgid "No provided object_name argument!" -msgstr "Argument 'object_name' non fourni !" - -#: src/pyams_content/component/gallery/zmi/file.py:262 -msgid "Given media name doesn't exist!" -msgstr "Le nom du média indiqué n'existe pas !" - #: src/pyams_content/component/gallery/zmi/paragraph.py:58 msgid "Medias gallery..." msgstr "Galerie de médias" @@ -130,25 +115,25 @@ msgid "Add new gallery" msgstr "Ajout d'une galerie de médias" -#: src/pyams_content/component/gallery/zmi/paragraph.py:99 +#: src/pyams_content/component/gallery/zmi/paragraph.py:101 msgid "Edit gallery properties" msgstr "Propriétés de la galerie de médias" -#: src/pyams_content/component/gallery/zmi/__init__.py:63 +#: src/pyams_content/component/gallery/zmi/__init__.py:62 msgid "Update gallery properties" msgstr "Propriétés de la galerie de médias" -#: src/pyams_content/component/gallery/zmi/__init__.py:100 +#: src/pyams_content/component/gallery/zmi/__init__.py:101 msgid "Update gallery contents" msgstr "Contenu de la galerie de médias" #: src/pyams_content/component/gallery/zmi/interfaces.py:36 #: 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:52 +#: src/pyams_content/component/illustration/interfaces/__init__.py:56 #: src/pyams_content/component/paragraph/interfaces/video.py:48 #: src/pyams_content/component/paragraph/interfaces/verbatim.py:44 -#: src/pyams_content/component/video/interfaces/__init__.py:50 +#: src/pyams_content/component/video/interfaces/__init__.py:52 msgid "Author" msgstr "Auteur" @@ -156,7 +141,7 @@ #: 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:49 -#: src/pyams_content/component/video/interfaces/__init__.py:51 +#: src/pyams_content/component/video/interfaces/__init__.py:53 msgid "Name of document's author" msgstr "Sous la forme \"Prénom Nom / Organisme\"" @@ -195,13 +180,13 @@ #: src/pyams_content/component/gallery/interfaces/__init__.py:47 #: src/pyams_content/component/extfile/interfaces/__init__.py:73 -#: src/pyams_content/component/illustration/interfaces/__init__.py:41 +#: src/pyams_content/component/illustration/interfaces/__init__.py:45 msgid "Legend" msgstr "Légende" #: src/pyams_content/component/gallery/interfaces/__init__.py:50 #: src/pyams_content/component/extfile/interfaces/__init__.py:77 -#: src/pyams_content/component/illustration/interfaces/__init__.py:44 +#: src/pyams_content/component/illustration/interfaces/__init__.py:48 #: src/pyams_content/reference/pictograms/interfaces/__init__.py:48 msgid "Accessibility title" msgstr "Alternative (accessibilité)" @@ -215,14 +200,14 @@ "conformer aux normes d'accessibilité." #: src/pyams_content/component/gallery/interfaces/__init__.py:54 -#: src/pyams_content/component/illustration/interfaces/__init__.py:56 -#: src/pyams_content/component/illustration/interfaces/__init__.py:85 +#: src/pyams_content/component/illustration/interfaces/__init__.py:41 +#: src/pyams_content/component/illustration/interfaces/__init__.py:76 msgid "Image or video data" msgstr "Fichier (image ou vidéo)" #: src/pyams_content/component/gallery/interfaces/__init__.py:55 -#: src/pyams_content/component/illustration/interfaces/__init__.py:57 -#: src/pyams_content/component/illustration/interfaces/__init__.py:86 +#: src/pyams_content/component/illustration/interfaces/__init__.py:42 +#: src/pyams_content/component/illustration/interfaces/__init__.py:77 msgid "Image or video content" msgstr "" "Cliquez sur le bouton 'Parcourir...' pour sélectionner un nouveau contenu..." @@ -230,11 +215,11 @@ #: src/pyams_content/component/gallery/interfaces/__init__.py:58 #: 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:48 +#: src/pyams_content/component/illustration/interfaces/__init__.py:52 #: src/pyams_content/component/paragraph/interfaces/video.py:44 #: src/pyams_content/component/links/interfaces/__init__.py:37 -#: src/pyams_content/component/video/interfaces/__init__.py:46 -#: src/pyams_content/shared/common/interfaces/__init__.py:136 +#: src/pyams_content/component/video/interfaces/__init__.py:48 +#: src/pyams_content/shared/common/interfaces/__init__.py:145 #: src/pyams_content/shared/form/interfaces/__init__.py:65 msgid "Description" msgstr "Description" @@ -288,17 +273,17 @@ #: src/pyams_content/component/gallery/interfaces/__init__.py:94 #: src/pyams_content/component/extfile/interfaces/__init__.py:36 -#: src/pyams_content/component/paragraph/zmi/milestone.py:269 -#: src/pyams_content/component/paragraph/zmi/container.py:223 +#: src/pyams_content/component/paragraph/zmi/milestone.py:257 +#: src/pyams_content/component/paragraph/zmi/container.py:224 #: src/pyams_content/component/paragraph/interfaces/milestone.py:46 #: src/pyams_content/component/links/zmi/reverse.py:71 #: src/pyams_content/shared/common/zmi/dashboard.py:109 #: src/pyams_content/shared/common/zmi/templates/advanced-search.pt:188 -#: src/pyams_content/shared/imagemap/zmi/container.py:119 +#: src/pyams_content/shared/imagemap/zmi/container.py:123 #: src/pyams_content/shared/site/zmi/folder.py:64 #: src/pyams_content/root/zmi/templates/advanced-search.pt:188 #: src/pyams_content/interfaces/__init__.py:99 -#: src/pyams_content/reference/pictograms/zmi/__init__.py:172 +#: src/pyams_content/reference/pictograms/zmi/__init__.py:162 msgid "Title" msgstr "Titre" @@ -324,7 +309,7 @@ #: src/pyams_content/component/extfile/__init__.py:172 #: src/pyams_content/component/extfile/__init__.py:176 msgid "Standard file" -msgstr "Fichier standard" +msgstr "Fichier" #: src/pyams_content/component/extfile/__init__.py:223 #: src/pyams_content/component/extfile/__init__.py:240 @@ -346,71 +331,71 @@ msgid "Audio file" msgstr "Fichier audio" -#: src/pyams_content/component/extfile/zmi/__init__.py:73 +#: src/pyams_content/component/extfile/zmi/__init__.py:74 msgid "External files" msgstr "Fichiers" -#: src/pyams_content/component/extfile/zmi/__init__.py:86 +#: src/pyams_content/component/extfile/zmi/__init__.py:89 msgid "Add external file" msgstr "Fichier standard" -#: src/pyams_content/component/extfile/zmi/__init__.py:98 +#: src/pyams_content/component/extfile/zmi/__init__.py:101 msgid "Add new external file" msgstr "Ajout d'un fichier standard" -#: src/pyams_content/component/extfile/zmi/__init__.py:145 +#: src/pyams_content/component/extfile/zmi/__init__.py:141 msgid "Update file properties" msgstr "Propriétés du fichier standard" -#: src/pyams_content/component/extfile/zmi/__init__.py:185 +#: src/pyams_content/component/extfile/zmi/__init__.py:181 msgid "Images" msgstr "Images" -#: src/pyams_content/component/extfile/zmi/__init__.py:198 +#: src/pyams_content/component/extfile/zmi/__init__.py:196 msgid "Add image" -msgstr "Image" - -#: src/pyams_content/component/extfile/zmi/__init__.py:210 +msgstr "Image téléchargeable" + +#: src/pyams_content/component/extfile/zmi/__init__.py:208 msgid "Add new image" msgstr "Ajout d'une image" -#: src/pyams_content/component/extfile/zmi/__init__.py:256 +#: src/pyams_content/component/extfile/zmi/__init__.py:245 msgid "Update image properties" msgstr "Propriétés de l'image" -#: src/pyams_content/component/extfile/zmi/__init__.py:296 +#: src/pyams_content/component/extfile/zmi/__init__.py:285 msgid "Videos" msgstr "Vidéos" -#: src/pyams_content/component/extfile/zmi/__init__.py:309 +#: src/pyams_content/component/extfile/zmi/__init__.py:300 msgid "Add video" -msgstr "Vidéo" - -#: src/pyams_content/component/extfile/zmi/__init__.py:321 +msgstr "Vidéo téléchargeable" + +#: src/pyams_content/component/extfile/zmi/__init__.py:312 msgid "Add new video" msgstr "Ajout d'une vidéo" -#: src/pyams_content/component/extfile/zmi/__init__.py:359 +#: src/pyams_content/component/extfile/zmi/__init__.py:341 msgid "Update video properties" msgstr "Propriétés de la vidéo" -#: src/pyams_content/component/extfile/zmi/__init__.py:391 +#: src/pyams_content/component/extfile/zmi/__init__.py:373 msgid "Audios files" msgstr "Fichiers audios" -#: src/pyams_content/component/extfile/zmi/__init__.py:404 +#: src/pyams_content/component/extfile/zmi/__init__.py:388 msgid "Add audio file" -msgstr "Fichier audio" - -#: src/pyams_content/component/extfile/zmi/__init__.py:416 +msgstr "Fichier audio téléchargeable" + +#: src/pyams_content/component/extfile/zmi/__init__.py:400 msgid "Add new audio file" msgstr "Ajout d'un fichier audio" -#: src/pyams_content/component/extfile/zmi/__init__.py:454 +#: src/pyams_content/component/extfile/zmi/__init__.py:429 msgid "Update audio file properties" msgstr "Propriétés du fichier audio" -#: src/pyams_content/component/extfile/zmi/__init__.py:49 +#: src/pyams_content/component/extfile/zmi/__init__.py:50 msgid "External file type" msgstr "Type de fichier joint" @@ -420,32 +405,24 @@ #: src/pyams_content/component/extfile/interfaces/__init__.py:41 #: src/pyams_content/component/paragraph/interfaces/video.py:45 -#: src/pyams_content/component/video/interfaces/__init__.py:47 +#: 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" #: src/pyams_content/component/extfile/interfaces/__init__.py:48 -#: src/pyams_content/component/illustration/interfaces/__init__.py:64 -#: src/pyams_content/component/illustration/interfaces/__init__.py:93 #: src/pyams_content/component/links/interfaces/__init__.py:59 msgid "Language" msgstr "Langue" #: src/pyams_content/component/extfile/interfaces/__init__.py:49 -#: src/pyams_content/component/illustration/interfaces/__init__.py:65 -#: src/pyams_content/component/illustration/interfaces/__init__.py:94 msgid "File's content language" msgstr "Langue du fichier" #: src/pyams_content/component/extfile/interfaces/__init__.py:53 -#: src/pyams_content/component/illustration/interfaces/__init__.py:60 -#: src/pyams_content/component/illustration/interfaces/__init__.py:89 msgid "Save file as..." msgstr "Nom du fichier" #: src/pyams_content/component/extfile/interfaces/__init__.py:54 -#: src/pyams_content/component/illustration/interfaces/__init__.py:61 -#: src/pyams_content/component/illustration/interfaces/__init__.py:90 msgid "Name under which the file will be saved" msgstr "" "Nom donné au fichier en cas de téléchargement ; il est donc important de " @@ -466,7 +443,7 @@ msgstr "Titre du fichier, tel que présenté aux internautes" #: src/pyams_content/component/extfile/interfaces/__init__.py:78 -#: src/pyams_content/component/illustration/interfaces/__init__.py:45 +#: src/pyams_content/component/illustration/interfaces/__init__.py:49 #: src/pyams_content/reference/pictograms/interfaces/__init__.py:49 msgid "Alternate title used to describe image content" msgstr "" @@ -502,39 +479,37 @@ #: src/pyams_content/component/illustration/paragraph.py:40 #: src/pyams_content/component/illustration/paragraph.py:47 -#: src/pyams_content/component/illustration/__init__.py:142 -#: src/pyams_content/component/illustration/zmi/__init__.py:57 -#: src/pyams_content/component/illustration/zmi/__init__.py:80 +#: src/pyams_content/component/illustration/__init__.py:135 +#: src/pyams_content/component/illustration/zmi/__init__.py:54 +#: src/pyams_content/component/illustration/zmi/__init__.py:81 msgid "Illustration" msgstr "Illustration" -#: src/pyams_content/component/illustration/zmi/paragraph.py:58 +#: src/pyams_content/component/illustration/zmi/paragraph.py:59 msgid "Illustration..." msgstr "Illustration" -#: src/pyams_content/component/illustration/zmi/paragraph.py:69 +#: src/pyams_content/component/illustration/zmi/paragraph.py:70 msgid "Add new illustration" msgstr "Ajout d'une illustration" -#: src/pyams_content/component/illustration/zmi/paragraph.py:100 +#: src/pyams_content/component/illustration/zmi/paragraph.py:104 msgid "Edit illustration properties" msgstr "Propriétés de l'illustration" -#: src/pyams_content/component/illustration/zmi/__init__.py:143 -msgid "Add illustration" -msgstr "Ajouter une illustration" - -#: src/pyams_content/component/illustration/interfaces/__init__.py:53 +#: src/pyams_content/component/illustration/zmi/__init__.py:83 +msgid "Header illustration" +msgstr "Illustration d'en-tête" + +#: src/pyams_content/component/illustration/interfaces/__init__.py:57 msgid "Name of picture's author" msgstr "Sous la forme \"Prénom Nom / Organisme\"" -#: src/pyams_content/component/illustration/interfaces/__init__.py:69 -#: src/pyams_content/component/illustration/interfaces/__init__.py:98 +#: src/pyams_content/component/illustration/interfaces/__init__.py:60 msgid "Illustration template" msgstr "Mode de rendu" -#: src/pyams_content/component/illustration/interfaces/__init__.py:70 -#: src/pyams_content/component/illustration/interfaces/__init__.py:99 +#: src/pyams_content/component/illustration/interfaces/__init__.py:61 msgid "Presentation template used for illustration" msgstr "" "Modèle de présentation utilisé par cette illustration.
Texte utilisé dans l'URL d'accès au contenu ; cette information est " +"importante pour le référencement : il faut utiliser des mots essentiels pour " +"décrire ce contenu.

Remarque : le texte saisi " +"est converti automatiquement en minuscules, les espaces et traits de " +"soulignement (« underscores ») sont remplacés automatiquement par des traits " +"d'union, les lettres accentuées par leur équivalent sans accent, et les mots " +"de moins de trois lettres sont supprimés." + +#: src/pyams_content/shared/common/interfaces/__init__.py:121 msgid "Version creator" msgstr "À l'origine de cette version" -#: src/pyams_content/shared/common/interfaces/__init__.py:113 +#: src/pyams_content/shared/common/interfaces/__init__.py:122 msgid "" "Name of content's version creator. The creator of the first version is also " "it's owner." @@ -2867,62 +2869,62 @@ "Nom du créateur de cette version. Le créateur de la première version d'un " "contenu est aussi son propriétaire." -#: src/pyams_content/shared/common/interfaces/__init__.py:117 +#: src/pyams_content/shared/common/interfaces/__init__.py:126 msgid "First owner" msgstr "Premier propriétaire" -#: src/pyams_content/shared/common/interfaces/__init__.py:118 +#: src/pyams_content/shared/common/interfaces/__init__.py:127 msgid "Name of content's first version owner" msgstr "Nom de l'utilisateur ayant créé la première version" -#: src/pyams_content/shared/common/interfaces/__init__.py:122 +#: src/pyams_content/shared/common/interfaces/__init__.py:131 msgid "Version creation" msgstr "Date de création" -#: src/pyams_content/shared/common/interfaces/__init__.py:125 +#: src/pyams_content/shared/common/interfaces/__init__.py:134 msgid "Version modifiers" msgstr "Intervenants" -#: src/pyams_content/shared/common/interfaces/__init__.py:126 +#: src/pyams_content/shared/common/interfaces/__init__.py:135 msgid "List of principals who modified this content" msgstr "Liste des utilisateurs qui sont intervenus sur cette version" -#: src/pyams_content/shared/common/interfaces/__init__.py:129 +#: src/pyams_content/shared/common/interfaces/__init__.py:138 msgid "Last modifier" msgstr "Dernier intervenant" -#: src/pyams_content/shared/common/interfaces/__init__.py:130 +#: src/pyams_content/shared/common/interfaces/__init__.py:139 msgid "Last principal who modified this content" msgstr "Dernier utilisateur étant intervenu sur ce contenu" -#: src/pyams_content/shared/common/interfaces/__init__.py:133 +#: src/pyams_content/shared/common/interfaces/__init__.py:142 msgid "Last update" msgstr "Dernière modification" -#: src/pyams_content/shared/common/interfaces/__init__.py:137 +#: src/pyams_content/shared/common/interfaces/__init__.py:146 msgid "" "The content's description is 'hidden' into HTML's page headers; but it can " "be seen, for example, in some search engines results as content's description" msgstr "" "La description du contenu est 'masquée' dans les en-têtes des pages HTML ; " "mais on peut la retrouver, par exemple, dans les listes de résultats des " -"moteurs de recherche comme Google" - -#: src/pyams_content/shared/common/interfaces/__init__.py:142 +"moteurs de recherche" + +#: src/pyams_content/shared/common/interfaces/__init__.py:151 msgid "Keywords" msgstr "Mots-clés" -#: src/pyams_content/shared/common/interfaces/__init__.py:143 +#: src/pyams_content/shared/common/interfaces/__init__.py:152 msgid "They will be included into HTML pages metadata" msgstr "Ces mots-clés seront intégrés dans les métadonnées des pages HTML" -#: src/pyams_content/shared/common/interfaces/__init__.py:146 +#: src/pyams_content/shared/common/interfaces/__init__.py:155 #: src/pyams_content/shared/site/zmi/folder.py:72 #: src/pyams_content/shared/site/interfaces/__init__.py:56 msgid "Notepad" msgstr "Bloc-notes" -#: src/pyams_content/shared/common/interfaces/__init__.py:147 +#: src/pyams_content/shared/common/interfaces/__init__.py:156 #: src/pyams_content/shared/site/zmi/folder.py:73 #: src/pyams_content/shared/site/interfaces/__init__.py:57 msgid "Internal information to be known about this content" @@ -2930,11 +2932,11 @@ "Pour prendre note d'informations internes utiles ou importantes à propos de " "ce contenu ; ces notes ne seront pas publiées sur internet." -#: src/pyams_content/shared/common/interfaces/__init__.py:158 +#: src/pyams_content/shared/common/interfaces/__init__.py:167 msgid "Content owner" msgstr "Propriétaire" -#: src/pyams_content/shared/common/interfaces/__init__.py:159 +#: src/pyams_content/shared/common/interfaces/__init__.py:168 msgid "" "The owner is the creator of content's first version, except if it was " "transferred afterwards to another owner" @@ -2943,7 +2945,7 @@ "lorsque cette propriété a été transférée à un autre utilisateur après coup. " "Les contenus archivés ne sont plus transférables." -#: src/pyams_content/shared/common/interfaces/__init__.py:172 +#: src/pyams_content/shared/common/interfaces/__init__.py:181 msgid "" "Contributors are users which are allowed to update this content in addition " "to it's owner" @@ -2951,11 +2953,11 @@ "Les contributeurs sont autorisés, en plus du propriétaire, à modifier ce " "contenu" -#: src/pyams_content/shared/common/interfaces/__init__.py:177 +#: src/pyams_content/shared/common/interfaces/__init__.py:186 msgid "Readers" msgstr "Relecteurs" -#: src/pyams_content/shared/common/interfaces/__init__.py:178 +#: src/pyams_content/shared/common/interfaces/__init__.py:187 msgid "" "Readers are users which are asked to verify and comment contents before they " "are published" @@ -2963,26 +2965,26 @@ "Les relecteurs sont des utilisateurs qui sont sollicités pour vérifier et " "commenter un contenu avant sa publication" -#: src/pyams_content/shared/common/interfaces/__init__.py:183 +#: src/pyams_content/shared/common/interfaces/__init__.py:192 msgid "Guests" msgstr "Invités" -#: src/pyams_content/shared/common/interfaces/__init__.py:184 +#: src/pyams_content/shared/common/interfaces/__init__.py:193 msgid "" "Guests are users which are allowed to view contents with restricted access" msgstr "" "Les invités sont autorisés à consulter des contenus dont l'accès a été " "restreint" -#: src/pyams_content/shared/common/interfaces/__init__.py:207 +#: src/pyams_content/shared/common/interfaces/__init__.py:216 msgid "Principal ID" msgstr "ID utilisateur" -#: src/pyams_content/shared/common/interfaces/__init__.py:212 +#: src/pyams_content/shared/common/interfaces/__init__.py:221 msgid "Restricted contents" msgstr "Accès restreints" -#: src/pyams_content/shared/common/interfaces/__init__.py:213 +#: src/pyams_content/shared/common/interfaces/__init__.py:222 msgid "" "If 'yes', this manager will get restricted access to manage contents based " "on selected settings" @@ -2990,11 +2992,11 @@ "Si 'oui', ce responsable n'aura qu'un accès restreint à certains contenus en " "fonction de paramètres spécifiques" -#: src/pyams_content/shared/common/interfaces/__init__.py:218 +#: src/pyams_content/shared/common/interfaces/__init__.py:227 msgid "Selected owners" msgstr "Propriétaires" -#: src/pyams_content/shared/common/interfaces/__init__.py:219 +#: src/pyams_content/shared/common/interfaces/__init__.py:228 msgid "Manager will have access to contents owned by these principals" msgstr "" "Le responsable n'aura accès qu'aux contenus dont ces utilisateurs sont " @@ -3056,11 +3058,11 @@ msgid "List" msgstr "Choix multiples dans une liste" -#: src/pyams_content/shared/form/zmi/properties.py:39 +#: src/pyams_content/shared/form/zmi/properties.py:41 msgid "Main form settings" msgstr "Paramètres du formulaire" -#: src/pyams_content/shared/form/zmi/properties.py:64 +#: src/pyams_content/shared/form/zmi/properties.py:70 msgid "Form handler settings" msgstr "Paramètres du gestionnaire" @@ -3078,41 +3080,37 @@ msgid "Form « {title} »" msgstr "Formulaire « {title} »" -#: src/pyams_content/shared/form/zmi/field.py:67 +#: src/pyams_content/shared/form/zmi/field.py:68 msgid "Form fields..." msgstr "Champs de saisie" -#: src/pyams_content/shared/form/zmi/field.py:129 -msgid "Switch field visibility" -msgstr "Cliquez pour rendre le champ visible ou non" - -#: src/pyams_content/shared/form/zmi/field.py:182 +#: src/pyams_content/shared/form/zmi/field.py:170 #: src/pyams_content/shared/form/interfaces/__init__.py:56 msgid "Field type" msgstr "Type de champ" -#: src/pyams_content/shared/form/zmi/field.py:215 +#: src/pyams_content/shared/form/zmi/field.py:203 msgid "Form fields list" msgstr "Liste des champs du formulaire" -#: src/pyams_content/shared/form/zmi/field.py:251 -#: src/pyams_content/shared/form/zmi/field.py:262 +#: src/pyams_content/shared/form/zmi/field.py:226 +#: src/pyams_content/shared/form/zmi/field.py:237 msgid "Add form field" msgstr "Ajouter un champ" -#: src/pyams_content/shared/form/zmi/field.py:308 +#: src/pyams_content/shared/form/zmi/field.py:285 msgid "Edit form field properties" msgstr "Propriétés du champ" -#: src/pyams_content/shared/form/zmi/field.py:191 +#: src/pyams_content/shared/form/zmi/field.py:179 msgid "-- unknown field type --" msgstr "-- type de champ inconnu --" -#: src/pyams_content/shared/form/zmi/field.py:110 +#: src/pyams_content/shared/form/zmi/field.py:114 msgid "No currently defined form field." msgstr "Ce formulaire ne comporte aucun champ." -#: src/pyams_content/shared/form/zmi/field.py:287 +#: src/pyams_content/shared/form/zmi/field.py:262 msgid "Specified name is already used!" msgstr "Le nom indiqué pour ce champ est déjà utilisé !" @@ -3280,7 +3278,7 @@ msgid "News topic" msgstr "Actualité" -#: src/pyams_content/shared/view/zmi/properties.py:38 +#: src/pyams_content/shared/view/zmi/properties.py:40 msgid "Main view settings" msgstr "Paramètres de la vue" @@ -3302,11 +3300,11 @@ msgid "View themes settings" msgstr "Paramétrage des thèmes de la vue" -#: src/pyams_content/shared/view/zmi/reference.py:54 +#: src/pyams_content/shared/view/zmi/reference.py:53 msgid "References..." msgstr "Références" -#: src/pyams_content/shared/view/zmi/reference.py:64 +#: src/pyams_content/shared/view/zmi/reference.py:63 msgid "View internal references settings" msgstr "Références internes de la vue" @@ -3458,20 +3456,20 @@ msgid "no area defined" msgstr "aucune zone définie" -#: src/pyams_content/shared/imagemap/zmi/paragraph.py:54 +#: src/pyams_content/shared/imagemap/zmi/paragraph.py:55 msgid "Image map..." msgstr "Image cliquable" -#: src/pyams_content/shared/imagemap/zmi/paragraph.py:65 +#: src/pyams_content/shared/imagemap/zmi/paragraph.py:66 msgid "Add new image map" msgstr "Ajout d'une image cliquable" -#: src/pyams_content/shared/imagemap/zmi/paragraph.py:95 -#: src/pyams_content/shared/logo/zmi/paragraph.py:95 +#: src/pyams_content/shared/imagemap/zmi/paragraph.py:98 +#: src/pyams_content/shared/logo/zmi/paragraph.py:98 msgid "Edit paragraph properties" msgstr "Propriétés de l'image cliquable" -#: src/pyams_content/shared/imagemap/zmi/properties.py:38 +#: src/pyams_content/shared/imagemap/zmi/properties.py:40 msgid "Background image" msgstr "Image de fond" @@ -3501,24 +3499,28 @@ msgid "Image map areas" msgstr "Zones cliquables de l'images" -#: src/pyams_content/shared/imagemap/zmi/container.py:136 +#: src/pyams_content/shared/imagemap/zmi/container.py:140 #: src/pyams_content/shared/imagemap/interfaces/__init__.py:49 msgid "Link target" msgstr "Cible du lien" -#: src/pyams_content/shared/imagemap/zmi/container.py:109 +#: src/pyams_content/shared/imagemap/zmi/container.py:113 msgid "No currently defined image." msgstr "Aucun image de fond n'est actuellement définie." -#: src/pyams_content/shared/imagemap/zmi/container.py:111 +#: src/pyams_content/shared/imagemap/zmi/container.py:115 msgid "No currently defined area." msgstr "Aucune zone cliquable n'est actuellement définie." -#: src/pyams_content/shared/imagemap/zmi/container.py:180 +#: src/pyams_content/shared/imagemap/zmi/container.py:175 +msgid "No provided object_name argument!" +msgstr "Argument 'object_name' non fourni !" + +#: src/pyams_content/shared/imagemap/zmi/container.py:194 msgid "Given area name doesn't exist!" msgstr "La zone indiquée n'existe pas !" -#: src/pyams_content/shared/imagemap/zmi/container.py:176 +#: src/pyams_content/shared/imagemap/zmi/container.py:186 msgid "Bad query object_name parameter value!" msgstr "Valeur incorrecte du paramètre object_name !" @@ -3530,7 +3532,7 @@ msgid "Add new image area" msgstr "Ajout d'une zone cliquable" -#: src/pyams_content/shared/imagemap/zmi/area.py:106 +#: src/pyams_content/shared/imagemap/zmi/area.py:108 msgid "Edit image map properties" msgstr "Propriétés de l'image" @@ -3584,12 +3586,12 @@ #: src/pyams_content/shared/site/zmi/folder.py:68 #: src/pyams_content/shared/site/zmi/__init__.py:63 -#: src/pyams_content/shared/site/zmi/link.py:68 +#: src/pyams_content/shared/site/zmi/link.py:67 msgid "Parent" msgstr "Niveau parent" #: src/pyams_content/shared/site/zmi/folder.py:69 -#: src/pyams_content/shared/site/zmi/link.py:69 +#: src/pyams_content/shared/site/zmi/link.py:68 msgid "Folder's parent" msgstr "Niveau de rattachement de cette rubrique" @@ -3611,62 +3613,62 @@ msgid "Topic's parent" msgstr "Niveau parent" -#: src/pyams_content/shared/site/zmi/link.py:59 +#: src/pyams_content/shared/site/zmi/link.py:58 msgid "Rent content..." msgstr "Lier un contenu" -#: src/pyams_content/shared/site/zmi/link.py:78 +#: src/pyams_content/shared/site/zmi/link.py:77 msgid "Rent existing content" msgstr "Lier un contenu existant" -#: src/pyams_content/shared/site/zmi/link.py:140 +#: src/pyams_content/shared/site/zmi/link.py:141 msgid "Edit content link properties" msgstr "Propriétés du lien" -#: src/pyams_content/shared/site/zmi/container.py:101 -#: src/pyams_content/shared/site/zmi/container.py:113 +#: src/pyams_content/shared/site/zmi/container.py:102 +#: src/pyams_content/shared/site/zmi/container.py:114 #: src/pyams_content/shared/blog/zmi/manager.py:151 #: src/pyams_content/shared/blog/zmi/manager.py:163 msgid "Publication dates..." msgstr "Dates de publication" -#: src/pyams_content/shared/site/zmi/container.py:124 -#: src/pyams_content/shared/blog/zmi/manager.py:174 +#: src/pyams_content/shared/site/zmi/container.py:127 +#: src/pyams_content/shared/blog/zmi/manager.py:176 msgid "Update publication dates" msgstr "Dates de publication" -#: src/pyams_content/shared/site/zmi/container.py:173 -#: src/pyams_content/shared/site/zmi/container.py:183 -#: src/pyams_content/root/zmi/sites.py:67 +#: src/pyams_content/shared/site/zmi/container.py:172 +#: src/pyams_content/shared/site/zmi/container.py:182 +#: src/pyams_content/root/zmi/sites.py:68 msgid "Site tree" msgstr "Arborescence du site" -#: src/pyams_content/shared/site/zmi/container.py:250 -#: src/pyams_content/shared/site/zmi/container.py:148 +#: src/pyams_content/shared/site/zmi/container.py:301 +#: src/pyams_content/shared/site/zmi/container.py:151 msgid "Visible element?" msgstr "Élément visible ?" -#: src/pyams_content/shared/site/zmi/container.py:289 +#: src/pyams_content/shared/site/zmi/container.py:302 +msgid "Switch element visibility" +msgstr "Cliquez pour rendre l'élément visible ou non" + +#: src/pyams_content/shared/site/zmi/container.py:363 msgid "Folders and topics" msgstr "Rubriques et articles" -#: src/pyams_content/shared/site/zmi/container.py:409 +#: src/pyams_content/shared/site/zmi/container.py:483 msgid "Delete site item" msgstr "Supprimer ce contenu" -#: src/pyams_content/shared/site/zmi/container.py:298 +#: src/pyams_content/shared/site/zmi/container.py:372 msgid "Click to open/close all folders" msgstr "Afficher/masquer toutes les rubriques" -#: src/pyams_content/shared/site/zmi/container.py:314 +#: src/pyams_content/shared/site/zmi/container.py:388 msgid "Click to show/hide inner folders" msgstr "Cliquer pour afficher ou cache les sous-niveaux" -#: src/pyams_content/shared/site/zmi/container.py:577 -msgid "Given object name doesn't exist!" -msgstr "Le nom d'objet indiqué n'existe pas !" - -#: src/pyams_content/shared/site/zmi/container.py:516 +#: src/pyams_content/shared/site/zmi/container.py:258 msgid "Can't reparent object to one of it's children. Reloading..." msgstr "" "Impossible de déplacer une rubrique dans l'une de ses sous-rubriques ou " @@ -3733,15 +3735,15 @@ msgid "no URL defined" msgstr "aucune URL définie" -#: src/pyams_content/shared/logo/zmi/paragraph.py:54 +#: src/pyams_content/shared/logo/zmi/paragraph.py:55 msgid "Logos..." msgstr "Logos" -#: src/pyams_content/shared/logo/zmi/paragraph.py:65 +#: src/pyams_content/shared/logo/zmi/paragraph.py:66 msgid "Add new logos paragraph" msgstr "Ajout d'une sélection de logos" -#: src/pyams_content/shared/logo/zmi/properties.py:38 +#: src/pyams_content/shared/logo/zmi/properties.py:40 msgid "Main logo settings" msgstr "Propriétés du logo" @@ -3810,7 +3812,7 @@ msgid "Blog post" msgstr "Article de blog" -#: src/pyams_content/profile/zmi/__init__.py:40 +#: src/pyams_content/profile/zmi/__init__.py:42 msgid "Admin. profile" msgstr "Profil intervenant" @@ -3830,7 +3832,7 @@ msgid "Default length used for inner tables and dashboards" msgstr "Longueur par défaut des tableaux internes et des tableaux de bord" -#: src/pyams_content/root/zmi/sites.py:77 +#: src/pyams_content/root/zmi/sites.py:78 msgid "Blogs and shared sites" msgstr "Blogs et sites partagés" @@ -3846,11 +3848,7 @@ msgid "Delete shared site" msgstr "Supprimer ce site" -#: src/pyams_content/root/zmi/sites.py:205 -msgid "Given site name doesn't exist!" -msgstr "Le nom de site indiqué n'existe pas !" - -#: src/pyams_content/root/zmi/search.py:148 +#: src/pyams_content/root/zmi/search.py:155 msgid "Content types" msgstr "Types de contenus" @@ -4222,9 +4220,13 @@ #: src/pyams_content/skin/zmi/viewlet/toplinks/__init__.py:66 msgid "Shared contents" -msgstr "Contenus" +msgstr "Gabarits" #: src/pyams_content/skin/zmi/viewlet/toplinks/__init__.py:87 +msgid "Shared tools" +msgstr "Outils" + +#: src/pyams_content/skin/zmi/viewlet/toplinks/__init__.py:108 msgid "My roles" msgstr "Mes rôles" @@ -4242,13 +4244,11 @@ #: src/pyams_content/interfaces/__init__.py:103 msgid "Short name" -msgstr "Titre court" +msgstr "Fil d'Ariane" #: src/pyams_content/interfaces/__init__.py:104 msgid "Short name used in breadcrumbs" -msgstr "" -"Affiché lorsque le contenu est consulté depuis son site d'origine (s'il a " -"été identifié)" +msgstr "Libellé utilisé dans le fil d'Ariane" #: src/pyams_content/interfaces/__init__.py:115 msgid "Modification date" @@ -4258,24 +4258,24 @@ msgid "Contents" msgstr "Contenu" -#: src/pyams_content/reference/zmi/table.py:81 +#: src/pyams_content/reference/zmi/table.py:83 msgid "Table contents" msgstr "Contenu de la table" -#: src/pyams_content/reference/zmi/table.py:122 -#: src/pyams_content/reference/zmi/__init__.py:64 +#: src/pyams_content/reference/zmi/table.py:129 +#: src/pyams_content/reference/zmi/__init__.py:69 msgid "References tables" msgstr "Tables de références" -#: src/pyams_content/reference/zmi/table.py:136 +#: src/pyams_content/reference/zmi/table.py:143 msgid "Properties..." msgstr "Propriétés" -#: src/pyams_content/reference/zmi/table.py:147 +#: src/pyams_content/reference/zmi/table.py:156 msgid "Edit table properties" msgstr "Propriétés de la table" -#: src/pyams_content/reference/zmi/__init__.py:46 +#: src/pyams_content/reference/zmi/__init__.py:51 msgid "References" msgstr "Références" @@ -4315,12 +4315,12 @@ msgid "List of selected pictograms which will be available to shared contents" msgstr "Liste des pictogrammes proposés dans les contenus partagés" -#: src/pyams_content/features/renderer/zmi/__init__.py:103 +#: src/pyams_content/features/renderer/zmi/__init__.py:105 #: src/pyams_content/features/renderer/zmi/templates/renderer-input.pt:4 msgid "Edit renderer properties" msgstr "Propriétés du mode de rendu" -#: src/pyams_content/features/renderer/zmi/__init__.py:132 +#: src/pyams_content/features/renderer/zmi/__init__.py:134 msgid "Hidden content" msgstr "Contenu non affiché" @@ -4406,7 +4406,7 @@ msgstr "En-tête de l'alerte" #: src/pyams_content/features/alert/interfaces.py:69 -#: src/pyams_content/features/alert/zmi/container.py:188 +#: src/pyams_content/features/alert/zmi/container.py:170 msgid "Message" msgstr "Message" @@ -4456,15 +4456,15 @@ "donné, l'alerte apparaîtra à nouveau. Si aucun intervalle n'est indiqué, " "l'alerte s'affichera en permanence." -#: src/pyams_content/features/alert/zmi/__init__.py:45 +#: src/pyams_content/features/alert/zmi/__init__.py:46 msgid "Add alert" msgstr "Ajouter une alerte" -#: src/pyams_content/features/alert/zmi/__init__.py:55 +#: src/pyams_content/features/alert/zmi/__init__.py:56 msgid "Add new alert" msgstr "Ajout d'une alerte" -#: src/pyams_content/features/alert/zmi/__init__.py:82 +#: src/pyams_content/features/alert/zmi/__init__.py:85 msgid "Edit alert properties" msgstr "Propriétés de l'alerte" @@ -4472,22 +4472,14 @@ msgid "Alerts" msgstr "Alertes" -#: src/pyams_content/features/alert/zmi/container.py:128 -msgid "Switch alert visibility" -msgstr "Cliquez pour rendre l'alerte visible ou non" - -#: src/pyams_content/features/alert/zmi/container.py:234 +#: src/pyams_content/features/alert/zmi/container.py:192 msgid "Alert list" msgstr "Liste des alertes" -#: src/pyams_content/features/alert/zmi/container.py:93 +#: src/pyams_content/features/alert/zmi/container.py:91 msgid "No currently defined alert." msgstr "Aucune alerte n'est définie actuellement." -#: src/pyams_content/features/alert/zmi/container.py:223 -msgid "Given alert name doesn't exist!" -msgstr "L'alerte indiquée n'existe pas !" - #: src/pyams_content/features/review/__init__.py:186 #, python-format msgid "Request comment: {comment}" @@ -4547,11 +4539,11 @@ msgid "Content review request" msgstr "Demande de relecture" -#: src/pyams_content/features/review/zmi/__init__.py:168 +#: src/pyams_content/features/review/zmi/__init__.py:172 msgid "Comments" msgstr "Commentaires" -#: src/pyams_content/features/review/zmi/__init__.py:188 +#: src/pyams_content/features/review/zmi/__init__.py:192 msgid "Review comments" msgstr "Commentaires associés à cette version" @@ -4592,16 +4584,16 @@ msgid "Ask for content review" msgstr "Demander la relecture" -#: src/pyams_content/features/review/zmi/__init__.py:150 +#: src/pyams_content/features/review/zmi/__init__.py:153 msgid "Request successful. No new notification have been sent" msgstr "" "Votre demande a été transmise. Aucune nouvelle notification n'a été envoyée." -#: src/pyams_content/features/review/zmi/__init__.py:261 +#: src/pyams_content/features/review/zmi/__init__.py:266 msgid "Message is mandatory!" msgstr "Un commentaire est obligatoire !" -#: src/pyams_content/features/review/zmi/__init__.py:140 +#: src/pyams_content/features/review/zmi/__init__.py:141 #, python-format msgid "Request successful. {count} new notification(s) have been sent" msgstr "Votre demande a été transmise. {count} notification(s) envoyée(s)." @@ -4684,6 +4676,48 @@ msgid "Thank you." msgstr "Merci." +#~ msgid "Paragraphs types..." +#~ msgstr "Types de paragraphes" + +#~ msgid "Paragraphs types" +#~ msgstr "Types de paragraphes" + +#~ msgid "Paragraphs..." +#~ msgstr "Paragraphes" + +#~ msgid "Paragraphs list" +#~ msgstr "Liste des paragraphes" + +#~ msgid "Paragraphs associations" +#~ msgstr "Associations par paragraphe" + +#~ msgid "Add illustration" +#~ msgstr "Ajouter une illustration" + +#~ msgid "Given media name doesn't exist!" +#~ msgstr "Le nom du média indiqué n'existe pas !" + +#~ msgid "Given association name doesn't exist!" +#~ msgstr "Le nom d'association indiqué n'existe pas !" + +#~ msgid "Given data type doesn't exist!" +#~ msgstr "Le type de contenu indiqué n'existe pas !" + +#~ msgid "Given data subtype doesn't exist!" +#~ msgstr "Le sous-type de contenu indiqué n'existe pas !" + +#~ msgid "Switch field visibility" +#~ msgstr "Cliquez pour rendre le champ visible ou non" + +#~ msgid "Given object name doesn't exist!" +#~ msgstr "Le nom d'objet indiqué n'existe pas !" + +#~ msgid "Given site name doesn't exist!" +#~ msgstr "Le nom de site indiqué n'existe pas !" + +#~ msgid "Given alert name doesn't exist!" +#~ msgstr "L'alerte indiquée n'existe pas !" + #~ msgid "Switch milestone visibility" #~ msgstr "Cliquez pour rendre le jalon visible ou non" @@ -4760,9 +4794,6 @@ #~ msgid "Add new identity card paragraph" #~ msgstr "Ajout d'une vidéo" -#~ msgid "Hidden illustration" -#~ msgstr "Illustration non affichée" - #~ msgid "internal reference is not defined" #~ msgstr "la référence interne n'est pas définie" diff -r b156fba7e4fe -r 06ab962b04c5 src/pyams_content/locales/pyams_content.pot --- a/src/pyams_content/locales/pyams_content.pot Fri Apr 20 16:52:36 2018 +0200 +++ b/src/pyams_content/locales/pyams_content.pot Fri Apr 27 12:00:07 2018 +0200 @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE 1.0\n" -"POT-Creation-Date: 2018-04-06 13:47+0200\n" +"POT-Creation-Date: 2018-04-26 16:39+0200\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" @@ -88,41 +88,26 @@ #: ./src/pyams_content/component/gallery/zmi/file.py:58 #: ./src/pyams_content/component/gallery/zmi/file.py:69 -#: ./src/pyams_content/component/gallery/zmi/paragraph.py:180 +#: ./src/pyams_content/component/gallery/zmi/paragraph.py:176 msgid "Add media(s)" msgstr "" -#: ./src/pyams_content/component/gallery/zmi/file.py:185 +#: ./src/pyams_content/component/gallery/zmi/file.py:189 msgid "Update media properties" msgstr "" -#: ./src/pyams_content/component/gallery/zmi/file.py:242 +#: ./src/pyams_content/component/gallery/zmi/file.py:246 msgid "Remove media..." msgstr "" -#: ./src/pyams_content/component/gallery/zmi/file.py:152 +#: ./src/pyams_content/component/gallery/zmi/file.py:154 msgid "Show/hide media" msgstr "" -#: ./src/pyams_content/component/gallery/zmi/file.py:210 +#: ./src/pyams_content/component/gallery/zmi/file.py:214 msgid "Audio content" msgstr "" -#: ./src/pyams_content/component/gallery/zmi/file.py:258 -#: ./src/pyams_content/component/association/zmi/__init__.py:268 -#: ./src/pyams_content/shared/common/zmi/types.py:208 -#: ./src/pyams_content/shared/common/zmi/types.py:457 -#: ./src/pyams_content/shared/imagemap/zmi/container.py:169 -#: ./src/pyams_content/shared/site/zmi/container.py:573 -#: ./src/pyams_content/root/zmi/sites.py:197 -#: ./src/pyams_content/features/alert/zmi/container.py:215 -msgid "No provided object_name argument!" -msgstr "" - -#: ./src/pyams_content/component/gallery/zmi/file.py:262 -msgid "Given media name doesn't exist!" -msgstr "" - #: ./src/pyams_content/component/gallery/zmi/paragraph.py:58 msgid "Medias gallery..." msgstr "" @@ -131,25 +116,25 @@ msgid "Add new gallery" msgstr "" -#: ./src/pyams_content/component/gallery/zmi/paragraph.py:99 +#: ./src/pyams_content/component/gallery/zmi/paragraph.py:101 msgid "Edit gallery properties" msgstr "" -#: ./src/pyams_content/component/gallery/zmi/__init__.py:63 +#: ./src/pyams_content/component/gallery/zmi/__init__.py:62 msgid "Update gallery properties" msgstr "" -#: ./src/pyams_content/component/gallery/zmi/__init__.py:100 +#: ./src/pyams_content/component/gallery/zmi/__init__.py:101 msgid "Update gallery contents" msgstr "" #: ./src/pyams_content/component/gallery/zmi/interfaces.py:36 #: ./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:52 +#: ./src/pyams_content/component/illustration/interfaces/__init__.py:56 #: ./src/pyams_content/component/paragraph/interfaces/video.py:48 #: ./src/pyams_content/component/paragraph/interfaces/verbatim.py:44 -#: ./src/pyams_content/component/video/interfaces/__init__.py:50 +#: ./src/pyams_content/component/video/interfaces/__init__.py:52 msgid "Author" msgstr "" @@ -157,7 +142,7 @@ #: ./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:49 -#: ./src/pyams_content/component/video/interfaces/__init__.py:51 +#: ./src/pyams_content/component/video/interfaces/__init__.py:53 msgid "Name of document's author" msgstr "" @@ -192,13 +177,13 @@ #: ./src/pyams_content/component/gallery/interfaces/__init__.py:47 #: ./src/pyams_content/component/extfile/interfaces/__init__.py:73 -#: ./src/pyams_content/component/illustration/interfaces/__init__.py:41 +#: ./src/pyams_content/component/illustration/interfaces/__init__.py:45 msgid "Legend" msgstr "" #: ./src/pyams_content/component/gallery/interfaces/__init__.py:50 #: ./src/pyams_content/component/extfile/interfaces/__init__.py:77 -#: ./src/pyams_content/component/illustration/interfaces/__init__.py:44 +#: ./src/pyams_content/component/illustration/interfaces/__init__.py:48 #: ./src/pyams_content/reference/pictograms/interfaces/__init__.py:48 msgid "Accessibility title" msgstr "" @@ -208,25 +193,25 @@ msgstr "" #: ./src/pyams_content/component/gallery/interfaces/__init__.py:54 -#: ./src/pyams_content/component/illustration/interfaces/__init__.py:56 -#: ./src/pyams_content/component/illustration/interfaces/__init__.py:85 +#: ./src/pyams_content/component/illustration/interfaces/__init__.py:41 +#: ./src/pyams_content/component/illustration/interfaces/__init__.py:76 msgid "Image or video data" msgstr "" #: ./src/pyams_content/component/gallery/interfaces/__init__.py:55 -#: ./src/pyams_content/component/illustration/interfaces/__init__.py:57 -#: ./src/pyams_content/component/illustration/interfaces/__init__.py:86 +#: ./src/pyams_content/component/illustration/interfaces/__init__.py:42 +#: ./src/pyams_content/component/illustration/interfaces/__init__.py:77 msgid "Image or video content" msgstr "" #: ./src/pyams_content/component/gallery/interfaces/__init__.py:58 #: ./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:48 +#: ./src/pyams_content/component/illustration/interfaces/__init__.py:52 #: ./src/pyams_content/component/paragraph/interfaces/video.py:44 #: ./src/pyams_content/component/links/interfaces/__init__.py:37 -#: ./src/pyams_content/component/video/interfaces/__init__.py:46 -#: ./src/pyams_content/shared/common/interfaces/__init__.py:136 +#: ./src/pyams_content/component/video/interfaces/__init__.py:48 +#: ./src/pyams_content/shared/common/interfaces/__init__.py:145 #: ./src/pyams_content/shared/form/interfaces/__init__.py:65 msgid "Description" msgstr "" @@ -278,17 +263,17 @@ #: ./src/pyams_content/component/gallery/interfaces/__init__.py:94 #: ./src/pyams_content/component/extfile/interfaces/__init__.py:36 -#: ./src/pyams_content/component/paragraph/zmi/milestone.py:269 -#: ./src/pyams_content/component/paragraph/zmi/container.py:223 +#: ./src/pyams_content/component/paragraph/zmi/milestone.py:257 +#: ./src/pyams_content/component/paragraph/zmi/container.py:224 #: ./src/pyams_content/component/paragraph/interfaces/milestone.py:46 #: ./src/pyams_content/component/links/zmi/reverse.py:71 #: ./src/pyams_content/shared/common/zmi/dashboard.py:109 #: ./src/pyams_content/shared/common/zmi/templates/advanced-search.pt:188 -#: ./src/pyams_content/shared/imagemap/zmi/container.py:119 +#: ./src/pyams_content/shared/imagemap/zmi/container.py:123 #: ./src/pyams_content/shared/site/zmi/folder.py:64 #: ./src/pyams_content/root/zmi/templates/advanced-search.pt:188 #: ./src/pyams_content/interfaces/__init__.py:99 -#: ./src/pyams_content/reference/pictograms/zmi/__init__.py:172 +#: ./src/pyams_content/reference/pictograms/zmi/__init__.py:162 msgid "Title" msgstr "" @@ -333,71 +318,71 @@ msgid "Audio file" msgstr "" -#: ./src/pyams_content/component/extfile/zmi/__init__.py:73 +#: ./src/pyams_content/component/extfile/zmi/__init__.py:74 msgid "External files" msgstr "" -#: ./src/pyams_content/component/extfile/zmi/__init__.py:86 +#: ./src/pyams_content/component/extfile/zmi/__init__.py:89 msgid "Add external file" msgstr "" -#: ./src/pyams_content/component/extfile/zmi/__init__.py:98 +#: ./src/pyams_content/component/extfile/zmi/__init__.py:101 msgid "Add new external file" msgstr "" -#: ./src/pyams_content/component/extfile/zmi/__init__.py:145 +#: ./src/pyams_content/component/extfile/zmi/__init__.py:141 msgid "Update file properties" msgstr "" -#: ./src/pyams_content/component/extfile/zmi/__init__.py:185 +#: ./src/pyams_content/component/extfile/zmi/__init__.py:181 msgid "Images" msgstr "" -#: ./src/pyams_content/component/extfile/zmi/__init__.py:198 +#: ./src/pyams_content/component/extfile/zmi/__init__.py:196 msgid "Add image" msgstr "" -#: ./src/pyams_content/component/extfile/zmi/__init__.py:210 +#: ./src/pyams_content/component/extfile/zmi/__init__.py:208 msgid "Add new image" msgstr "" -#: ./src/pyams_content/component/extfile/zmi/__init__.py:256 +#: ./src/pyams_content/component/extfile/zmi/__init__.py:245 msgid "Update image properties" msgstr "" -#: ./src/pyams_content/component/extfile/zmi/__init__.py:296 +#: ./src/pyams_content/component/extfile/zmi/__init__.py:285 msgid "Videos" msgstr "" -#: ./src/pyams_content/component/extfile/zmi/__init__.py:309 +#: ./src/pyams_content/component/extfile/zmi/__init__.py:300 msgid "Add video" msgstr "" -#: ./src/pyams_content/component/extfile/zmi/__init__.py:321 +#: ./src/pyams_content/component/extfile/zmi/__init__.py:312 msgid "Add new video" msgstr "" -#: ./src/pyams_content/component/extfile/zmi/__init__.py:359 +#: ./src/pyams_content/component/extfile/zmi/__init__.py:341 msgid "Update video properties" msgstr "" -#: ./src/pyams_content/component/extfile/zmi/__init__.py:391 +#: ./src/pyams_content/component/extfile/zmi/__init__.py:373 msgid "Audios files" msgstr "" -#: ./src/pyams_content/component/extfile/zmi/__init__.py:404 +#: ./src/pyams_content/component/extfile/zmi/__init__.py:388 msgid "Add audio file" msgstr "" -#: ./src/pyams_content/component/extfile/zmi/__init__.py:416 +#: ./src/pyams_content/component/extfile/zmi/__init__.py:400 msgid "Add new audio file" msgstr "" -#: ./src/pyams_content/component/extfile/zmi/__init__.py:454 +#: ./src/pyams_content/component/extfile/zmi/__init__.py:429 msgid "Update audio file properties" msgstr "" -#: ./src/pyams_content/component/extfile/zmi/__init__.py:49 +#: ./src/pyams_content/component/extfile/zmi/__init__.py:50 msgid "External file type" msgstr "" @@ -407,32 +392,24 @@ #: ./src/pyams_content/component/extfile/interfaces/__init__.py:41 #: ./src/pyams_content/component/paragraph/interfaces/video.py:45 -#: ./src/pyams_content/component/video/interfaces/__init__.py:47 +#: ./src/pyams_content/component/video/interfaces/__init__.py:49 msgid "File description displayed by front-office template" msgstr "" #: ./src/pyams_content/component/extfile/interfaces/__init__.py:48 -#: ./src/pyams_content/component/illustration/interfaces/__init__.py:64 -#: ./src/pyams_content/component/illustration/interfaces/__init__.py:93 #: ./src/pyams_content/component/links/interfaces/__init__.py:59 msgid "Language" msgstr "" #: ./src/pyams_content/component/extfile/interfaces/__init__.py:49 -#: ./src/pyams_content/component/illustration/interfaces/__init__.py:65 -#: ./src/pyams_content/component/illustration/interfaces/__init__.py:94 msgid "File's content language" msgstr "" #: ./src/pyams_content/component/extfile/interfaces/__init__.py:53 -#: ./src/pyams_content/component/illustration/interfaces/__init__.py:60 -#: ./src/pyams_content/component/illustration/interfaces/__init__.py:89 msgid "Save file as..." msgstr "" #: ./src/pyams_content/component/extfile/interfaces/__init__.py:54 -#: ./src/pyams_content/component/illustration/interfaces/__init__.py:61 -#: ./src/pyams_content/component/illustration/interfaces/__init__.py:90 msgid "Name under which the file will be saved" msgstr "" @@ -449,7 +426,7 @@ msgstr "" #: ./src/pyams_content/component/extfile/interfaces/__init__.py:78 -#: ./src/pyams_content/component/illustration/interfaces/__init__.py:45 +#: ./src/pyams_content/component/illustration/interfaces/__init__.py:49 #: ./src/pyams_content/reference/pictograms/interfaces/__init__.py:49 msgid "Alternate title used to describe image content" msgstr "" @@ -478,45 +455,43 @@ #: ./src/pyams_content/component/illustration/paragraph.py:40 #: ./src/pyams_content/component/illustration/paragraph.py:47 -#: ./src/pyams_content/component/illustration/__init__.py:142 -#: ./src/pyams_content/component/illustration/zmi/__init__.py:57 -#: ./src/pyams_content/component/illustration/zmi/__init__.py:80 +#: ./src/pyams_content/component/illustration/__init__.py:135 +#: ./src/pyams_content/component/illustration/zmi/__init__.py:54 +#: ./src/pyams_content/component/illustration/zmi/__init__.py:81 msgid "Illustration" msgstr "" -#: ./src/pyams_content/component/illustration/zmi/paragraph.py:58 +#: ./src/pyams_content/component/illustration/zmi/paragraph.py:59 msgid "Illustration..." msgstr "" -#: ./src/pyams_content/component/illustration/zmi/paragraph.py:69 +#: ./src/pyams_content/component/illustration/zmi/paragraph.py:70 msgid "Add new illustration" msgstr "" -#: ./src/pyams_content/component/illustration/zmi/paragraph.py:100 +#: ./src/pyams_content/component/illustration/zmi/paragraph.py:104 msgid "Edit illustration properties" msgstr "" -#: ./src/pyams_content/component/illustration/zmi/__init__.py:143 -msgid "Add illustration" -msgstr "" - -#: ./src/pyams_content/component/illustration/interfaces/__init__.py:53 +#: ./src/pyams_content/component/illustration/zmi/__init__.py:83 +msgid "Header illustration" +msgstr "" + +#: ./src/pyams_content/component/illustration/interfaces/__init__.py:57 msgid "Name of picture's author" msgstr "" -#: ./src/pyams_content/component/illustration/interfaces/__init__.py:69 -#: ./src/pyams_content/component/illustration/interfaces/__init__.py:98 +#: ./src/pyams_content/component/illustration/interfaces/__init__.py:60 msgid "Illustration template" msgstr "" -#: ./src/pyams_content/component/illustration/interfaces/__init__.py:70 -#: ./src/pyams_content/component/illustration/interfaces/__init__.py:99 +#: ./src/pyams_content/component/illustration/interfaces/__init__.py:61 msgid "Presentation template used for illustration" msgstr "" #: ./src/pyams_content/component/paragraph/milestone.py:206 #: ./src/pyams_content/component/paragraph/milestone.py:228 -#: ./src/pyams_content/component/paragraph/zmi/milestone.py:320 +#: ./src/pyams_content/component/paragraph/zmi/milestone.py:308 msgid "Milestones" msgstr "" @@ -542,7 +517,6 @@ msgstr "" #: ./src/pyams_content/component/paragraph/container.py:82 -#: ./src/pyams_content/component/paragraph/zmi/container.py:307 msgid "Paragraphs" msgstr "" @@ -552,7 +526,7 @@ #: ./src/pyams_content/component/paragraph/pictogram.py:197 #: ./src/pyams_content/component/paragraph/pictogram.py:219 -#: ./src/pyams_content/component/paragraph/zmi/pictogram.py:334 +#: ./src/pyams_content/component/paragraph/zmi/pictogram.py:312 msgid "Pictograms" msgstr "" @@ -566,7 +540,7 @@ #: ./src/pyams_content/component/paragraph/keynumber.py:190 #: ./src/pyams_content/component/paragraph/keynumber.py:213 -#: ./src/pyams_content/component/paragraph/zmi/keynumber.py:302 +#: ./src/pyams_content/component/paragraph/zmi/keynumber.py:287 msgid "Key numbers" msgstr "" @@ -590,19 +564,19 @@ msgid "Verbatim paragraph" msgstr "" -#: ./src/pyams_content/component/paragraph/html.py:58 +#: ./src/pyams_content/component/paragraph/html.py:59 msgid "Raw HTML " msgstr "" -#: ./src/pyams_content/component/paragraph/html.py:67 +#: ./src/pyams_content/component/paragraph/html.py:68 msgid "Raw HTML paragraph" msgstr "" -#: ./src/pyams_content/component/paragraph/html.py:105 +#: ./src/pyams_content/component/paragraph/html.py:106 msgid "Rich text" msgstr "" -#: ./src/pyams_content/component/paragraph/html.py:114 +#: ./src/pyams_content/component/paragraph/html.py:115 msgid "Rich text paragraph" msgstr "" @@ -614,7 +588,7 @@ #: ./src/pyams_content/component/paragraph/header.py:47 #: ./src/pyams_content/component/paragraph/interfaces/header.py:40 #: ./src/pyams_content/features/alert/interfaces.py:65 -#: ./src/pyams_content/features/alert/zmi/container.py:176 +#: ./src/pyams_content/features/alert/zmi/container.py:158 msgid "Header" msgstr "" @@ -622,41 +596,41 @@ msgid "Header paragraph" msgstr "" -#: ./src/pyams_content/component/paragraph/zmi/milestone.py:77 +#: ./src/pyams_content/component/paragraph/zmi/milestone.py:79 msgid "Milestones..." msgstr "" -#: ./src/pyams_content/component/paragraph/zmi/milestone.py:88 +#: ./src/pyams_content/component/paragraph/zmi/milestone.py:90 msgid "Add new milestone paragraph" msgstr "" -#: ./src/pyams_content/component/paragraph/zmi/milestone.py:118 +#: ./src/pyams_content/component/paragraph/zmi/milestone.py:122 msgid "Edit milestone paragraph properties" msgstr "" -#: ./src/pyams_content/component/paragraph/zmi/milestone.py:278 +#: ./src/pyams_content/component/paragraph/zmi/milestone.py:266 #: ./src/pyams_content/component/paragraph/interfaces/milestone.py:50 msgid "Associated label" msgstr "" -#: ./src/pyams_content/component/paragraph/zmi/milestone.py:287 +#: ./src/pyams_content/component/paragraph/zmi/milestone.py:275 #: ./src/pyams_content/component/paragraph/interfaces/milestone.py:54 msgid "Anchor" msgstr "" -#: ./src/pyams_content/component/paragraph/zmi/milestone.py:335 +#: ./src/pyams_content/component/paragraph/zmi/milestone.py:323 msgid "Add milestone" msgstr "" -#: ./src/pyams_content/component/paragraph/zmi/milestone.py:346 +#: ./src/pyams_content/component/paragraph/zmi/milestone.py:334 msgid "Add new milestone" msgstr "" -#: ./src/pyams_content/component/paragraph/zmi/milestone.py:386 +#: ./src/pyams_content/component/paragraph/zmi/milestone.py:367 msgid "Edit milestone properties" msgstr "" -#: ./src/pyams_content/component/paragraph/zmi/milestone.py:370 +#: ./src/pyams_content/component/paragraph/zmi/milestone.py:356 msgid "Milestone was correctly added" msgstr "" @@ -668,19 +642,19 @@ msgid "Add new key points paragraph" msgstr "" -#: ./src/pyams_content/component/paragraph/zmi/keypoint.py:93 +#: ./src/pyams_content/component/paragraph/zmi/keypoint.py:95 msgid "Edit key points paragraph properties" msgstr "" -#: ./src/pyams_content/component/paragraph/zmi/__init__.py:61 -msgid "Paragraphs types..." -msgstr "" - -#: ./src/pyams_content/component/paragraph/zmi/__init__.py:72 -msgid "Paragraphs types" -msgstr "" - -#: ./src/pyams_content/component/paragraph/zmi/__init__.py:89 +#: ./src/pyams_content/component/paragraph/zmi/__init__.py:63 +msgid "Content block types..." +msgstr "" + +#: ./src/pyams_content/component/paragraph/zmi/__init__.py:76 +msgid "Content block types" +msgstr "" + +#: ./src/pyams_content/component/paragraph/zmi/__init__.py:93 msgid "" "You can define which types of paragraphs are allowed in this container.\n" "\n" @@ -689,196 +663,195 @@ "NOTICE: removing types from allowed types list will have no effect on already created contents!" msgstr "" -#: ./src/pyams_content/component/paragraph/zmi/__init__.py:139 +#: ./src/pyams_content/component/paragraph/zmi/__init__.py:194 msgid "Paragraph was correctly added." msgstr "" -#: ./src/pyams_content/component/paragraph/zmi/video.py:56 +#: ./src/pyams_content/component/paragraph/zmi/video.py:57 msgid "Video paragraph..." msgstr "" -#: ./src/pyams_content/component/paragraph/zmi/video.py:67 +#: ./src/pyams_content/component/paragraph/zmi/video.py:68 msgid "Add new video paragraph" msgstr "" -#: ./src/pyams_content/component/paragraph/zmi/video.py:109 -#: ./src/pyams_content/component/video/zmi/paragraph.py:182 +#: ./src/pyams_content/component/paragraph/zmi/video.py:112 +#: ./src/pyams_content/component/video/zmi/paragraph.py:193 msgid "Edit video properties" msgstr "" -#: ./src/pyams_content/component/paragraph/zmi/video.py:83 -#: ./src/pyams_content/component/paragraph/zmi/video.py:128 +#: ./src/pyams_content/component/paragraph/zmi/video.py:84 +#: ./src/pyams_content/component/paragraph/zmi/video.py:131 #: ./src/pyams_content/component/video/zmi/paragraph.py:87 -#: ./src/pyams_content/component/video/zmi/paragraph.py:205 +#: ./src/pyams_content/component/video/zmi/paragraph.py:216 msgid "HTML content" msgstr "" #: ./src/pyams_content/component/paragraph/zmi/container.py:74 -msgid "Paragraphs..." -msgstr "" - -#: ./src/pyams_content/component/paragraph/zmi/container.py:239 +msgid "Contents..." +msgstr "" + +#: ./src/pyams_content/component/paragraph/zmi/container.py:240 msgid "Show/hide all paragraphs" msgstr "" -#: ./src/pyams_content/component/paragraph/zmi/container.py:285 -#: ./src/pyams_content/component/paragraph/zmi/container.py:294 -msgid "Paragraphs list" -msgstr "" - -#: ./src/pyams_content/component/paragraph/zmi/container.py:364 -#: ./src/pyams_content/component/association/zmi/paragraph.py:55 -#: ./src/pyams_content/component/association/zmi/__init__.py:107 -msgid "Associations..." -msgstr "" - -#: ./src/pyams_content/component/paragraph/zmi/container.py:376 -msgid "Paragraphs associations" -msgstr "" - -#: ./src/pyams_content/component/paragraph/zmi/container.py:126 +#: ./src/pyams_content/component/paragraph/zmi/container.py:288 +#: ./src/pyams_content/component/paragraph/zmi/container.py:297 +#: ./src/pyams_content/component/paragraph/zmi/container.py:310 +msgid "Content blocks" +msgstr "" + +#: ./src/pyams_content/component/paragraph/zmi/container.py:367 +msgid "Links and attachments..." +msgstr "" + +#: ./src/pyams_content/component/paragraph/zmi/container.py:379 +msgid "Content blocks links and attachments" +msgstr "" + +#: ./src/pyams_content/component/paragraph/zmi/container.py:127 msgid "No currently defined paragraph." msgstr "" -#: ./src/pyams_content/component/paragraph/zmi/container.py:248 +#: ./src/pyams_content/component/paragraph/zmi/container.py:249 msgid "Click to open/close all paragraphs editors" msgstr "" -#: ./src/pyams_content/component/paragraph/zmi/container.py:261 +#: ./src/pyams_content/component/paragraph/zmi/container.py:262 msgid "Click to open/close paragraph editor" msgstr "" -#: ./src/pyams_content/component/paragraph/zmi/container.py:132 +#: ./src/pyams_content/component/paragraph/zmi/container.py:133 msgid "Check allowed paragraph types to be able to create new paragraphs." msgstr "" -#: ./src/pyams_content/component/paragraph/zmi/pictogram.py:84 +#: ./src/pyams_content/component/paragraph/zmi/pictogram.py:81 msgid "Pictograms..." msgstr "" -#: ./src/pyams_content/component/paragraph/zmi/pictogram.py:95 +#: ./src/pyams_content/component/paragraph/zmi/pictogram.py:92 msgid "Add new pictogram paragraph" msgstr "" -#: ./src/pyams_content/component/paragraph/zmi/pictogram.py:125 +#: ./src/pyams_content/component/paragraph/zmi/pictogram.py:124 msgid "Edit pictogram paragraph properties" msgstr "" #. Default: Header -#: ./src/pyams_content/component/paragraph/zmi/pictogram.py:297 +#: ./src/pyams_content/component/paragraph/zmi/pictogram.py:275 msgid "pictogram-item-header" msgstr "" -#: ./src/pyams_content/component/paragraph/zmi/pictogram.py:312 -#: ./src/pyams_content/component/paragraph/zmi/keynumber.py:286 +#: ./src/pyams_content/component/paragraph/zmi/pictogram.py:290 +#: ./src/pyams_content/component/paragraph/zmi/keynumber.py:271 #: ./src/pyams_content/component/paragraph/interfaces/pictogram.py:59 -#: ./src/pyams_content/component/paragraph/interfaces/keynumber.py:56 +#: ./src/pyams_content/component/paragraph/interfaces/keynumber.py:55 msgid "Associated text" msgstr "" -#: ./src/pyams_content/component/paragraph/zmi/pictogram.py:349 -#: ./src/pyams_content/reference/pictograms/zmi/__init__.py:56 +#: ./src/pyams_content/component/paragraph/zmi/pictogram.py:327 +#: ./src/pyams_content/reference/pictograms/zmi/__init__.py:59 msgid "Add pictogram" msgstr "" -#: ./src/pyams_content/component/paragraph/zmi/pictogram.py:360 -#: ./src/pyams_content/reference/pictograms/zmi/__init__.py:67 +#: ./src/pyams_content/component/paragraph/zmi/pictogram.py:338 +#: ./src/pyams_content/reference/pictograms/zmi/__init__.py:70 msgid "Add new pictogram" msgstr "" -#: ./src/pyams_content/component/paragraph/zmi/pictogram.py:405 -#: ./src/pyams_content/reference/pictograms/zmi/__init__.py:95 +#: ./src/pyams_content/component/paragraph/zmi/pictogram.py:376 +#: ./src/pyams_content/reference/pictograms/zmi/__init__.py:100 msgid "Edit pictogram properties" msgstr "" -#: ./src/pyams_content/component/paragraph/zmi/pictogram.py:389 +#: ./src/pyams_content/component/paragraph/zmi/pictogram.py:365 msgid "Pictogram was correctly added" msgstr "" -#: ./src/pyams_content/component/paragraph/zmi/keynumber.py:76 +#: ./src/pyams_content/component/paragraph/zmi/keynumber.py:78 msgid "Key numbers..." msgstr "" -#: ./src/pyams_content/component/paragraph/zmi/keynumber.py:87 +#: ./src/pyams_content/component/paragraph/zmi/keynumber.py:89 msgid "Add new key number paragraph" msgstr "" -#: ./src/pyams_content/component/paragraph/zmi/keynumber.py:117 +#: ./src/pyams_content/component/paragraph/zmi/keynumber.py:121 msgid "Edit key number paragraph properties" msgstr "" -#: ./src/pyams_content/component/paragraph/zmi/keynumber.py:268 -#: ./src/pyams_content/component/paragraph/interfaces/keynumber.py:47 +#: ./src/pyams_content/component/paragraph/zmi/keynumber.py:253 +#: ./src/pyams_content/component/paragraph/interfaces/keynumber.py:46 msgid "Number" msgstr "" #. Default: Header -#: ./src/pyams_content/component/paragraph/zmi/keynumber.py:277 -#: ./src/pyams_content/component/paragraph/interfaces/keynumber.py:51 +#: ./src/pyams_content/component/paragraph/zmi/keynumber.py:262 +#: ./src/pyams_content/component/paragraph/interfaces/keynumber.py:50 msgid "key-number-label" msgstr "" -#: ./src/pyams_content/component/paragraph/zmi/keynumber.py:317 +#: ./src/pyams_content/component/paragraph/zmi/keynumber.py:302 msgid "Add keynumber" msgstr "" -#: ./src/pyams_content/component/paragraph/zmi/keynumber.py:328 +#: ./src/pyams_content/component/paragraph/zmi/keynumber.py:313 msgid "Add new keynumber" msgstr "" -#: ./src/pyams_content/component/paragraph/zmi/keynumber.py:368 +#: ./src/pyams_content/component/paragraph/zmi/keynumber.py:346 msgid "Edit keynumber properties" msgstr "" -#: ./src/pyams_content/component/paragraph/zmi/keynumber.py:352 +#: ./src/pyams_content/component/paragraph/zmi/keynumber.py:335 msgid "Key number was correctly added" msgstr "" -#: ./src/pyams_content/component/paragraph/zmi/frame.py:84 +#: ./src/pyams_content/component/paragraph/zmi/frame.py:85 msgid "Framed text..." msgstr "" -#: ./src/pyams_content/component/paragraph/zmi/frame.py:96 +#: ./src/pyams_content/component/paragraph/zmi/frame.py:97 msgid "Add new framed text paragraph" msgstr "" -#: ./src/pyams_content/component/paragraph/zmi/frame.py:130 +#: ./src/pyams_content/component/paragraph/zmi/frame.py:133 msgid "Edit framed text paragraph properties" msgstr "" -#: ./src/pyams_content/component/paragraph/zmi/verbatim.py:57 +#: ./src/pyams_content/component/paragraph/zmi/verbatim.py:58 msgid "Verbatim..." msgstr "" -#: ./src/pyams_content/component/paragraph/zmi/verbatim.py:68 +#: ./src/pyams_content/component/paragraph/zmi/verbatim.py:69 msgid "Add new verbatim paragraph" msgstr "" -#: ./src/pyams_content/component/paragraph/zmi/verbatim.py:98 +#: ./src/pyams_content/component/paragraph/zmi/verbatim.py:101 msgid "Edit verbatim paragraph properties" msgstr "" -#: ./src/pyams_content/component/paragraph/zmi/html.py:78 +#: ./src/pyams_content/component/paragraph/zmi/html.py:77 msgid "Raw HTML..." msgstr "" -#: ./src/pyams_content/component/paragraph/zmi/html.py:89 +#: ./src/pyams_content/component/paragraph/zmi/html.py:88 msgid "Add new raw HTML paragraph" msgstr "" -#: ./src/pyams_content/component/paragraph/zmi/html.py:122 +#: ./src/pyams_content/component/paragraph/zmi/html.py:123 msgid "Edit raw HTML paragraph properties" msgstr "" -#: ./src/pyams_content/component/paragraph/zmi/html.py:193 +#: ./src/pyams_content/component/paragraph/zmi/html.py:194 msgid "Rich text..." msgstr "" -#: ./src/pyams_content/component/paragraph/zmi/html.py:204 +#: ./src/pyams_content/component/paragraph/zmi/html.py:205 msgid "Add new rich text paragraph" msgstr "" -#: ./src/pyams_content/component/paragraph/zmi/html.py:237 +#: ./src/pyams_content/component/paragraph/zmi/html.py:240 msgid "Edit rich text paragraph properties" msgstr "" @@ -890,7 +863,7 @@ msgid "Add new contact card" msgstr "" -#: ./src/pyams_content/component/paragraph/zmi/contact.py:95 +#: ./src/pyams_content/component/paragraph/zmi/contact.py:97 msgid "Edit contact card properties" msgstr "" @@ -902,14 +875,14 @@ msgid "Add new header paragraph" msgstr "" -#: ./src/pyams_content/component/paragraph/zmi/header.py:93 +#: ./src/pyams_content/component/paragraph/zmi/header.py:95 msgid "Edit header paragraph properties" msgstr "" #: ./src/pyams_content/component/paragraph/interfaces/milestone.py:41 #: ./src/pyams_content/component/paragraph/interfaces/__init__.py:43 #: ./src/pyams_content/component/paragraph/interfaces/pictogram.py:42 -#: ./src/pyams_content/component/paragraph/interfaces/keynumber.py:42 +#: ./src/pyams_content/component/paragraph/interfaces/keynumber.py:41 #: ./src/pyams_content/component/association/interfaces/__init__.py:43 #: ./src/pyams_content/shared/form/interfaces/__init__.py:86 #: ./src/pyams_content/shared/site/interfaces/__init__.py:107 @@ -973,8 +946,8 @@ msgstr "" #: ./src/pyams_content/component/paragraph/interfaces/__init__.py:84 -#: ./src/pyams_content/shared/common/zmi/types.py:154 -#: ./src/pyams_content/shared/common/zmi/types.py:396 +#: ./src/pyams_content/shared/common/zmi/types.py:167 +#: ./src/pyams_content/shared/common/zmi/types.py:395 msgid "Default paragraphs" msgstr "" @@ -984,7 +957,7 @@ #: ./src/pyams_content/component/paragraph/interfaces/video.py:41 #: ./src/pyams_content/component/paragraph/interfaces/html.py:53 -#: ./src/pyams_content/component/video/interfaces/__init__.py:71 +#: ./src/pyams_content/component/video/interfaces/__init__.py:73 msgid "Body" msgstr "" @@ -1037,28 +1010,28 @@ msgid "Presentation template used for pictograms" msgstr "" -#: ./src/pyams_content/component/paragraph/interfaces/keynumber.py:43 +#: ./src/pyams_content/component/paragraph/interfaces/keynumber.py:42 msgid "Is this key number visible in front-office?" msgstr "" -#: ./src/pyams_content/component/paragraph/interfaces/keynumber.py:48 +#: ./src/pyams_content/component/paragraph/interfaces/keynumber.py:47 msgid "Key number value" msgstr "" -#: ./src/pyams_content/component/paragraph/interfaces/keynumber.py:52 +#: ./src/pyams_content/component/paragraph/interfaces/keynumber.py:51 msgid "" "Small text to be displayed above number (according to selected renderer)" msgstr "" -#: ./src/pyams_content/component/paragraph/interfaces/keynumber.py:57 +#: ./src/pyams_content/component/paragraph/interfaces/keynumber.py:56 msgid "The way this text will be rendered depends on presentation template" msgstr "" +#: ./src/pyams_content/component/paragraph/interfaces/keynumber.py:83 +msgid "Key numbers template" +msgstr "" + #: ./src/pyams_content/component/paragraph/interfaces/keynumber.py:84 -msgid "Key numbers template" -msgstr "" - -#: ./src/pyams_content/component/paragraph/interfaces/keynumber.py:85 msgid "Presentation template used for key numbers" msgstr "" @@ -1170,7 +1143,7 @@ msgstr "" #: ./src/pyams_content/component/theme/__init__.py:81 -#: ./src/pyams_content/component/theme/zmi/portlet.py:39 +#: ./src/pyams_content/component/theme/zmi/portlet.py:40 #: ./src/pyams_content/component/theme/interfaces/__init__.py:43 msgid "Themes" msgstr "" @@ -1188,11 +1161,11 @@ msgid "Content themes" msgstr "" -#: ./src/pyams_content/component/theme/zmi/manager.py:45 +#: ./src/pyams_content/component/theme/zmi/manager.py:46 msgid "Themes settings..." msgstr "" -#: ./src/pyams_content/component/theme/zmi/manager.py:56 +#: ./src/pyams_content/component/theme/zmi/manager.py:59 msgid "Selected themes" msgstr "" @@ -1202,43 +1175,44 @@ msgstr "" #: ./src/pyams_content/component/association/container.py:95 -#: ./src/pyams_content/component/association/zmi/__init__.py:327 +#: ./src/pyams_content/component/association/zmi/__init__.py:282 msgid "Associations" msgstr "" -#: ./src/pyams_content/component/association/zmi/paragraph.py:66 +#: ./src/pyams_content/component/association/zmi/paragraph.py:56 +#: ./src/pyams_content/component/association/zmi/__init__.py:94 +msgid "Associations..." +msgstr "" + +#: ./src/pyams_content/component/association/zmi/paragraph.py:67 msgid "Add new association paragraph" msgstr "" -#: ./src/pyams_content/component/association/zmi/paragraph.py:96 +#: ./src/pyams_content/component/association/zmi/paragraph.py:99 msgid "Edit association paragraph properties" msgstr "" -#: ./src/pyams_content/component/association/zmi/__init__.py:205 +#: ./src/pyams_content/component/association/zmi/__init__.py:187 msgid "Public title" msgstr "" -#: ./src/pyams_content/component/association/zmi/__init__.py:222 +#: ./src/pyams_content/component/association/zmi/__init__.py:204 msgid "Inner title" msgstr "" -#: ./src/pyams_content/component/association/zmi/__init__.py:237 +#: ./src/pyams_content/component/association/zmi/__init__.py:219 msgid "Size" msgstr "" -#: ./src/pyams_content/component/association/zmi/__init__.py:304 -#: ./src/pyams_content/component/association/zmi/__init__.py:314 +#: ./src/pyams_content/component/association/zmi/__init__.py:259 +#: ./src/pyams_content/component/association/zmi/__init__.py:269 msgid "Associations list" msgstr "" -#: ./src/pyams_content/component/association/zmi/__init__.py:65 +#: ./src/pyams_content/component/association/zmi/__init__.py:64 msgid "Association was correctly added." msgstr "" -#: ./src/pyams_content/component/association/zmi/__init__.py:276 -msgid "Given association name doesn't exist!" -msgstr "" - #: ./src/pyams_content/component/association/interfaces/__init__.py:44 msgid "Is this item visible in front-office?" msgstr "" @@ -1267,51 +1241,51 @@ msgid "target is not published" msgstr "" -#: ./src/pyams_content/component/links/zmi/__init__.py:56 +#: ./src/pyams_content/component/links/zmi/__init__.py:57 msgid "Internal links" msgstr "" -#: ./src/pyams_content/component/links/zmi/__init__.py:69 +#: ./src/pyams_content/component/links/zmi/__init__.py:72 msgid "Add internal link" msgstr "" -#: ./src/pyams_content/component/links/zmi/__init__.py:81 +#: ./src/pyams_content/component/links/zmi/__init__.py:84 msgid "Add new internal link" msgstr "" -#: ./src/pyams_content/component/links/zmi/__init__.py:126 +#: ./src/pyams_content/component/links/zmi/__init__.py:122 msgid "Edit internal link properties" msgstr "" -#: ./src/pyams_content/component/links/zmi/__init__.py:164 +#: ./src/pyams_content/component/links/zmi/__init__.py:160 msgid "External links" msgstr "" -#: ./src/pyams_content/component/links/zmi/__init__.py:177 +#: ./src/pyams_content/component/links/zmi/__init__.py:175 msgid "Add external link" msgstr "" -#: ./src/pyams_content/component/links/zmi/__init__.py:189 +#: ./src/pyams_content/component/links/zmi/__init__.py:187 msgid "Add new external link" msgstr "" -#: ./src/pyams_content/component/links/zmi/__init__.py:234 +#: ./src/pyams_content/component/links/zmi/__init__.py:225 msgid "Edit external link properties" msgstr "" -#: ./src/pyams_content/component/links/zmi/__init__.py:272 +#: ./src/pyams_content/component/links/zmi/__init__.py:263 msgid "Mailto links" msgstr "" -#: ./src/pyams_content/component/links/zmi/__init__.py:285 +#: ./src/pyams_content/component/links/zmi/__init__.py:278 msgid "Add mailto link" msgstr "" -#: ./src/pyams_content/component/links/zmi/__init__.py:297 +#: ./src/pyams_content/component/links/zmi/__init__.py:290 msgid "Add new mailto link" msgstr "" -#: ./src/pyams_content/component/links/zmi/__init__.py:342 +#: ./src/pyams_content/component/links/zmi/__init__.py:328 msgid "Edit mailto link properties" msgstr "" @@ -1377,213 +1351,231 @@ msgid "Dailymotion settings" msgstr "" +#: ./src/pyams_content/component/video/provider/__init__.py:66 +msgid "Other provider" +msgstr "" + +#: ./src/pyams_content/component/video/provider/__init__.py:90 +msgid "Custom video settings" +msgstr "" + #: ./src/pyams_content/component/video/provider/vimeo.py:92 msgid "Vimeo settings" msgstr "" #: ./src/pyams_content/component/video/provider/interfaces.py:31 -#: ./src/pyams_content/component/video/provider/interfaces.py:103 -#: ./src/pyams_content/component/video/provider/interfaces.py:171 -msgid "Video ID" +msgid "Integration code" msgstr "" #: ./src/pyams_content/component/video/provider/interfaces.py:32 msgid "" +"Please select integration code provided by your video provider, and paste it " +"here" +msgstr "" + +#: ./src/pyams_content/component/video/provider/interfaces.py:40 +#: ./src/pyams_content/component/video/provider/interfaces.py:112 +#: ./src/pyams_content/component/video/provider/interfaces.py:180 +msgid "Video ID" +msgstr "" + +#: ./src/pyams_content/component/video/provider/interfaces.py:41 +msgid "" "To get video ID, just use the 'Share' button in Youtube platform and " "copy/paste the given URL here" msgstr "" -#: ./src/pyams_content/component/video/provider/interfaces.py:36 -#: ./src/pyams_content/component/video/provider/interfaces.py:108 -#: ./src/pyams_content/component/video/provider/interfaces.py:176 -msgid "Video width" -msgstr "" - -#: ./src/pyams_content/component/video/provider/interfaces.py:37 -#: ./src/pyams_content/component/video/provider/interfaces.py:109 -#: ./src/pyams_content/component/video/provider/interfaces.py:177 +#: ./src/pyams_content/component/video/provider/interfaces.py:45 +#: ./src/pyams_content/component/video/provider/interfaces.py:117 +msgid "Start at" +msgstr "" + +#: ./src/pyams_content/component/video/provider/interfaces.py:46 +#: ./src/pyams_content/component/video/provider/interfaces.py:118 msgid "" -"Initial video frame width; mandatory for old browsers but may be overridden " -"by presentation skin" -msgstr "" - -#: ./src/pyams_content/component/video/provider/interfaces.py:43 -#: ./src/pyams_content/component/video/provider/interfaces.py:115 -#: ./src/pyams_content/component/video/provider/interfaces.py:183 -msgid "Video height" -msgstr "" - -#: ./src/pyams_content/component/video/provider/interfaces.py:44 -#: ./src/pyams_content/component/video/provider/interfaces.py:116 -#: ./src/pyams_content/component/video/provider/interfaces.py:184 -msgid "" -"Initial video frame height; mandatory for old browsers but may be overridden " -"by presentation skin" +"Position at which to start video, in 'seconds' or 'minutes:seconds' format" msgstr "" #: ./src/pyams_content/component/video/provider/interfaces.py:50 -#: ./src/pyams_content/component/video/provider/interfaces.py:122 -msgid "Start at" +msgid "Stop at" msgstr "" #: ./src/pyams_content/component/video/provider/interfaces.py:51 -#: ./src/pyams_content/component/video/provider/interfaces.py:123 msgid "" -"Position at which to start video, in 'seconds' or 'minutes:seconds' format" +"Position at which to stop video, in 'seconds' or 'minutes:seconds' format" +msgstr "" + +#: ./src/pyams_content/component/video/provider/interfaces.py:54 +#: ./src/pyams_content/component/video/provider/interfaces.py:122 +#: ./src/pyams_content/component/video/provider/interfaces.py:200 +msgid "Auto play?" msgstr "" #: ./src/pyams_content/component/video/provider/interfaces.py:55 -msgid "Stop at" -msgstr "" - -#: ./src/pyams_content/component/video/provider/interfaces.py:56 -msgid "" -"Position at which to stop video, in 'seconds' or 'minutes:seconds' format" +#: ./src/pyams_content/component/video/provider/interfaces.py:123 +#: ./src/pyams_content/component/video/provider/interfaces.py:201 +msgid "If 'yes', video is started automatically on page load" msgstr "" #: ./src/pyams_content/component/video/provider/interfaces.py:59 -#: ./src/pyams_content/component/video/provider/interfaces.py:127 #: ./src/pyams_content/component/video/provider/interfaces.py:205 -msgid "Auto play?" +msgid "Loop playback?" msgstr "" #: ./src/pyams_content/component/video/provider/interfaces.py:60 -#: ./src/pyams_content/component/video/provider/interfaces.py:128 #: ./src/pyams_content/component/video/provider/interfaces.py:206 -msgid "If 'yes', video is started automatically on page load" +msgid "If 'yes', video is played indefinitely" msgstr "" #: ./src/pyams_content/component/video/provider/interfaces.py:64 -#: ./src/pyams_content/component/video/provider/interfaces.py:210 -msgid "Loop playback?" +#: ./src/pyams_content/component/video/provider/interfaces.py:127 +msgid "Show video info?" msgstr "" #: ./src/pyams_content/component/video/provider/interfaces.py:65 -#: ./src/pyams_content/component/video/provider/interfaces.py:211 -msgid "If 'yes', video is played indefinitely" +#: ./src/pyams_content/component/video/provider/interfaces.py:128 +msgid "If 'no', video title and information won't be displayed" msgstr "" #: ./src/pyams_content/component/video/provider/interfaces.py:69 #: ./src/pyams_content/component/video/provider/interfaces.py:132 -msgid "Show video info?" +msgid "Show commands?" msgstr "" #: ./src/pyams_content/component/video/provider/interfaces.py:70 #: ./src/pyams_content/component/video/provider/interfaces.py:133 -msgid "If 'no', video title and information won't be displayed" +msgid "Show video player commands" msgstr "" #: ./src/pyams_content/component/video/provider/interfaces.py:74 -#: ./src/pyams_content/component/video/provider/interfaces.py:137 -msgid "Show commands?" +msgid "Hide branding?" msgstr "" #: ./src/pyams_content/component/video/provider/interfaces.py:75 -#: ./src/pyams_content/component/video/provider/interfaces.py:138 -msgid "Show video player commands" +msgid "If 'no', Youtube branding will be displayed" msgstr "" #: ./src/pyams_content/component/video/provider/interfaces.py:79 -msgid "Hide branding?" +msgid "Show related videos?" msgstr "" #: ./src/pyams_content/component/video/provider/interfaces.py:80 -msgid "If 'yes', Youtube branding won't be displayed" +msgid "Show related videos when video end" msgstr "" #: ./src/pyams_content/component/video/provider/interfaces.py:84 -msgid "Show related videos?" +#: ./src/pyams_content/component/video/provider/interfaces.py:152 +#: ./src/pyams_content/component/video/provider/interfaces.py:210 +msgid "Allow full screen?" msgstr "" #: ./src/pyams_content/component/video/provider/interfaces.py:85 -msgid "Show related videos when video end" +#: ./src/pyams_content/component/video/provider/interfaces.py:153 +#: ./src/pyams_content/component/video/provider/interfaces.py:211 +msgid "If 'yes', video can be displayed in full screen" msgstr "" #: ./src/pyams_content/component/video/provider/interfaces.py:89 -#: ./src/pyams_content/component/video/provider/interfaces.py:157 -#: ./src/pyams_content/component/video/provider/interfaces.py:215 -msgid "Allow full screen?" +msgid "Disable keyboard?" msgstr "" #: ./src/pyams_content/component/video/provider/interfaces.py:90 -#: ./src/pyams_content/component/video/provider/interfaces.py:158 -#: ./src/pyams_content/component/video/provider/interfaces.py:216 -msgid "If 'yes', video can be displayed in full screen" +msgid "If 'yes', video player can't be controlled via keyboard shortcuts" msgstr "" #: ./src/pyams_content/component/video/provider/interfaces.py:94 -msgid "Disable keyboard?" +#: ./src/pyams_content/component/video/provider/interfaces.py:162 +#: ./src/pyams_content/component/video/provider/interfaces.py:215 +msgid "Video width" msgstr "" #: ./src/pyams_content/component/video/provider/interfaces.py:95 -msgid "If 'yes', video player can't be controlled via keyboard shortcuts" -msgstr "" - -#: ./src/pyams_content/component/video/provider/interfaces.py:104 +#: ./src/pyams_content/component/video/provider/interfaces.py:163 +#: ./src/pyams_content/component/video/provider/interfaces.py:216 +msgid "" +"Initial video frame width; mandatory for old browsers but may be overridden " +"by presentation skin" +msgstr "" + +#: ./src/pyams_content/component/video/provider/interfaces.py:101 +#: ./src/pyams_content/component/video/provider/interfaces.py:169 +#: ./src/pyams_content/component/video/provider/interfaces.py:222 +msgid "Video height" +msgstr "" + +#: ./src/pyams_content/component/video/provider/interfaces.py:102 +#: ./src/pyams_content/component/video/provider/interfaces.py:170 +#: ./src/pyams_content/component/video/provider/interfaces.py:223 +msgid "" +"Initial video frame height; mandatory for old browsers but may be overridden " +"by presentation skin" +msgstr "" + +#: ./src/pyams_content/component/video/provider/interfaces.py:113 msgid "" "To get video ID, just use the 'Share' button in Dailymotion platform, click " "on \"Copy link\" and paste the given URL here" msgstr "" +#: ./src/pyams_content/component/video/provider/interfaces.py:137 +msgid "UI theme" +msgstr "" + +#: ./src/pyams_content/component/video/provider/interfaces.py:138 +msgid "Default base color theme" +msgstr "" + #: ./src/pyams_content/component/video/provider/interfaces.py:142 -msgid "UI theme" +msgid "Show branding?" msgstr "" #: ./src/pyams_content/component/video/provider/interfaces.py:143 -msgid "Default base color theme" +msgid "If 'yes', Dailymotion branding will be displayed" msgstr "" #: ./src/pyams_content/component/video/provider/interfaces.py:147 -msgid "Show branding?" +msgid "Show end screen?" msgstr "" #: ./src/pyams_content/component/video/provider/interfaces.py:148 -msgid "If 'no', Dailymotion branding won't be displayed" -msgstr "" - -#: ./src/pyams_content/component/video/provider/interfaces.py:152 -msgid "Show end screen?" -msgstr "" - -#: ./src/pyams_content/component/video/provider/interfaces.py:153 msgid "Show end screen when video end" msgstr "" -#: ./src/pyams_content/component/video/provider/interfaces.py:162 +#: ./src/pyams_content/component/video/provider/interfaces.py:157 msgid "Allow sharing?" msgstr "" -#: ./src/pyams_content/component/video/provider/interfaces.py:163 +#: ./src/pyams_content/component/video/provider/interfaces.py:158 msgid "If 'no', video sharing will be disabled" msgstr "" -#: ./src/pyams_content/component/video/provider/interfaces.py:172 +#: ./src/pyams_content/component/video/provider/interfaces.py:181 msgid "" "To get video ID, just use the 'Share' button in Vimeo platform, click on " "\"Link\" entry and copy/paste the given URL here" msgstr "" +#: ./src/pyams_content/component/video/provider/interfaces.py:185 +msgid "Show title?" +msgstr "" + +#: ./src/pyams_content/component/video/provider/interfaces.py:186 +msgid "If 'no', video title won't be displayed" +msgstr "" + #: ./src/pyams_content/component/video/provider/interfaces.py:190 -msgid "Show title?" +msgid "Show signature?" msgstr "" #: ./src/pyams_content/component/video/provider/interfaces.py:191 -msgid "If 'no', video title won't be displayed" +msgid "If 'no', video's author signature won't be displayed" msgstr "" #: ./src/pyams_content/component/video/provider/interfaces.py:195 -msgid "Show signature?" +msgid "Infos color" msgstr "" #: ./src/pyams_content/component/video/provider/interfaces.py:196 -msgid "If 'no', video signature won't be displayed" -msgstr "" - -#: ./src/pyams_content/component/video/provider/interfaces.py:200 -msgid "Infos color" -msgstr "" - -#: ./src/pyams_content/component/video/provider/interfaces.py:201 msgid "Color used for title and signature" msgstr "" @@ -1599,173 +1591,165 @@ msgid "Add new external video..." msgstr "" -#: ./src/pyams_content/component/video/zmi/paragraph.py:139 +#: ./src/pyams_content/component/video/zmi/paragraph.py:140 msgid "Video provider is required" msgstr "" -#: ./src/pyams_content/component/video/zmi/paragraph.py:161 -#: ./src/pyams_content/component/video/zmi/paragraph.py:220 +#: ./src/pyams_content/component/video/zmi/paragraph.py:163 +#: ./src/pyams_content/component/video/zmi/paragraph.py:238 msgid "Video provider settings" msgstr "" -#: ./src/pyams_content/component/video/zmi/paragraph.py:170 +#: ./src/pyams_content/component/video/zmi/paragraph.py:179 msgid "Other settings" msgstr "" -#: ./src/pyams_content/component/video/interfaces/__init__.py:54 +#: ./src/pyams_content/component/video/interfaces/__init__.py:56 msgid "Video provider" msgstr "" -#: ./src/pyams_content/component/video/interfaces/__init__.py:55 +#: ./src/pyams_content/component/video/interfaces/__init__.py:57 msgid "Name of external platform providing selected video" msgstr "" -#: ./src/pyams_content/shared/common/__init__.py:235 -#: ./src/pyams_content/shared/common/zmi/properties.py:67 +#: ./src/pyams_content/shared/common/__init__.py:237 +#: ./src/pyams_content/shared/common/zmi/properties.py:72 #: ./src/pyams_content/shared/common/zmi/manager.py:90 msgid "Properties" msgstr "" -#: ./src/pyams_content/shared/common/__init__.py:145 -#: ./src/pyams_content/shared/common/__init__.py:153 +#: ./src/pyams_content/shared/common/__init__.py:147 +#: ./src/pyams_content/shared/common/__init__.py:155 #, python-format msgid "{date} by {principal}" msgstr "" -#: ./src/pyams_content/shared/common/__init__.py:258 +#: ./src/pyams_content/shared/common/__init__.py:260 #, python-format msgid "title length should be between 40 and 66 characters ({length} actually)" msgstr "" -#: ./src/pyams_content/shared/common/zmi/search.py:88 -#: ./src/pyams_content/root/zmi/search.py:85 +#: ./src/pyams_content/shared/common/zmi/search.py:92 +#: ./src/pyams_content/root/zmi/search.py:91 msgid "Quick search results" msgstr "" -#: ./src/pyams_content/shared/common/zmi/search.py:152 -#: ./src/pyams_content/shared/common/zmi/search.py:185 -#: ./src/pyams_content/root/zmi/search.py:140 -#: ./src/pyams_content/root/zmi/search.py:173 +#: ./src/pyams_content/shared/common/zmi/search.py:157 +#: ./src/pyams_content/shared/common/zmi/search.py:190 +#: ./src/pyams_content/root/zmi/search.py:147 +#: ./src/pyams_content/root/zmi/search.py:180 msgid "Advanced search" msgstr "" -#: ./src/pyams_content/shared/common/zmi/search.py:277 -#: ./src/pyams_content/root/zmi/search.py:253 +#: ./src/pyams_content/shared/common/zmi/search.py:282 +#: ./src/pyams_content/root/zmi/search.py:260 msgid "Advanced search results" msgstr "" -#: ./src/pyams_content/shared/common/zmi/search.py:160 +#: ./src/pyams_content/shared/common/zmi/search.py:165 #: ./src/pyams_content/shared/common/zmi/dashboard.py:231 -#: ./src/pyams_content/root/zmi/search.py:152 +#: ./src/pyams_content/root/zmi/search.py:159 msgid "Owner" msgstr "" -#: ./src/pyams_content/shared/common/zmi/search.py:163 +#: ./src/pyams_content/shared/common/zmi/search.py:168 #: ./src/pyams_content/shared/common/zmi/dashboard.py:154 msgid "Status" msgstr "" -#: ./src/pyams_content/shared/common/zmi/search.py:167 -#: ./src/pyams_content/root/zmi/search.py:155 +#: ./src/pyams_content/shared/common/zmi/search.py:172 +#: ./src/pyams_content/root/zmi/search.py:162 msgid "Created after..." msgstr "" -#: ./src/pyams_content/shared/common/zmi/search.py:170 -#: ./src/pyams_content/root/zmi/search.py:158 +#: ./src/pyams_content/shared/common/zmi/search.py:175 +#: ./src/pyams_content/root/zmi/search.py:165 msgid "Created before..." msgstr "" -#: ./src/pyams_content/shared/common/zmi/search.py:173 -#: ./src/pyams_content/root/zmi/search.py:161 +#: ./src/pyams_content/shared/common/zmi/search.py:178 +#: ./src/pyams_content/root/zmi/search.py:168 msgid "Modified after..." msgstr "" -#: ./src/pyams_content/shared/common/zmi/search.py:176 -#: ./src/pyams_content/root/zmi/search.py:164 +#: ./src/pyams_content/shared/common/zmi/search.py:181 +#: ./src/pyams_content/root/zmi/search.py:171 msgid "Modified before..." msgstr "" -#: ./src/pyams_content/shared/common/zmi/properties.py:57 +#: ./src/pyams_content/shared/common/zmi/properties.py:62 msgid "Composition" msgstr "" -#: ./src/pyams_content/shared/common/zmi/properties.py:78 +#: ./src/pyams_content/shared/common/zmi/properties.py:83 msgid "Content properties" msgstr "" -#: ./src/pyams_content/shared/common/zmi/types.py:65 +#: ./src/pyams_content/shared/common/zmi/types.py:67 msgid "Data types" msgstr "" -#: ./src/pyams_content/shared/common/zmi/types.py:132 +#: ./src/pyams_content/shared/common/zmi/types.py:145 msgid "Data type label" msgstr "" -#: ./src/pyams_content/shared/common/zmi/types.py:170 -#: ./src/pyams_content/shared/common/zmi/types.py:412 +#: ./src/pyams_content/shared/common/zmi/types.py:183 +#: ./src/pyams_content/shared/common/zmi/types.py:411 msgid "Default associations" msgstr "" -#: ./src/pyams_content/shared/common/zmi/types.py:191 +#: ./src/pyams_content/shared/common/zmi/types.py:211 msgid "Content data types" msgstr "" +#: ./src/pyams_content/shared/common/zmi/types.py:234 +msgid "Add data type" +msgstr "" + #: ./src/pyams_content/shared/common/zmi/types.py:245 -msgid "Add data type" -msgstr "" - -#: ./src/pyams_content/shared/common/zmi/types.py:256 msgid "Add new data type" msgstr "" -#: ./src/pyams_content/shared/common/zmi/types.py:300 +#: ./src/pyams_content/shared/common/zmi/types.py:291 msgid "Data type properties" msgstr "" -#: ./src/pyams_content/shared/common/zmi/types.py:375 +#: ./src/pyams_content/shared/common/zmi/types.py:374 msgid "Subtype label" msgstr "" -#: ./src/pyams_content/shared/common/zmi/types.py:477 +#: ./src/pyams_content/shared/common/zmi/types.py:455 msgid "Add subtype" msgstr "" -#: ./src/pyams_content/shared/common/zmi/types.py:488 +#: ./src/pyams_content/shared/common/zmi/types.py:466 msgid "Add new subtype" msgstr "" -#: ./src/pyams_content/shared/common/zmi/types.py:545 +#: ./src/pyams_content/shared/common/zmi/types.py:518 msgid "Data subtype properties" msgstr "" -#: ./src/pyams_content/shared/common/zmi/types.py:108 +#: ./src/pyams_content/shared/common/zmi/types.py:112 msgid "No currently defined data type." msgstr "" -#: ./src/pyams_content/shared/common/zmi/types.py:284 +#: ./src/pyams_content/shared/common/zmi/types.py:273 msgid "Specified type name is already used!" msgstr "" -#: ./src/pyams_content/shared/common/zmi/types.py:516 +#: ./src/pyams_content/shared/common/zmi/types.py:494 msgid "Specified subtype name is already used!" msgstr "" -#: ./src/pyams_content/shared/common/zmi/types.py:529 +#: ./src/pyams_content/shared/common/zmi/types.py:505 msgid "Subtype was correctly added." msgstr "" -#: ./src/pyams_content/shared/common/zmi/types.py:142 +#: ./src/pyams_content/shared/common/zmi/types.py:155 msgid "Click to see subtypes" msgstr "" -#: ./src/pyams_content/shared/common/zmi/types.py:212 -msgid "Given data type doesn't exist!" -msgstr "" - -#: ./src/pyams_content/shared/common/zmi/types.py:461 -msgid "Given data subtype doesn't exist!" -msgstr "" - #: ./src/pyams_content/shared/common/zmi/workflow.py:115 #: ./src/pyams_content/shared/common/zmi/workflow.py:207 #: ./src/pyams_content/shared/common/zmi/workflow.py:252 @@ -1777,8 +1761,8 @@ #: ./src/pyams_content/shared/common/zmi/workflow.py:605 #: ./src/pyams_content/shared/common/zmi/workflow.py:650 #: ./src/pyams_content/shared/common/zmi/workflow.py:696 -#: ./src/pyams_content/shared/common/zmi/workflow.py:750 -#: ./src/pyams_content/shared/common/zmi/__init__.py:272 +#: ./src/pyams_content/shared/common/zmi/workflow.py:752 +#: ./src/pyams_content/shared/common/zmi/__init__.py:276 #: ./src/pyams_content/shared/common/zmi/owner.py:74 #: ./src/pyams_content/features/review/zmi/__init__.py:90 msgid "Cancel" @@ -1838,7 +1822,7 @@ msgid "Create new version" msgstr "" -#: ./src/pyams_content/shared/common/zmi/workflow.py:751 +#: ./src/pyams_content/shared/common/zmi/workflow.py:753 #: ./src/pyams_content/workflow/__init__.py:561 #: ./src/pyams_content/workflow/basic.py:248 msgid "Delete version" @@ -1854,11 +1838,11 @@ msgid "A comment is required" msgstr "" -#: ./src/pyams_content/shared/common/zmi/workflow.py:774 +#: ./src/pyams_content/shared/common/zmi/workflow.py:776 msgid "Delete content" msgstr "" -#: ./src/pyams_content/shared/common/zmi/workflow.py:783 +#: ./src/pyams_content/shared/common/zmi/workflow.py:785 msgid "Delete definitively" msgstr "" @@ -1876,11 +1860,11 @@ msgid "{state} {date}" msgstr "" -#: ./src/pyams_content/shared/common/zmi/__init__.py:262 +#: ./src/pyams_content/shared/common/zmi/__init__.py:266 msgid "Duplicate content..." msgstr "" -#: ./src/pyams_content/shared/common/zmi/__init__.py:281 +#: ./src/pyams_content/shared/common/zmi/__init__.py:285 msgid "Duplicate content" msgstr "" @@ -1888,58 +1872,58 @@ msgid "This title can be modified afterwards" msgstr "" -#: ./src/pyams_content/shared/common/zmi/__init__.py:273 +#: ./src/pyams_content/shared/common/zmi/__init__.py:277 msgid "Duplicate this content" msgstr "" -#: ./src/pyams_content/shared/common/zmi/__init__.py:334 +#: ./src/pyams_content/shared/common/zmi/__init__.py:338 #, python-format msgid "Clone created from version {source} of {oid} (in « {state} » state)" msgstr "" -#: ./src/pyams_content/shared/common/zmi/__init__.py:383 +#: ./src/pyams_content/shared/common/zmi/__init__.py:389 msgid "Created or modified in this version" msgstr "" -#: ./src/pyams_content/shared/common/zmi/summary.py:51 +#: ./src/pyams_content/shared/common/zmi/summary.py:50 msgid "Display content summary" msgstr "" -#: ./src/pyams_content/shared/common/zmi/summary.py:75 +#: ./src/pyams_content/shared/common/zmi/summary.py:74 msgid "Identity card" msgstr "" -#: ./src/pyams_content/shared/common/zmi/summary.py:87 +#: ./src/pyams_content/shared/common/zmi/summary.py:86 msgid "Requested action" msgstr "" -#: ./src/pyams_content/shared/common/zmi/summary.py:128 +#: ./src/pyams_content/shared/common/zmi/summary.py:127 msgid "Publication and retire dates" msgstr "" -#: ./src/pyams_content/shared/common/zmi/summary.py:147 +#: ./src/pyams_content/shared/common/zmi/summary.py:146 msgid "Current version" msgstr "" -#: ./src/pyams_content/shared/common/zmi/summary.py:177 +#: ./src/pyams_content/shared/common/zmi/summary.py:176 msgid "Content history" msgstr "" -#: ./src/pyams_content/shared/common/zmi/summary.py:118 +#: ./src/pyams_content/shared/common/zmi/summary.py:117 msgid "Associated comment" msgstr "" -#: ./src/pyams_content/shared/common/zmi/summary.py:159 +#: ./src/pyams_content/shared/common/zmi/summary.py:158 #: ./src/pyams_content/shared/common/zmi/dashboard.py:198 msgid "Version" msgstr "" -#: ./src/pyams_content/shared/common/zmi/summary.py:108 +#: ./src/pyams_content/shared/common/zmi/summary.py:107 #, python-format msgid "{state} {date} by {principal}" msgstr "" -#: ./src/pyams_content/shared/common/zmi/summary.py:165 +#: ./src/pyams_content/shared/common/zmi/summary.py:164 #, python-format msgid "{state} since {date}, by {principal}" msgstr "" @@ -2316,16 +2300,16 @@ msgid "Owners" msgstr "" -#: ./src/pyams_content/shared/common/zmi/security.py:176 +#: ./src/pyams_content/shared/common/zmi/security.py:178 #, python-format msgid "Edit manager restrictions for « {0} »" msgstr "" -#: ./src/pyams_content/shared/common/zmi/security.py:213 +#: ./src/pyams_content/shared/common/zmi/security.py:216 msgid "Apply contents restrictions" msgstr "" -#: ./src/pyams_content/shared/common/zmi/security.py:215 +#: ./src/pyams_content/shared/common/zmi/security.py:218 msgid "" "You can specify which contents this manager will be able to manage. If you " "specify several criteria, the manager will be able to manage contents for " @@ -2577,7 +2561,7 @@ msgstr "" #: ./src/pyams_content/shared/common/interfaces/types.py:35 -#: ./src/pyams_content/shared/form/zmi/field.py:160 +#: ./src/pyams_content/shared/form/zmi/field.py:148 msgid "Name" msgstr "" @@ -2586,7 +2570,7 @@ msgstr "" #: ./src/pyams_content/shared/common/interfaces/types.py:39 -#: ./src/pyams_content/shared/form/zmi/field.py:171 +#: ./src/pyams_content/shared/form/zmi/field.py:159 #: ./src/pyams_content/shared/form/interfaces/__init__.py:61 msgid "Label" msgstr "" @@ -2673,19 +2657,19 @@ msgstr "" #: ./src/pyams_content/shared/common/interfaces/__init__.py:57 -#: ./src/pyams_content/shared/common/interfaces/__init__.py:165 +#: ./src/pyams_content/shared/common/interfaces/__init__.py:174 msgid "Managers" msgstr "" #: ./src/pyams_content/shared/common/interfaces/__init__.py:58 -#: ./src/pyams_content/shared/common/interfaces/__init__.py:166 +#: ./src/pyams_content/shared/common/interfaces/__init__.py:175 msgid "" "Managers can handle main operations in tool's workflow, like publish or " "retire contents" msgstr "" #: ./src/pyams_content/shared/common/interfaces/__init__.py:63 -#: ./src/pyams_content/shared/common/interfaces/__init__.py:171 +#: ./src/pyams_content/shared/common/interfaces/__init__.py:180 msgid "Contributors" msgstr "" @@ -2693,136 +2677,147 @@ msgid "Contributors are users which are allowed to create new contents" msgstr "" -#: ./src/pyams_content/shared/common/interfaces/__init__.py:87 +#: ./src/pyams_content/shared/common/interfaces/__init__.py:90 msgid "Workflow name" msgstr "" -#: ./src/pyams_content/shared/common/interfaces/__init__.py:88 +#: ./src/pyams_content/shared/common/interfaces/__init__.py:91 msgid "Name of workflow utility used to manage tool contents" msgstr "" -#: ./src/pyams_content/shared/common/interfaces/__init__.py:112 +#: ./src/pyams_content/shared/common/interfaces/__init__.py:115 +msgid "Content URL" +msgstr "" + +#: ./src/pyams_content/shared/common/interfaces/__init__.py:116 +msgid "" +"URL used to access this content; this is important for SEO and should include" +" most important words describing content; spaces and underscores will be " +"automatically replaced by hyphens" +msgstr "" + +#: ./src/pyams_content/shared/common/interfaces/__init__.py:121 msgid "Version creator" msgstr "" -#: ./src/pyams_content/shared/common/interfaces/__init__.py:113 -msgid "" -"Name of content's version creator. The creator of the first version is also " -"it's owner." -msgstr "" - -#: ./src/pyams_content/shared/common/interfaces/__init__.py:117 -msgid "First owner" -msgstr "" - -#: ./src/pyams_content/shared/common/interfaces/__init__.py:118 -msgid "Name of content's first version owner" -msgstr "" - #: ./src/pyams_content/shared/common/interfaces/__init__.py:122 -msgid "Version creation" -msgstr "" - -#: ./src/pyams_content/shared/common/interfaces/__init__.py:125 -msgid "Version modifiers" +msgid "" +"Name of content's version creator. The creator of the first version is also " +"it's owner." msgstr "" #: ./src/pyams_content/shared/common/interfaces/__init__.py:126 +msgid "First owner" +msgstr "" + +#: ./src/pyams_content/shared/common/interfaces/__init__.py:127 +msgid "Name of content's first version owner" +msgstr "" + +#: ./src/pyams_content/shared/common/interfaces/__init__.py:131 +msgid "Version creation" +msgstr "" + +#: ./src/pyams_content/shared/common/interfaces/__init__.py:134 +msgid "Version modifiers" +msgstr "" + +#: ./src/pyams_content/shared/common/interfaces/__init__.py:135 msgid "List of principals who modified this content" msgstr "" -#: ./src/pyams_content/shared/common/interfaces/__init__.py:129 +#: ./src/pyams_content/shared/common/interfaces/__init__.py:138 msgid "Last modifier" msgstr "" -#: ./src/pyams_content/shared/common/interfaces/__init__.py:130 +#: ./src/pyams_content/shared/common/interfaces/__init__.py:139 msgid "Last principal who modified this content" msgstr "" -#: ./src/pyams_content/shared/common/interfaces/__init__.py:133 -msgid "Last update" -msgstr "" - -#: ./src/pyams_content/shared/common/interfaces/__init__.py:137 -msgid "" -"The content's description is 'hidden' into HTML's page headers; but it can be" -" seen, for example, in some search engines results as content's description" -msgstr "" - #: ./src/pyams_content/shared/common/interfaces/__init__.py:142 -msgid "Keywords" -msgstr "" - -#: ./src/pyams_content/shared/common/interfaces/__init__.py:143 -msgid "They will be included into HTML pages metadata" +msgid "Last update" msgstr "" #: ./src/pyams_content/shared/common/interfaces/__init__.py:146 +msgid "" +"The content's description is 'hidden' into HTML's page headers; but it can be" +" seen, for example, in some search engines results as content's description" +msgstr "" + +#: ./src/pyams_content/shared/common/interfaces/__init__.py:151 +msgid "Keywords" +msgstr "" + +#: ./src/pyams_content/shared/common/interfaces/__init__.py:152 +msgid "They will be included into HTML pages metadata" +msgstr "" + +#: ./src/pyams_content/shared/common/interfaces/__init__.py:155 #: ./src/pyams_content/shared/site/zmi/folder.py:72 #: ./src/pyams_content/shared/site/interfaces/__init__.py:56 msgid "Notepad" msgstr "" -#: ./src/pyams_content/shared/common/interfaces/__init__.py:147 +#: ./src/pyams_content/shared/common/interfaces/__init__.py:156 #: ./src/pyams_content/shared/site/zmi/folder.py:73 #: ./src/pyams_content/shared/site/interfaces/__init__.py:57 msgid "Internal information to be known about this content" msgstr "" -#: ./src/pyams_content/shared/common/interfaces/__init__.py:158 +#: ./src/pyams_content/shared/common/interfaces/__init__.py:167 msgid "Content owner" msgstr "" -#: ./src/pyams_content/shared/common/interfaces/__init__.py:159 +#: ./src/pyams_content/shared/common/interfaces/__init__.py:168 msgid "" "The owner is the creator of content's first version, except if it was " "transferred afterwards to another owner" msgstr "" -#: ./src/pyams_content/shared/common/interfaces/__init__.py:172 +#: ./src/pyams_content/shared/common/interfaces/__init__.py:181 msgid "" "Contributors are users which are allowed to update this content in addition " "to it's owner" msgstr "" -#: ./src/pyams_content/shared/common/interfaces/__init__.py:177 +#: ./src/pyams_content/shared/common/interfaces/__init__.py:186 msgid "Readers" msgstr "" -#: ./src/pyams_content/shared/common/interfaces/__init__.py:178 +#: ./src/pyams_content/shared/common/interfaces/__init__.py:187 msgid "" "Readers are users which are asked to verify and comment contents before they " "are published" msgstr "" -#: ./src/pyams_content/shared/common/interfaces/__init__.py:183 +#: ./src/pyams_content/shared/common/interfaces/__init__.py:192 msgid "Guests" msgstr "" -#: ./src/pyams_content/shared/common/interfaces/__init__.py:184 +#: ./src/pyams_content/shared/common/interfaces/__init__.py:193 msgid "" "Guests are users which are allowed to view contents with restricted access" msgstr "" -#: ./src/pyams_content/shared/common/interfaces/__init__.py:207 +#: ./src/pyams_content/shared/common/interfaces/__init__.py:216 msgid "Principal ID" msgstr "" -#: ./src/pyams_content/shared/common/interfaces/__init__.py:212 +#: ./src/pyams_content/shared/common/interfaces/__init__.py:221 msgid "Restricted contents" msgstr "" -#: ./src/pyams_content/shared/common/interfaces/__init__.py:213 +#: ./src/pyams_content/shared/common/interfaces/__init__.py:222 msgid "" "If 'yes', this manager will get restricted access to manage contents based on" " selected settings" msgstr "" -#: ./src/pyams_content/shared/common/interfaces/__init__.py:218 +#: ./src/pyams_content/shared/common/interfaces/__init__.py:227 msgid "Selected owners" msgstr "" -#: ./src/pyams_content/shared/common/interfaces/__init__.py:219 +#: ./src/pyams_content/shared/common/interfaces/__init__.py:228 msgid "Manager will have access to contents owned by these principals" msgstr "" @@ -2882,11 +2877,11 @@ msgid "List" msgstr "" -#: ./src/pyams_content/shared/form/zmi/properties.py:39 +#: ./src/pyams_content/shared/form/zmi/properties.py:41 msgid "Main form settings" msgstr "" -#: ./src/pyams_content/shared/form/zmi/properties.py:64 +#: ./src/pyams_content/shared/form/zmi/properties.py:70 msgid "Form handler settings" msgstr "" @@ -2904,41 +2899,37 @@ msgid "Form « {title} »" msgstr "" -#: ./src/pyams_content/shared/form/zmi/field.py:67 +#: ./src/pyams_content/shared/form/zmi/field.py:68 msgid "Form fields..." msgstr "" -#: ./src/pyams_content/shared/form/zmi/field.py:129 -msgid "Switch field visibility" -msgstr "" - -#: ./src/pyams_content/shared/form/zmi/field.py:182 +#: ./src/pyams_content/shared/form/zmi/field.py:170 #: ./src/pyams_content/shared/form/interfaces/__init__.py:56 msgid "Field type" msgstr "" -#: ./src/pyams_content/shared/form/zmi/field.py:215 +#: ./src/pyams_content/shared/form/zmi/field.py:203 msgid "Form fields list" msgstr "" -#: ./src/pyams_content/shared/form/zmi/field.py:251 -#: ./src/pyams_content/shared/form/zmi/field.py:262 +#: ./src/pyams_content/shared/form/zmi/field.py:226 +#: ./src/pyams_content/shared/form/zmi/field.py:237 msgid "Add form field" msgstr "" -#: ./src/pyams_content/shared/form/zmi/field.py:308 +#: ./src/pyams_content/shared/form/zmi/field.py:285 msgid "Edit form field properties" msgstr "" -#: ./src/pyams_content/shared/form/zmi/field.py:191 +#: ./src/pyams_content/shared/form/zmi/field.py:179 msgid "-- unknown field type --" msgstr "" -#: ./src/pyams_content/shared/form/zmi/field.py:110 +#: ./src/pyams_content/shared/form/zmi/field.py:114 msgid "No currently defined form field." msgstr "" -#: ./src/pyams_content/shared/form/zmi/field.py:287 +#: ./src/pyams_content/shared/form/zmi/field.py:262 msgid "Specified name is already used!" msgstr "" @@ -3092,7 +3083,7 @@ msgid "News topic" msgstr "" -#: ./src/pyams_content/shared/view/zmi/properties.py:38 +#: ./src/pyams_content/shared/view/zmi/properties.py:40 msgid "Main view settings" msgstr "" @@ -3114,11 +3105,11 @@ msgid "View themes settings" msgstr "" -#: ./src/pyams_content/shared/view/zmi/reference.py:54 +#: ./src/pyams_content/shared/view/zmi/reference.py:53 msgid "References..." msgstr "" -#: ./src/pyams_content/shared/view/zmi/reference.py:64 +#: ./src/pyams_content/shared/view/zmi/reference.py:63 msgid "View internal references settings" msgstr "" @@ -3260,20 +3251,20 @@ msgid "no area defined" msgstr "" -#: ./src/pyams_content/shared/imagemap/zmi/paragraph.py:54 +#: ./src/pyams_content/shared/imagemap/zmi/paragraph.py:55 msgid "Image map..." msgstr "" -#: ./src/pyams_content/shared/imagemap/zmi/paragraph.py:65 +#: ./src/pyams_content/shared/imagemap/zmi/paragraph.py:66 msgid "Add new image map" msgstr "" -#: ./src/pyams_content/shared/imagemap/zmi/paragraph.py:95 -#: ./src/pyams_content/shared/logo/zmi/paragraph.py:95 +#: ./src/pyams_content/shared/imagemap/zmi/paragraph.py:98 +#: ./src/pyams_content/shared/logo/zmi/paragraph.py:98 msgid "Edit paragraph properties" msgstr "" -#: ./src/pyams_content/shared/imagemap/zmi/properties.py:38 +#: ./src/pyams_content/shared/imagemap/zmi/properties.py:40 msgid "Background image" msgstr "" @@ -3303,24 +3294,28 @@ msgid "Image map areas" msgstr "" -#: ./src/pyams_content/shared/imagemap/zmi/container.py:136 +#: ./src/pyams_content/shared/imagemap/zmi/container.py:140 #: ./src/pyams_content/shared/imagemap/interfaces/__init__.py:49 msgid "Link target" msgstr "" -#: ./src/pyams_content/shared/imagemap/zmi/container.py:109 +#: ./src/pyams_content/shared/imagemap/zmi/container.py:113 msgid "No currently defined image." msgstr "" -#: ./src/pyams_content/shared/imagemap/zmi/container.py:111 +#: ./src/pyams_content/shared/imagemap/zmi/container.py:115 msgid "No currently defined area." msgstr "" -#: ./src/pyams_content/shared/imagemap/zmi/container.py:180 +#: ./src/pyams_content/shared/imagemap/zmi/container.py:175 +msgid "No provided object_name argument!" +msgstr "" + +#: ./src/pyams_content/shared/imagemap/zmi/container.py:194 msgid "Given area name doesn't exist!" msgstr "" -#: ./src/pyams_content/shared/imagemap/zmi/container.py:176 +#: ./src/pyams_content/shared/imagemap/zmi/container.py:186 msgid "Bad query object_name parameter value!" msgstr "" @@ -3332,7 +3327,7 @@ msgid "Add new image area" msgstr "" -#: ./src/pyams_content/shared/imagemap/zmi/area.py:106 +#: ./src/pyams_content/shared/imagemap/zmi/area.py:108 msgid "Edit image map properties" msgstr "" @@ -3384,12 +3379,12 @@ #: ./src/pyams_content/shared/site/zmi/folder.py:68 #: ./src/pyams_content/shared/site/zmi/__init__.py:63 -#: ./src/pyams_content/shared/site/zmi/link.py:68 +#: ./src/pyams_content/shared/site/zmi/link.py:67 msgid "Parent" msgstr "" #: ./src/pyams_content/shared/site/zmi/folder.py:69 -#: ./src/pyams_content/shared/site/zmi/link.py:69 +#: ./src/pyams_content/shared/site/zmi/link.py:68 msgid "Folder's parent" msgstr "" @@ -3409,62 +3404,62 @@ msgid "Topic's parent" msgstr "" -#: ./src/pyams_content/shared/site/zmi/link.py:59 +#: ./src/pyams_content/shared/site/zmi/link.py:58 msgid "Rent content..." msgstr "" -#: ./src/pyams_content/shared/site/zmi/link.py:78 +#: ./src/pyams_content/shared/site/zmi/link.py:77 msgid "Rent existing content" msgstr "" -#: ./src/pyams_content/shared/site/zmi/link.py:140 +#: ./src/pyams_content/shared/site/zmi/link.py:141 msgid "Edit content link properties" msgstr "" -#: ./src/pyams_content/shared/site/zmi/container.py:101 -#: ./src/pyams_content/shared/site/zmi/container.py:113 +#: ./src/pyams_content/shared/site/zmi/container.py:102 +#: ./src/pyams_content/shared/site/zmi/container.py:114 #: ./src/pyams_content/shared/blog/zmi/manager.py:151 #: ./src/pyams_content/shared/blog/zmi/manager.py:163 msgid "Publication dates..." msgstr "" -#: ./src/pyams_content/shared/site/zmi/container.py:124 -#: ./src/pyams_content/shared/blog/zmi/manager.py:174 +#: ./src/pyams_content/shared/site/zmi/container.py:127 +#: ./src/pyams_content/shared/blog/zmi/manager.py:176 msgid "Update publication dates" msgstr "" -#: ./src/pyams_content/shared/site/zmi/container.py:173 -#: ./src/pyams_content/shared/site/zmi/container.py:183 -#: ./src/pyams_content/root/zmi/sites.py:67 +#: ./src/pyams_content/shared/site/zmi/container.py:172 +#: ./src/pyams_content/shared/site/zmi/container.py:182 +#: ./src/pyams_content/root/zmi/sites.py:68 msgid "Site tree" msgstr "" -#: ./src/pyams_content/shared/site/zmi/container.py:250 -#: ./src/pyams_content/shared/site/zmi/container.py:148 +#: ./src/pyams_content/shared/site/zmi/container.py:301 +#: ./src/pyams_content/shared/site/zmi/container.py:151 msgid "Visible element?" msgstr "" -#: ./src/pyams_content/shared/site/zmi/container.py:289 +#: ./src/pyams_content/shared/site/zmi/container.py:302 +msgid "Switch element visibility" +msgstr "" + +#: ./src/pyams_content/shared/site/zmi/container.py:363 msgid "Folders and topics" msgstr "" -#: ./src/pyams_content/shared/site/zmi/container.py:409 +#: ./src/pyams_content/shared/site/zmi/container.py:483 msgid "Delete site item" msgstr "" -#: ./src/pyams_content/shared/site/zmi/container.py:298 +#: ./src/pyams_content/shared/site/zmi/container.py:372 msgid "Click to open/close all folders" msgstr "" -#: ./src/pyams_content/shared/site/zmi/container.py:314 +#: ./src/pyams_content/shared/site/zmi/container.py:388 msgid "Click to show/hide inner folders" msgstr "" -#: ./src/pyams_content/shared/site/zmi/container.py:577 -msgid "Given object name doesn't exist!" -msgstr "" - -#: ./src/pyams_content/shared/site/zmi/container.py:516 +#: ./src/pyams_content/shared/site/zmi/container.py:258 msgid "Can't reparent object to one of it's children. Reloading..." msgstr "" @@ -3529,15 +3524,15 @@ msgid "no URL defined" msgstr "" -#: ./src/pyams_content/shared/logo/zmi/paragraph.py:54 +#: ./src/pyams_content/shared/logo/zmi/paragraph.py:55 msgid "Logos..." msgstr "" -#: ./src/pyams_content/shared/logo/zmi/paragraph.py:65 +#: ./src/pyams_content/shared/logo/zmi/paragraph.py:66 msgid "Add new logos paragraph" msgstr "" -#: ./src/pyams_content/shared/logo/zmi/properties.py:38 +#: ./src/pyams_content/shared/logo/zmi/properties.py:40 msgid "Main logo settings" msgstr "" @@ -3606,7 +3601,7 @@ msgid "Blog post" msgstr "" -#: ./src/pyams_content/profile/zmi/__init__.py:40 +#: ./src/pyams_content/profile/zmi/__init__.py:42 msgid "Admin. profile" msgstr "" @@ -3626,7 +3621,7 @@ msgid "Default length used for inner tables and dashboards" msgstr "" -#: ./src/pyams_content/root/zmi/sites.py:77 +#: ./src/pyams_content/root/zmi/sites.py:78 msgid "Blogs and shared sites" msgstr "" @@ -3642,11 +3637,7 @@ msgid "Delete shared site" msgstr "" -#: ./src/pyams_content/root/zmi/sites.py:205 -msgid "Given site name doesn't exist!" -msgstr "" - -#: ./src/pyams_content/root/zmi/search.py:148 +#: ./src/pyams_content/root/zmi/search.py:155 msgid "Content types" msgstr "" @@ -4016,6 +4007,10 @@ msgstr "" #: ./src/pyams_content/skin/zmi/viewlet/toplinks/__init__.py:87 +msgid "Shared tools" +msgstr "" + +#: ./src/pyams_content/skin/zmi/viewlet/toplinks/__init__.py:108 msgid "My roles" msgstr "" @@ -4047,24 +4042,24 @@ msgid "Contents" msgstr "" -#: ./src/pyams_content/reference/zmi/table.py:81 +#: ./src/pyams_content/reference/zmi/table.py:83 msgid "Table contents" msgstr "" -#: ./src/pyams_content/reference/zmi/table.py:122 -#: ./src/pyams_content/reference/zmi/__init__.py:64 +#: ./src/pyams_content/reference/zmi/table.py:129 +#: ./src/pyams_content/reference/zmi/__init__.py:69 msgid "References tables" msgstr "" -#: ./src/pyams_content/reference/zmi/table.py:136 +#: ./src/pyams_content/reference/zmi/table.py:143 msgid "Properties..." msgstr "" -#: ./src/pyams_content/reference/zmi/table.py:147 +#: ./src/pyams_content/reference/zmi/table.py:156 msgid "Edit table properties" msgstr "" -#: ./src/pyams_content/reference/zmi/__init__.py:46 +#: ./src/pyams_content/reference/zmi/__init__.py:51 msgid "References" msgstr "" @@ -4104,12 +4099,12 @@ msgid "List of selected pictograms which will be available to shared contents" msgstr "" -#: ./src/pyams_content/features/renderer/zmi/__init__.py:103 +#: ./src/pyams_content/features/renderer/zmi/__init__.py:105 #: ./src/pyams_content/features/renderer/zmi/templates/renderer-input.pt:4 msgid "Edit renderer properties" msgstr "" -#: ./src/pyams_content/features/renderer/zmi/__init__.py:132 +#: ./src/pyams_content/features/renderer/zmi/__init__.py:134 msgid "Hidden content" msgstr "" @@ -4195,7 +4190,7 @@ msgstr "" #: ./src/pyams_content/features/alert/interfaces.py:69 -#: ./src/pyams_content/features/alert/zmi/container.py:188 +#: ./src/pyams_content/features/alert/zmi/container.py:170 msgid "Message" msgstr "" @@ -4235,15 +4230,15 @@ "set to 0 to always display the alert" msgstr "" -#: ./src/pyams_content/features/alert/zmi/__init__.py:45 +#: ./src/pyams_content/features/alert/zmi/__init__.py:46 msgid "Add alert" msgstr "" -#: ./src/pyams_content/features/alert/zmi/__init__.py:55 +#: ./src/pyams_content/features/alert/zmi/__init__.py:56 msgid "Add new alert" msgstr "" -#: ./src/pyams_content/features/alert/zmi/__init__.py:82 +#: ./src/pyams_content/features/alert/zmi/__init__.py:85 msgid "Edit alert properties" msgstr "" @@ -4251,22 +4246,14 @@ msgid "Alerts" msgstr "" -#: ./src/pyams_content/features/alert/zmi/container.py:128 -msgid "Switch alert visibility" -msgstr "" - -#: ./src/pyams_content/features/alert/zmi/container.py:234 +#: ./src/pyams_content/features/alert/zmi/container.py:192 msgid "Alert list" msgstr "" -#: ./src/pyams_content/features/alert/zmi/container.py:93 +#: ./src/pyams_content/features/alert/zmi/container.py:91 msgid "No currently defined alert." msgstr "" -#: ./src/pyams_content/features/alert/zmi/container.py:223 -msgid "Given alert name doesn't exist!" -msgstr "" - #: ./src/pyams_content/features/review/__init__.py:186 #, python-format msgid "Request comment: {comment}" @@ -4326,11 +4313,11 @@ msgid "Content review request" msgstr "" -#: ./src/pyams_content/features/review/zmi/__init__.py:168 +#: ./src/pyams_content/features/review/zmi/__init__.py:172 msgid "Comments" msgstr "" -#: ./src/pyams_content/features/review/zmi/__init__.py:188 +#: ./src/pyams_content/features/review/zmi/__init__.py:192 msgid "Review comments" msgstr "" @@ -4365,15 +4352,15 @@ msgid "Ask for content review" msgstr "" -#: ./src/pyams_content/features/review/zmi/__init__.py:150 +#: ./src/pyams_content/features/review/zmi/__init__.py:153 msgid "Request successful. No new notification have been sent" msgstr "" -#: ./src/pyams_content/features/review/zmi/__init__.py:261 +#: ./src/pyams_content/features/review/zmi/__init__.py:266 msgid "Message is mandatory!" msgstr "" -#: ./src/pyams_content/features/review/zmi/__init__.py:140 +#: ./src/pyams_content/features/review/zmi/__init__.py:141 #, python-format msgid "Request successful. {count} new notification(s) have been sent" msgstr "" diff -r b156fba7e4fe -r 06ab962b04c5 src/pyams_content/shared/common/__init__.py --- a/src/pyams_content/shared/common/__init__.py Fri Apr 20 16:52:36 2018 +0200 +++ b/src/pyams_content/shared/common/__init__.py Fri Apr 27 12:00:07 2018 +0200 @@ -123,9 +123,11 @@ guests = RolePrincipalsFieldProperty(IWfSharedContentRoles['guests']) content_type = None + content_name = None title = FieldProperty(IWfSharedContent['title']) short_name = FieldProperty(IWfSharedContent['short_name']) + content_url = FieldProperty(IWfSharedContent['content_url']) creator = FieldProperty(IWfSharedContent['creator']) modifiers = FieldProperty(IWfSharedContent['modifiers']) last_modifier = FieldProperty(IWfSharedContent['last_modifier']) diff -r b156fba7e4fe -r 06ab962b04c5 src/pyams_content/shared/common/interfaces/__init__.py --- a/src/pyams_content/shared/common/interfaces/__init__.py Fri Apr 20 16:52:36 2018 +0200 +++ b/src/pyams_content/shared/common/interfaces/__init__.py Fri Apr 27 12:00:07 2018 +0200 @@ -112,6 +112,12 @@ content_type = Attribute("Content data type") content_name = Attribute("Content name") + content_url = TextLine(title=_("Content URL"), + description=_("URL used to access this content; this is important for SEO and " + "should include most important words describing content; spaces and " + "underscores will be automatically replaced by hyphens"), + required=True) + creator = Principal(title=_("Version creator"), description=_("Name of content's version creator. " "The creator of the first version is also it's owner."), diff -r b156fba7e4fe -r 06ab962b04c5 src/pyams_content/shared/common/zmi/__init__.py --- a/src/pyams_content/shared/common/zmi/__init__.py Fri Apr 20 16:52:36 2018 +0200 +++ b/src/pyams_content/shared/common/zmi/__init__.py Fri Apr 27 12:00:07 2018 +0200 @@ -24,7 +24,7 @@ from pyams_content.shared.common.interfaces import IWfSharedContent, ISharedContent, IBaseSharedTool, \ IManagerRestrictions from pyams_form.interfaces.form import IFormContextPermissionChecker, IWidgetsPrefixViewletsManager -from pyams_i18n.interfaces import II18n, II18nManager +from pyams_i18n.interfaces import II18n, II18nManager, INegotiator from pyams_sequence.interfaces import ISequentialIdInfo from pyams_skin.interfaces import IContentTitle from pyams_skin.interfaces.container import ITable, ITableElementEditor @@ -50,7 +50,7 @@ from pyams_utils.registry import get_utility from pyams_utils.request import check_request from pyams_utils.traversing import get_parent -from pyams_utils.url import absolute_url +from pyams_utils.url import absolute_url, generate_url from pyams_viewlet.viewlet import viewlet_config, Viewlet from pyams_workflow.versions import WorkflowHistoryItem from pyams_zmi.form import AdminDialogAddForm @@ -95,6 +95,8 @@ content.creator = self.request.principal.id content.owner = self.request.principal.id content.short_name = content.title.copy() + lang = get_utility(INegotiator).server_language + content.content_url = generate_url(content.title.get(lang, '')) # init content languages languages = II18nManager(self.context).languages if languages: @@ -110,7 +112,7 @@ IWorkflowInfo(wf_content).fire_transition('init', comment=wf_content.notepad) def nextURL(self): - return absolute_url(self.context, self.request, '{0}/++versions++/1/admin'.format(self.__uuid)) + return absolute_url(self.context, self.request, '{0}/++versions++/1/admin#properties.html'.format(self.__uuid)) class SharedContentAJAXAddForm(AJAXAddForm): diff -r b156fba7e4fe -r 06ab962b04c5 src/pyams_content/shared/common/zmi/properties.py --- a/src/pyams_content/shared/common/zmi/properties.py Fri Apr 20 16:52:36 2018 +0200 +++ b/src/pyams_content/shared/common/zmi/properties.py Fri Apr 27 12:00:07 2018 +0200 @@ -9,6 +9,11 @@ # WARRANTIES OF TITLE, MERCHANTABILITY, AGAINST INFRINGEMENT, AND FITNESS # FOR A PARTICULAR PURPOSE. # +from pyramid.events import subscriber +from z3c.form.interfaces import IDataExtractedEvent, HIDDEN_MODE + +from pyams_skin.event import get_json_widget_refresh_event +from pyams_utils.url import generate_url __docformat__ = 'restructuredtext' @@ -77,33 +82,50 @@ legend = _("Content properties") - fields = field.Fields(IWfSharedContent).select('title', 'short_name', 'description', 'keywords', 'notepad') + fields = field.Fields(IWfSharedContent).select('title', 'short_name', 'content_url', + 'description', 'notepad') fields['title'].widgetFactory = I18nSEOTextLineFieldWidget ajax_handler = 'properties.json' def updateWidgets(self, prefix=None): super(SharedContentPropertiesEditForm, self).updateWidgets(prefix) + if 'short_name' in self.widgets: + self.widgets['short_name'].set_mode(HIDDEN_MODE) if 'description' in self.widgets: self.widgets['description'].widget_css_class = 'textarea' if 'notepad' in self.widgets: self.widgets['notepad'].widget_css_class = 'textarea' +@subscriber(IDataExtractedEvent, form_selector=SharedContentPropertiesEditForm) +def handle_content_properties_data_extraction(event): + """Automatically set short_name as title""" + data = event.data + data['short_name'] = data['title'].copy() + data['content_url'] = generate_url(data['content_url']) + + @view_config(name='properties.json', context=IWfSharedContent, request_type=IPyAMSLayer, permission=MANAGE_CONTENT_PERMISSION, renderer='json', xhr=True) class SharedContentPropertiesAJAXEditForm(AJAXEditForm, SharedContentPropertiesEditForm): """Shared content properties edit form, JSON renderer""" def get_ajax_output(self, changes): - wf_changes = changes.get(IBaseContent, ()) - if 'title' in wf_changes: + updated = changes.get(IBaseContent, ()) + if 'title' in updated: return { 'status': 'reload', 'message': self.request.localizer.translate(self.successMessage) } else: - return super(SharedContentPropertiesAJAXEditForm, self).get_ajax_output(changes) + output = super(SharedContentPropertiesAJAXEditForm, self).get_ajax_output(changes) + updated = changes.get(IWfSharedContent, ()) + if 'content_url' in updated: + output.setdefault('events', []).append( + get_json_widget_refresh_event(self.context, self.request, + SharedContentPropertiesEditForm, 'content_url')) + return output @adapter_config(context=(IWfSharedContent, IAdminLayer, SharedContentPropertiesEditForm), provides=IPageHeader) diff -r b156fba7e4fe -r 06ab962b04c5 src/pyams_content/skin/resources/js/pyams_content.js --- a/src/pyams_content/skin/resources/js/pyams_content.js Fri Apr 20 16:52:36 2018 +0200 +++ b/src/pyams_content/skin/resources/js/pyams_content.js Fri Apr 27 12:00:07 2018 +0200 @@ -229,20 +229,6 @@ }, /** - * Illustrations management - */ - illustration: { - - addIllustration: function() { - var source = $(this); - var group = source.parents('.btn-group'); - var legend = group.siblings('legend.switcher'); - $('i.fa-plus', legend).click(); - source.hide(); - } - }, - - /** * Paragraphs management */ paragraphs: { diff -r b156fba7e4fe -r 06ab962b04c5 src/pyams_content/skin/resources/js/pyams_content.min.js --- a/src/pyams_content/skin/resources/js/pyams_content.min.js Fri Apr 20 16:52:36 2018 +0200 +++ b/src/pyams_content/skin/resources/js/pyams_content.min.js Fri Apr 27 12:00:07 2018 +0200 @@ -1,1 +1,1 @@ -!function(t,e){"use strict";var a=e.MyAMS,i={widget:{treeview:{selectFolder:function(e,a){t(e.target).siblings('input[type="hidden"]').val(a.id)},unselectFolder:function(e,a){t(e.target).siblings('input[type="hidden"]').val(null)}}},TinyMCE:{initEditor:function(t){return tinyMCE.addI18n("fr",{"Link list":"Liste de liens","Toggle h3 header":"En-tête H3","Toggle h4 header":"En-tête H4","Insert internal link":"Insérer un lien interne","Link title":"Texte du lien","Internal number":"N° interne"}),tinymce.PluginManager.add("internal_links",function(t,e){t.addButton("internal_links",{icon:"cloud-check",tooltip:"Insert internal link",image:"/--static--/pyams_content/img/internal-link.png",onclick:function(){t.windowManager.open({title:"Insert internal link",body:[{type:"textbox",name:"title",label:"Link title",value:t.selection.getContent()},{type:"textbox",name:"oid",label:"Internal number"}],onsubmit:function(e){t.insertContent(''+e.data.title+"")}})}})}),tinyMCE.PluginManager.add("headers",function(t,e){["h3","h4"].forEach(function(e){t.addButton("header-"+e,{tooltip:"Toggle "+e+" header",text:e.toUpperCase(),onClick:function(){t.execCommand("mceToggleFormat",!1,e)},onPostRender:function(){var a=this,i=function(){t.formatter.formatChanged(e,function(t){a.active(t)})};t.formatter?i():t.on("init",i)}})})}),t.image_list=i.TinyMCE.getImagesList,t.link_list=i.TinyMCE.getLinksList,t.style_formats=[{title:"Inline",items:[{title:"Bold",icon:"bold",format:"bold"},{title:"Italic",icon:"italic",format:"italic"},{title:"Underline",icon:"underline",format:"underline"},{title:"Strikethrough",icon:"strikethrough",format:"strikethrough"},{title:"Superscript",icon:"superscript",format:"superscript"},{title:"Subscript",icon:"subscript",format:"subscript"},{title:"Code",icon:"code",format:"code"}]},{title:"Blocks",items:[{title:"Paragraph",format:"p"},{title:"Blockquote",format:"blockquote"},{title:"Div",format:"div"},{title:"Pre",format:"pre"}]},{title:"Alignment",items:[{title:"Left",icon:"alignleft",format:"alignleft"},{title:"Center",icon:"aligncenter",format:"aligncenter"},{title:"Right",icon:"alignright",format:"alignright"},{title:"Justify",icon:"alignjustify",format:"alignjustify"}]}],t.plugins+=" internal_links headers",t.toolbar1&&(t.toolbar1="undo redo | header-h3 header-h4 styleselect | bold italic | alignleft aligncenter alignright alignjustify | bullist numlist outdent indent"),t.toolbar2&&(t.toolbar2="forecolor backcolor | charmap internal_links link | fullscreen preview print | code"),t},getImagesList:function(e){var i=t(document.activeElement).parents("form");if(i.exists()){var n=i.attr("data-ams-form-handler")||i.attr("action"),s=n.substr(0,n.lastIndexOf("/")+1);return a.ajax.post(s+"get-images-list.json",{},e)}},getLinksList:function(e){var i=t(document.activeElement).parents("form");if(i.exists()){var n=i.attr("data-ams-form-handler")||i.attr("action"),s=n.substr(0,n.lastIndexOf("/")+1);return a.ajax.post(s+"get-links-list.json",{},e)}}},galleries:{updateMediaTitle:function(e){t('img[id="'+e.media_id+'"]').attr("original-title",e.title)},switchMediaVisibility:function(e){return function(){var e=t(this),i=e.parents(".media"),n=i.parents(".gallery");a.ajax.post(n.data("ams-location")+"/set-media-visibility.json",{object_name:i.data("ams-element-name")},function(a,i){a.visible?(t("i",e).attr("class","fa fa-fw fa-eye"),e.parents(".btn-group").siblings("a.fancyimg").removeClass("not-visible")):(t("i",e).attr("class","fa fa-fw fa-eye-slash text-danger"),e.parents(".btn-group").siblings("a.fancyimg").addClass("not-visible"))})}},setOrder:function(e,i){if(!i||!i.item.hasClass("already-dropped")){var n=i.item.parents(".gallery"),s=t(".media",n).listattr("data-ams-element-name");a.ajax.post(n.data("ams-location")+"/set-medias-order.json",{medias:JSON.stringify(s)})}},removeMedia:function(e){return function(){var e=t(this);a.skin.bigBox({title:a.i18n.WARNING,content:'  '+a.i18n.DELETE_WARNING,buttons:a.i18n.BTN_OK_CANCEL},function(t){if(t===a.i18n.BTN_OK){var i=e.parents(".gallery").data("ams-location"),n=e.parents(".media"),s=n.data("ams-element-name");a.ajax.post(i+"/delete-element.json",{object_name:s},function(t,e){n.remove()})}})}},afterFancyboxLoad:function(t,e){t.element.hasClass("not-visible")&&t.inner.prepend('
')}},illustration:{addIllustration:function(){var e=t(this),a=e.parents(".btn-group").siblings("legend.switcher");t("i.fa-plus",a).click(),e.hide()}},paragraphs:{preReload:function(){i.paragraphs.switched=t("i.switch.fa-minus-square-o","#paragraphs_list").parents("tr").listattr("id")},postReload:function(){t(i.paragraphs.switched).each(function(){t("i.switch.fa-plus-square-o",'[id="'+this+'"]').parents("div").first().click()}),delete i.paragraphs.switched},refreshParagraph:function(e){var a=t('table[id="paragraphs_list"]'),i=t('tr[data-ams-element-name="'+e.object_name+'"]',a);t("span.title",i).html(e.title||" - - - - - - - -")},switchEditor:function(e){var i=t(this),n=t("i.switch",i),s=i.parents("td"),r=t(".editor",s),o=i.parents("tr");if(n.hasClass("fa-plus-square-o")){var l=o.parents("table");r.html('

'),a.ajax.post(l.data("ams-location")+"/get-paragraph-editor.json",{object_name:o.data("ams-element-name")},function(t){r.html(t),t&&(a.initContent(r),n.removeClass("fa-plus-square-o").addClass("fa-minus-square-o"),o.data("ams-disabled-handlers",!0))})}else a.skin.cleanContainer(r),r.empty(),n.removeClass("fa-minus-square-o").addClass("fa-plus-square-o"),o.removeData("ams-disabled-handlers")},switchAllEditors:function(e){var i=t(this),n=t("i",i),s=i.parents("table");n.hasClass("fa-plus-square-o")?(n.removeClass("fa-plus-square-o").addClass("fa-cog fa-spin"),a.ajax.post(s.data("ams-location")+"/get-paragraphs-editors.json",{},function(e){for(var i in e)if(e.hasOwnProperty(i)){var r=t('tr[data-ams-element-name="'+i+'"]',s),o=t(".editor",r);o.is(":empty")&&o.html(e[i]),t(".fa-plus-square-o",r).removeClass("fa-plus-square-o").addClass("fa-minus-square-o"),r.data("ams-disabled-handlers",!0)}t("i.fa-plus-square-o",t("tbody",s)).exists()||n.removeClass("fa-cog fa-spin").addClass("fa-minus-square-o"),a.initContent(s)})):(t(".editor",s).each(function(){a.skin.cleanContainer(t(this)),t(this).empty()}),t(".fa-minus-square-o",s).removeClass("fa-minus-square-o").addClass("fa-plus-square-o"),t("tr",s).removeData("ams-disabled-handlers"))},updateToolbar:function(e){var i=t('table[id="paragraphs_list"]'),n=t('tr[data-ams-element-name="'+e.object_name+'"]',i),s=t(".title-toolbar",n);s.replaceWith(e.toolbar_tag),s=t(".title-toolbar",n),a.initContent(s)},updateMarkers:function(e){var i=t('table[id="paragraphs_list"]'),n=t('tr[data-ams-element-name="'+e.object_name+'"]',i),s=t(".title-toolbar",n),r=t("DIV.action."+e.marker_type,s);r.exists()?r.replaceWith(e.marker_tag):t(e.marker_tag).appendTo(s),e.marker_tag&&(r=t("DIV.action."+e.marker_type,s),a.initContent(r)),a.helpers.sort(s,"weight")}},pictograms:{initManagerSelection:function(){var e=t(this),a=t('input[type="hidden"]',t(".selected-pictograms",e)).listattr("value");return{selected:JSON.stringify(a)}},switchPictogram:function(){var e=t(this),a=e.parents(".pictograms"),i=a.parents(".pictograms-manager");a.hasClass("available-pictograms")?t(".selected-pictograms",i).append(e):t(".available-pictograms",i).append(e)}},themes:{initExtracts:function(e){var i=t('select[name="form.widgets.thesaurus_name:list"]',e).val(),n=t('select[name="form.widgets.extract_name:list"]',e),s=n.val();i&&a.jsonrpc.post("getExtracts",{thesaurus_name:i},{url:"/api/thesaurus/json"},function(e){n.empty(),t(e.result).each(function(){t("").attr("value",this.id).attr("selected",this.id===s).text(this.text).appendTo(n)})}),n.attr("data-ams-events-handlers",'{"select2-open": "PyAMS_content.themes.getExtracts"}')},getExtracts:function(e){var i=t(e.currentTarget).parents("form"),n=t('select[name="form.widgets.thesaurus_name:list"]',i).val();n&&a.jsonrpc.post("getExtracts",{thesaurus_name:n},{url:"/api/thesaurus/json"},function(e){var a=t('select[name="form.widgets.extract_name:list"]',i).data("select2");a.results.empty(),a.opts.populateResults.call(a,a.results,e.result,{term:""})})}},fields:{refreshField:function(e){var a=t('table[id="form_fields_list"]'),i=t('tr[data-ams-element-name="'+e.object_name+'"]',a);t("td:nth-child(4)",i).html(e.title)}},imgmap:{init:function(){var e=t(this);a.ajax.check(t.fn.canvasAreaDraw,"/--static--/pyams_content/js/jquery-canvasAreaDraw"+a.devext+".js",function(){e.canvasAreaDraw({imageUrl:e.data("ams-image-url")})})},initPreview:function(){var e=t(this);a.ajax.check(t.fn.mapster,"/--static--/pyams_content/js/jquery-imagemapster-1.2.10"+a.devext+".js",function(){e.mapster({fillColor:"ff0000",fillOpacity:.35,selected:!0,highlight:!0,staticState:!0})})}},types:{switchSubtypes:function(e){var i=t(this),n=t("i.switch",i),s=i.parents("td"),r=t(".subtypes",s),o=i.parents("tr");if(n.hasClass("fa-plus-square-o")){var l=o.parents("table");r.html('

'),a.ajax.post(l.data("ams-location")+"/get-subtypes-table.json",{object_name:o.data("ams-element-name")},function(t){r.html(t),t&&(a.initContent(r),n.removeClass("fa-plus-square-o").addClass("fa-minus-square-o"))})}else a.skin.cleanContainer(r),r.empty(),n.removeClass("fa-minus-square-o").addClass("fa-plus-square-o")}},site:{switchVisibility:function(){return function(){var e=t(this),i=e.parents("tr").first();a.ajax.post(i.data("ams-location")+"/switch-content-visibility.json",{object_name:i.data("ams-element-name")},function(a,i){var n="fa-eye";a.visible||(n+="-slash"),a.published||(n+=" text-danger"),t("i",e).attr("class","fa fa-fw "+n)})}}},review:{timer:null,timer_duration:{general:3e4,chat:5e3},initComments:function(e){var n=t(".chat-body",e);n.animate({scrollTop:n[0].scrollHeight},1e3),clearInterval(i.review.timer),i.review.timer=setInterval(i.review.updateComments,i.review.timer_duration.chat),a.skin.registerCleanCallback(i.review.cleanCommentsCallback)},cleanCommentsCallback:function(){clearInterval(i.review.timer),i.review.timer=setInterval(i.review.updateComments,i.review.timer_duration.general)},updateComments:function(){var e,i=t(".badge",'nav a[href="#review-comments.html"]'),n=t(".chat-body",".widget-body");e=n.exists()?t(".message",n).length:parseInt(i.text()),a.ajax.post("get-last-review-comments.json",{count:e},function(a){n.exists()&&i.removeClass("bg-color-danger").addClass("bg-color-info"),e!==a.count&&(i.text(a.count).removeClass("hidden"),n.exists()&&(t(".messages",n).append(a.content),n.animate({scrollTop:n[0].scrollHeight},1e3)),n.exists()||i.removeClass("bg-color-info").addClass("bg-color-danger").animate({padding:"3px 12px 2px","margin-right":"9px"},"slow",function(){t(this).animate({padding:"3px 6px 2px","margin-right":"15px"},"slow")}))})},initCommentData:function(e){var a=t(".chat-body",".widget-body");return{count:t(".message",a).length}},addCommentAction:function(){return function(){t('textarea[name="comment"]').focus()}},addCommentCallback:function(e){var a=t(this),i=a.parents(".widget-body");t(".messages",i).append(e.content),t('textarea[name="comment"]',a).val("");var n=t(".chat-body",i);n.animate({scrollTop:n[0].scrollHeight},1e3),t(".badge",'nav a[href="#review-comments.html"]').text(e.count).removeClass("hidden")}},profile:{switchFavorite:function(){var e=t(this),i=e.data("sequence-oid");a.ajax.post("switch-user-favorite.json",{oid:i},function(t,a){t.favorite?e.removeClass("fa-star-o").addClass("fa-star"):e.removeClass("fa-star").addClass("fa-star-o")})}}};t(".badge",'nav a[href="#review-comments.html"]').exists()&&(i.review.timer=setInterval(i.review.updateComments,i.review.timer_duration.general)),e.PyAMS_content=i}(jQuery,this); +!function(t,e){"use strict";var a=e.MyAMS,i={widget:{treeview:{selectFolder:function(e,a){t(e.target).siblings('input[type="hidden"]').val(a.id)},unselectFolder:function(e,a){t(e.target).siblings('input[type="hidden"]').val(null)}}},TinyMCE:{initEditor:function(t){return tinyMCE.addI18n("fr",{"Link list":"Liste de liens","Toggle h3 header":"En-tête H3","Toggle h4 header":"En-tête H4","Insert internal link":"Insérer un lien interne","Link title":"Texte à afficher","Internal number":"N° interne"}),tinymce.PluginManager.add("internal_links",function(t,e){t.addButton("internal_links",{icon:"cloud-check",tooltip:"Insert internal link",image:"/--static--/pyams_content/img/internal-link.png",onclick:function(){t.windowManager.open({title:"Insert internal link",body:[{type:"textbox",name:"oid",label:"Internal number"},{type:"textbox",name:"title",label:"Link title",value:t.selection.getContent()}],onsubmit:function(e){t.insertContent(''+e.data.title+"")}})}})}),tinyMCE.PluginManager.add("headers",function(t,e){["h3","h4"].forEach(function(e){t.addButton("header-"+e,{tooltip:"Toggle "+e+" header",text:e.toUpperCase(),onClick:function(){t.execCommand("mceToggleFormat",!1,e)},onPostRender:function(){var a=this,i=function(){t.formatter.formatChanged(e,function(t){a.active(t)})};t.formatter?i():t.on("init",i)}})})}),t.image_list=i.TinyMCE.getImagesList,t.link_list=i.TinyMCE.getLinksList,t.style_formats=[{title:"Inline",items:[{title:"Bold",icon:"bold",format:"bold"},{title:"Italic",icon:"italic",format:"italic"},{title:"Underline",icon:"underline",format:"underline"},{title:"Strikethrough",icon:"strikethrough",format:"strikethrough"},{title:"Superscript",icon:"superscript",format:"superscript"},{title:"Subscript",icon:"subscript",format:"subscript"},{title:"Code",icon:"code",format:"code"}]},{title:"Blocks",items:[{title:"Paragraph",format:"p"},{title:"Blockquote",format:"blockquote"},{title:"Div",format:"div"},{title:"Pre",format:"pre"}]},{title:"Alignment",items:[{title:"Left",icon:"alignleft",format:"alignleft"},{title:"Center",icon:"aligncenter",format:"aligncenter"},{title:"Right",icon:"alignright",format:"alignright"},{title:"Justify",icon:"alignjustify",format:"alignjustify"}]}],t.plugins+=" internal_links headers",t.toolbar1&&(t.toolbar1="undo redo | header-h3 header-h4 styleselect | bold italic | alignleft aligncenter alignright alignjustify | bullist numlist outdent indent"),t.toolbar2&&(t.toolbar2="forecolor backcolor | charmap internal_links link | fullscreen preview print | code"),t},getImagesList:function(e){var i=t(document.activeElement).parents("form");if(i.exists()){var n=i.attr("data-ams-form-handler")||i.attr("action"),s=n.substr(0,n.lastIndexOf("/")+1);return a.ajax.post(s+"get-images-list.json",{},e)}},getLinksList:function(e){var i=t(document.activeElement).parents("form");if(i.exists()){var n=i.attr("data-ams-form-handler")||i.attr("action"),s=n.substr(0,n.lastIndexOf("/")+1);return a.ajax.post(s+"get-links-list.json",{},e)}}},galleries:{updateMediaTitle:function(e){t('img[id="'+e.media_id+'"]').attr("original-title",e.title)},switchMediaVisibility:function(e){return function(){var e=t(this),i=e.parents(".media"),n=i.parents(".gallery");a.ajax.post(n.data("ams-location")+"/set-media-visibility.json",{object_name:i.data("ams-element-name")},function(a,i){a.visible?(t("i",e).attr("class","fa fa-fw fa-eye"),e.parents(".btn-group").siblings("a.fancyimg").removeClass("not-visible")):(t("i",e).attr("class","fa fa-fw fa-eye-slash text-danger"),e.parents(".btn-group").siblings("a.fancyimg").addClass("not-visible"))})}},setOrder:function(e,i){if(!i||!i.item.hasClass("already-dropped")){var n=i.item.parents(".gallery"),s=t(".media",n).listattr("data-ams-element-name");a.ajax.post(n.data("ams-location")+"/set-medias-order.json",{medias:JSON.stringify(s)})}},removeMedia:function(e){return function(){var e=t(this);a.skin.bigBox({title:a.i18n.WARNING,content:'  '+a.i18n.DELETE_WARNING,buttons:a.i18n.BTN_OK_CANCEL},function(t){if(t===a.i18n.BTN_OK){var i=e.parents(".gallery").data("ams-location"),n=e.parents(".media"),s=n.data("ams-element-name");a.ajax.post(i+"/delete-element.json",{object_name:s},function(t,e){n.remove()})}})}},afterFancyboxLoad:function(t,e){t.element.hasClass("not-visible")&&t.inner.prepend('
')}},paragraphs:{preReload:function(){i.paragraphs.switched=t("i.switch.fa-minus-square-o","#paragraphs_list").parents("tr").listattr("id")},postReload:function(){t(i.paragraphs.switched).each(function(){t("i.switch.fa-plus-square-o",'[id="'+this+'"]').parents("div").first().click()}),delete i.paragraphs.switched},refreshParagraph:function(e){var a=t('tr[id="'+e.object_id+'"]');t("span.title",a).html(e.title||" - - - - - - - -")},switchEditor:function(e){var i=t(this),n=t("i.switch",i),s=i.parents("td"),r=t(".editor",s),o=i.parents("tr");if(n.hasClass("fa-plus-square-o")){var l=o.parents("table");r.html('

'),a.ajax.post(l.data("ams-location")+"/get-paragraph-editor.json",{object_name:o.data("ams-element-name")},function(t){r.html(t),t&&(a.initContent(r),n.removeClass("fa-plus-square-o").addClass("fa-minus-square-o"),o.data("ams-disabled-handlers",!0))})}else a.skin.cleanContainer(r),r.empty(),n.removeClass("fa-minus-square-o").addClass("fa-plus-square-o"),o.removeData("ams-disabled-handlers")},switchAllEditors:function(e){var i=t(this),n=t("i",i),s=i.parents("table");n.hasClass("fa-plus-square-o")?(n.removeClass("fa-plus-square-o").addClass("fa-cog fa-spin"),a.ajax.post(s.data("ams-location")+"/get-paragraphs-editors.json",{},function(e){for(var i in e)if(e.hasOwnProperty(i)){var r=t('tr[data-ams-element-name="'+i+'"]',s),o=t(".editor",r);o.is(":empty")&&o.html(e[i]),t(".fa-plus-square-o",r).removeClass("fa-plus-square-o").addClass("fa-minus-square-o"),r.data("ams-disabled-handlers",!0)}t("i.fa-plus-square-o",t("tbody",s)).exists()||n.removeClass("fa-cog fa-spin").addClass("fa-minus-square-o"),a.initContent(s)})):(t(".editor",s).each(function(){a.skin.cleanContainer(t(this)),t(this).empty()}),t(".fa-minus-square-o",s).removeClass("fa-minus-square-o").addClass("fa-plus-square-o"),t("tr",s).removeData("ams-disabled-handlers"))},updateToolbar:function(e){var i=t('tr[id="'+e.object_id+'"]'),n=t(".title-toolbar",i);n.replaceWith(e.toolbar_tag),n=t(".title-toolbar",i),a.initContent(n)},updateMarkers:function(e){var i=t('tr[id="'+e.object_id+'"]'),n=t(".title-toolbar",i),s=t("DIV.action."+e.marker_type,n);s.exists()?s.replaceWith(e.marker_tag):t(e.marker_tag).appendTo(n),e.marker_tag&&(s=t("DIV.action."+e.marker_type,n),a.initContent(s)),a.helpers.sort(n,"weight")}},pictograms:{initManagerSelection:function(){var e=t(this),a=t('input[type="hidden"]',t(".selected-pictograms",e)).listattr("value");return{selected:JSON.stringify(a)}},switchPictogram:function(){var e=t(this),a=e.parents(".pictograms"),i=a.parents(".pictograms-manager");a.hasClass("available-pictograms")?t(".selected-pictograms",i).append(e):t(".available-pictograms",i).append(e)}},themes:{initExtracts:function(e){var i=t('select[name="form.widgets.thesaurus_name:list"]',e).val(),n=t('select[name="form.widgets.extract_name:list"]',e),s=n.val();i&&a.jsonrpc.post("getExtracts",{thesaurus_name:i},{url:"/api/thesaurus/json"},function(e){n.empty(),t(e.result).each(function(){t("").attr("value",this.id).attr("selected",this.id===s).text(this.text).appendTo(n)})}),n.attr("data-ams-events-handlers",'{"select2-open": "PyAMS_content.themes.getExtracts"}')},getExtracts:function(e){var i=t(e.currentTarget).parents("form"),n=t('select[name="form.widgets.thesaurus_name:list"]',i).val();n&&a.jsonrpc.post("getExtracts",{thesaurus_name:n},{url:"/api/thesaurus/json"},function(e){var a=t('select[name="form.widgets.extract_name:list"]',i).data("select2");a.results.empty(),a.opts.populateResults.call(a,a.results,e.result,{term:""})})}},fields:{refreshField:function(e){var a=t('table[id="form_fields_list"]'),i=t('tr[data-ams-element-name="'+e.object_name+'"]',a);t("td:nth-child(4)",i).html(e.title)}},imgmap:{init:function(){var e=t(this);a.ajax.check(t.fn.canvasAreaDraw,"/--static--/pyams_content/js/jquery-canvasAreaDraw"+a.devext+".js",function(){e.canvasAreaDraw({imageUrl:e.data("ams-image-url")})})},initPreview:function(){var e=t(this);a.ajax.check(t.fn.mapster,"/--static--/pyams_content/js/jquery-imagemapster-1.2.10"+a.devext+".js",function(){e.mapster({fillColor:"ff0000",fillOpacity:.35,selected:!0,highlight:!0,staticState:!0})})}},types:{switchSubtypes:function(e){var i=t(this),n=t("i.switch",i),s=i.parents("td"),r=t(".subtypes",s),o=i.parents("tr");if(n.hasClass("fa-plus-square-o")){var l=o.parents("table");r.html('

'),a.ajax.post(l.data("ams-location")+"/get-subtypes-table.json",{object_name:o.data("ams-element-name")},function(t){r.html(t),t&&(a.initContent(r),n.removeClass("fa-plus-square-o").addClass("fa-minus-square-o"))})}else a.skin.cleanContainer(r),r.empty(),n.removeClass("fa-minus-square-o").addClass("fa-plus-square-o")}},site:{switchVisibility:function(){return function(){var e=t(this),i=e.parents("tr").first();a.ajax.post(i.data("ams-location")+"/switch-content-visibility.json",{object_name:i.data("ams-element-name")},function(a,i){var n="fa-eye";a.visible||(n+="-slash"),a.published||(n+=" text-danger"),t("i",e).attr("class","fa fa-fw "+n)})}}},review:{timer:null,timer_duration:{general:3e4,chat:5e3},initComments:function(e){var n=t(".chat-body",e);n.animate({scrollTop:n[0].scrollHeight},1e3),clearInterval(i.review.timer),i.review.timer=setInterval(i.review.updateComments,i.review.timer_duration.chat),a.skin.registerCleanCallback(i.review.cleanCommentsCallback)},cleanCommentsCallback:function(){clearInterval(i.review.timer),i.review.timer=setInterval(i.review.updateComments,i.review.timer_duration.general)},updateComments:function(){var e,i=t(".badge",'nav a[href="#review-comments.html"]'),n=t(".chat-body",".widget-body");e=n.exists()?t(".message",n).length:parseInt(i.text()),a.ajax.post("get-last-review-comments.json",{count:e},function(a){n.exists()&&i.removeClass("bg-color-danger").addClass("bg-color-info"),e!==a.count&&(i.text(a.count).removeClass("hidden"),n.exists()&&(t(".messages",n).append(a.content),n.animate({scrollTop:n[0].scrollHeight},1e3)),n.exists()||i.removeClass("bg-color-info").addClass("bg-color-danger").animate({padding:"3px 12px 2px","margin-right":"9px"},"slow",function(){t(this).animate({padding:"3px 6px 2px","margin-right":"15px"},"slow")}))})},initCommentData:function(e){var a=t(".chat-body",".widget-body");return{count:t(".message",a).length}},addCommentAction:function(){return function(){t('textarea[name="comment"]').focus()}},addCommentCallback:function(e){var a=t(this),i=a.parents(".widget-body");t(".messages",i).append(e.content),t('textarea[name="comment"]',a).val("");var n=t(".chat-body",i);n.animate({scrollTop:n[0].scrollHeight},1e3),t(".badge",'nav a[href="#review-comments.html"]').text(e.count).removeClass("hidden")}},profile:{switchFavorite:function(){var e=t(this),i=e.data("sequence-oid");a.ajax.post("switch-user-favorite.json",{oid:i},function(t,a){t.favorite?e.removeClass("fa-star-o").addClass("fa-star"):e.removeClass("fa-star").addClass("fa-star-o")})}}};t(".badge",'nav a[href="#review-comments.html"]').exists()&&(i.review.timer=setInterval(i.review.updateComments,i.review.timer_duration.general)),e.PyAMS_content=i}(jQuery,this);