# 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);