--- a/.hgtags Thu Sep 06 18:10:04 2018 +0200
+++ b/.hgtags Fri Oct 05 10:44:32 2018 +0200
@@ -21,3 +21,8 @@
fc8fe2dede6309db4a8cfc5b53eb894cca2f6970 0.1.15
9cc7207c1399658ef821a1ecdde86df0b5a1298d 0.1.15.1
f687b90488819f2dba88ed44a254d7cba1f8c652 0.1.16
+20c85661ff35eb595a82ab829eede53544455678 0.1.18
+27c643fea2b4149a23f5e424087fa22a84901497 0.1.18.1
+a9bcf47e975416f509bcd7b695b34313b8b28e8c 0.1.18.2
+5e51b05a38facaea6a20bb35fb42996755bbbe46 0.1.19
+33e3a44c50b353b7c6543e8a2594766fc1ca98d2 0.1.19.1
--- a/buildout.cfg Thu Sep 06 18:10:04 2018 +0200
+++ b/buildout.cfg Fri Oct 05 10:44:32 2018 +0200
@@ -86,4 +86,4 @@
eggs = pyams_content [test]
[versions]
-pyams_content = 0.1.17
+pyams_content = 0.1.20
--- a/docs/HISTORY.txt Thu Sep 06 18:10:04 2018 +0200
+++ b/docs/HISTORY.txt Fri Oct 05 10:44:32 2018 +0200
@@ -1,6 +1,35 @@
History
=======
+0.1.19
+------
+ - added "topic" shared content
+ - added description and notepad attributes to sites, folders and blogs
+ - added common base interface for all illustrations targets
+ - added shared content's title portlet
+ - updated gallery interfaces and properties
+
+0.1.18.2
+--------
+ - check for broken objects while iterating over visible paragraphs
+
+0.1.18.1
+--------
+ - remove broken objects from catalog when reindexing
+
+0.1.18
+------
+ - better PEP 8 conformance
+ - many many ZMI updates
+
+0.1.17
+------
+ - clear catalog and reindex all objects in "pyams_index" script
+ - updated forms templates
+ - updated advanced search engine to search over tags, themes and collections
+ - added "header" attribute to shared contents (replacing "Header" paragraph), and
+ added static attribute to disable header on selected shared contents
+
0.1.16
------
- use iterators in all dashboards
--- a/setup.py Thu Sep 06 18:10:04 2018 +0200
+++ b/setup.py Fri Oct 05 10:44:32 2018 +0200
@@ -14,7 +14,9 @@
This module contains pyams_content package
"""
import os
-from setuptools import setup, find_packages
+
+from setuptools import find_packages, setup
+
DOCS = os.path.join(os.path.dirname(__file__),
'docs')
@@ -22,7 +24,7 @@
README = os.path.join(DOCS, 'README.txt')
HISTORY = os.path.join(DOCS, 'HISTORY.txt')
-version = '0.1.17'
+version = '0.1.20'
long_description = open(README).read() + '\n\n' + open(HISTORY).read()
tests_require = []
--- a/src/pyams_content.egg-info/PKG-INFO Thu Sep 06 18:10:04 2018 +0200
+++ b/src/pyams_content.egg-info/PKG-INFO Fri Oct 05 10:44:32 2018 +0200
@@ -1,6 +1,6 @@
Metadata-Version: 1.1
Name: pyams-content
-Version: 0.1.16
+Version: 0.1.19.1
Summary: PyAMS base content interfaces and classes
Home-page: http://hg.ztfy.org/pyams/pyams_content
Author: Thierry Florac
@@ -73,6 +73,35 @@
History
=======
+ 0.1.19
+ ------
+ - added "topic" shared content
+ - added description and notepad attributes to sites, folders and blogs
+ - added common base interface for all illustrations targets
+ - added shared content's title portlet
+ - updated gallery interfaces and properties
+
+ 0.1.18.2
+ --------
+ - check for broken objects while iterating over visible paragraphs
+
+ 0.1.18.1
+ --------
+ - remove broken objects from catalog when reindexing
+
+ 0.1.18
+ ------
+ - better PEP 8 conformance
+ - many many ZMI updates
+
+ 0.1.17
+ ------
+ - clear catalog and reindex all objects in "pyams_index" script
+ - updated forms templates
+ - updated advanced search engine to search over tags, themes and collections
+ - added "header" attribute to shared contents (replacing "Header" paragraph), and
+ added static attribute to disable header on selected shared contents
+
0.1.16
------
- use iterators in all dashboards
--- a/src/pyams_content.egg-info/SOURCES.txt Thu Sep 06 18:10:04 2018 +0200
+++ b/src/pyams_content.egg-info/SOURCES.txt Fri Oct 05 10:44:32 2018 +0200
@@ -37,6 +37,7 @@
src/pyams_content/component/gallery/zmi/interfaces.py
src/pyams_content/component/gallery/zmi/paragraph.py
src/pyams_content/component/gallery/zmi/templates/gallery-media-thumbnail.pt
+src/pyams_content/component/gallery/zmi/templates/gallery-media.pt
src/pyams_content/component/gallery/zmi/templates/gallery-medias.pt
src/pyams_content/component/illustration/__init__.py
src/pyams_content/component/illustration/paragraph.py
@@ -48,12 +49,14 @@
src/pyams_content/component/illustration/zmi/templates/illustration-thumbnail.pt
src/pyams_content/component/illustration/zmi/templates/paragraph-illustration-icon.pt
src/pyams_content/component/keynumber/__init__.py
+src/pyams_content/component/keynumber/paragraph.py
src/pyams_content/component/keynumber/interfaces/__init__.py
src/pyams_content/component/keynumber/portlet/__init__.py
src/pyams_content/component/keynumber/portlet/interfaces/__init__.py
src/pyams_content/component/keynumber/portlet/zmi/__init__.py
src/pyams_content/component/keynumber/portlet/zmi/templates/keynumber-preview.pt
src/pyams_content/component/keynumber/zmi/__init__.py
+src/pyams_content/component/keynumber/zmi/paragraph.py
src/pyams_content/component/links/__init__.py
src/pyams_content/component/links/interfaces/__init__.py
src/pyams_content/component/links/zmi/__init__.py
@@ -66,7 +69,6 @@
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/map.py
src/pyams_content/component/paragraph/milestone.py
@@ -79,13 +81,17 @@
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/map.py
src/pyams_content/component/paragraph/interfaces/milestone.py
src/pyams_content/component/paragraph/interfaces/pictogram.py
src/pyams_content/component/paragraph/interfaces/verbatim.py
src/pyams_content/component/paragraph/interfaces/video.py
+src/pyams_content/component/paragraph/portlet/__init__.py
+src/pyams_content/component/paragraph/portlet/interfaces/__init__.py
+src/pyams_content/component/paragraph/portlet/zmi/__init__.py
+src/pyams_content/component/paragraph/portlet/zmi/templates/container-preview.pt
+src/pyams_content/component/paragraph/portlet/zmi/templates/navigation-preview.pt
src/pyams_content/component/paragraph/zmi/__init__.py
src/pyams_content/component/paragraph/zmi/audio.py
src/pyams_content/component/paragraph/zmi/contact.py
@@ -94,7 +100,6 @@
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/map.py
src/pyams_content/component/paragraph/zmi/milestone.py
@@ -240,11 +245,15 @@
src/pyams_content/shared/common/interfaces/types.py
src/pyams_content/shared/common/interfaces/zmi.py
src/pyams_content/shared/common/portlet/__init__.py
-src/pyams_content/shared/common/portlet/content/__init__.py
-src/pyams_content/shared/common/portlet/content/interfaces/__init__.py
-src/pyams_content/shared/common/portlet/content/skin/__init__.py
-src/pyams_content/shared/common/portlet/content/zmi/__init__.py
-src/pyams_content/shared/common/portlet/content/zmi/preview.pt
+src/pyams_content/shared/common/portlet/head.py
+src/pyams_content/shared/common/portlet/title.py
+src/pyams_content/shared/common/portlet/interfaces/__init__.py
+src/pyams_content/shared/common/portlet/skin/__init__.py
+src/pyams_content/shared/common/portlet/zmi/__init__.py
+src/pyams_content/shared/common/portlet/zmi/head.py
+src/pyams_content/shared/common/portlet/zmi/title.py
+src/pyams_content/shared/common/portlet/zmi/templates/head-preview.pt
+src/pyams_content/shared/common/portlet/zmi/templates/title-preview.pt
src/pyams_content/shared/common/skin/__init__.py
src/pyams_content/shared/common/skin/oid.py
src/pyams_content/shared/common/skin/opengraph.py
@@ -327,6 +336,8 @@
src/pyams_content/shared/site/link.py
src/pyams_content/shared/site/manager.py
src/pyams_content/shared/site/interfaces/__init__.py
+src/pyams_content/shared/site/skin/__init__.py
+src/pyams_content/shared/site/skin/breadcrumb.py
src/pyams_content/shared/site/zmi/__init__.py
src/pyams_content/shared/site/zmi/container.py
src/pyams_content/shared/site/zmi/folder.py
@@ -335,6 +346,10 @@
src/pyams_content/shared/site/zmi/widget/__init__.py
src/pyams_content/shared/site/zmi/widget/interfaces.py
src/pyams_content/shared/site/zmi/widget/templates/folders-input.pt
+src/pyams_content/shared/topic/__init__.py
+src/pyams_content/shared/topic/manager.py
+src/pyams_content/shared/topic/interfaces/__init__.py
+src/pyams_content/shared/topic/zmi/__init__.py
src/pyams_content/shared/view/__init__.py
src/pyams_content/shared/view/manager.py
src/pyams_content/shared/view/merge.py
--- a/src/pyams_content/component/association/zmi/__init__.py Thu Sep 06 18:10:04 2018 +0200
+++ b/src/pyams_content/component/association/zmi/__init__.py Fri Oct 05 10:44:32 2018 +0200
@@ -181,8 +181,10 @@
return switch_element_visibility(request, IAssociationContainer)
-@adapter_config(name='pictogram', context=(IAssociationContainerTarget, IPyAMSLayer, AssociationsTable), provides=IColumn)
-@adapter_config(name='pictogram', context=(IAssociationContainer, IPyAMSLayer, AssociationsTable), provides=IColumn)
+@adapter_config(name='pictogram', context=(IAssociationContainerTarget, IPyAMSLayer, AssociationsTable),
+ provides=IColumn)
+@adapter_config(name='pictogram', context=(IAssociationContainer, IPyAMSLayer, AssociationsTable),
+ provides=IColumn)
class AssociationsTablePictogramColumn(ImageColumn):
"""Associations table pictogram column"""
@@ -197,8 +199,10 @@
return self.request.localizer.translate(item.icon_hint)
-@adapter_config(name='name', context=(IAssociationContainerTarget, IPyAMSLayer, AssociationsTable), provides=IColumn)
-@adapter_config(name='name', context=(IAssociationContainer, IPyAMSLayer, AssociationsTable), provides=IColumn)
+@adapter_config(name='name', context=(IAssociationContainerTarget, IPyAMSLayer, AssociationsTable),
+ provides=IColumn)
+@adapter_config(name='name', context=(IAssociationContainer, IPyAMSLayer, AssociationsTable),
+ provides=IColumn)
class AssociationsTablePublicNameColumn(NameColumn):
"""Associations table name column"""
@@ -215,8 +219,10 @@
return title
-@adapter_config(name='inner_name', context=(IAssociationContainerTarget, IPyAMSLayer, AssociationsTable), provides=IColumn)
-@adapter_config(name='inner_name', context=(IAssociationContainer, IPyAMSLayer, AssociationsTable), provides=IColumn)
+@adapter_config(name='inner_name', context=(IAssociationContainerTarget, IPyAMSLayer, AssociationsTable),
+ provides=IColumn)
+@adapter_config(name='inner_name', context=(IAssociationContainer, IPyAMSLayer, AssociationsTable),
+ provides=IColumn)
class AssociationsTableInnerNameColumn(I18nColumn, GetAttrColumn):
"""Associations table inner name column"""
@@ -231,8 +237,10 @@
return '--'
-@adapter_config(name='size', context=(IAssociationContainerTarget, IPyAMSLayer, AssociationsTable), provides=IColumn)
-@adapter_config(name='size', context=(IAssociationContainer, IPyAMSLayer, AssociationsTable), provides=IColumn)
+@adapter_config(name='size', context=(IAssociationContainerTarget, IPyAMSLayer, AssociationsTable),
+ provides=IColumn)
+@adapter_config(name='size', context=(IAssociationContainer, IPyAMSLayer, AssociationsTable),
+ provides=IColumn)
class AssociationsTableSizeColumn(I18nColumn, GetAttrColumn):
"""Associations table size column"""
@@ -247,8 +255,10 @@
return '--'
-@adapter_config(name='trash', context=(IAssociationContainerTarget, IPyAMSLayer, AssociationsTable), provides=IColumn)
-@adapter_config(name='trash', context=(IAssociationContainer, IPyAMSLayer, AssociationsTable), provides=IColumn)
+@adapter_config(name='trash', context=(IAssociationContainerTarget, IPyAMSLayer, AssociationsTable),
+ provides=IColumn)
+@adapter_config(name='trash', context=(IAssociationContainer, IPyAMSLayer, AssociationsTable),
+ provides=IColumn)
class AssociationsTableTrashColumn(ProtectedFormObjectMixin, TrashColumn):
"""Associations table trash column"""
--- a/src/pyams_content/component/gallery/__init__.py Thu Sep 06 18:10:04 2018 +0200
+++ b/src/pyams_content/component/gallery/__init__.py Fri Oct 05 10:44:32 2018 +0200
@@ -12,52 +12,44 @@
__docformat__ = 'restructuredtext'
-
-# import standard library
+from pyramid.events import subscriber
+from pyramid.threadlocal import get_current_registry
+from zope.interface import implementer
+from zope.lifecycleevent import ObjectModifiedEvent
+from zope.lifecycleevent.interfaces import IObjectAddedEvent, IObjectModifiedEvent, IObjectRemovedEvent
+from zope.location import locate
+from zope.location.interfaces import ISublocations
+from zope.schema.fieldproperty import FieldProperty
+from zope.traversing.interfaces import ITraversable
-# import interfaces
-from pyams_content.component.gallery.interfaces import IBaseGallery, IGallery, IGalleryTarget, \
- GALLERY_CONTAINER_KEY, GALLERY_RENDERERS
+from pyams_catalog.utils import index_object
+from pyams_content import _
+from pyams_content.component.gallery.interfaces import GALLERY_CONTAINER_KEY, GALLERY_RENDERERS, IBaseGallery, IGallery, \
+ IGalleryFile, IGalleryTarget
from pyams_content.component.paragraph import IBaseParagraph
+from pyams_content.features.checker import BaseContentChecker
from pyams_content.features.checker.interfaces import IContentChecker
+from pyams_content.features.renderer import RenderedContentMixin, RenderersVocabulary
from pyams_content.shared.common.interfaces import IWfSharedContent
from pyams_form.interfaces.form import IFormContextPermissionChecker
from pyams_i18n.interfaces import II18n
-from zope.lifecycleevent.interfaces import IObjectAddedEvent, IObjectModifiedEvent, IObjectRemovedEvent
-from zope.location.interfaces import ISublocations
-from zope.traversing.interfaces import ITraversable
-
-# import packages
-from pyams_catalog.utils import index_object
-from pyams_content.features.checker import BaseContentChecker
-from pyams_content.features.renderer import RenderedContentMixin, RenderersVocabulary
-from pyams_utils.adapter import adapter_config, ContextAdapter, get_annotation_adapter
+from pyams_utils.adapter import ContextAdapter, adapter_config, get_annotation_adapter
+from pyams_utils.container import BTreeOrderedContainer
from pyams_utils.factory import factory_config
-from pyams_utils.container import BTreeOrderedContainer
from pyams_utils.traversing import get_parent
from pyams_utils.vocabulary import vocabulary_config
-from pyramid.events import subscriber
-from pyramid.threadlocal import get_current_registry
-from zope.interface import implementer
-from zope.lifecycleevent import ObjectCreatedEvent, ObjectModifiedEvent
-from zope.location import locate
-from zope.schema.fieldproperty import FieldProperty
-
-from pyams_content import _
#
# Galleries container
#
-@implementer(IGallery)
+@implementer(IBaseGallery)
@factory_config(provided=IBaseGallery)
-class Gallery(RenderedContentMixin, BTreeOrderedContainer):
- """Gallery persistent class"""
+class BaseGallery(RenderedContentMixin, BTreeOrderedContainer):
+ """Base gallery persistent class"""
- title = FieldProperty(IGallery['title'])
- description = FieldProperty(IGallery['description'])
- renderer = FieldProperty(IGallery['renderer'])
+ renderer = FieldProperty(IBaseGallery['renderer'])
last_id = 1
@@ -73,7 +65,16 @@
index_object(value)
def get_visible_medias(self):
- return [media for media in self.values() if media.visible]
+ yield from filter(lambda x: IGalleryFile(x).visible, self.values())
+
+
+@implementer(IGallery)
+@factory_config(provided=IGallery)
+class Gallery(BaseGallery):
+ """Gallery persistent class"""
+
+ title = FieldProperty(IGallery['title'])
+ description = FieldProperty(IGallery['description'])
@adapter_config(context=IGalleryTarget, provides=IGallery)
@@ -161,7 +162,7 @@
for media in IGallery(self.context).values():
if not media.visible:
continue
- for name, checker in sorted(registry.getAdapters((media, ), IContentChecker),
+ for name, checker in sorted(registry.getAdapters((media,), IContentChecker),
key=lambda x: x[1].weight):
output.append('- {0} : '.format(checker.label or
II18n(media).query_attribute('title', request=request)))
--- a/src/pyams_content/component/gallery/file.py Thu Sep 06 18:10:04 2018 +0200
+++ b/src/pyams_content/component/gallery/file.py Fri Oct 05 10:44:32 2018 +0200
@@ -12,32 +12,27 @@
__docformat__ = 'restructuredtext'
-
-# import standard library
+from persistent import Persistent
+from pyramid.events import subscriber
+from pyramid.threadlocal import get_current_registry
+from zope.container.contained import Contained
+from zope.interface import alsoProvides, implementer
+from zope.lifecycleevent import ObjectModifiedEvent
+from zope.lifecycleevent.interfaces import IObjectAddedEvent, IObjectModifiedEvent, IObjectRemovedEvent
+from zope.schema.fieldproperty import FieldProperty
-# import interfaces
from pyams_content.component.gallery.interfaces import IGalleryFile
-from pyams_content.features.checker.interfaces import IContentChecker, MISSING_VALUE, MISSING_LANG_VALUE
+from pyams_content.features.checker import BaseContentChecker
+from pyams_content.features.checker.interfaces import IContentChecker, MISSING_LANG_VALUE, MISSING_VALUE
from pyams_content.shared.common.interfaces import IWfSharedContent
-from pyams_file.interfaces import IResponsiveImage, IImage
+from pyams_file.interfaces import IImage, IResponsiveImage
+from pyams_file.property import FileProperty
from pyams_form.interfaces.form import IFormContextPermissionChecker
from pyams_i18n.interfaces import II18n, II18nManager, INegotiator
-from zope.lifecycleevent.interfaces import IObjectAddedEvent, IObjectModifiedEvent, IObjectRemovedEvent
-
-# import packages
-from persistent import Persistent
-from pyams_content.features.checker import BaseContentChecker
-from pyams_file.property import FileProperty
-from pyams_utils.adapter import adapter_config, ContextAdapter
+from pyams_utils.adapter import ContextAdapter, adapter_config
from pyams_utils.registry import get_utility
from pyams_utils.request import check_request
from pyams_utils.traversing import get_parent
-from pyramid.events import subscriber
-from pyramid.threadlocal import get_current_registry
-from zope.lifecycleevent import ObjectModifiedEvent
-from zope.container.contained import Contained
-from zope.interface import implementer, alsoProvides
-from zope.schema.fieldproperty import FieldProperty
#
@@ -53,8 +48,6 @@
alt_title = FieldProperty(IGalleryFile['alt_title'])
description = FieldProperty(IGalleryFile['description'])
author = FieldProperty(IGalleryFile['author'])
- author_comments = FieldProperty(IGalleryFile['author_comments'])
- pif_number = FieldProperty(IGalleryFile['pif_number'])
sound = FileProperty(IGalleryFile['sound'])
sound_title = FieldProperty(IGalleryFile['sound_title'])
sound_description = FieldProperty(IGalleryFile['sound_description'])
@@ -122,7 +115,7 @@
langs = manager.get_languages()
else:
negotiator = get_utility(INegotiator)
- langs = (negotiator.server_language, )
+ langs = (negotiator.server_language,)
i18n = II18n(self.context)
for lang in langs:
for attr in ('title', 'alt_title', 'description'):
--- a/src/pyams_content/component/gallery/interfaces/__init__.py Thu Sep 06 18:10:04 2018 +0200
+++ b/src/pyams_content/component/gallery/interfaces/__init__.py Fri Oct 05 10:44:32 2018 +0200
@@ -12,21 +12,16 @@
__docformat__ = 'restructuredtext'
+from zope.annotation.interfaces import IAttributeAnnotatable
+from zope.container.constraints import containers, contains
+from zope.container.interfaces import IOrderedContainer
+from zope.interface import Interface
+from zope.schema import Bool, Choice, TextLine
-# import standard library
-
-# import interfaces
from pyams_content.component.paragraph.interfaces import IBaseParagraph
from pyams_content.features.renderer.interfaces import IRenderedContent
-from zope.container.interfaces import IOrderedContainer
-
-# import packages
-from pyams_file.schema import MediaField, AudioField
-from pyams_i18n.schema import I18nTextLineField, I18nTextField
-from zope.annotation.interfaces import IAttributeAnnotatable
-from zope.container.constraints import contains, containers
-from zope.interface import Interface
-from zope.schema import Bool, TextLine, Choice
+from pyams_file.schema import AudioField, MediaField
+from pyams_i18n.schema import I18nTextField, I18nTextLineField
from pyams_content import _
@@ -62,14 +57,6 @@
description=_("Name of document's author"),
required=True)
- author_comments = I18nTextField(title=_("Author's comments"),
- description=_("Comments relatives to author's rights management"),
- required=False)
-
- pif_number = TextLine(title=_("Source ID"),
- description=_("Number used to identify media into it's original source"),
- required=False)
-
sound = AudioField(title=_("Audio data"),
description=_("Sound file associated with the current media"),
required=False)
@@ -94,14 +81,6 @@
class IBaseGallery(IOrderedContainer, IAttributeAnnotatable, IRenderedContent):
"""Base gallery interface"""
- title = I18nTextLineField(title=_("Title"),
- description=_("Gallery title, as shown in front-office"),
- required=False)
-
- description = I18nTextField(title=_("Description"),
- description=_("Gallery description displayed by front-office template"),
- required=False)
-
renderer = Choice(title=_("Gallery template"),
description=_("Presentation template used for this gallery"),
vocabulary=GALLERY_RENDERERS,
@@ -124,6 +103,14 @@
contains(IGalleryItem)
+ title = I18nTextLineField(title=_("Title"),
+ description=_("Gallery title, as shown in front-office"),
+ required=False)
+
+ description = I18nTextField(title=_("Description"),
+ description=_("Gallery description displayed by front-office template"),
+ required=False)
+
class IGalleryTarget(IAttributeAnnotatable):
"""Gallery container target marker interface"""
@@ -133,5 +120,5 @@
GALLERY_PARAGRAPH_NAME = _("Medias gallery")
-class IGalleryParagraph(IGallery, IBaseParagraph):
+class IGalleryParagraph(IBaseGallery, IBaseParagraph):
"""Gallery paragraph"""
--- a/src/pyams_content/component/gallery/paragraph.py Thu Sep 06 18:10:04 2018 +0200
+++ b/src/pyams_content/component/gallery/paragraph.py Fri Oct 05 10:44:32 2018 +0200
@@ -12,22 +12,19 @@
__docformat__ = 'restructuredtext'
-
-# import standard library
+from zope.interface import implementer
-# import interfaces
-from pyams_content.component.gallery.interfaces import IGalleryParagraph, GALLERY_PARAGRAPH_TYPE, GALLERY_PARAGRAPH_NAME
+from pyams_content import _
+from pyams_content.component.gallery import BaseGallery
+from pyams_content.component.gallery.interfaces import GALLERY_PARAGRAPH_NAME, GALLERY_PARAGRAPH_TYPE, IGalleryParagraph
+from pyams_content.component.paragraph import BaseParagraph, BaseParagraphContentChecker, BaseParagraphFactory
from pyams_content.component.paragraph.interfaces import IParagraphFactory
-from pyams_content.features.checker.interfaces import IContentChecker, MISSING_VALUE, MISSING_LANG_VALUE
-from pyams_i18n.interfaces import II18n, INegotiator, II18nManager
-
-# import packages
-from pyams_content.component.gallery import Gallery as BaseGallery
-from pyams_content.component.paragraph import BaseParagraph, BaseParagraphContentChecker, BaseParagraphFactory
+from pyams_content.features.checker.interfaces import IContentChecker, MISSING_LANG_VALUE, MISSING_VALUE
+from pyams_i18n.interfaces import II18n, II18nManager, INegotiator
from pyams_utils.adapter import adapter_config
-from pyams_utils.registry import utility_config, get_utility
+from pyams_utils.registry import get_utility, utility_config
+from pyams_utils.request import check_request
from pyams_utils.traversing import get_parent
-from zope.interface import implementer
@implementer(IGalleryParagraph)
@@ -37,6 +34,18 @@
icon_class = 'fa-picture-o'
icon_hint = GALLERY_PARAGRAPH_NAME
+ @property
+ def title(self):
+ request = check_request()
+ translate = request.localizer.translate
+ nb_medias = len(self)
+ if nb_medias > 1:
+ return translate(_("(gallery contains {0} medias)")).format(nb_medias)
+ elif nb_medias == 1:
+ return translate(_("(gallery contains 1 media)"))
+ else:
+ return translate(_("(empty gallery)"))
+
@utility_config(name=GALLERY_PARAGRAPH_TYPE, provides=IParagraphFactory)
class GalleryFactory(BaseParagraphFactory):
@@ -58,7 +67,7 @@
langs = manager.get_languages()
else:
negotiator = get_utility(INegotiator)
- langs = (negotiator.server_language, )
+ langs = (negotiator.server_language,)
i18n = II18n(self.context)
for lang in langs:
value = i18n.get_attribute('title', lang, request)
--- a/src/pyams_content/component/gallery/zmi/__init__.py Thu Sep 06 18:10:04 2018 +0200
+++ b/src/pyams_content/component/gallery/zmi/__init__.py Fri Oct 05 10:44:32 2018 +0200
@@ -12,41 +12,35 @@
__docformat__ = 'restructuredtext'
-
-# import standard library
import json
import zipfile
-
from io import BytesIO
-# import interfaces
-from pyams_content.component.gallery.interfaces import IGallery
-from pyams_content.component.gallery.zmi.interfaces import IGalleryContentsView
-from pyams_content.interfaces import MANAGE_CONTENT_PERMISSION
-from pyams_file.interfaces import IFileInfo
-from pyams_form.interfaces.form import IWidgetsPrefixViewletsManager
-from pyams_i18n.interfaces import II18n
-from pyams_skin.layer import IPyAMSLayer
-from pyams_utils.interfaces import VIEW_SYSTEM_PERMISSION
+from pyramid.exceptions import NotFound
from pyramid.interfaces import IView
-
-# import packages
-from pyams_content.shared.common.zmi import WfSharedContentPermissionMixin
-from pyams_content.features.renderer.zmi.widget import RendererFieldWidget
-from pyams_form.form import ajax_config
-from pyams_pagelet.pagelet import pagelet_config
-from pyams_template.template import template_config
-from pyams_utils.url import absolute_url
-from pyams_viewlet.viewlet import viewlet_config, Viewlet
-from pyams_zmi.form import AdminDialogEditForm, AdminDialogDisplayForm
-from pyramid.exceptions import NotFound
from pyramid.renderers import render_to_response
from pyramid.response import Response
from pyramid.view import view_config
from z3c.form import field
-from zope.interface import implementer, Interface
+from zope.interface import Interface, implementer
from pyams_content import _
+from pyams_content.component.gallery.interfaces import IBaseGallery, IGallery
+from pyams_content.component.gallery.zmi.interfaces import IGalleryContentsView
+from pyams_content.features.renderer.zmi.widget import RendererFieldWidget
+from pyams_content.interfaces import MANAGE_CONTENT_PERMISSION
+from pyams_content.shared.common.zmi import WfSharedContentPermissionMixin
+from pyams_file.interfaces import IFileInfo
+from pyams_form.form import ajax_config
+from pyams_form.interfaces.form import IWidgetsPrefixViewletsManager
+from pyams_i18n.interfaces import II18n
+from pyams_pagelet.pagelet import pagelet_config
+from pyams_skin.layer import IPyAMSLayer
+from pyams_template.template import template_config
+from pyams_utils.interfaces import VIEW_SYSTEM_PERMISSION
+from pyams_utils.url import absolute_url
+from pyams_viewlet.viewlet import Viewlet, viewlet_config
+from pyams_zmi.form import AdminDialogDisplayForm, AdminDialogEditForm
#
@@ -82,7 +76,7 @@
# Gallery contents
#
-@pagelet_config(name='contents.html', context=IGallery, layer=IPyAMSLayer, permission=VIEW_SYSTEM_PERMISSION)
+@pagelet_config(name='contents.html', context=IBaseGallery, layer=IPyAMSLayer, permission=VIEW_SYSTEM_PERMISSION)
@implementer(IGalleryContentsView)
class GalleryContentForm(AdminDialogDisplayForm):
"""Gallery contents form"""
@@ -94,7 +88,7 @@
show_widget_title = True
-@viewlet_config(name='gallery-medias', context=IGallery, view=IGalleryContentsView,
+@viewlet_config(name='gallery-medias', context=IBaseGallery, view=IGalleryContentsView,
manager=IWidgetsPrefixViewletsManager)
@template_config(template='templates/gallery-medias.pt', layer=IPyAMSLayer)
@implementer(IGalleryContentsView)
@@ -105,7 +99,7 @@
return II18n(media).query_attribute('title', request=self.request)
-@view_config(name='get-gallery-medias.html', context=IGallery, request_type=IPyAMSLayer,
+@view_config(name='get-gallery-medias.html', context=IBaseGallery, request_type=IPyAMSLayer,
permission=VIEW_SYSTEM_PERMISSION)
@implementer(IGalleryContentsView)
class GalleryMediasView(WfSharedContentPermissionMixin):
@@ -128,7 +122,7 @@
return absolute_url(media, self.request, 'preview.html')
-@view_config(name='set-medias-order.json', context=IGallery, request_type=IPyAMSLayer,
+@view_config(name='set-medias-order.json', context=IBaseGallery, request_type=IPyAMSLayer,
permission=MANAGE_CONTENT_PERMISSION, renderer='json', xhr=True)
def set_medias_order(request):
"""Set gallery medias order"""
@@ -137,11 +131,11 @@
return {'status': 'success'}
-@view_config(name='set-media-visibility.json', context=IGallery, request_type=IPyAMSLayer,
+@view_config(name='set-media-visibility.json', context=IBaseGallery, request_type=IPyAMSLayer,
permission=MANAGE_CONTENT_PERMISSION, renderer='json', xhr=True)
def set_media_visibility(request):
"""Set gallery media visibility"""
- gallery = IGallery(request.context)
+ gallery = IBaseGallery(request.context)
media = gallery.get(str(request.params.get('object_name')))
if media is None:
raise NotFound()
@@ -153,13 +147,13 @@
# Gallery medias downloader
#
-@view_config(name='get-medias.zip', context=IGallery, request_type=IPyAMSLayer,
+@view_config(name='get-medias.zip', context=IBaseGallery, request_type=IPyAMSLayer,
permission=VIEW_SYSTEM_PERMISSION)
def get_medias_archive(request):
"""Get all gallery medias as ZIP file"""
zip_data = BytesIO()
zip_file = zipfile.ZipFile(zip_data, mode='w')
- for media in IGallery(request.context).values():
+ for media in IBaseGallery(request.context).values():
zip_file.writestr(IFileInfo(media.data).filename, media.data.data)
zip_file.close()
zip_data.seek(0)
--- a/src/pyams_content/component/gallery/zmi/file.py Thu Sep 06 18:10:04 2018 +0200
+++ b/src/pyams_content/component/gallery/zmi/file.py Fri Oct 05 10:44:32 2018 +0200
@@ -12,48 +12,45 @@
__docformat__ = 'restructuredtext'
-
-# import standard library
-
-# import interfaces
-from pyams_content.component.gallery.interfaces import IGallery, IGalleryFile, IGalleryParagraph, \
- GALLERY_FILE_HIDDEN_FIELDS
-from pyams_content.component.gallery.zmi.interfaces import IGalleryMediasAddFields, IGalleryContentsView
-from pyams_content.interfaces import MANAGE_CONTENT_PERMISSION
-from pyams_file.interfaces.archive import IArchiveExtractor
-from pyams_form.interfaces.form import IFormContextPermissionChecker
-from pyams_i18n.interfaces import II18n
-from pyams_skin.interfaces.viewlet import IWidgetTitleViewletManager, IContextActions
-from pyams_skin.layer import IPyAMSLayer
-from pyams_utils.interfaces import VIEW_SYSTEM_PERMISSION, FORBIDDEN_PERMISSION
+from pyramid.renderers import render
+from z3c.form import field
from z3c.form.interfaces import NOT_CHANGED
+from zope.interface import Interface
+from zope.lifecycleevent import ObjectCreatedEvent
+from zope.location import locate
from zope.schema.interfaces import WrongType
-# import packages
from pyams_content.component.gallery.file import GalleryFile
-from pyams_content.shared.common import IWfSharedContent
+from pyams_content.component.gallery.interfaces import GALLERY_FILE_HIDDEN_FIELDS, IBaseGallery, IGalleryFile, \
+ IGalleryParagraph
+from pyams_content.component.gallery.zmi.interfaces import IGalleryContentsView, IGalleryMediasAddFields
+from pyams_content.interfaces import MANAGE_CONTENT_PERMISSION
+from pyams_content.shared.common.interfaces import IWfSharedContent
from pyams_content.shared.common.zmi import WfSharedContentPermissionMixin
from pyams_file.file import get_magic_content_type
+from pyams_file.interfaces.archive import IArchiveExtractor
from pyams_file.zmi.file import FilePropertiesAction
from pyams_form.form import AJAXAddForm, ajax_config
from pyams_form.group import NamedWidgetsGroup
+from pyams_form.interfaces.form import IFormContextPermissionChecker
+from pyams_i18n.interfaces import II18n
from pyams_pagelet.pagelet import pagelet_config
from pyams_skin.event import get_json_refresh_event
-from pyams_skin.viewlet.toolbar import ToolbarAction, JsToolbarActionItem
+from pyams_skin.interfaces.viewlet import IContextActions, IWidgetTitleViewletManager
+from pyams_skin.layer import IPyAMSLayer
+from pyams_skin.viewlet.toolbar import JsToolbarActionItem, ToolbarAction
+from pyams_utils.interfaces import FORBIDDEN_PERMISSION, VIEW_SYSTEM_PERMISSION
from pyams_utils.registry import query_utility
from pyams_utils.traversing import get_parent
from pyams_utils.url import absolute_url
from pyams_viewlet.viewlet import viewlet_config
-from pyams_zmi.form import AdminDialogEditForm, AdminDialogAddForm
-from pyramid.renderers import render
-from z3c.form import field
-from zope.lifecycleevent import ObjectCreatedEvent
-from zope.location import locate
+from pyams_zmi.form import AdminDialogAddForm, AdminDialogEditForm
from pyams_content import _
-@viewlet_config(name='add-media.menu', context=IGallery, view=IGalleryContentsView, manager=IWidgetTitleViewletManager)
+@viewlet_config(name='add-media.menu', context=IBaseGallery, view=IGalleryContentsView,
+ manager=IWidgetTitleViewletManager)
class GalleryMediaAddMenu(WfSharedContentPermissionMixin, ToolbarAction):
"""Gallery media add menu"""
@@ -64,8 +61,8 @@
stop_propagation = True
-@pagelet_config(name='add-media.html', context=IGallery, layer=IPyAMSLayer, permission=MANAGE_CONTENT_PERMISSION)
-@ajax_config(name='add-media.json', context=IGallery, layer=IPyAMSLayer, base=AJAXAddForm)
+@pagelet_config(name='add-media.html', context=IBaseGallery, layer=IPyAMSLayer, permission=MANAGE_CONTENT_PERMISSION)
+@ajax_config(name='add-media.json', context=IBaseGallery, layer=IPyAMSLayer, base=AJAXAddForm)
class GalleryMediaAddForm(AdminDialogAddForm):
"""Gallery media add form"""
@@ -115,9 +112,8 @@
medias.append(media)
for media in medias:
media.author = data.get('author')
- media.author_comments = data.get('author_comments')
self.context.append(media)
- return None
+ return medias
def get_ajax_output(self, changes):
return {
@@ -127,7 +123,7 @@
}
-@viewlet_config(name='file.showhide.action', context=IGalleryFile, layer=IPyAMSLayer, view=IGalleryContentsView,
+@viewlet_config(name='file.showhide.action', context=IGalleryFile, layer=IPyAMSLayer, view=Interface,
manager=IContextActions, permission=VIEW_SYSTEM_PERMISSION, weight=1)
class GalleryFileShowHideAction(WfSharedContentPermissionMixin, JsToolbarActionItem):
"""Gallery file show/hide action"""
@@ -163,7 +159,7 @@
return self.url
-@viewlet_config(name='file.properties.action', context=IGalleryFile, layer=IPyAMSLayer, view=IGalleryContentsView,
+@viewlet_config(name='file.properties.action', context=IGalleryFile, layer=IPyAMSLayer, view=Interface,
manager=IContextActions, permission=VIEW_SYSTEM_PERMISSION, weight=5)
class GalleryFilePropertiesAction(FilePropertiesAction):
"""Media properties action"""
@@ -188,14 +184,9 @@
@property
def title(self):
- gallery = get_parent(self.context, IGallery)
+ gallery = get_parent(self.context, IBaseGallery)
return II18n(gallery).query_attribute('title', request=self.request)
- def updateWidgets(self, prefix=None):
- super(GalleryFilePropertiesEditForm, self).updateWidgets(prefix)
- if 'pif_number' in self.widgets:
- self.widgets['pif_number'].input_css_class = 'col-md-3'
-
def updateGroups(self):
self.add_group(NamedWidgetsGroup(self, 'audio_file', self.widgets,
('sound', 'sound_title', 'sound_description'),
@@ -209,7 +200,7 @@
def get_ajax_output(self, changes):
output = super(self.__class__, self).get_ajax_output(changes)
if 'title' in changes.get(IGalleryFile, ()):
- gallery = get_parent(self.context, IGallery)
+ gallery = get_parent(self.context, IBaseGallery)
if gallery is not None:
output.setdefault('events', []).append({
'event': 'myams.refresh',
@@ -228,7 +219,7 @@
return output
-@viewlet_config(name='gallery-file-remover.action', context=IGalleryFile, layer=IPyAMSLayer, view=IGalleryContentsView,
+@viewlet_config(name='gallery-file-remover.action', context=IGalleryFile, layer=IPyAMSLayer, view=Interface,
manager=IContextActions, weight=90)
class GalleryFileRemoverAction(WfSharedContentPermissionMixin, JsToolbarActionItem):
"""Gallery file remover action"""
--- a/src/pyams_content/component/gallery/zmi/interfaces.py Thu Sep 06 18:10:04 2018 +0200
+++ b/src/pyams_content/component/gallery/zmi/interfaces.py Fri Oct 05 10:44:32 2018 +0200
@@ -17,13 +17,12 @@
# import interfaces
-# import packages
-from pyams_file.schema import FileField
-from pyams_i18n.schema import I18nTextField
from zope.interface import Interface
from zope.schema import TextLine
from pyams_content import _
+# import packages
+from pyams_file.schema import FileField
class IGalleryContentsView(Interface):
@@ -40,7 +39,3 @@
author = TextLine(title=_("Author"),
description=_("Name of document's author"),
required=True)
-
- author_comments = I18nTextField(title=_("Author comments"),
- description=_("Comments relatives to author's rights management"),
- required=False)
--- a/src/pyams_content/component/gallery/zmi/paragraph.py Thu Sep 06 18:10:04 2018 +0200
+++ b/src/pyams_content/component/gallery/zmi/paragraph.py Fri Oct 05 10:44:32 2018 +0200
@@ -12,39 +12,42 @@
__docformat__ = 'restructuredtext'
-
-# import standard library
+from pyramid.interfaces import IView
+from pyramid.renderers import render
+from pyramid.view import view_config
+from transaction.interfaces import ITransactionManager
+from z3c.form import button, field
+from z3c.form.interfaces import INPUT_MODE
+from zope.interface import Interface, implementer
-# import interfaces
-from pyams_content.component.gallery.interfaces import IGalleryParagraph, IBaseGallery, GALLERY_PARAGRAPH_TYPE
+from pyams_content.component.gallery.interfaces import GALLERY_PARAGRAPH_TYPE, IGalleryParagraph
+from pyams_content.component.gallery.paragraph import Gallery
+from pyams_content.component.gallery.zmi.file import GalleryMediaAddForm
from pyams_content.component.gallery.zmi.interfaces import IGalleryContentsView
-from pyams_content.component.paragraph.interfaces import IParagraphContainerTarget, IParagraphContainer, \
- PARAGRAPH_HIDDEN_FIELDS
-from pyams_content.component.paragraph.zmi.interfaces import IParagraphInnerEditor, IParagraphContainerView
+from pyams_content.component.paragraph.interfaces import IParagraphContainer, IParagraphContainerTarget
+from pyams_content.component.paragraph.zmi import BaseParagraphAJAXAddForm, BaseParagraphAJAXEditForm, \
+ BaseParagraphAddMenu, BaseParagraphPropertiesEditForm, IParagraphEditFormButtons, ParagraphContainerTable, \
+ get_json_paragraph_refresh_event
+from pyams_content.component.paragraph.zmi.interfaces import IParagraphContainerView, IParagraphInnerEditor
+from pyams_content.features.renderer.zmi.widget import RendererFieldWidget
from pyams_content.interfaces import MANAGE_CONTENT_PERMISSION
+from pyams_content.shared.common.zmi import WfSharedContentPermissionMixin
+from pyams_form.form import AJAXAddForm, ajax_config
from pyams_form.interfaces.form import IInnerForm, IInnerSubForm
from pyams_i18n.interfaces import II18n
+from pyams_pagelet.pagelet import pagelet_config
+from pyams_skin.container import delete_container_element
from pyams_skin.interfaces.viewlet import IToolbarAddingMenu, IWidgetTitleViewletManager
from pyams_skin.layer import IPyAMSLayer
-from pyramid.interfaces import IView
-from z3c.form.interfaces import INPUT_MODE
-
-# import packages
-from pyams_content.component.gallery.paragraph import Gallery
-from pyams_content.component.paragraph.zmi import BaseParagraphAJAXAddForm, BaseParagraphAJAXEditForm, \
- BaseParagraphAddMenu, BaseParagraphPropertiesEditForm, get_json_paragraph_refresh_event, IParagraphEditFormButtons
-from pyams_content.features.renderer.zmi.widget import RendererFieldWidget
-from pyams_content.shared.common.zmi import WfSharedContentPermissionMixin
-from pyams_form.form import ajax_config
-from pyams_pagelet.pagelet import pagelet_config
+from pyams_skin.table import get_table_id
from pyams_skin.viewlet.toolbar import ToolbarAction
from pyams_template.template import template_config
from pyams_utils.adapter import adapter_config
+from pyams_utils.interfaces import ICacheKeyValue
+from pyams_utils.traversing import get_parent
from pyams_utils.url import absolute_url
from pyams_viewlet.viewlet import viewlet_config
from pyams_zmi.form import AdminDialogAddForm, InnerAdminDisplayForm
-from z3c.form import field, button
-from zope.interface import implementer, Interface
from pyams_content import _
@@ -70,7 +73,7 @@
legend = _("Add new gallery")
icon_css_class = 'fa fa-fw fa-picture-o'
- fields = field.Fields(IGalleryParagraph).omit(*PARAGRAPH_HIDDEN_FIELDS)
+ fields = field.Fields(IGalleryParagraph).select('renderer')
edit_permission = MANAGE_CONTENT_PERMISSION
def create(self, data):
@@ -92,21 +95,11 @@
legend = _("Edit gallery properties")
icon_css_class = 'fa fa-fw fa-picture-o'
- fields = field.Fields(IGalleryParagraph).omit(*PARAGRAPH_HIDDEN_FIELDS)
+ fields = field.Fields(IGalleryParagraph).select('renderer')
fields['renderer'].widgetFactory = RendererFieldWidget
edit_permission = MANAGE_CONTENT_PERMISSION
- def get_ajax_output(self, changes):
- updated = changes.get(IBaseGallery, ())
- if 'title' in updated:
- return {
- 'status': 'success',
- 'events': [get_json_paragraph_refresh_event(self.context, self.request), ]
- }
- else:
- return super(self.__class__, self).get_ajax_output(changes)
-
@adapter_config(context=(IGalleryParagraph, IPyAMSLayer), provides=IParagraphInnerEditor)
@implementer(IInnerForm)
@@ -149,7 +142,7 @@
@viewlet_config(name='add-media.menu', context=IGalleryParagraph, view=GalleryContentsView,
manager=IWidgetTitleViewletManager)
-class GalleryMediaAddMenu(WfSharedContentPermissionMixin, ToolbarAction):
+class GalleryParagraphMediaAddMenu(WfSharedContentPermissionMixin, ToolbarAction):
"""Gallery media add menu"""
label = _("Add media(s)")
@@ -157,3 +150,47 @@
url = 'add-media.html'
modal_target = True
stop_propagation = True
+
+
+@pagelet_config(name='add-media.html', context=IGalleryParagraph, layer=IPyAMSLayer,
+ permission=MANAGE_CONTENT_PERMISSION)
+@ajax_config(name='add-media.json', context=IGalleryParagraph, layer=IPyAMSLayer, base=AJAXAddForm)
+class GalleryParagraphMediaAddForm(GalleryMediaAddForm):
+ """Gallery media add form"""
+
+ def get_ajax_output(self, changes):
+ ITransactionManager(self.context).commit()
+ medias = []
+ for media in changes:
+ medias.append(render('templates/gallery-media.pt',
+ {'media': media}, request=self.request))
+ output = {
+ 'status': 'success',
+ 'message': self.request.localizer.translate(_("Media(s) successfully added")),
+ 'events': [
+ get_json_paragraph_refresh_event(self.context, self.request)
+ ],
+ 'callback': 'PyAMS_content.galleries.addMediaCallback',
+ 'options': {
+ 'parent': '{0}::{1}'.format(get_table_id(ParagraphContainerTable,
+ context=get_parent(self.context, IParagraphContainerTarget)),
+ ICacheKeyValue(self.context)),
+ 'medias': medias
+ }
+ }
+ return output
+
+
+@view_config(name='delete-element.json', context=IGalleryParagraph, request_type=IPyAMSLayer,
+ renderer='json', xhr=True)
+def delete_media(request):
+ """Delete media from container"""
+ result = delete_container_element(request, IGalleryParagraph)
+ if result.get('status') == 'success':
+ result.update({
+ 'handle_json': True,
+ 'events': [
+ get_json_paragraph_refresh_event(request.context, request)
+ ]
+ })
+ return result
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_content/component/gallery/zmi/templates/gallery-media.pt Fri Oct 05 10:44:32 2018 +0200
@@ -0,0 +1,58 @@
+<div class="media margin-5 margin-bottom-10 radius-4 padding-5 pull-left text-center"
+ style="position: relative;"
+ tal:attributes="data-ams-element-name media.__name__">
+ <tal:var define="thumbnails tales:thumbnails(media.data);">
+ <tal:if condition="thumbnails">
+ <tal:if condition="media.data.content_type.startswith('image/')">
+ <a class="fancyimg hint" data-toggle
+ data-ams-hint-gravity="sw"
+ title="Zoom image" i18n:attributes="title"
+ tal:define="target thumbnails.get_thumbnail('800x600')"
+ tal:attributes="class 'fancyimg hint {0}'.format('not-visible' if not media.visible else '');
+ href tales:absolute_url(target);
+ rel string:gallery_${context.__name__};">
+ <img class="thumbnail"
+ data-ams-hint-gravity="s"
+ tal:define="thumbnail thumbnails.get_thumbnail('128x128');
+ image_size thumbnail.get_image_size();
+ margin_left 64 - image_size[0] / 2;
+ margin_top 64 - image_size[1] / 2;
+ title i18n:media.title;
+ src tales:absolute_url(thumbnail);"
+ tal:attributes="src string:${src}?_=${tales:timestamp(thumbnail)};
+ id 'media_{0}_{1}'.format(context.__name__, media.__name__);
+ original-title title or '--';
+ style string:margin-left: ${margin_left}px;; margin-right: ${margin_left}px;; margin-top: ${margin_top}px;; margin-bottom: ${margin_top}px;;" />
+ </a>
+ </tal:if>
+ <tal:if condition="not:media.data.content_type.startswith('image/')">
+ <a tal:define="thumbnail thumbnails.get_thumbnail('128x128');
+ target view.get_thumbnail_target(media.data);
+ image_size thumbnail.get_image_size();
+ margin_left 64 - image_size[0] / 2;
+ margin_top 64 - image_size[1] / 2;
+ title i18n:media.title;"
+ tal:omit-tag="not:target"
+ tal:attributes="href target" data-toggle="modal">
+ <img class="thumbnail no-border"
+ data-ams-hint-gravity="s"
+ tal:attributes="src tales:absolute_url(thumbnail);
+ id 'media_{0}_{1}'.format(context.__name__, media.__name__);
+ original-title title or '--';
+ style string:margin-left: ${margin_left}px;; margin-right: ${margin_left}px;; margin-top: ${margin_top}px;; margin-bottom: ${margin_top}px;;" />
+ </a>
+ </tal:if>
+ </tal:if>
+ <tal:if condition="not:thumbnails">
+ <img class="thumbnail hint" src="/--static--/pyams_skin/img/mimetypes/unknown.png"
+ tal:attributes="title i18n:media.title"
+ style="padding: 48px;" />
+ </tal:if>
+ </tal:var>
+ <div class="btn-group margin-top-10"
+ tal:define="actions tales:context_actions(media);">
+ <tal:loop repeat="viewlet actions.viewlets"
+ content="structure viewlet.render()" />
+ </div>
+ <span class="clearfix"></span>
+</div>
--- a/src/pyams_content/component/illustration/__init__.py Thu Sep 06 18:10:04 2018 +0200
+++ b/src/pyams_content/component/illustration/__init__.py Fri Oct 05 10:44:32 2018 +0200
@@ -12,39 +12,33 @@
__docformat__ = 'restructuredtext'
-
-# import standard library
-
-# import interfaces
-from pyams_content.component.illustration.interfaces import IIllustration, IIllustrationTarget, \
- ILLUSTRATION_KEY, ILLUSTRATION_RENDERERS, IBasicIllustration, IBasicIllustrationTarget, BASIC_ILLUSTRATION_KEY, \
- ILinkIllustrationTarget, LINK_ILLUSTRATION_KEY, ILinkIllustration
-from pyams_content.features.checker.interfaces import IContentChecker, MISSING_VALUE, MISSING_LANG_VALUE
-from pyams_file.interfaces import IFileInfo, IImage, IResponsiveImage
-from pyams_i18n.interfaces import INegotiator, II18n, II18nManager
+from persistent import Persistent
+from pyramid.events import subscriber
+from pyramid.threadlocal import get_current_registry
+from zope.container.contained import Contained
+from zope.interface import alsoProvides, implementer
+from zope.lifecycleevent import ObjectAddedEvent
from zope.lifecycleevent.interfaces import IObjectAddedEvent, IObjectModifiedEvent
from zope.location.interfaces import ISublocations
+from zope.schema.fieldproperty import FieldProperty
from zope.traversing.interfaces import ITraversable
-# import packages
-from persistent import Persistent
+from pyams_content import _
+from pyams_content.component.illustration.interfaces import BASIC_ILLUSTRATION_KEY, IBasicIllustration, \
+ IBasicIllustrationTarget, IIllustration, IIllustrationTarget, IIllustrationTargetBase, ILLUSTRATION_KEY, \
+ ILLUSTRATION_RENDERERS, ILinkIllustration, ILinkIllustrationTarget, LINK_ILLUSTRATION_KEY
from pyams_content.features.checker import BaseContentChecker
+from pyams_content.features.checker.interfaces import IContentChecker, MISSING_LANG_VALUE, MISSING_VALUE
from pyams_content.features.renderer import RenderedContentMixin, RenderersVocabulary
+from pyams_file.interfaces import IFileInfo, IImage, IResponsiveImage
+from pyams_i18n.interfaces import II18n, II18nManager, INegotiator
from pyams_i18n.property import I18nFileProperty
-from pyams_utils.adapter import adapter_config, ContextAdapter, get_annotation_adapter
+from pyams_utils.adapter import ContextAdapter, adapter_config, get_annotation_adapter
from pyams_utils.factory import factory_config
-from pyams_utils.registry import query_utility, get_utility, get_global_registry
+from pyams_utils.registry import get_global_registry, get_utility, query_utility
from pyams_utils.request import check_request
from pyams_utils.traversing import get_parent
from pyams_utils.vocabulary import vocabulary_config
-from pyramid.events import subscriber
-from pyramid.threadlocal import get_current_registry
-from zope.container.contained import Contained
-from zope.interface import implementer, alsoProvides
-from zope.lifecycleevent import ObjectCreatedEvent, ObjectAddedEvent
-from zope.schema.fieldproperty import FieldProperty
-
-from pyams_content import _
@implementer(IBasicIllustration)
@@ -77,6 +71,15 @@
return False
+@implementer(IIllustration)
+@factory_config(provided=IIllustration)
+class Illustration(RenderedContentMixin, BasicIllustration):
+ """Illustration persistent class"""
+
+ description = FieldProperty(IIllustration['description'])
+ renderer = FieldProperty(IIllustration['renderer'])
+
+
@adapter_config(context=IBasicIllustrationTarget, provides=IIllustration)
def basic_illustration_factory(context):
"""Basic illustration factory"""
@@ -89,15 +92,6 @@
callback=illustration_callback)
-@implementer(IIllustration)
-@factory_config(provided=IIllustration)
-class Illustration(RenderedContentMixin, BasicIllustration):
- """Illustration persistent class"""
-
- description = FieldProperty(IIllustration['description'])
- renderer = FieldProperty(IIllustration['renderer'])
-
-
@adapter_config(context=IIllustrationTarget, provides=IIllustration)
def illustration_factory(context):
"""Illustration factory"""
@@ -151,7 +145,7 @@
update_illustration_properties(illustration)
-@adapter_config(name='illustration', context=IBasicIllustrationTarget, provides=ITraversable)
+@adapter_config(name='illustration', context=IIllustrationTargetBase, provides=ITraversable)
class IllustrationNamespace(ContextAdapter):
"""++illustration++ namespace adapter"""
@@ -160,13 +154,13 @@
return registry.queryAdapter(self.context, IIllustration, name=name)
-@adapter_config(name='illustration', context=IBasicIllustrationTarget, provides=ISublocations)
+@adapter_config(name='illustration', context=IIllustrationTargetBase, provides=ISublocations)
class IllustrationSublocations(ContextAdapter):
"""Illustration sub-locations adapter"""
def sublocations(self):
registry = get_global_registry()
- for name, adapter in registry.getAdapters((self, ), IBasicIllustration):
+ for name, adapter in registry.getAdapters((self,), IBasicIllustration):
yield adapter
@@ -185,7 +179,7 @@
langs = manager.get_languages()
else:
negotiator = get_utility(INegotiator)
- langs = (negotiator.server_language, )
+ langs = (negotiator.server_language,)
missing_value = translate(MISSING_VALUE)
missing_lang_value = translate(MISSING_LANG_VALUE)
i18n = II18n(self.context)
@@ -204,7 +198,7 @@
output.append(missing_lang_value.format(field=translate(IIllustration[attr].title),
lang=lang))
if has_data:
- for attr in ('author', ):
+ for attr in ('author',):
value = getattr(self.context, attr)
if not value:
output.append(missing_value.format(field=translate(IIllustration[attr].title)))
--- a/src/pyams_content/component/illustration/interfaces/__init__.py Thu Sep 06 18:10:04 2018 +0200
+++ b/src/pyams_content/component/illustration/interfaces/__init__.py Fri Oct 05 10:44:32 2018 +0200
@@ -12,20 +12,14 @@
__docformat__ = 'restructuredtext'
-
-# import standard library
-
-# import interfaces
-from pyams_content.component.paragraph.interfaces import IBaseParagraph
-from pyams_content.features.renderer.interfaces import IRenderedContent
-from pyams_i18n.schema import I18nTextLineField, I18nTextField, I18nThumbnailMediaField
from zope.annotation.interfaces import IAttributeAnnotatable
-
-# import packages
from zope.interface import Interface
from zope.schema import Choice, TextLine
from pyams_content import _
+from pyams_content.component.paragraph.interfaces import IBaseParagraph
+from pyams_content.features.renderer.interfaces import IRenderedContent
+from pyams_i18n.schema import I18nTextField, I18nTextLineField, I18nThumbnailMediaField
#
@@ -79,7 +73,11 @@
"""Navigation link illustration interface"""
-class IBasicIllustrationTarget(IAttributeAnnotatable):
+class IIllustrationTargetBase(IAttributeAnnotatable):
+ """Illustration target base interface"""
+
+
+class IBasicIllustrationTarget(IIllustrationTargetBase):
"""Basic illustration target marker interface"""
@@ -87,7 +85,7 @@
"""Illustration target interface"""
-class ILinkIllustrationTarget(IBasicIllustrationTarget):
+class ILinkIllustrationTarget(IIllustrationTargetBase):
"""Link illustration target interface"""
--- a/src/pyams_content/component/illustration/zmi/__init__.py Thu Sep 06 18:10:04 2018 +0200
+++ b/src/pyams_content/component/illustration/zmi/__init__.py Fri Oct 05 10:44:32 2018 +0200
@@ -12,30 +12,25 @@
__docformat__ = 'restructuredtext'
+from transaction.interfaces import ITransactionManager
+from z3c.form import field
-# import standard library
-
-# import interfaces
+from pyams_content import _
from pyams_content.component.illustration.interfaces import IBasicIllustration, IBasicIllustrationTarget, \
IIllustration, IIllustrationTarget, ILinkIllustrationTarget
-from pyams_content.component.paragraph import IBaseParagraph
-from pyams_form.interfaces.form import IInnerSubForm, IWidgetsPrefixViewletsManager
-from pyams_skin.layer import IPyAMSLayer
-from pyams_zmi.interfaces import IPropertiesEditForm
-from transaction.interfaces import ITransactionManager
-
# import packages
from pyams_content.component.illustration.zmi.paragraph import ParagraphContainerIllustrationMarker
+from pyams_content.component.paragraph import IBaseParagraph
from pyams_content.component.paragraph.zmi import get_json_paragraph_markers_refresh_event
from pyams_content.features.renderer.zmi.widget import RendererFieldWidget
+from pyams_form.interfaces.form import IInnerSubForm, IWidgetsPrefixViewletsManager
from pyams_skin.event import get_json_form_refresh_event, get_json_widget_refresh_event
+from pyams_skin.layer import IPyAMSLayer
from pyams_template.template import template_config
from pyams_utils.adapter import adapter_config
from pyams_viewlet.viewlet import viewlet_config, Viewlet, EmptyViewlet
from pyams_zmi.form import InnerAdminEditForm
-from z3c.form import field
-
-from pyams_content import _
+from pyams_zmi.interfaces import IPropertiesEditForm
#
--- a/src/pyams_content/component/illustration/zmi/paragraph.py Thu Sep 06 18:10:04 2018 +0200
+++ b/src/pyams_content/component/illustration/zmi/paragraph.py Fri Oct 05 10:44:32 2018 +0200
@@ -12,40 +12,35 @@
__docformat__ = 'restructuredtext'
-
-# import standard library
-
-# import interfaces
-from pyams_content.component.paragraph.interfaces import IParagraphContainerTarget, \
- IParagraphContainer
-from pyams_content.component.illustration.interfaces import IIllustrationTarget, IIllustration, \
- IIllustrationParagraph, ILLUSTRATION_PARAGRAPH_TYPE
-from pyams_content.component.paragraph.zmi.interfaces import IParagraphInnerEditor, IParagraphContainerView, \
- IParagraphContainerTable, IParagraphTitleToolbar
-from pyams_content.interfaces import MANAGE_CONTENT_PERMISSION
-from pyams_form.interfaces.form import IInnerForm
-from pyams_skin.interfaces.viewlet import IToolbarAddingMenu
-from pyams_skin.layer import IPyAMSLayer
-from pyams_utils.interfaces import VIEW_SYSTEM_PERMISSION
from transaction.interfaces import ITransactionManager
+from z3c.form import field, button
from z3c.form.interfaces import INPUT_MODE
-
-# import packages
-from pyams_content.component.illustration.paragraph import Illustration
-from pyams_content.component.paragraph.zmi import BaseParagraphAJAXAddForm, BaseParagraphAJAXEditForm, \
- BaseParagraphAddMenu, BaseParagraphPropertiesEditForm, get_json_paragraph_refresh_event, IParagraphEditFormButtons
-from pyams_content.features.renderer.zmi.widget import RendererFieldWidget
-from pyams_form.form import ajax_config
-from pyams_pagelet.pagelet import pagelet_config
-from pyams_skin.event import get_json_form_refresh_event
-from pyams_template.template import template_config
-from pyams_utils.adapter import adapter_config
-from pyams_viewlet.viewlet import viewlet_config, Viewlet
-from pyams_zmi.form import AdminDialogAddForm
-from z3c.form import field, button
from zope.interface import implementer
from pyams_content import _
+from pyams_content.component.illustration.interfaces import IIllustrationTarget, IIllustration, \
+ IIllustrationParagraph, ILLUSTRATION_PARAGRAPH_TYPE
+# import packages
+from pyams_content.component.illustration.paragraph import Illustration
+from pyams_content.component.paragraph.interfaces import IParagraphContainerTarget, \
+ IParagraphContainer
+from pyams_content.component.paragraph.zmi import BaseParagraphAJAXAddForm, BaseParagraphAJAXEditForm, \
+ BaseParagraphAddMenu, BaseParagraphPropertiesEditForm, get_json_paragraph_refresh_event, IParagraphEditFormButtons
+from pyams_content.component.paragraph.zmi.interfaces import IParagraphInnerEditor, IParagraphContainerView, \
+ IParagraphContainerTable, IParagraphTitleToolbar
+from pyams_content.features.renderer.zmi.widget import RendererFieldWidget
+from pyams_content.interfaces import MANAGE_CONTENT_PERMISSION
+from pyams_form.form import ajax_config
+from pyams_form.interfaces.form import IInnerForm
+from pyams_pagelet.pagelet import pagelet_config
+from pyams_skin.event import get_json_form_refresh_event
+from pyams_skin.interfaces.viewlet import IToolbarAddingMenu
+from pyams_skin.layer import IPyAMSLayer
+from pyams_template.template import template_config
+from pyams_utils.adapter import adapter_config
+from pyams_utils.interfaces import VIEW_SYSTEM_PERMISSION
+from pyams_viewlet.viewlet import viewlet_config, Viewlet
+from pyams_zmi.form import AdminDialogAddForm
#
@@ -74,8 +69,8 @@
dialog_class = 'modal-large'
icon_css_class = 'fa fa-fw fa-file-image-o'
- fields = field.Fields(IIllustrationParagraph).select('data', 'title', 'alt_title', 'description',
- 'author', 'renderer')
+ fields = field.Fields(IIllustrationParagraph).select('data', 'title', 'alt_title',
+ 'author', 'description', 'renderer')
edit_permission = MANAGE_CONTENT_PERMISSION
@@ -99,8 +94,8 @@
dialog_class = 'modal-large'
icon_css_class = 'fa fa-fw fa-file-image-o'
- fields = field.Fields(IIllustrationParagraph).select('data', 'title', 'alt_title', 'description',
- 'author', 'renderer')
+ fields = field.Fields(IIllustrationParagraph).select('data', 'title', 'alt_title',
+ 'author', 'description', 'renderer')
fields['renderer'].widgetFactory = RendererFieldWidget
edit_permission = MANAGE_CONTENT_PERMISSION
--- a/src/pyams_content/component/keynumber/portlet/zmi/templates/keynumber-preview.pt Thu Sep 06 18:10:04 2018 +0200
+++ b/src/pyams_content/component/keynumber/portlet/zmi/templates/keynumber-preview.pt Fri Oct 05 10:44:32 2018 +0200
@@ -23,7 +23,7 @@
</ul>
<div tal:define="visible_links list(settings.links.get_visible_items(request))"
tal:condition="visible_links">
- <u><i18n:var translate="" >Associated links</i18n:var> :</u>
+ <u><i18n:var translate>Associated links</i18n:var> :</u>
<ul>
<li tal:repeat="link visible_links">
<i class="fa fa-fw fa-eye-slash text-danger hint opaque align-base"
--- a/src/pyams_content/component/keynumber/zmi/paragraph.py Thu Sep 06 18:10:04 2018 +0200
+++ b/src/pyams_content/component/keynumber/zmi/paragraph.py Fri Oct 05 10:44:32 2018 +0200
@@ -40,7 +40,7 @@
from pyams_viewlet.viewlet import viewlet_config
from pyams_zmi.form import AdminDialogAddForm
from z3c.form import field, button
-from zope.interface import implementer, Interface
+from zope.interface import implementer
from pyams_content import _
--- a/src/pyams_content/component/links/zmi/container.py Thu Sep 06 18:10:04 2018 +0200
+++ b/src/pyams_content/component/links/zmi/container.py Fri Oct 05 10:44:32 2018 +0200
@@ -16,7 +16,8 @@
# import standard library
# import interfaces
-from pyams_content.component.association.interfaces import IAssociationContainer, IAssociationContainerTarget, IAssociationInfo
+from pyams_content.component.association.interfaces import IAssociationContainer, IAssociationContainerTarget, \
+ IAssociationInfo
from pyams_content.component.extfile.interfaces import IBaseExtFile
from pyams_content.component.links.interfaces import IBaseLink
from pyams_i18n.interfaces import II18n
--- a/src/pyams_content/component/paragraph/audio.py Thu Sep 06 18:10:04 2018 +0200
+++ b/src/pyams_content/component/paragraph/audio.py Fri Oct 05 10:44:32 2018 +0200
@@ -15,25 +15,25 @@
# import standard library
+from zope.interface import implementer
+from zope.schema.fieldproperty import FieldProperty
+
# import interfaces
from pyams_content.component.illustration.interfaces import IBasicIllustrationTarget
+# import packages
+from pyams_content.component.paragraph import BaseParagraph, BaseParagraphContentChecker, BaseParagraphFactory
from pyams_content.component.paragraph.interfaces import IParagraphFactory
from pyams_content.component.paragraph.interfaces.audio import IAudioParagraph, AUDIO_PARAGRAPH_TYPE, \
AUDIO_PARAGRAPH_RENDERERS, AUDIO_PARAGRAPH_NAME
from pyams_content.features.checker.interfaces import IContentChecker, MISSING_VALUE, MISSING_LANG_VALUE
-from pyams_i18n.interfaces import II18nManager, INegotiator, II18n
-
-# import packages
-from pyams_content.component.paragraph import BaseParagraph, BaseParagraphContentChecker, BaseParagraphFactory
from pyams_content.features.renderer import RenderersVocabulary
from pyams_file.property import FileProperty
+from pyams_i18n.interfaces import II18nManager, INegotiator, II18n
from pyams_utils.adapter import adapter_config
from pyams_utils.factory import factory_config
from pyams_utils.registry import utility_config, get_utility
from pyams_utils.traversing import get_parent
from pyams_utils.vocabulary import vocabulary_config
-from zope.interface import implementer
-from zope.schema.fieldproperty import FieldProperty
@implementer(IAudioParagraph, IBasicIllustrationTarget)
@@ -45,8 +45,8 @@
icon_hint = AUDIO_PARAGRAPH_NAME
data = FileProperty(IAudioParagraph['data'])
+ author = FieldProperty(IAudioParagraph['author'])
description = FieldProperty(IAudioParagraph['description'])
- author = FieldProperty(IAudioParagraph['author'])
renderer = FieldProperty(IAudioParagraph['renderer'])
--- a/src/pyams_content/component/paragraph/container.py Thu Sep 06 18:10:04 2018 +0200
+++ b/src/pyams_content/component/paragraph/container.py Fri Oct 05 10:44:32 2018 +0200
@@ -12,24 +12,21 @@
__docformat__ = 'restructuredtext'
-
-# import standard library
-
+from ZODB.interfaces import IBroken
from zope.interface import implementer
from zope.location.interfaces import ISublocations
from zope.traversing.interfaces import ITraversable
-from pyams_content import _
-# import interfaces
from pyams_content.component.paragraph.interfaces import IParagraphFactory, IParagraphContainer, \
IParagraphContainerTarget, PARAGRAPH_CONTAINER_KEY
-# import packages
from pyams_content.features.checker import BaseContentChecker
from pyams_content.features.checker.interfaces import IContentChecker
from pyams_utils.adapter import adapter_config, ContextAdapter, get_annotation_adapter
from pyams_utils.container import BTreeOrderedContainer
from pyams_utils.registry import get_global_registry
+from pyams_content import _
+
@implementer(IParagraphContainer)
class ParagraphContainer(BTreeOrderedContainer):
@@ -46,11 +43,11 @@
if names:
for name in names:
paragraph = self.get(name)
- if (paragraph is not None) and paragraph.visible:
+ if (paragraph is not None) and (not IBroken.providedBy(paragraph)) and paragraph.visible:
yield paragraph
else:
for paragraph in self.values():
- if not paragraph.visible:
+ if IBroken.providedBy(paragraph) or not paragraph.visible:
continue
if anchors_only and not paragraph.anchor:
continue
@@ -107,7 +104,7 @@
if not paragraph.visible:
continue
visible = True
- for name, checker in sorted(registry.getAdapters((paragraph, ), IContentChecker),
+ for name, checker in sorted(registry.getAdapters((paragraph,), IContentChecker),
key=lambda x: x[1].weight):
if name:
output.append('<div class="padding-left-20">')
--- a/src/pyams_content/component/paragraph/interfaces/audio.py Thu Sep 06 18:10:04 2018 +0200
+++ b/src/pyams_content/component/paragraph/interfaces/audio.py Fri Oct 05 10:44:32 2018 +0200
@@ -15,16 +15,14 @@
# import standard library
+from zope.schema import TextLine, Choice
+
+from pyams_content import _
# import interfaces
from pyams_content.component.paragraph.interfaces import IBaseParagraph
-
# import packages
from pyams_file.schema import AudioField
from pyams_i18n.schema import I18nTextField, I18nTextLineField
-from zope.schema import TextLine, Choice
-
-from pyams_content import _
-
#
# Audio paragraph
@@ -45,14 +43,14 @@
title = I18nTextLineField(title=_("Legend"),
required=False)
+ author = TextLine(title=_("Author"),
+ description=_("Name of document's author"),
+ required=False)
+
description = I18nTextField(title=_("Description"),
description=_("File description displayed by front-office template"),
required=False)
- author = TextLine(title=_("Author"),
- description=_("Name of document's author"),
- required=False)
-
renderer = Choice(title=_("Audio template"),
description=_("Presentation template used for this audio file"),
vocabulary=AUDIO_PARAGRAPH_RENDERERS,
--- a/src/pyams_content/component/paragraph/interfaces/contact.py Thu Sep 06 18:10:04 2018 +0200
+++ b/src/pyams_content/component/paragraph/interfaces/contact.py Fri Oct 05 10:44:32 2018 +0200
@@ -24,6 +24,7 @@
try:
from pyams_gis.schema import GeoPointField
except ImportError:
+ GeoPointField = None
have_gis = False
else:
have_gis = True
--- a/src/pyams_content/component/paragraph/interfaces/map.py Thu Sep 06 18:10:04 2018 +0200
+++ b/src/pyams_content/component/paragraph/interfaces/map.py Fri Oct 05 10:44:32 2018 +0200
@@ -16,6 +16,7 @@
try:
from pyams_gis.schema import GeoPointField
except ImportError:
+ GeoPointField = None
have_gis = False
else:
have_gis = True
@@ -32,7 +33,6 @@
from pyams_content import _
-
#
# Map paragraph
#
--- a/src/pyams_content/component/paragraph/interfaces/milestone.py Thu Sep 06 18:10:04 2018 +0200
+++ b/src/pyams_content/component/paragraph/interfaces/milestone.py Fri Oct 05 10:44:32 2018 +0200
@@ -15,19 +15,17 @@
# import standard library
-# import interfaces
-from pyams_content.component.paragraph import IBaseParagraph
-from pyams_content.interfaces.container import IOrderedContainer
from zope.annotation.interfaces import IAttributeAnnotatable
-
-# import packages
-from pyams_i18n.schema import I18nTextLineField, I18nTextField
from zope.container.constraints import containers, contains
from zope.interface import Interface
from zope.schema import Bool, Choice
from pyams_content import _
-
+# import interfaces
+from pyams_content.component.paragraph import IBaseParagraph
+from pyams_content.interfaces.container import IOrderedContainer
+# import packages
+from pyams_i18n.schema import I18nTextLineField, I18nTextField
MILESTONE_CONTAINER_KEY = 'pyams_content.milestones'
@@ -81,8 +79,8 @@
"""Milestones paragraph interface"""
body = I18nTextField(title=_("Associated text"),
- description=_("Additional text associated to this milestone Paragraph"),
- required=False)
+ description=_("Additional text associated to this milestone paragraph"),
+ required=False)
renderer = Choice(title=_("Milestones template"),
description=_("Presentation template used for milestones"),
--- a/src/pyams_content/component/paragraph/interfaces/video.py Thu Sep 06 18:10:04 2018 +0200
+++ b/src/pyams_content/component/paragraph/interfaces/video.py Fri Oct 05 10:44:32 2018 +0200
@@ -15,16 +15,14 @@
# import standard library
+from zope.schema import TextLine, Choice
+
+from pyams_content import _
# import interfaces
from pyams_content.component.paragraph.interfaces import IBaseParagraph
-
# import packages
from pyams_file.schema import VideoField
from pyams_i18n.schema import I18nTextField, I18nTextLineField
-from zope.schema import TextLine, Choice
-
-from pyams_content import _
-
#
# HTML paragraph
@@ -45,14 +43,14 @@
title = I18nTextLineField(title=_("Legend"),
required=False)
+ author = TextLine(title=_("Author"),
+ description=_("Name of document's author"),
+ required=True)
+
description = I18nTextField(title=_("Associated text"),
description=_("Video description displayed by front-office template"),
required=False)
- author = TextLine(title=_("Author"),
- description=_("Name of document's author"),
- required=True)
-
renderer = Choice(title=_("Video template"),
description=_("Presentation template used for this video"),
vocabulary=VIDEO_PARAGRAPH_RENDERERS,
--- a/src/pyams_content/component/paragraph/milestone.py Thu Sep 06 18:10:04 2018 +0200
+++ b/src/pyams_content/component/paragraph/milestone.py Fri Oct 05 10:44:32 2018 +0200
@@ -15,40 +15,38 @@
# import standard library
from persistent import Persistent
+from pyramid.events import subscriber
+from zope.container.contained import Contained
+from zope.container.ordered import OrderedContainer
+from zope.interface import implementer
+from zope.lifecycleevent import ObjectModifiedEvent
+from zope.lifecycleevent.interfaces import IObjectAddedEvent, IObjectModifiedEvent, IObjectRemovedEvent
+from zope.location import locate
+from zope.location.interfaces import ISublocations
+from zope.schema.fieldproperty import FieldProperty
+from zope.traversing.interfaces import ITraversable
+# import interfaces
+from pyams_catalog.utils import index_object
+from pyams_content import _
+from pyams_content.component.paragraph import BaseParagraph, BaseParagraphFactory, BaseParagraphContentChecker
# import packages
from pyams_content.component.paragraph.interfaces import IParagraphContainerTarget, IParagraphContainer, \
IParagraphFactory
from pyams_content.component.paragraph.interfaces.milestone import IMilestone, IMilestoneContainer, \
IMilestoneContainerTarget, MILESTONE_CONTAINER_KEY, IMilestoneParagraph, MILESTONE_PARAGRAPH_TYPE, \
MILESTONE_PARAGRAPH_RENDERERS, MILESTONE_PARAGRAPH_NAME
+from pyams_content.features.checker import BaseContentChecker
from pyams_content.features.checker.interfaces import IContentChecker, MISSING_VALUE, MISSING_LANG_VALUE, ERROR_VALUE
+from pyams_content.features.renderer import RenderersVocabulary
from pyams_form.interfaces.form import IFormContextPermissionChecker
from pyams_i18n.interfaces import II18n, II18nManager, INegotiator
-from zope.lifecycleevent.interfaces import IObjectAddedEvent, IObjectModifiedEvent, IObjectRemovedEvent
-from zope.location.interfaces import ISublocations
-from zope.traversing.interfaces import ITraversable
-
-# import interfaces
-from pyams_catalog.utils import index_object
-from pyams_content.component.paragraph import BaseParagraph, BaseParagraphFactory, BaseParagraphContentChecker
-from pyams_content.features.checker import BaseContentChecker
-from pyams_content.features.renderer import RenderersVocabulary
from pyams_utils.adapter import adapter_config, ContextAdapter, get_annotation_adapter
from pyams_utils.factory import factory_config
from pyams_utils.registry import get_current_registry, get_utility, utility_config
from pyams_utils.request import check_request
from pyams_utils.traversing import get_parent
from pyams_utils.vocabulary import vocabulary_config
-from pyramid.events import subscriber
-from zope.container.contained import Contained
-from zope.container.ordered import OrderedContainer
-from zope.interface import implementer
-from zope.lifecycleevent import ObjectCreatedEvent, ObjectModifiedEvent
-from zope.location import locate
-from zope.schema.fieldproperty import FieldProperty
-
-from pyams_content import _
#
@@ -220,6 +218,7 @@
icon_class = 'fa-arrows-h'
icon_hint = MILESTONE_PARAGRAPH_NAME
+
body = FieldProperty(IMilestoneParagraph['body'])
renderer = FieldProperty(IMilestoneParagraph['renderer'])
--- a/src/pyams_content/component/paragraph/pictogram.py Thu Sep 06 18:10:04 2018 +0200
+++ b/src/pyams_content/component/paragraph/pictogram.py Fri Oct 05 10:44:32 2018 +0200
@@ -26,7 +26,7 @@
from pyams_content.reference.pictograms.interfaces import IPictogramTable
from pyams_form.interfaces.form import IFormContextPermissionChecker
from pyams_i18n.interfaces import II18n, II18nManager, INegotiator
-from zope.lifecycleevent import IObjectAddedEvent, ObjectModifiedEvent, ObjectCreatedEvent
+from zope.lifecycleevent import IObjectAddedEvent, ObjectModifiedEvent
from zope.location.interfaces import ISublocations
from zope.traversing.interfaces import ITraversable
--- a/src/pyams_content/component/paragraph/portlet/__init__.py Thu Sep 06 18:10:04 2018 +0200
+++ b/src/pyams_content/component/paragraph/portlet/__init__.py Fri Oct 05 10:44:32 2018 +0200
@@ -22,17 +22,23 @@
# import packages
from pyams_content.component.paragraph import BaseParagraph
# import interfaces
-from pyams_content.component.paragraph.interfaces import IParagraphFactory, IParagraphContainerTarget, \
- IParagraphContainer
-from pyams_content.component.paragraph.portlet.interfaces import IParagraphContainerPortletSettings
+from pyams_content.component.paragraph.interfaces import IParagraphContainer, IParagraphContainerTarget, \
+ IParagraphFactory
+from pyams_content.component.paragraph.portlet.interfaces import IParagraphContainerPortletSettings, \
+ IParagraphNavigationPortletSettings
from pyams_i18n.interfaces import II18n
-from pyams_portal.portlet import PortletSettings, portlet_config, Portlet
+from pyams_portal.portlet import Portlet, PortletSettings, portlet_config
from pyams_utils.factory import factory_config
from pyams_utils.interfaces import VIEW_PERMISSION
from pyams_utils.registry import get_global_registry
from pyams_utils.request import check_request
from pyams_utils.traversing import get_parent
+
+#
+# Paragraphs container portlet
+#
+
PARAGRAPH_CONTAINER_PORTLET_NAME = 'pyams_content.portlet.paragraphs'
@@ -76,4 +82,58 @@
name = PARAGRAPH_CONTAINER_PORTLET_NAME
label = _("Content paragraphs")
+ toolbar_css_class = 'fa fa-fw fa-2x fa-paragraph'
+
settings_factory = IParagraphContainerPortletSettings
+
+
+#
+# Paragraphs navigation portlet
+#
+
+PARAGRAPH_NAVIGATION_PORTLET_NAME = 'pyams_content.portlet.paragraphs.navigation'
+
+
+@implementer(IParagraphNavigationPortletSettings)
+@factory_config(provided=IParagraphNavigationPortletSettings)
+class ParagraphNavigationPortletSettings(PortletSettings):
+ """Paragraph navigation portlet settings"""
+
+ paragraphs = FieldProperty(IParagraphNavigationPortletSettings['paragraphs'])
+ factories = FieldProperty(IParagraphNavigationPortletSettings['factories'])
+ anchors_only = FieldProperty(IParagraphNavigationPortletSettings['anchors_only'])
+
+ def get_paragraphs_labels(self):
+ if not self.paragraphs:
+ yield '--'
+ else:
+ target = get_parent(self, IParagraphContainerTarget)
+ if target is not None:
+ container = IParagraphContainer(target)
+ for name in self.paragraphs:
+ paragraph = container.get(name)
+ if name is not None:
+ yield II18n(paragraph).query_attribute('title') or BaseParagraph.empty_title
+
+ def get_paragraph_types_labels(self):
+ if not self.factories:
+ yield '--'
+ else:
+ request = check_request()
+ registry = get_global_registry()
+ for factory_name in self.factories:
+ factory = registry.queryUtility(IParagraphFactory, name=factory_name)
+ if factory is not None:
+ yield request.localizer.translate(factory.name)
+
+
+@portlet_config(permission=VIEW_PERMISSION)
+class ParagraphNavigationPortlet(Portlet):
+ """Paragraphs navigation portlet"""
+
+ name = PARAGRAPH_NAVIGATION_PORTLET_NAME
+ label = _("Paragraphs navigation anchors")
+
+ toolbar_css_class = 'fa fa-fw fa-2x fa-arrows-v'
+
+ settings_factory = IParagraphNavigationPortletSettings
--- a/src/pyams_content/component/paragraph/portlet/interfaces/__init__.py Thu Sep 06 18:10:04 2018 +0200
+++ b/src/pyams_content/component/paragraph/portlet/interfaces/__init__.py Fri Oct 05 10:44:32 2018 +0200
@@ -16,7 +16,7 @@
# import standard library
# import packages
-from zope.schema import Bool, Set, Choice, List
+from zope.schema import Bool, Choice, List, Set
from pyams_content import _
# import interfaces
@@ -44,3 +44,25 @@
description=_("If 'yes', only paragraphs set as 'anchors' will be selected"),
required=True,
default=False)
+
+
+class IParagraphNavigationPortletSettings(IPortletSettings):
+ """Paragraphs container navigation settings interface"""
+
+ paragraphs = List(title=_("Selected paragraphs"),
+ description=_("List of paragraphs selected for navigation; an empty selection means that "
+ "all paragraphs will be selectable by following filters; otherwise, "
+ "this selection will have priority"),
+ value_type=Choice(vocabulary='PyAMS content paragraphs'),
+ required=False)
+
+ factories = Set(title=_("Paragraph types"),
+ description=_("Select list of paragraph types you want to use for navigation; an empty "
+ "selection means that all paragraphs types will be selected"),
+ required=False,
+ value_type=Choice(vocabulary=PARAGRAPH_FACTORIES_VOCABULARY))
+
+ anchors_only = Bool(title=_("Anchors only?"),
+ description=_("If 'no', all paragraphs will be used as navigation anchors"),
+ required=True,
+ default=True)
--- a/src/pyams_content/component/paragraph/portlet/zmi/__init__.py Thu Sep 06 18:10:04 2018 +0200
+++ b/src/pyams_content/component/paragraph/portlet/zmi/__init__.py Fri Oct 05 10:44:32 2018 +0200
@@ -12,16 +12,12 @@
__docformat__ = 'restructuredtext'
-
-# import standard library
-
from zope.interface import Interface, alsoProvides
from pyams_content import _
-# import interfaces
from pyams_content.component.paragraph.interfaces import IParagraphContainerTarget
+from pyams_content.component.paragraph.portlet import IParagraphNavigationPortletSettings
from pyams_content.component.paragraph.portlet.interfaces import IParagraphContainerPortletSettings
-# import packages
from pyams_form.form import AJAXEditForm
from pyams_form.interfaces.form import IInnerTabForm
from pyams_pagelet.interfaces import IPagelet
@@ -37,6 +33,10 @@
from pyams_utils.traversing import get_parent
+#
+# Paragraphs container portlet
+#
+
@pagelet_config(name='properties.html', context=IParagraphContainerPortletSettings, layer=IPyAMSLayer,
permission=VIEW_SYSTEM_PERMISSION)
class ParagraphContainerPortletSettingsEditor(PortletSettingsEditor):
@@ -83,6 +83,61 @@
@adapter_config(context=(Interface, IPyAMSLayer, Interface, IParagraphContainerPortletSettings),
provides=IPortletPreviewer)
-@template_config(template='templates/preview.pt', layer=IPyAMSLayer)
+@template_config(template='templates/container-preview.pt', layer=IPyAMSLayer)
class ParagraphContainerPortletPreviewer(PortletPreviewer):
"""Paragraph container portlet previewer"""
+
+
+#
+# Paragraphs navigation portlet
+#
+
+@pagelet_config(name='properties.html', context=IParagraphNavigationPortletSettings, layer=IPyAMSLayer,
+ permission=VIEW_SYSTEM_PERMISSION)
+class ParagraphNavigationPortletSettingsEditor(PortletSettingsEditor):
+ """Paragraphs navigation portlet settings editor"""
+
+ settings = IParagraphNavigationPortletSettings
+
+
+@adapter_config(name='properties', context=(Interface, IPyAMSLayer, ParagraphNavigationPortletSettingsEditor),
+ provides=IInnerTabForm)
+class ParagraphNavigationPortletSettingsPropertiesEditor(PortletSettingsPropertiesEditor):
+ """Paragraphs navigation portlet settings editor"""
+
+ @property
+ def fields(self):
+ fields = super(ParagraphNavigationPortletSettingsPropertiesEditor, self).fields
+ container = get_parent(self.context, IParagraphContainerTarget)
+ if container is None:
+ fields = fields.omit('paragraphs')
+ return fields
+
+ def updateWidgets(self, prefix=None):
+ super(ParagraphNavigationPortletSettingsPropertiesEditor, self).updateWidgets(prefix)
+ if 'paragraphs' in self.widgets:
+ widget = self.widgets['paragraphs']
+ widget.object_data = {
+ 'ams-select2-placeholder': self.request.localizer.translate(
+ _("No filter, all paragraphs selected"))
+ }
+ alsoProvides(widget, IObjectData)
+ if 'factories' in self.widgets:
+ widget = self.widgets['factories']
+ widget.object_data = {
+ 'ams-select2-placeholder': self.request.localizer.translate(
+ _("No filter, all paragraph types selected"))
+ }
+ alsoProvides(widget, IObjectData)
+
+
+@adapter_config(name='properties.json', context=(IParagraphNavigationPortletSettings, IPyAMSLayer), provides=IPagelet)
+class ParagraphNavigationPortletConfigurationAJAXEditor(AJAXEditForm, ParagraphNavigationPortletSettingsEditor):
+ """Paragraphs navigation portlet settings editor, JSON renderer"""
+
+
+@adapter_config(context=(Interface, IPyAMSLayer, Interface, IParagraphNavigationPortletSettings),
+ provides=IPortletPreviewer)
+@template_config(template='templates/navigation-preview.pt', layer=IPyAMSLayer)
+class ParagraphNavigationPortletPreviewer(PortletPreviewer):
+ """Paragraphs navigation portlet previewer"""
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_content/component/paragraph/portlet/zmi/templates/container-preview.pt Fri Oct 05 10:44:32 2018 +0200
@@ -0,0 +1,21 @@
+<tal:var define="settings view.settings" i18n:domain="pyams_content">
+ <div class="padding-5" tal:condition="settings.paragraphs">
+ <i class="fa fa-fw fa-${'check-' if settings.paragraphs else ''}square-o"></i>
+ <span i18n:translate="">Selected paragraphs: </span>
+ <ul>
+ <li tal:repeat="label settings.get_paragraphs_labels()">${label}</li>
+ </ul>
+ </div>
+ <tal:if condition="not:settings.paragraphs">
+ <div class="padding-5" i18n:translate="">Paragraphs filters:</div>
+ <div class="padding-x-10">
+ <i class="fa fa-fw fa-${'check-' if settings.factories else ''}square-o"></i>
+ <span i18n:translate="">Selected paragraph types: </span>
+ ${', '.join(settings.get_paragraph_types_labels())}
+ </div>
+ <div class="padding-x-10">
+ <i class="fa fa-fw fa-${'check-' if settings.anchors_only else ''}square-o"></i>
+ <span i18n:translate="">Only display anchors</span>
+ </div>
+ </tal:if>
+</tal:var>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_content/component/paragraph/portlet/zmi/templates/navigation-preview.pt Fri Oct 05 10:44:32 2018 +0200
@@ -0,0 +1,21 @@
+<tal:var define="settings view.settings" i18n:domain="pyams_content">
+ <div class="padding-5" tal:condition="settings.paragraphs">
+ <i class="fa fa-fw fa-${'check-' if settings.paragraphs else ''}square-o"></i>
+ <span i18n:translate="">Selected paragraphs: </span>
+ <ul>
+ <li tal:repeat="label settings.get_paragraphs_labels()">${label}</li>
+ </ul>
+ </div>
+ <tal:if condition="not:settings.paragraphs">
+ <div class="padding-5" i18n:translate="">Paragraphs filters:</div>
+ <div class="padding-x-10">
+ <i class="fa fa-fw fa-${'check-' if settings.factories else ''}square-o"></i>
+ <span i18n:translate="">Selected paragraph types: </span>
+ ${', '.join(settings.get_paragraph_types_labels())}
+ </div>
+ <div class="padding-x-10">
+ <i class="fa fa-fw fa-${'check-' if settings.anchors_only else ''}square-o"></i>
+ <span i18n:translate="">Only display anchors</span>
+ </div>
+ </tal:if>
+</tal:var>
--- a/src/pyams_content/component/paragraph/portlet/zmi/templates/preview.pt Thu Sep 06 18:10:04 2018 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,21 +0,0 @@
-<tal:var define="settings view.settings" i18n:domain="pyams_content">
- <div class="padding-5" tal:condition="settings.paragraphs">
- <i class="fa fa-fw fa-${'check-' if settings.paragraphs else ''}square-o"></i>
- <span i18n:translate="">Selected paragraphs: </span>
- <ul>
- <li tal:repeat="label settings.get_paragraphs_labels()">${label}</li>
- </ul>
- </div>
- <tal:if condition="not:settings.paragraphs">
- <div class="padding-5" i18n:translate="">Paragraphs filters:</div>
- <div class="padding-x-10">
- <i class="fa fa-fw fa-${'check-' if settings.factories else ''}square-o"></i>
- <span i18n:translate="">Selected paragraph types: </span>
- ${', '.join(settings.get_paragraph_types_labels())}
- </div>
- <div class="padding-x-10">
- <i class="fa fa-fw fa-${'check-' if settings.anchors_only else ''}square-o"></i>
- <span i18n:translate="">Only display anchors</span>
- </div>
- </tal:if>
-</tal:var>
--- a/src/pyams_content/component/paragraph/verbatim.py Thu Sep 06 18:10:04 2018 +0200
+++ b/src/pyams_content/component/paragraph/verbatim.py Fri Oct 05 10:44:32 2018 +0200
@@ -15,24 +15,24 @@
# import standard library
+from zope.interface import implementer
+from zope.schema.fieldproperty import FieldProperty
+
# import interfaces
-from pyams_content.component.illustration.interfaces import IIllustrationTarget, IBasicIllustrationTarget
+from pyams_content.component.illustration.interfaces import IBasicIllustrationTarget
+# import packages
+from pyams_content.component.paragraph import BaseParagraph, BaseParagraphContentChecker, BaseParagraphFactory
from pyams_content.component.paragraph.interfaces import IParagraphFactory
from pyams_content.component.paragraph.interfaces.verbatim import IVerbatimParagraph, VERBATIM_PARAGRAPH_TYPE, \
VERBATIM_PARAGRAPH_RENDERERS, VERBATIM_PARAGRAPH_NAME
from pyams_content.features.checker.interfaces import IContentChecker, MISSING_VALUE, MISSING_LANG_VALUE
+from pyams_content.features.renderer import RenderersVocabulary
from pyams_i18n.interfaces import II18n, II18nManager, INegotiator
-
-# import packages
-from pyams_content.component.paragraph import BaseParagraph, BaseParagraphContentChecker, BaseParagraphFactory
-from pyams_content.features.renderer import RenderersVocabulary
from pyams_utils.adapter import adapter_config
from pyams_utils.factory import factory_config
from pyams_utils.registry import utility_config, get_utility
from pyams_utils.traversing import get_parent
from pyams_utils.vocabulary import vocabulary_config
-from zope.interface import implementer
-from zope.schema.fieldproperty import FieldProperty
#
--- a/src/pyams_content/component/paragraph/video.py Thu Sep 06 18:10:04 2018 +0200
+++ b/src/pyams_content/component/paragraph/video.py Fri Oct 05 10:44:32 2018 +0200
@@ -15,24 +15,24 @@
# import standard library
+from zope.interface import implementer
+from zope.schema.fieldproperty import FieldProperty
+
+# import packages
+from pyams_content.component.paragraph import BaseParagraph, BaseParagraphContentChecker, BaseParagraphFactory
# import interfaces
from pyams_content.component.paragraph.interfaces import IParagraphFactory
from pyams_content.component.paragraph.interfaces.video import IVideoParagraph, VIDEO_PARAGRAPH_TYPE, \
VIDEO_PARAGRAPH_RENDERERS, VIDEO_PARAGRAPH_NAME
from pyams_content.features.checker.interfaces import IContentChecker, MISSING_VALUE, MISSING_LANG_VALUE
-from pyams_i18n.interfaces import II18nManager, INegotiator, II18n
-
-# import packages
-from pyams_content.component.paragraph import BaseParagraph, BaseParagraphContentChecker, BaseParagraphFactory
from pyams_content.features.renderer import RenderersVocabulary
from pyams_file.property import FileProperty
+from pyams_i18n.interfaces import II18nManager, INegotiator, II18n
from pyams_utils.adapter import adapter_config
from pyams_utils.factory import factory_config
from pyams_utils.registry import utility_config, get_utility
from pyams_utils.traversing import get_parent
from pyams_utils.vocabulary import vocabulary_config
-from zope.interface import implementer
-from zope.schema.fieldproperty import FieldProperty
@implementer(IVideoParagraph)
@@ -44,8 +44,8 @@
icon_hint = VIDEO_PARAGRAPH_NAME
data = FileProperty(IVideoParagraph['data'])
+ author = FieldProperty(IVideoParagraph['author'])
description = FieldProperty(IVideoParagraph['description'])
- author = FieldProperty(IVideoParagraph['author'])
renderer = FieldProperty(IVideoParagraph['renderer'])
--- a/src/pyams_content/component/paragraph/zmi/__init__.py Thu Sep 06 18:10:04 2018 +0200
+++ b/src/pyams_content/component/paragraph/zmi/__init__.py Fri Oct 05 10:44:32 2018 +0200
@@ -113,9 +113,11 @@
def get_json_paragraph_toolbar_refresh_event(context, request, table_factory=None, viewlet_factory=None):
"""Get JSON response value for paragraph toolbar refresh event"""
if table_factory is None:
- from pyams_content.component.paragraph.zmi.container import ParagraphContainerTable as table_factory
+ from pyams_content.component.paragraph.zmi.container \
+ import ParagraphContainerTable as table_factory
if viewlet_factory is None:
- from pyams_content.component.paragraph.zmi.container import ParagraphTitleToolbarViewletManager as viewlet_factory
+ from pyams_content.component.paragraph.zmi.container \
+ import ParagraphTitleToolbarViewletManager as viewlet_factory
parent = get_parent(context, IParagraphContainerTarget)
if parent is not None:
@@ -242,7 +244,7 @@
get_json_paragraph_refresh_event(self.context, self.request))
elif 'renderer' in self.widgets:
renderer_interface = self.widgets['renderer'].field.interface
- if 'renderer' in changes.get(renderer_interface):
+ if 'renderer' in changes.get(renderer_interface, ()):
output.setdefault('events', []).append(
get_json_widget_refresh_event(self.context, self.request, self.__class__, 'renderer'))
renderer = self.context.get_renderer(self.request)
--- a/src/pyams_content/component/paragraph/zmi/container.py Thu Sep 06 18:10:04 2018 +0200
+++ b/src/pyams_content/component/paragraph/zmi/container.py Fri Oct 05 10:44:32 2018 +0200
@@ -19,8 +19,8 @@
# import interfaces
from pyams_content.interfaces import MANAGE_CONTENT_PERMISSION
from pyams_content.component.association.interfaces import IAssociationContainer
-from pyams_content.component.paragraph.interfaces import IParagraphContainerTarget, IParagraphContainer, IBaseParagraph, \
- IParagraphFactorySettings
+from pyams_content.component.paragraph.interfaces import IParagraphContainerTarget, IParagraphContainer, \
+ IBaseParagraph, IParagraphFactorySettings
from pyams_content.component.paragraph.zmi.interfaces import IParagraphInnerEditor, IParagraphTitleToolbar, \
IParagraphContainerTable, IParagraphContainerView
from pyams_form.interfaces.form import IFormSecurityContext, IInnerSubForm
@@ -433,7 +433,7 @@
view = AssociationsContainerView(paragraph, self.request)
view.widget_icon_class = 'fa fa-fw {0}'.format(paragraph.icon_class)
view.title = II18n(paragraph).query_attribute('title', request=self.request) or \
- BaseParagraph.empty_title
+ BaseParagraph.empty_title
result.append(view)
return result
--- a/src/pyams_content/component/paragraph/zmi/header.py Thu Sep 06 18:10:04 2018 +0200
+++ b/src/pyams_content/component/paragraph/zmi/header.py Fri Oct 05 10:44:32 2018 +0200
@@ -91,5 +91,6 @@
output.setdefault('events', []).append(get_json_paragraph_refresh_event(self.context, self.request))
if 'renderer' in updated:
output.setdefault('events', []).append(get_json_widget_refresh_event(self.context, self.request,
- HeaderParagraphInnerEditForm, 'renderer'))
+ HeaderParagraphInnerEditForm,
+ 'renderer'))
return output
--- a/src/pyams_content/component/paragraph/zmi/keypoint.py Thu Sep 06 18:10:04 2018 +0200
+++ b/src/pyams_content/component/paragraph/zmi/keypoint.py Fri Oct 05 10:44:32 2018 +0200
@@ -37,7 +37,6 @@
from pyams_utils.adapter import adapter_config
from pyams_viewlet.viewlet import viewlet_config
from pyams_zmi.form import AdminDialogAddForm
-from pyramid.view import view_config
from z3c.form import field, button
from zope.interface import implementer
--- a/src/pyams_content/component/paragraph/zmi/map.py Thu Sep 06 18:10:04 2018 +0200
+++ b/src/pyams_content/component/paragraph/zmi/map.py Fri Oct 05 10:44:32 2018 +0200
@@ -32,8 +32,8 @@
# import packages
from pyams_content.component.paragraph.map import MapParagraph
from pyams_content.component.paragraph.zmi import IParagraphContainerView, BaseParagraphAddMenu, \
- BaseParagraphAJAXAddForm, BaseParagraphAJAXEditForm, BaseParagraphPropertiesEditForm, IParagraphEditFormButtons, \
- get_json_paragraph_refresh_event
+ BaseParagraphAJAXAddForm, BaseParagraphAJAXEditForm, BaseParagraphPropertiesEditForm, \
+ IParagraphEditFormButtons, get_json_paragraph_refresh_event
from pyams_content.features.renderer.zmi.widget import RendererFieldWidget
from pyams_form.form import ajax_config
from pyams_pagelet.pagelet import pagelet_config
--- a/src/pyams_content/component/paragraph/zmi/milestone.py Thu Sep 06 18:10:04 2018 +0200
+++ b/src/pyams_content/component/paragraph/zmi/milestone.py Fri Oct 05 10:44:32 2018 +0200
@@ -16,34 +16,41 @@
# import standard library
import json
+from pyramid.decorator import reify
+from pyramid.view import view_config
+from z3c.form import field, button
+from z3c.form.interfaces import INPUT_MODE
+from z3c.table.column import GetAttrColumn
+from z3c.table.interfaces import IValues, IColumn
+from zope.interface import implementer, Interface
+from zope.schema.vocabulary import getVocabularyRegistry
+
+from pyams_content import _
# import interfaces
from pyams_content.component.paragraph.interfaces import IParagraphContainerTarget, IParagraphContainer, \
PARAGRAPH_HIDDEN_FIELDS
from pyams_content.component.paragraph.interfaces.milestone import MILESTONE_PARAGRAPH_TYPE, IMilestoneParagraph, \
IMilestoneContainer, IMilestoneContainerTarget, IMilestone
-from pyams_content.component.paragraph.zmi import IParagraphContainerView, IParagraphEditFormButtons
-from pyams_content.component.paragraph.zmi.interfaces import IParagraphInnerEditor
-from pyams_content.interfaces import MANAGE_CONTENT_PERMISSION
-from pyams_content.shared.common import IWfSharedContent
-from pyams_form.interfaces.form import IInnerForm, IInnerSubForm
-from pyams_i18n.interfaces import II18n
-from pyams_skin.interfaces.viewlet import IToolbarAddingMenu, IWidgetTitleViewletManager
-from pyams_skin.layer import IPyAMSLayer
-from z3c.form.interfaces import INPUT_MODE
-from z3c.table.interfaces import IValues, IColumn
-
# import packages
from pyams_content.component.paragraph.milestone import MilestoneParagraph, Milestone
from pyams_content.component.paragraph.zmi import BaseParagraphAddMenu, BaseParagraphAJAXAddForm, \
BaseParagraphPropertiesEditForm, BaseParagraphAJAXEditForm
+from pyams_content.component.paragraph.zmi import IParagraphContainerView, IParagraphEditFormButtons
+from pyams_content.component.paragraph.zmi.interfaces import IParagraphInnerEditor
from pyams_content.features.renderer.zmi.widget import RendererFieldWidget
+from pyams_content.interfaces import MANAGE_CONTENT_PERMISSION
+from pyams_content.shared.common import IWfSharedContent
from pyams_form.form import AJAXAddForm, ajax_config
+from pyams_form.interfaces.form import IInnerForm, IInnerSubForm
from pyams_form.security import ProtectedFormObjectMixin
from pyams_i18n.column import I18nAttrColumn
+from pyams_i18n.interfaces import II18n
from pyams_pagelet.pagelet import pagelet_config
from pyams_skin.container import switch_element_visibility
from pyams_skin.event import get_json_switched_table_refresh_event, get_json_table_row_refresh_event, \
get_json_widget_refresh_event
+from pyams_skin.interfaces.viewlet import IToolbarAddingMenu, IWidgetTitleViewletManager
+from pyams_skin.layer import IPyAMSLayer
from pyams_skin.table import BaseTable, SorterColumn, I18nColumn, TrashColumn, VisibilitySwitcherColumn
from pyams_skin.viewlet.toolbar import ToolbarAction
from pyams_utils.adapter import adapter_config, ContextRequestViewAdapter
@@ -52,14 +59,6 @@
from pyams_viewlet.viewlet import viewlet_config
from pyams_zmi.form import AdminDialogAddForm, AdminDialogEditForm
from pyams_zmi.zmi.table import InnerTableView
-from pyramid.decorator import reify
-from pyramid.view import view_config
-from z3c.form import field, button
-from z3c.table.column import GetAttrColumn
-from zope.interface import implementer, Interface
-from zope.schema.vocabulary import getVocabularyRegistry
-
-from pyams_content import _
class IMilestonesView(Interface):
@@ -352,8 +351,7 @@
def get_ajax_output(self, changes):
output = super(self.__class__, self).get_ajax_output(changes)
- updated = changes.get(IMilestone, ())
- if ('title' in updated) or ('anchor' in updated):
+ if changes:
target = get_parent(self.context, IMilestoneContainerTarget)
output.setdefault('events', []).append(get_json_table_row_refresh_event(target, self.request,
MilestonesTable, self.context))
--- a/src/pyams_content/component/paragraph/zmi/pictogram.py Thu Sep 06 18:10:04 2018 +0200
+++ b/src/pyams_content/component/paragraph/zmi/pictogram.py Fri Oct 05 10:44:32 2018 +0200
@@ -16,38 +16,44 @@
# import standard library
import json
+from pyramid.decorator import reify
+from pyramid.events import subscriber
+from pyramid.view import view_config
+from z3c.form import field, button
+from z3c.form.interfaces import INPUT_MODE, IDataExtractedEvent
+from z3c.table.column import GetAttrColumn
+from z3c.table.interfaces import IValues, IColumn
+from zope.interface import implementer, Interface, Invalid
+
+from pyams_content import _
+# import packages
+from pyams_content.component.paragraph import BaseParagraph
# import interfaces
from pyams_content.component.paragraph.interfaces import IParagraphContainerTarget, IParagraphContainer, \
PARAGRAPH_HIDDEN_FIELDS
from pyams_content.component.paragraph.interfaces.pictogram import PICTOGRAM_PARAGRAPH_TYPE, IPictogramParagraph, \
IPictogramContainer, IPictogramContainerTarget, IPictogramItem
-from pyams_content.component.paragraph.zmi import IParagraphContainerView, IParagraphEditFormButtons
-from pyams_content.component.paragraph.zmi.interfaces import IParagraphInnerEditor
-from pyams_content.interfaces import MANAGE_CONTENT_PERMISSION
-from pyams_content.shared.common import IWfSharedContent
-from pyams_form.interfaces.form import IInnerForm, IInnerSubForm
-from pyams_i18n.interfaces import II18n
-from pyams_skin.interfaces.viewlet import IToolbarAddingMenu, IWidgetTitleViewletManager
-from pyams_skin.layer import IPyAMSLayer
-from pyams_zmi.interfaces import IPropertiesEditForm
-from z3c.form.interfaces import INPUT_MODE, IDataExtractedEvent
-from z3c.table.interfaces import IValues, IColumn
-
-# import packages
-from pyams_content.component.paragraph import BaseParagraph
from pyams_content.component.paragraph.pictogram import PictogramParagraph, PictogramItem
from pyams_content.component.paragraph.zmi import BaseParagraphAddMenu, BaseParagraphAJAXAddForm, \
BaseParagraphPropertiesEditForm, BaseParagraphAJAXEditForm
+from pyams_content.component.paragraph.zmi import IParagraphContainerView, IParagraphEditFormButtons
+from pyams_content.component.paragraph.zmi.interfaces import IParagraphInnerEditor
from pyams_content.features.renderer.zmi.widget import RendererFieldWidget
+from pyams_content.interfaces import MANAGE_CONTENT_PERMISSION
from pyams_content.reference.pictograms.zmi.widget import PictogramSelectFieldWidget
+from pyams_content.shared.common import IWfSharedContent
from pyams_file.zmi.image import render_image
from pyams_form.form import AJAXAddForm, ajax_config
+from pyams_form.interfaces.form import IInnerForm, IInnerSubForm
from pyams_form.security import ProtectedFormObjectMixin
from pyams_i18n.column import I18nAttrColumn
+from pyams_i18n.interfaces import II18n
from pyams_pagelet.pagelet import pagelet_config
from pyams_skin.container import switch_element_visibility
from pyams_skin.event import get_json_widget_refresh_event, get_json_switched_table_refresh_event, \
get_json_table_row_refresh_event
+from pyams_skin.interfaces.viewlet import IToolbarAddingMenu, IWidgetTitleViewletManager
+from pyams_skin.layer import IPyAMSLayer
from pyams_skin.table import BaseTable, SorterColumn, I18nColumn, TrashColumn, VisibilitySwitcherColumn
from pyams_skin.viewlet.toolbar import ToolbarAction
from pyams_utils.adapter import adapter_config, ContextRequestViewAdapter
@@ -56,15 +62,8 @@
from pyams_utils.url import absolute_url
from pyams_viewlet.viewlet import viewlet_config
from pyams_zmi.form import AdminDialogAddForm, AdminDialogEditForm
+from pyams_zmi.interfaces import IPropertiesEditForm
from pyams_zmi.zmi.table import InnerTableView
-from pyramid.decorator import reify
-from pyramid.events import subscriber
-from pyramid.view import view_config
-from z3c.form import field, button
-from z3c.table.column import GetAttrColumn
-from zope.interface import implementer, alsoProvides, Interface, Invalid
-
-from pyams_content import _
class IPictogramsView(Interface):
--- a/src/pyams_content/component/theme/__init__.py Thu Sep 06 18:10:04 2018 +0200
+++ b/src/pyams_content/component/theme/__init__.py Fri Oct 05 10:44:32 2018 +0200
@@ -44,6 +44,9 @@
thesaurus_name = FieldProperty(ITagsManager['thesaurus_name'])
extract_name = FieldProperty(ITagsManager['extract_name'])
+ enable_tags_search = FieldProperty(ITagsManager['enable_tags_search'])
+ tags_search_target = FieldProperty(ITagsManager['tags_search_target'])
+
@adapter_config(context=ITagsManagerTarget, provides=ITagsManager)
def tags_manager_factory(target):
--- a/src/pyams_content/component/theme/interfaces/__init__.py Thu Sep 06 18:10:04 2018 +0200
+++ b/src/pyams_content/component/theme/interfaces/__init__.py Fri Oct 05 10:44:32 2018 +0200
@@ -19,8 +19,10 @@
from pyams_thesaurus.interfaces.thesaurus import IThesaurusContextManager, IThesaurusContextManagerTarget
# import packages
+from pyams_sequence.schema import InternalReferenceField
from pyams_thesaurus.schema import ThesaurusTermsListField
-from zope.interface import Interface
+from zope.interface import Interface, invariant, Invalid
+from zope.schema import Bool
from pyams_content import _
@@ -36,6 +38,21 @@
class ITagsManager(IThesaurusContextManager):
"""Tags manager interface"""
+ enable_tags_search = Bool(title=_("Enable search by tag?"),
+ description=_("If 'yes', displayed tags will lead to a search engine "
+ "displaying contents matching given tag"),
+ required=True,
+ default=False)
+
+ tags_search_target = InternalReferenceField(title=_("Tags search target"),
+ description=_("Site or folder where tags search is displayed"),
+ required=False)
+
+ @invariant
+ def check_search_target(self):
+ if self.enable_tags_search and not self.tags_search_target:
+ raise Invalid(_("You must specify search target when activating search by tags!"))
+
class ITagsManagerTarget(IThesaurusContextManagerTarget):
"""Marker interface for tags manager"""
--- a/src/pyams_content/component/theme/zmi/manager.py Thu Sep 06 18:10:04 2018 +0200
+++ b/src/pyams_content/component/theme/zmi/manager.py Fri Oct 05 10:44:32 2018 +0200
@@ -70,6 +70,7 @@
prefix = 'manager_themes.'
legend = _("Selected tags")
+ dialog_class = 'modal-large'
fields = field.Fields(ITagsManager)
edit_permission = MANAGE_SITE_ROOT_PERMISSION
--- a/src/pyams_content/component/video/__init__.py Thu Sep 06 18:10:04 2018 +0200
+++ b/src/pyams_content/component/video/__init__.py Fri Oct 05 10:44:32 2018 +0200
@@ -12,33 +12,27 @@
__docformat__ = 'restructuredtext'
-
-# import standard library
from persistent import Persistent
-
-# import interfaces
-from pyams_content.component.video.interfaces import IExternalVideo, IExternalVideoProvider, IExternalVideoSettings
-from pyams_content.features.checker.interfaces import IContentChecker, MISSING_VALUE, MISSING_LANG_VALUE
-from pyams_i18n.interfaces import II18nManager, INegotiator, II18n
-
-# import packages
-from pyams_content.features.checker import BaseContentChecker, VALUE_OK
-from pyams_utils.adapter import adapter_config, get_annotation_adapter
-from pyams_utils.registry import query_utility, get_utility
-from pyams_utils.traversing import get_parent
from zope.container.contained import Contained
from zope.interface import implementer
from zope.schema.fieldproperty import FieldProperty
from pyams_content import _
+from pyams_content.component.video.interfaces import IExternalVideo, IExternalVideoProvider, IExternalVideoSettings
+from pyams_content.features.checker import BaseContentChecker, VALUE_OK
+from pyams_content.features.checker.interfaces import IContentChecker, MISSING_VALUE, MISSING_LANG_VALUE
+from pyams_i18n.interfaces import II18nManager, INegotiator, II18n
+from pyams_utils.adapter import adapter_config, get_annotation_adapter
+from pyams_utils.registry import query_utility, get_utility
+from pyams_utils.traversing import get_parent
@implementer(IExternalVideo)
class ExternalVideo(Persistent, Contained):
"""External video persistent class"""
+ author = FieldProperty(IExternalVideo['author'])
description = FieldProperty(IExternalVideo['description'])
- author = FieldProperty(IExternalVideo['author'])
provider_name = FieldProperty(IExternalVideo['provider_name'])
def get_provider(self):
--- a/src/pyams_content/component/video/interfaces/__init__.py Thu Sep 06 18:10:04 2018 +0200
+++ b/src/pyams_content/component/video/interfaces/__init__.py Fri Oct 05 10:44:32 2018 +0200
@@ -12,20 +12,14 @@
__docformat__ = 'restructuredtext'
-
-# import standard library
-
-# import interfaces
-from pyams_content.component.paragraph.interfaces import IBaseParagraph
from zope.annotation import IAttributeAnnotatable
from zope.contentprovider.interfaces import IContentProvider
-
-# import packages
-from pyams_i18n.schema import I18nTextField, I18nTextLineField
from zope.interface import Interface, Attribute
from zope.schema import Choice, TextLine
from pyams_content import _
+from pyams_content.component.paragraph.interfaces import IBaseParagraph
+from pyams_i18n.schema import I18nTextField, I18nTextLineField
class IExternalVideoSettings(Interface):
@@ -45,14 +39,14 @@
class IExternalVideo(IAttributeAnnotatable):
"""Base interface for external video integration"""
+ author = TextLine(title=_("Author"),
+ description=_("Name of document's author"),
+ required=True)
+
description = I18nTextField(title=_("Associated text"),
description=_("Video description displayed by front-office template"),
required=False)
- author = TextLine(title=_("Author"),
- description=_("Name of document's author"),
- required=True)
-
provider_name = Choice(title=_("Video provider"),
description=_("Name of external platform providing selected video"),
required=False,
--- a/src/pyams_content/component/video/provider/__init__.py Thu Sep 06 18:10:04 2018 +0200
+++ b/src/pyams_content/component/video/provider/__init__.py Fri Oct 05 10:44:32 2018 +0200
@@ -9,32 +9,25 @@
# 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'
+from persistent import Persistent
+from zope.component import getUtilitiesFor
+from zope.interface import implementer
+from zope.schema.fieldproperty import FieldProperty
+from zope.schema.vocabulary import SimpleVocabulary, SimpleTerm
-# import standard library
-
-# import interfaces
+from pyams_content import _
+from pyams_content.component.video import external_video_settings_factory
from pyams_content.component.video.interfaces import IExternalVideo, IExternalVideoProvider, IExternalVideoSettings
from pyams_content.component.video.provider.interfaces import ICustomVideoSettings
+from pyams_content.features.checker import BaseContentChecker
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.request import check_request
from pyams_utils.vocabulary import vocabulary_config
-from zope.interface import implementer
-from zope.schema.fieldproperty import FieldProperty
-
-from pyams_content import _
@vocabulary_config(name='PyAMS video providers')
--- a/src/pyams_content/component/video/zmi/paragraph.py Thu Sep 06 18:10:04 2018 +0200
+++ b/src/pyams_content/component/video/zmi/paragraph.py Fri Oct 05 10:44:32 2018 +0200
@@ -12,46 +12,39 @@
__docformat__ = 'restructuredtext'
-
-# import standard library
-
-# import interfaces
-from pyams_content.component.paragraph.interfaces import IParagraphContainerTarget, IParagraphContainer, \
- IBaseParagraph
-from pyams_content.component.paragraph.zmi.interfaces import IParagraphContainerView, IParagraphInnerEditor
-from pyams_content.component.video.interfaces import IExternalVideoProvider, IExternalVideoSettings, \
- IExternalVideoParagraph, EXTERNAL_VIDEO_PARAGRAPH_TYPE
-from pyams_content.interfaces import MANAGE_CONTENT_PERMISSION
-from pyams_form.interfaces.form import IWidgetsSuffixViewletsManager, IInnerForm
-from pyams_skin.interfaces.viewlet import IToolbarAddingMenu
-from pyams_skin.layer import IPyAMSLayer
-from pyams_utils.interfaces.data import IObjectData
-from z3c.form.interfaces import DISPLAY_MODE, INPUT_MODE, IDataExtractedEvent
-
-# import packages
-from pyams_content.component.paragraph.zmi import BaseParagraphAddMenu, BaseParagraphAJAXAddForm, \
- BaseParagraphPropertiesEditForm, BaseParagraphAJAXEditForm, get_json_paragraph_refresh_event, \
- IParagraphEditFormButtons
-from pyams_content.component.video.paragraph import ExternalVideoParagraph
-from pyams_content.features.renderer.zmi.widget import RendererFieldWidget
-from pyams_form.form import ajax_config
-from pyams_form.group import NamedWidgetsGroup
-from pyams_pagelet.pagelet import pagelet_config
-from pyams_template.template import template_config
-from pyams_utils.adapter import adapter_config
-from pyams_utils.registry import get_utility
-from pyams_utils.url import absolute_url
-from pyams_viewlet.viewlet import viewlet_config, Viewlet
-from pyams_zmi.form import AdminDialogAddForm, InnerAdminAddForm, InnerAdminEditForm
from pyramid.events import subscriber
from pyramid.exceptions import NotFound
from pyramid.response import Response
from pyramid.view import view_config
from z3c.form import field, button
+from z3c.form.interfaces import DISPLAY_MODE, INPUT_MODE, IDataExtractedEvent
from zope.interface import implementer, alsoProvides, Interface, Invalid
from zope.schema import getFieldNamesInOrder
from pyams_content import _
+from pyams_content.component.paragraph.interfaces import IParagraphContainerTarget, IParagraphContainer
+from pyams_content.component.paragraph.zmi import BaseParagraphAddMenu, BaseParagraphAJAXAddForm, \
+ BaseParagraphPropertiesEditForm, BaseParagraphAJAXEditForm, get_json_paragraph_refresh_event, \
+ IParagraphEditFormButtons
+from pyams_content.component.paragraph.zmi.interfaces import IParagraphContainerView, IParagraphInnerEditor
+from pyams_content.component.video.interfaces import IExternalVideoProvider, IExternalVideoSettings, \
+ IExternalVideoParagraph, EXTERNAL_VIDEO_PARAGRAPH_TYPE
+from pyams_content.component.video.paragraph import ExternalVideoParagraph
+from pyams_content.features.renderer.zmi.widget import RendererFieldWidget
+from pyams_content.interfaces import MANAGE_CONTENT_PERMISSION
+from pyams_form.form import ajax_config
+from pyams_form.group import NamedWidgetsGroup
+from pyams_form.interfaces.form import IWidgetsSuffixViewletsManager, IInnerForm
+from pyams_pagelet.pagelet import pagelet_config
+from pyams_skin.interfaces.viewlet import IToolbarAddingMenu
+from pyams_skin.layer import IPyAMSLayer
+from pyams_template.template import template_config
+from pyams_utils.adapter import adapter_config
+from pyams_utils.interfaces.data import IObjectData
+from pyams_utils.registry import get_utility
+from pyams_utils.url import absolute_url
+from pyams_viewlet.viewlet import viewlet_config, Viewlet
+from pyams_zmi.form import AdminDialogAddForm, InnerAdminAddForm, InnerAdminEditForm
@viewlet_config(name='add-external-video.menu', context=IParagraphContainerTarget, view=IParagraphContainerView,
@@ -76,7 +69,7 @@
dialog_class = 'modal-large'
icon_css_class = 'fa fa-fw fa-youtube-play'
- fields = field.Fields(IExternalVideoParagraph).select('title', 'description', 'author', 'renderer', 'provider_name')
+ fields = field.Fields(IExternalVideoParagraph).select('title', 'author', 'description', 'renderer', 'provider_name')
edit_permission = MANAGE_CONTENT_PERMISSION
def updateWidgets(self, prefix=None):
@@ -193,7 +186,7 @@
@property
def fields(self):
- fields = field.Fields(IExternalVideoParagraph).select('title', 'description', 'author', 'renderer',
+ fields = field.Fields(IExternalVideoParagraph).select('title', 'author', 'description', 'renderer',
'provider_name')
fields['renderer'].widgetFactory = RendererFieldWidget
provider = self.context.get_provider()
@@ -239,7 +232,7 @@
base=BaseParagraphAJAXEditForm)
@implementer(IInnerForm)
class ExternalVideoParagraphInnerEditForm(ExternalVideoParagraphPropertiesEditForm):
- """External video paragraph properties inner deit form"""
+ """External video paragraph properties inner edit form"""
legend = None
--- a/src/pyams_content/features/alert/__init__.py Thu Sep 06 18:10:04 2018 +0200
+++ b/src/pyams_content/features/alert/__init__.py Fri Oct 05 10:44:32 2018 +0200
@@ -12,21 +12,16 @@
__docformat__ = 'restructuredtext'
+from persistent import Persistent
+from zope.container.contained import Contained
+from zope.interface import implementer
+from zope.schema.fieldproperty import FieldProperty
-# import standard library
-from persistent import Persistent
-
-# import interfaces
+from pyams_content.component.links import InternalReferenceMixin
from pyams_content.features.alert.interfaces import IAlertItem
from pyams_content.interfaces import MANAGE_SITE_ROOT_PERMISSION
from pyams_form.interfaces.form import IFormContextPermissionChecker
-
-# import packages
-from pyams_content.component.links import InternalReferenceMixin
-from pyams_utils.adapter import adapter_config, ContextAdapter
-from zope.container.contained import Contained
-from zope.interface import implementer
-from zope.schema.fieldproperty import FieldProperty
+from pyams_utils.adapter import ContextAdapter, adapter_config
@implementer(IAlertItem)
@@ -43,7 +38,7 @@
@adapter_config(context=IAlertItem, provides=IFormContextPermissionChecker)
-class AlertitemPermissionChecker(ContextAdapter):
+class AlertItemPermissionChecker(ContextAdapter):
"""Alert item permission checker"""
edit_permission = MANAGE_SITE_ROOT_PERMISSION
--- a/src/pyams_content/features/alert/container.py Thu Sep 06 18:10:04 2018 +0200
+++ b/src/pyams_content/features/alert/container.py Fri Oct 05 10:44:32 2018 +0200
@@ -12,20 +12,18 @@
__docformat__ = 'restructuredtext'
-
-# import standard library
+from datetime import datetime
-# import interfaces
-from pyams_content.features.alert.interfaces import IAlertContainer, IAlertItem, IAlertTarget, ALERT_CONTAINER_KEY
+from zope.container.ordered import OrderedContainer
+from zope.interface import implementer
+from zope.location import locate
from zope.location.interfaces import ISublocations
from zope.traversing.interfaces import ITraversable
-# import packages
from pyams_catalog.utils import index_object
-from pyams_utils.adapter import adapter_config, ContextAdapter, get_annotation_adapter
-from zope.container.ordered import OrderedContainer
-from zope.interface import implementer
-from zope.location import locate
+from pyams_content.features.alert.interfaces import ALERT_CONTAINER_KEY, IAlertContainer, IAlertItem, IAlertTarget
+from pyams_utils.adapter import ContextAdapter, adapter_config, get_annotation_adapter
+from pyams_utils.timezone import tztime
@implementer(IAlertContainer)
@@ -46,7 +44,13 @@
index_object(value)
def get_visible_items(self):
- yield from filter(lambda x: IAlertItem(x).visible, self.values())
+ now = tztime(datetime.utcnow())
+ for alert in filter(lambda x: IAlertItem(x).visible, self.values()):
+ if alert.start_date and (alert.start_date > now):
+ continue
+ if alert.end_date and (alert.end_date < now):
+ continue
+ yield alert
@adapter_config(context=IAlertTarget, provides=IAlertContainer)
--- a/src/pyams_content/features/alert/interfaces.py Thu Sep 06 18:10:04 2018 +0200
+++ b/src/pyams_content/features/alert/interfaces.py Fri Oct 05 10:44:32 2018 +0200
@@ -25,7 +25,7 @@
from pyams_i18n.schema import I18nTextLineField
from pyams_sequence.schema import InternalReferenceField
from zope.container.constraints import containers, contains
-from zope.interface import Interface, Attribute
+from zope.interface import Interface
from zope.schema import Bool, Choice, Datetime, Int
from zope.schema.vocabulary import SimpleVocabulary, SimpleTerm
--- a/src/pyams_content/features/alert/zmi/container.py Thu Sep 06 18:10:04 2018 +0200
+++ b/src/pyams_content/features/alert/zmi/container.py Fri Oct 05 10:44:32 2018 +0200
@@ -19,7 +19,6 @@
# import interfaces
from pyams_content.features.alert.interfaces import IAlertTarget, IAlertContainer
from pyams_content.interfaces import MANAGE_SITE_ROOT_PERMISSION
-from pyams_i18n.interfaces import II18n
from pyams_skin.interfaces import IPageHeader
from pyams_skin.layer import IPyAMSLayer
from pyams_zmi.interfaces.menu import ISiteManagementMenu
@@ -42,7 +41,6 @@
from pyramid.decorator import reify
from pyramid.exceptions import NotFound
from pyramid.view import view_config
-from z3c.table.column import GetAttrColumn
from pyams_content import _
--- a/src/pyams_content/features/checker/zmi/__init__.py Thu Sep 06 18:10:04 2018 +0200
+++ b/src/pyams_content/features/checker/zmi/__init__.py Fri Oct 05 10:44:32 2018 +0200
@@ -20,13 +20,13 @@
from pyams_content.interfaces import MANAGE_CONTENT_PERMISSION
from pyams_form.interfaces.form import IWidgetsSuffixViewletsManager
from pyams_skin.interfaces import IInnerPage
-from pyams_skin.interfaces.viewlet import IContextActions, IToolbarViewletManager
+from pyams_skin.interfaces.viewlet import IToolbarViewletManager
from pyams_skin.layer import IPyAMSLayer
from pyams_zmi.layer import IAdminLayer
# import packages
from pyams_pagelet.pagelet import pagelet_config
-from pyams_skin.viewlet.toolbar import ToolbarMenuItem, ToolbarAction
+from pyams_skin.viewlet.toolbar import ToolbarAction
from pyams_viewlet.viewlet import viewlet_config, Viewlet
from pyams_zmi.form import AdminDialogDisplayForm
from z3c.form import field
--- a/src/pyams_content/features/footer/__init__.py Thu Sep 06 18:10:04 2018 +0200
+++ b/src/pyams_content/features/footer/__init__.py Fri Oct 05 10:44:32 2018 +0200
@@ -16,8 +16,8 @@
# import standard library
# import interfaces
-from pyams_content.features.footer.interfaces import FOOTER_RENDERERS, IFooterRenderer, IFooterSettings, IFooterTarget, \
- FOOTER_SETTINGS_KEY, IFooterRendererSettings, FOOTER_RENDERER_SETTINGS_KEY
+from pyams_content.features.footer.interfaces import FOOTER_RENDERERS, IFooterRenderer, IFooterSettings, \
+ IFooterTarget, FOOTER_SETTINGS_KEY, IFooterRendererSettings, FOOTER_RENDERER_SETTINGS_KEY
from zope.lifecycleevent.interfaces import IObjectModifiedEvent
from zope.traversing.interfaces import ITraversable
@@ -32,8 +32,8 @@
from pyams_utils.traversing import get_parent
from pyams_utils.vocabulary import vocabulary_config
from pyramid.events import subscriber
-from zope.interface import implementer, noLongerProvides, alsoProvides
-from zope.location import Location, locate
+from zope.interface import implementer
+from zope.location import Location
from zope.schema.fieldproperty import FieldProperty
from zope.schema.vocabulary import SimpleVocabulary, SimpleTerm
--- a/src/pyams_content/features/header/__init__.py Thu Sep 06 18:10:04 2018 +0200
+++ b/src/pyams_content/features/header/__init__.py Fri Oct 05 10:44:32 2018 +0200
@@ -16,8 +16,8 @@
# import standard library
# import interfaces
-from pyams_content.features.header.interfaces import HEADER_RENDERERS, IHeaderRenderer, IHeaderSettings, IHeaderTarget, \
- HEADER_SETTINGS_KEY, IHeaderRendererSettings, HEADER_RENDERER_SETTINGS_KEY
+from pyams_content.features.header.interfaces import HEADER_RENDERERS, IHeaderRenderer, IHeaderSettings, \
+ IHeaderTarget, HEADER_SETTINGS_KEY, IHeaderRendererSettings, HEADER_RENDERER_SETTINGS_KEY
from zope.lifecycleevent.interfaces import IObjectModifiedEvent
from zope.traversing.interfaces import ITraversable
@@ -32,8 +32,8 @@
from pyams_utils.traversing import get_parent
from pyams_utils.vocabulary import vocabulary_config
from pyramid.events import subscriber
-from zope.interface import implementer, noLongerProvides, alsoProvides
-from zope.location import Location, locate
+from zope.interface import implementer
+from zope.location import Location
from zope.schema.fieldproperty import FieldProperty
from zope.schema.vocabulary import SimpleVocabulary, SimpleTerm
--- a/src/pyams_content/features/header/interfaces/__init__.py Thu Sep 06 18:10:04 2018 +0200
+++ b/src/pyams_content/features/header/interfaces/__init__.py Fri Oct 05 10:44:32 2018 +0200
@@ -57,6 +57,5 @@
cache_key = Attribute("Renderer cache key")
-
class IHeaderRendererSettings(IRendererSettings):
"""Header renderer settings interface"""
--- a/src/pyams_content/features/menu/portlet/navigation/zmi/double.py Thu Sep 06 18:10:04 2018 +0200
+++ b/src/pyams_content/features/menu/portlet/navigation/zmi/double.py Fri Oct 05 10:44:32 2018 +0200
@@ -35,7 +35,7 @@
from pyams_portal.zmi.portlet import PortletSettingsEditor, PortletSettingsPropertiesEditor
from pyams_template.template import template_config
from pyams_utils.adapter import adapter_config
-from zope.interface import alsoProvides, Interface
+from zope.interface import Interface
from pyams_content import _
--- a/src/pyams_content/features/redirect/container.py Thu Sep 06 18:10:04 2018 +0200
+++ b/src/pyams_content/features/redirect/container.py Fri Oct 05 10:44:32 2018 +0200
@@ -16,8 +16,8 @@
# import standard library
# import interfaces
-from pyams_content.features.redirect.interfaces import IRedirectionManager, IRedirectionRule, IRedirectionManagerTarget, \
- REDIRECT_MANAGER_KEY
+from pyams_content.features.redirect.interfaces import IRedirectionManager, IRedirectionRule, \
+ IRedirectionManagerTarget, REDIRECT_MANAGER_KEY
from zope.location.interfaces import ISublocations
from zope.traversing.interfaces import ITraversable
--- a/src/pyams_content/features/redirect/interfaces/__init__.py Thu Sep 06 18:10:04 2018 +0200
+++ b/src/pyams_content/features/redirect/interfaces/__init__.py Fri Oct 05 10:44:32 2018 +0200
@@ -23,7 +23,7 @@
from pyams_sequence.schema import InternalReferenceField
from zope.container.constraints import contains, containers
from zope.interface import Interface, Attribute, invariant, Invalid
-from zope.schema import Bool, TextLine, Choice
+from zope.schema import Bool, TextLine
from pyams_content import _
--- a/src/pyams_content/features/renderer/skin/__init__.py Thu Sep 06 18:10:04 2018 +0200
+++ b/src/pyams_content/features/renderer/skin/__init__.py Fri Oct 05 10:44:32 2018 +0200
@@ -12,22 +12,16 @@
__docformat__ = 'restructuredtext'
-
-# import standard library
-
-# import interfaces
-from pyams_content.features.renderer.interfaces import IContentRenderer, IRendererSettings, IRenderedContent, \
- HIDDEN_RENDERER_NAME
-from pyams_i18n.interfaces import II18n
-from pyams_skin.layer import IPyAMSLayer
-
-# import packages
-from pyams_template.template import get_view_template
-from pyams_utils.adapter import ContextRequestAdapter, adapter_config
from pyramid.decorator import reify
from zope.interface import implementer
from pyams_content import _
+from pyams_content.features.renderer.interfaces import HIDDEN_RENDERER_NAME, IContentRenderer, IRenderedContent, \
+ IRendererSettings
+from pyams_i18n.interfaces import II18n
+from pyams_skin.layer import IPyAMSLayer
+from pyams_template.template import get_view_template
+from pyams_utils.adapter import ContextRequestAdapter, adapter_config
@implementer(IContentRenderer)
@@ -71,5 +65,6 @@
label = _("Hidden content")
weight = -999
- def render(self):
+ @staticmethod
+ def render():
return ''
--- a/src/pyams_content/features/review/zmi/__init__.py Thu Sep 06 18:10:04 2018 +0200
+++ b/src/pyams_content/features/review/zmi/__init__.py Fri Oct 05 10:44:32 2018 +0200
@@ -12,27 +12,25 @@
__docformat__ = 'restructuredtext'
-
-# import standard library
+from pyramid.view import view_config
+from pyramid_chameleon.interfaces import IChameleonTranslate
+from z3c.form import field, button
+from zope.interface import Interface
+from zope.schema import Text, Bool
-# import interfaces
+from pyams_content import _
+from pyams_content.features.review import ReviewComment
+from pyams_content.features.review.interfaces import IReviewManager, IReviewComments, IReviewTarget
from pyams_content.interfaces import MANAGE_CONTENT_PERMISSION, COMMENT_CONTENT_PERMISSION
-from pyams_content.features.review.interfaces import IReviewManager, IReviewComments, IReviewTarget
from pyams_content.shared.common import IWfSharedContentRoles
-from pyams_security.interfaces import ISecurityManager
-from pyams_security.interfaces.profile import IPublicProfile
-from pyams_skin.interfaces.viewlet import IContextActions
-from pyams_skin.layer import IPyAMSLayer
-from pyams_zmi.interfaces.menu import IContentManagementMenu
-from pyams_zmi.layer import IAdminLayer
-from pyramid_chameleon.interfaces import IChameleonTranslate
-
-# import packages
-from pyams_content.features.review import ReviewComment
from pyams_form.form import AJAXAddForm, ajax_config
from pyams_form.schema import CloseButton
from pyams_pagelet.pagelet import pagelet_config
+from pyams_security.interfaces import ISecurityManager
+from pyams_security.interfaces.profile import IPublicProfile
from pyams_security.schema import PrincipalsSet
+from pyams_skin.interfaces.viewlet import IContextActions
+from pyams_skin.layer import IPyAMSLayer
from pyams_skin.viewlet.menu import MenuItem
from pyams_skin.viewlet.toolbar import ToolbarMenuItem
from pyams_template.template import template_config, get_view_template
@@ -40,13 +38,9 @@
from pyams_utils.registry import get_utility, query_utility
from pyams_viewlet.viewlet import viewlet_config
from pyams_zmi.form import AdminDialogAddForm
+from pyams_zmi.interfaces.menu import IContentManagementMenu
+from pyams_zmi.layer import IAdminLayer
from pyams_zmi.view import InnerAdminView
-from pyramid.view import view_config
-from z3c.form import field, button
-from zope.interface import Interface
-from zope.schema import Text, Bool
-
-from pyams_content import _
#
@@ -195,13 +189,16 @@
def get_principal(self, principal_id):
return self.security.get_principal(principal_id)
- def get_avatar(self, principal):
+ @staticmethod
+ def get_avatar(principal):
return IPublicProfile(principal).avatar
- def get_date(self, comment):
+ @staticmethod
+ def get_date(comment):
return format_datetime(comment.creation_date)
- def get_age(self, comment):
+ @staticmethod
+ def get_age(comment):
return get_age(comment.creation_date)
--- a/src/pyams_content/generations/__init__.py Thu Sep 06 18:10:04 2018 +0200
+++ b/src/pyams_content/generations/__init__.py Fri Oct 05 10:44:32 2018 +0200
@@ -12,44 +12,41 @@
__docformat__ = 'restructuredtext'
-
-# import standard library
import logging
logger = logging.getLogger("PyAMS (content)")
-# import interfaces
+from hypatia.text.lexicon import Lexicon
+from pyramid.path import DottedNameResolver
+from zope.lifecycleevent import ObjectCreatedEvent
+from zope.dublincore.interfaces import IZopeDublinCore
+
+from pyams_catalog.index import FieldIndexWithInterface, KeywordIndexWithInterface, DatetimeIndexWithInterface
+from pyams_catalog.nltk import NltkFullTextProcessor
+from pyams_catalog.site import check_required_indexes
from pyams_catalog.interfaces import MINUTE_RESOLUTION, DATE_RESOLUTION
from pyams_content.component.theme import ITagsInfo, IThemesInfo, ICollectionsInfo
from pyams_content.interfaces import IBaseContent, WEBMASTER_ROLE, OWNER_ROLE, PILOT_ROLE, MANAGER_ROLE, \
CONTRIBUTOR_ROLE
+from pyams_content.reference import ReferencesManager
+from pyams_content.reference.pictograms import PictogramTable
from pyams_content.root.interfaces import ISiteRootToolsConfiguration
+from pyams_content.shared.common.manager import SharedToolContainer
from pyams_content.shared.common.interfaces import IWfSharedContent
from pyams_content.shared.common.interfaces.types import IWfTypedSharedContent
from pyams_content.shared.form.interfaces import IFormsManagerFactory
from pyams_content.shared.imagemap.interfaces import IImageMapManagerFactory
from pyams_content.shared.logo.interfaces import ILogosManagerFactory
from pyams_content.shared.news.interfaces import INewsManagerFactory
+from pyams_content.shared.topic.interfaces import ITopicManagerFactory
from pyams_content.shared.view.interfaces import IViewsManagerFactory
-from pyams_utils.interfaces.site import ISiteGenerations
-from pyams_utils.interfaces.traversing import IPathElements
-from pyams_workflow.interfaces import IWorkflowState, IWorkflowPublicationInfo
-from zope.dublincore.interfaces import IZopeDublinCore
-
-# import packages
-from hypatia.text.lexicon import Lexicon
-from pyams_catalog.index import FieldIndexWithInterface, KeywordIndexWithInterface, DatetimeIndexWithInterface
-from pyams_catalog.nltk import NltkFullTextProcessor
-from pyams_catalog.site import check_required_indexes
-from pyams_content.reference import ReferencesManager
-from pyams_content.reference.pictograms import PictogramTable
-from pyams_content.shared.common.manager import SharedToolContainer
from pyams_i18n.index import I18nTextIndexWithInterface
from pyams_security.index import PrincipalsRoleIndex
from pyams_thesaurus.index import ThesaurusTermsListFieldIndex
+from pyams_utils.interfaces.site import ISiteGenerations
+from pyams_utils.interfaces.traversing import IPathElements
from pyams_utils.registry import utility_config, get_global_registry
from pyams_utils.site import check_required_utilities
-from pyramid.path import DottedNameResolver
-from zope.lifecycleevent import ObjectCreatedEvent
+from pyams_workflow.interfaces import IWorkflowState, IWorkflowPublicationInfo
def get_fulltext_lexicon(language):
@@ -57,14 +54,6 @@
RENAMED_CLASSES = {
- 'pyams_content.shared.common.review ReviewComment':
- 'pyams_content.features.review ReviewComment',
- 'pyams_content.shared.common.review ReviewCommentsContainer':
- 'pyams_content.features.review ReviewCommentsContainer',
- 'pyams_portal.portlets.content ContentPortletSettings':
- 'pyams_content.portlet.content SharedContentPortletSettings',
- 'pyams_content.shared.common.portlet.content SharedContentPortletSettings':
- 'pyams_content.component.paragraph.portlet ParagraphContainerPortletSettings',
'pyams_content.component.association.menu MenusContainer':
'pyams_content.features.menu MenusContainer',
'pyams_content.component.association.menu Menu':
@@ -75,6 +64,18 @@
'pyams_content.component.keynumber KeyNumberContainer',
'pyams_content.component.paragraph.keynumber KeyNumberParagraph':
'pyams_content.component.keynumber.paragraph KeyNumberParagraph',
+ 'pyams_content.shared.common.review ReviewComment':
+ 'pyams_content.features.review ReviewComment',
+ 'pyams_content.shared.common.review ReviewCommentsContainer':
+ 'pyams_content.features.review ReviewCommentsContainer',
+ 'pyams_content.shared.common.portlet.content SharedContentPortletSettings':
+ 'pyams_content.component.paragraph.portlet ParagraphContainerPortletSettings',
+ 'pyams_content.shared.site Topic':
+ 'pyams_content.shared.site SiteTopic',
+ 'pyams_content.shared.site WfTopic':
+ 'pyams_content.shared.site WfSiteTopic',
+ 'pyams_portal.portlets.content ContentPortletSettings':
+ 'pyams_content.portlet.content SharedContentPortletSettings',
'pyams_content.portlet.content SharedContentPortletSettings':
'pyams_content.shared.common.portlet.content SharedContentPortletSettings',
'pyams_content.portlet.navigation SimpleNavigationPortletSettings':
@@ -83,7 +84,6 @@
'pyams_content.features.menu.portlet.navigation.interfaces.simple ISimpleNavigationMenu'
}
-
REQUIRED_UTILITIES = ()
REQUIRED_TABLES = (
@@ -95,7 +95,8 @@
('logos', ILogosManagerFactory),
('imagemaps', IImageMapManagerFactory),
('forms', IFormsManagerFactory),
- ('news', INewsManagerFactory)
+ ('news', INewsManagerFactory),
+ ('topics', ITopicManagerFactory)
]
REQUIRED_INDEXES = [
@@ -247,8 +248,7 @@
"""Check for shared tools manager"""
if registry is None:
registry = get_global_registry()
- name = config.tools_name or \
- registry.settings.get('pyams_content.config.tools_name', 'tools')
+ name = config.tools_name or registry.settings.get('pyams_content.config.tools_name', 'tools')
if name not in site:
manager = SharedToolContainer()
registry.notify(ObjectCreatedEvent(manager))
@@ -324,7 +324,8 @@
order = 100
generation = 1
- def evolve(self, site, current=None):
+ @staticmethod
+ def evolve(site, current=None):
"""Check for required utilities, tables and tools"""
check_required_utilities(site, REQUIRED_UTILITIES)
check_required_indexes(site, get_required_indexes())
Binary file src/pyams_content/locales/fr/LC_MESSAGES/pyams_content.mo has changed
--- a/src/pyams_content/locales/fr/LC_MESSAGES/pyams_content.po Thu Sep 06 18:10:04 2018 +0200
+++ b/src/pyams_content/locales/fr/LC_MESSAGES/pyams_content.po Fri Oct 05 10:44:32 2018 +0200
@@ -5,7 +5,7 @@
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE 1.0\n"
-"POT-Creation-Date: 2018-09-06 16:56+0200\n"
+"POT-Creation-Date: 2018-10-03 10:57+0200\n"
"PO-Revision-Date: 2015-09-10 10:42+0200\n"
"Last-Translator: Thierry Florac <tflorac@ulthar.net>\n"
"Language-Team: French\n"
@@ -40,7 +40,7 @@
msgid "Comment content"
msgstr "Commenter un contenu"
-#: src/pyams_content/__init__.py:49 src/pyams_content/workflow/__init__.py:375
+#: src/pyams_content/__init__.py:49 src/pyams_content/workflow/__init__.py:376
msgid "Publish content"
msgstr "Publier le contenu"
@@ -80,446 +80,247 @@
msgid "Guest user (role)"
msgstr "Invité (rôle)"
-#: src/pyams_content/component/gallery/__init__.py:154
-msgid "Gallery"
-msgstr "Galerie de médias"
-
-#: src/pyams_content/component/gallery/zmi/file.py:60
-#: src/pyams_content/component/gallery/zmi/file.py:72
-#: src/pyams_content/component/gallery/zmi/paragraph.py:155
-msgid "Add media(s)"
-msgstr "Ajouter des médias"
-
-#: src/pyams_content/component/gallery/zmi/file.py:182
-msgid "Update media properties"
-msgstr "Propriétés du média"
-
-#: src/pyams_content/component/gallery/zmi/file.py:236
-msgid "Remove media..."
-msgstr "Supprimer le média"
-
-#: src/pyams_content/component/gallery/zmi/file.py:146
-msgid "Show/hide media"
-msgstr "Cliquez pour rendre le média visible ou non"
-
-#: src/pyams_content/component/gallery/zmi/file.py:203
-msgid "Audio content"
-msgstr "Contenu audio associé"
-
-#: src/pyams_content/component/gallery/zmi/paragraph.py:57
-msgid "Medias gallery..."
-msgstr "Galerie de médias"
-
-#: src/pyams_content/component/gallery/zmi/paragraph.py:70
-msgid "Add new gallery"
-msgstr "Ajout d'une galerie de médias"
-
-#: src/pyams_content/component/gallery/zmi/paragraph.py:92
-msgid "Edit gallery properties"
-msgstr "Propriétés de la galerie de médias"
-
-#: src/pyams_content/component/gallery/zmi/__init__.py:63
-msgid "Update gallery properties"
-msgstr "Propriétés de la galerie de médias"
-
-#: src/pyams_content/component/gallery/zmi/__init__.py:90
-msgid "Update gallery contents"
-msgstr "Contenu de la galerie de médias"
-
-#: src/pyams_content/component/gallery/zmi/interfaces.py:36
-msgid "Images or videos data"
-msgstr "Fichier"
-
-#: src/pyams_content/component/gallery/zmi/interfaces.py:37
-msgid "You can upload a single file or choose to upload a whole ZIP archive"
-msgstr ""
-"Vous pouvez déposer les médias un par un, ou en nombre en les réunissant au "
-"préalable dans un fichier ZIP"
-
-#: src/pyams_content/component/gallery/zmi/interfaces.py:40
-#: 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:68
-#: src/pyams_content/component/paragraph/interfaces/video.py:52
-#: src/pyams_content/component/paragraph/interfaces/audio.py:52
-#: src/pyams_content/component/paragraph/interfaces/verbatim.py:44
-#: src/pyams_content/component/video/interfaces/__init__.py:52
-msgid "Author"
-msgstr "Auteur"
-
-#: src/pyams_content/component/gallery/zmi/interfaces.py:41
-#: src/pyams_content/component/gallery/interfaces/__init__.py:62
-#: src/pyams_content/component/extfile/interfaces/__init__.py:45
-#: src/pyams_content/component/paragraph/interfaces/video.py:53
-#: src/pyams_content/component/paragraph/interfaces/audio.py:53
-#: src/pyams_content/component/video/interfaces/__init__.py:53
-msgid "Name of document's author"
-msgstr "Sous la forme \"Prénom Nom / Organisme\""
-
-#: src/pyams_content/component/gallery/zmi/interfaces.py:44
-msgid "Author comments"
-msgstr "À propos de l'auteur"
-
-#: src/pyams_content/component/gallery/zmi/interfaces.py:45
-#: src/pyams_content/component/gallery/interfaces/__init__.py:66
-msgid "Comments relatives to author's rights management"
-msgstr ""
-"Commentaires (non publiés mais à conserver) relatifs à l'auteur et à la "
-"gestion de ses droits"
-
-#: src/pyams_content/component/gallery/zmi/templates/gallery-medias.pt:12
-msgid "Gallery medias"
-msgstr "Contenu de la galerie"
-
-#: src/pyams_content/component/gallery/zmi/templates/gallery-medias.pt:18
-msgid "Download medias"
-msgstr "Télécharger tous les médias"
-
-#: src/pyams_content/component/gallery/zmi/templates/gallery-medias.pt:42
-msgid "Zoom image"
-msgstr "Agrandir l'image"
-
-#: src/pyams_content/component/gallery/interfaces/__init__.py:133
-msgid "Medias gallery"
-msgstr "Galerie de médias"
-
-#: src/pyams_content/component/gallery/interfaces/__init__.py:47
-#: src/pyams_content/component/illustration/interfaces/__init__.py:46
-#: src/pyams_content/component/illustration/interfaces/__init__.py:105
-msgid "Image or video data"
-msgstr "Fichier"
-
-#: src/pyams_content/component/gallery/interfaces/__init__.py:48
-#: src/pyams_content/component/illustration/interfaces/__init__.py:47
-#: src/pyams_content/component/illustration/interfaces/__init__.py:106
-msgid "Image or video content"
-msgstr ""
-"Cliquez sur le bouton 'Parcourir...' pour sélectionner un nouveau contenu..."
-
-#: src/pyams_content/component/gallery/interfaces/__init__.py:51
-#: src/pyams_content/component/illustration/interfaces/__init__.py:53
-#: src/pyams_content/component/paragraph/interfaces/video.py:45
-#: src/pyams_content/component/paragraph/interfaces/audio.py:45
-#: src/pyams_content/component/video/interfaces/__init__.py:75
-msgid "Legend"
-msgstr "Légende"
-
-#: src/pyams_content/component/gallery/interfaces/__init__.py:54
-#: src/pyams_content/component/illustration/interfaces/__init__.py:56
-#: src/pyams_content/reference/pictograms/interfaces/__init__.py:48
-msgid "Accessibility title"
-msgstr "Alternative (accessibilité)"
-
-#: src/pyams_content/component/gallery/interfaces/__init__.py:55
-msgid "Alternate title used to describe media content"
-msgstr ""
-"Ce texte est affiché lorsque le média ne peut être téléchargé ou affiché ; "
-"il est aussi utilisé par les navigateurs des personnes souffrant de "
-"déficiences visuelles. Il doit donc décrire le contenu du média, pour se "
-"conformer aux normes d'accessibilité."
-
-#: src/pyams_content/component/gallery/interfaces/__init__.py:58
-#: src/pyams_content/component/gallery/interfaces/__init__.py:101
-#: src/pyams_content/component/extfile/interfaces/__init__.py:40
-#: src/pyams_content/component/paragraph/interfaces/audio.py:48
-#: src/pyams_content/component/links/interfaces/__init__.py:39
-#: src/pyams_content/shared/form/interfaces/__init__.py:64
-msgid "Description"
-msgstr "Description"
-
-#: src/pyams_content/component/gallery/interfaces/__init__.py:65
-msgid "Author's comments"
-msgstr "À propos de l'auteur"
-
-#: src/pyams_content/component/gallery/interfaces/__init__.py:69
-msgid "Source ID"
-msgstr "ID source"
-
-#: src/pyams_content/component/gallery/interfaces/__init__.py:70
-msgid "Number used to identify media into it's original source"
-msgstr ""
-"Identifiant ou référence de ce média dans la base de données dont elle est "
-"issue ; au besoin, préciser le nom de cette base"
-
-#: src/pyams_content/component/gallery/interfaces/__init__.py:73
-#: src/pyams_content/component/extfile/interfaces/__init__.py:89
-#: src/pyams_content/component/paragraph/interfaces/audio.py:41
-msgid "Audio data"
-msgstr "Fichier"
-
-#: src/pyams_content/component/gallery/interfaces/__init__.py:74
-msgid "Sound file associated with the current media"
-msgstr "Vous pouvez associer un fichier audio à ce média"
-
-#: src/pyams_content/component/gallery/interfaces/__init__.py:77
-msgid "Sound title"
-msgstr "Titre"
-
-#: src/pyams_content/component/gallery/interfaces/__init__.py:78
-msgid "Title of associated sound file"
-msgstr "Titre du fichier audio associé à ce média"
-
-#: src/pyams_content/component/gallery/interfaces/__init__.py:81
-msgid "Sound description"
-msgstr "Description"
-
-#: src/pyams_content/component/gallery/interfaces/__init__.py:82
-msgid "Short description of associated sound file"
-msgstr "Courte description du fichier audio associé à ce média"
-
-#: src/pyams_content/component/gallery/interfaces/__init__.py:85
-msgid "Visible media?"
-msgstr "Média visible ?"
-
-#: src/pyams_content/component/gallery/interfaces/__init__.py:86
-msgid "If 'no', this media won't be displayed in front office"
-msgstr "Si 'non', ce média ne sera pas présenté aux internautes"
-
-#: src/pyams_content/component/gallery/interfaces/__init__.py:97
-#: src/pyams_content/component/keynumber/portlet/interfaces/__init__.py:31
-#: src/pyams_content/component/paragraph/zmi/milestone.py:239
-#: src/pyams_content/component/paragraph/zmi/container.py:270
-#: src/pyams_content/component/paragraph/interfaces/milestone.py:45
-#: src/pyams_content/shared/common/zmi/reverse.py:73
-#: src/pyams_content/shared/common/zmi/dashboard.py:109
-#: src/pyams_content/shared/common/zmi/templates/advanced-search.pt:200
-#: src/pyams_content/shared/view/portlet/interfaces.py:56
-#: src/pyams_content/shared/imagemap/zmi/container.py:123
-#: src/pyams_content/shared/site/zmi/folder.py:71
-#: src/pyams_content/root/zmi/templates/advanced-search.pt:197
-#: src/pyams_content/interfaces/__init__.py:101
-#: src/pyams_content/reference/pictograms/zmi/__init__.py:150
-#: src/pyams_content/features/menu/portlet/navigation/interfaces/simple.py:31
-#: src/pyams_content/features/menu/portlet/navigation/interfaces/double.py:31
-msgid "Title"
-msgstr "Titre"
-
-#: src/pyams_content/component/gallery/interfaces/__init__.py:98
-msgid "Gallery title, as shown in front-office"
-msgstr "Titre de la galerie présenté aux internautes"
-
-#: src/pyams_content/component/gallery/interfaces/__init__.py:102
-msgid "Gallery description displayed by front-office template"
-msgstr "Description de la galerie de médias présentée aux internautes"
-
-#: src/pyams_content/component/gallery/interfaces/__init__.py:105
-msgid "Gallery template"
-msgstr "Mode de rendu"
-
-#: src/pyams_content/component/gallery/interfaces/__init__.py:106
-msgid "Presentation template used for this gallery"
-msgstr ""
-"<span>Modèle de présentation utilisé par cette galerie.<br /"
-"><strong>ATTENTION :</strong> certains modes de rendu ne prennent en charge "
-"que certains types de médias !!</span>"
-
-#: src/pyams_content/component/extfile/__init__.py:172
-#: src/pyams_content/component/extfile/__init__.py:176
-msgid "Standard file"
-msgstr "Fichier"
-
+#: src/pyams_content/reference/zmi/__init__.py:50
+msgid "References"
+msgstr "Tables de réf."
+
+#: src/pyams_content/reference/zmi/__init__.py:68
+#: src/pyams_content/reference/zmi/table.py:129
+msgid "References tables"
+msgstr "Tables de références"
+
+#: src/pyams_content/reference/zmi/table.py:73
+msgid "Contents"
+msgstr "Contenu"
+
+#: src/pyams_content/reference/zmi/table.py:83
+msgid "Table contents"
+msgstr "Contenu de la table"
+
+#: src/pyams_content/reference/zmi/table.py:143
+msgid "Properties..."
+msgstr "Propriétés"
+
+#: src/pyams_content/reference/zmi/table.py:157
+msgid "Edit table properties"
+msgstr "Propriétés de la table"
+
+#: src/pyams_content/reference/zmi/table.py:167
+msgid "Table management"
+msgstr "Gérer cette table"
+
+#: src/pyams_content/reference/pictograms/interfaces/__init__.py:44
#: src/pyams_content/component/extfile/__init__.py:223
#: src/pyams_content/component/extfile/__init__.py:238
#: src/pyams_content/shared/imagemap/interfaces/__init__.py:67
-#: src/pyams_content/reference/pictograms/interfaces/__init__.py:44
msgid "Image"
msgstr "Image"
-#: src/pyams_content/component/extfile/__init__.py:253
-#: src/pyams_content/component/extfile/__init__.py:257
-#: src/pyams_content/component/paragraph/interfaces/video.py:34
-msgid "Video"
-msgstr "Vidéo"
-
-#: src/pyams_content/component/extfile/__init__.py:272
-#: src/pyams_content/component/extfile/__init__.py:276
-msgid "Audio file"
-msgstr "Fichier audio"
-
-#: src/pyams_content/component/extfile/zmi/__init__.py:74
-msgid "External files"
-msgstr "Fichiers"
-
-#: src/pyams_content/component/extfile/zmi/__init__.py:89
-msgid "Add external file"
-msgstr "Fichier"
-
-#: src/pyams_content/component/extfile/zmi/__init__.py:103
-msgid "Add new external file"
-msgstr "Ajout d'un fichier"
-
-#: src/pyams_content/component/extfile/zmi/__init__.py:133
-msgid "Update file properties"
-msgstr "Propriétés du fichier"
-
-#: src/pyams_content/component/extfile/zmi/__init__.py:161
-msgid "Images"
-msgstr "Images"
-
-#: src/pyams_content/component/extfile/zmi/__init__.py:176
-msgid "Add image"
-msgstr "Image téléchargeable"
-
-#: src/pyams_content/component/extfile/zmi/__init__.py:190
-msgid "Add new image"
-msgstr "Ajout d'une image téléchargeable"
-
-#: src/pyams_content/component/extfile/zmi/__init__.py:221
-msgid "Update image properties"
-msgstr "Propriétés de l'image téléchargeable"
-
-#: src/pyams_content/component/extfile/zmi/__init__.py:254
-msgid "Videos"
-msgstr "Vidéos"
-
-#: src/pyams_content/component/extfile/zmi/__init__.py:269
-msgid "Add video"
-msgstr "Vidéo téléchargeable"
-
-#: src/pyams_content/component/extfile/zmi/__init__.py:283
-msgid "Add new video"
-msgstr "Ajout d'une vidéo téléchargeable"
-
-#: src/pyams_content/component/extfile/zmi/__init__.py:307
-msgid "Update video properties"
-msgstr "Propriétés de la vidéo téléchargeable"
-
-#: src/pyams_content/component/extfile/zmi/__init__.py:333
-msgid "Audios files"
-msgstr "Fichiers audios"
-
-#: src/pyams_content/component/extfile/zmi/__init__.py:348
-msgid "Add audio file"
-msgstr "Bande son téléchargeable"
-
-#: src/pyams_content/component/extfile/zmi/__init__.py:362
-msgid "Add new audio file"
-msgstr "Ajout d'une bande son téléchargeable"
-
-#: src/pyams_content/component/extfile/zmi/__init__.py:386
-msgid "Update audio file properties"
-msgstr "Propriétés de la bande son téléchargeable"
-
-#: src/pyams_content/component/extfile/zmi/__init__.py:50
-msgid "External file type"
-msgstr "Type de fichier joint"
-
-#: src/pyams_content/component/extfile/interfaces/__init__.py:36
-#: src/pyams_content/component/links/interfaces/__init__.py:35
-#: src/pyams_content/shared/imagemap/interfaces/__init__.py:55
-msgid "Alternate title"
-msgstr "Titre de substitution"
-
-#: src/pyams_content/component/extfile/interfaces/__init__.py:37
-msgid "File title, as shown in front-office"
-msgstr "Titre présenté aux internautes"
-
-#: src/pyams_content/component/extfile/interfaces/__init__.py:41
-#: src/pyams_content/component/paragraph/interfaces/audio.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/links/interfaces/__init__.py:65
-msgid "Language"
-msgstr "Langue"
-
-#: src/pyams_content/component/extfile/interfaces/__init__.py:49
-msgid "File's content language"
-msgstr "Langue du fichier"
-
-#: src/pyams_content/component/extfile/interfaces/__init__.py:53
-msgid "Save file as..."
-msgstr "Nom du fichier"
-
-#: src/pyams_content/component/extfile/interfaces/__init__.py:54
-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 "
-"veiller au sens de ce nom, sans oublier d'indiquer l'extension (« .pdf », « ."
-"doc »...) !"
-
-#: src/pyams_content/component/extfile/interfaces/__init__.py:61
-msgid "File data"
-msgstr "Fichier"
-
-#: src/pyams_content/component/extfile/interfaces/__init__.py:62
-msgid "File content"
-msgstr ""
-"Cliquez sur le bouton 'Parcourir...' pour sélectionner un nouveau contenu"
-
-#: src/pyams_content/component/extfile/interfaces/__init__.py:73
-#: src/pyams_content/shared/logo/interfaces/__init__.py:48
-msgid "Image data"
-msgstr "Fichier"
-
-#: src/pyams_content/component/extfile/interfaces/__init__.py:74
-msgid "Image content"
-msgstr ""
-"Cliquez sur le bouton 'Parcourir...' pour sélectionner un nouveau contenu..."
-
-#: src/pyams_content/component/extfile/interfaces/__init__.py:81
-#: src/pyams_content/component/paragraph/interfaces/video.py:41
-msgid "Video data"
-msgstr "Fichier"
-
-#: src/pyams_content/component/extfile/interfaces/__init__.py:82
-msgid "Video content"
-msgstr ""
-"Cliquez sur le bouton 'Parcourir...' pour sélectionner un nouveau contenu"
-
-#: src/pyams_content/component/extfile/interfaces/__init__.py:90
-#: src/pyams_content/component/paragraph/interfaces/audio.py:42
-msgid "Audio file content"
-msgstr ""
-"Cliquez sur le bouton 'Parcourir...' pour sélectionner un nouveau contenu"
+#: src/pyams_content/reference/pictograms/interfaces/__init__.py:45
+msgid "Pictogram content"
+msgstr "Utilisez le bouton \"Parcourir\" pour modifier le contenu de l'image"
+
+#: src/pyams_content/reference/pictograms/interfaces/__init__.py:48
+#: src/pyams_content/component/gallery/interfaces/__init__.py:49
+#: src/pyams_content/component/illustration/interfaces/__init__.py:50
+msgid "Accessibility title"
+msgstr "Alternative (accessibilité)"
+
+#: src/pyams_content/reference/pictograms/interfaces/__init__.py:49
+#: src/pyams_content/component/illustration/interfaces/__init__.py:51
+msgid "Alternate title used to describe image content"
+msgstr ""
+"Ce texte est affiché lorsque le contenu ne peut être téléchargé ou affiché ; "
+"il est aussi utilisé par les navigateurs des personnes souffrant de "
+"déficiences visuelles. Il doit donc décrire le contenu, pour se conformer "
+"aux normes d'accessibilité."
+
+#. Default: Header
+#: src/pyams_content/reference/pictograms/interfaces/__init__.py:52
+msgid "pictogram-header"
+msgstr "En-tête par défaut"
+
+#: src/pyams_content/reference/pictograms/interfaces/__init__.py:53
+msgid "Default header associated with this pictogram"
+msgstr "En-tête par défaut associé à ce pictogramme"
+
+#: src/pyams_content/reference/pictograms/interfaces/__init__.py:73
+#: src/pyams_content/reference/pictograms/zmi/manager.py:62
+#: src/pyams_content/reference/pictograms/zmi/templates/manager-selection.pt:34
+msgid "Selected pictograms"
+msgstr "Pictogrammes sélectionnés"
+
+#: src/pyams_content/reference/pictograms/interfaces/__init__.py:74
+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/reference/pictograms/zmi/widget.py:36
+msgid "No selected pictogram"
+msgstr "Aucun pictogramme sélectionné"
+
+#: src/pyams_content/reference/pictograms/zmi/widget.py:55
+#: src/pyams_content/reference/pictograms/zmi/__init__.py:169
+msgid "Default header: --"
+msgstr "En-tête par défaut : --"
+
+#: src/pyams_content/reference/pictograms/zmi/manager.py:50
+msgid "Pictograms selection..."
+msgstr "Sélection de pictogrammes"
+
+#: src/pyams_content/reference/pictograms/zmi/__init__.py:59
+#: src/pyams_content/component/paragraph/zmi/pictogram.py:313
+msgid "Add pictogram"
+msgstr "Ajouter un pictogramme"
+
+#: src/pyams_content/reference/pictograms/zmi/__init__.py:71
+#: src/pyams_content/component/paragraph/zmi/pictogram.py:326
+msgid "Add new pictogram"
+msgstr "Ajout d'un pictogramme"
+
+#: src/pyams_content/reference/pictograms/zmi/__init__.py:95
+#: src/pyams_content/component/paragraph/zmi/pictogram.py:368
+msgid "Edit pictogram properties"
+msgstr "Propriétés du pictogramme"
+
+#: src/pyams_content/reference/pictograms/zmi/__init__.py:150
+#: src/pyams_content/component/keynumber/portlet/interfaces/__init__.py:31
+#: src/pyams_content/component/gallery/interfaces/__init__.py:106
+#: src/pyams_content/component/paragraph/interfaces/milestone.py:43
+#: src/pyams_content/component/paragraph/zmi/container.py:270
+#: src/pyams_content/component/paragraph/zmi/milestone.py:238
+#: src/pyams_content/interfaces/__init__.py:101
+#: src/pyams_content/features/menu/portlet/navigation/interfaces/simple.py:31
+#: src/pyams_content/features/menu/portlet/navigation/interfaces/double.py:31
+#: src/pyams_content/root/zmi/templates/advanced-search.pt:197
+#: src/pyams_content/shared/view/portlet/interfaces.py:56
+#: src/pyams_content/shared/common/zmi/dashboard.py:103
+#: src/pyams_content/shared/common/zmi/reverse.py:73
+#: src/pyams_content/shared/common/zmi/templates/advanced-search.pt:200
+#: src/pyams_content/shared/site/zmi/folder.py:66
+#: src/pyams_content/shared/imagemap/zmi/container.py:123
+#: src/pyams_content/shared/logo/interfaces/__init__.py:46
+msgid "Title"
+msgstr "Titre"
+
+#: src/pyams_content/reference/pictograms/zmi/templates/manager-selection.pt:7
+msgid "Available pictograms"
+msgstr "Pictogrammes disponibles"
+
+#: src/pyams_content/reference/pictograms/zmi/templates/manager-selection.pt:21
+#: src/pyams_content/reference/pictograms/zmi/templates/manager-selection.pt:48
+msgid "Display pictogram properties"
+msgstr "Propriétés du pictogramme"
+
+#: src/pyams_content/reference/pictograms/zmi/templates/pictogram-header.pt:6
+msgid "Default header: ${header}"
+msgstr "En-tête par défaut : ${header}"
#: src/pyams_content/component/keynumber/__init__.py:189
-#: src/pyams_content/component/keynumber/zmi/__init__.py:212
+#: src/pyams_content/component/keynumber/interfaces/__init__.py:83
#: src/pyams_content/component/keynumber/portlet/zmi/__init__.py:74
-#: src/pyams_content/component/keynumber/interfaces/__init__.py:83
+#: src/pyams_content/component/keynumber/zmi/__init__.py:212
msgid "Key numbers"
msgstr "Chiffres-clés"
-#: src/pyams_content/component/keynumber/zmi/paragraph.py:53
-msgid "Key numbers..."
-msgstr "Chiffres-clés"
-
-#: src/pyams_content/component/keynumber/zmi/paragraph.py:66
-msgid "Add new key number paragraph"
-msgstr "Ajout de chiffres-clés"
-
-#: src/pyams_content/component/keynumber/zmi/paragraph.py:94
-msgid "Edit key number paragraph properties"
-msgstr "Propriétés des chiffres-clés"
+#: src/pyams_content/component/keynumber/interfaces/__init__.py:40
+#: src/pyams_content/component/paragraph/interfaces/pictogram.py:41
+#: src/pyams_content/component/paragraph/interfaces/milestone.py:38
+#: src/pyams_content/component/paragraph/interfaces/__init__.py:42
+#: src/pyams_content/component/association/interfaces/__init__.py:42
+#: src/pyams_content/features/alert/interfaces.py:54
+#: src/pyams_content/features/menu/interfaces/__init__.py:59
+#: src/pyams_content/shared/form/interfaces/__init__.py:85
+#: src/pyams_content/shared/site/interfaces/__init__.py:156
+msgid "Visible?"
+msgstr "Visible ?"
+
+#: src/pyams_content/component/keynumber/interfaces/__init__.py:41
+msgid "Is this key number visible in front-office?"
+msgstr "Si 'non', ce chiffre-clé ne sera pas présenté aux internautes"
#. Default: Header
+#: src/pyams_content/component/keynumber/interfaces/__init__.py:45
#: src/pyams_content/component/keynumber/zmi/__init__.py:160
-#: src/pyams_content/component/keynumber/interfaces/__init__.py:45
msgid "key-number-label"
msgstr "En-tête"
-#: src/pyams_content/component/keynumber/zmi/__init__.py:172
+#: src/pyams_content/component/keynumber/interfaces/__init__.py:46
+msgid ""
+"Small text to be displayed above number (according to selected renderer)"
+msgstr ""
+"Texte court affiché au-dessus du chiffre (selon le mode de rendu sélectionné)"
+
#: src/pyams_content/component/keynumber/interfaces/__init__.py:50
+#: src/pyams_content/component/keynumber/zmi/__init__.py:172
msgid "Number"
msgstr "Chiffre"
+#: src/pyams_content/component/keynumber/interfaces/__init__.py:51
+msgid "Key number value"
+msgstr "Chiffre"
+
#. Default: Unit
+#: src/pyams_content/component/keynumber/interfaces/__init__.py:54
#: src/pyams_content/component/keynumber/zmi/__init__.py:181
-#: src/pyams_content/component/keynumber/interfaces/__init__.py:54
msgid "key-number-unit"
msgstr "Unité"
-#: src/pyams_content/component/keynumber/zmi/__init__.py:193
+#: src/pyams_content/component/keynumber/interfaces/__init__.py:55
+msgid "Displayed unit"
+msgstr "Unité affichée"
+
#: src/pyams_content/component/keynumber/interfaces/__init__.py:58
-#: src/pyams_content/component/illustration/interfaces/__init__.py:64
-#: src/pyams_content/component/paragraph/zmi/pictogram.py:277
-#: src/pyams_content/component/paragraph/interfaces/video.py:48
+#: src/pyams_content/component/keynumber/zmi/__init__.py:193
+#: src/pyams_content/component/video/interfaces/__init__.py:46
+#: src/pyams_content/component/paragraph/interfaces/video.py:50
#: src/pyams_content/component/paragraph/interfaces/pictogram.py:58
-#: src/pyams_content/component/video/interfaces/__init__.py:48
+#: src/pyams_content/component/paragraph/interfaces/milestone.py:81
+#: src/pyams_content/component/paragraph/zmi/pictogram.py:276
+#: src/pyams_content/component/illustration/interfaces/__init__.py:62
msgid "Associated text"
msgstr "Texte associé"
+#: src/pyams_content/component/keynumber/interfaces/__init__.py:59
+msgid "The way this text will be rendered depends on presentation template"
+msgstr ""
+"La présentation de cette information peut varier en fonction du mode de "
+"rendu choisi"
+
+#: src/pyams_content/component/keynumber/interfaces/__init__.py:94
+msgid "Key numbers template"
+msgstr "Mode de rendu"
+
+#: src/pyams_content/component/keynumber/interfaces/__init__.py:95
+msgid "Presentation template used for key numbers"
+msgstr "Modèle de présentation utilisé par ce bloc de contenu"
+
+#: src/pyams_content/component/keynumber/portlet/__init__.py:71
+msgid "Key Numbers"
+msgstr "Chiffres-clés"
+
+#: src/pyams_content/component/keynumber/portlet/interfaces/__init__.py:32
+msgid "Portlet title"
+msgstr "Titre"
+
+#: src/pyams_content/component/keynumber/portlet/interfaces/__init__.py:35
+msgid "Teaser"
+msgstr "Accroche"
+
+#: src/pyams_content/component/keynumber/portlet/interfaces/__init__.py:36
+msgid "Short text displayed above key numbers"
+msgstr "Texte d'introduction des chiffres-clés"
+
+#: src/pyams_content/component/keynumber/portlet/zmi/__init__.py:97
+#: src/pyams_content/component/keynumber/portlet/zmi/templates/keynumber-preview.pt:26
+msgid "Associated links"
+msgstr "Liens associés"
+
+#: src/pyams_content/component/keynumber/portlet/zmi/templates/keynumber-preview.pt:31
+#: src/pyams_content/features/menu/portlet/navigation/zmi/templates/double-preview.pt:10
+#: src/pyams_content/features/menu/portlet/navigation/zmi/templates/simple-preview.pt:7
+msgid "Link target is not published!"
+msgstr "Le contenu ciblé n'est pas publié"
+
#: src/pyams_content/component/keynumber/zmi/__init__.py:231
msgid "Add keynumber"
msgstr "Ajouter un chiffre-clé"
@@ -536,1153 +337,265 @@
msgid "Key number was correctly added"
msgstr "Le chiffre-clé a été ajouté."
-#: src/pyams_content/component/keynumber/portlet/__init__.py:71
-msgid "Key Numbers"
+#: src/pyams_content/component/keynumber/zmi/paragraph.py:53
+msgid "Key numbers..."
msgstr "Chiffres-clés"
-#: src/pyams_content/component/keynumber/portlet/zmi/__init__.py:97
-#: src/pyams_content/component/keynumber/portlet/zmi/templates/keynumber-preview.pt:26
-msgid "Associated links"
-msgstr "Liens associés"
-
-#: src/pyams_content/component/keynumber/portlet/zmi/templates/keynumber-preview.pt:31
-#: src/pyams_content/features/menu/portlet/navigation/zmi/templates/double-preview.pt:10
-#: src/pyams_content/features/menu/portlet/navigation/zmi/templates/simple-preview.pt:7
-msgid "Link target is not published!"
-msgstr "Le contenu ciblé n'est pas publié"
-
-#: src/pyams_content/component/keynumber/portlet/interfaces/__init__.py:32
-msgid "Portlet title"
+#: src/pyams_content/component/keynumber/zmi/paragraph.py:66
+msgid "Add new key number paragraph"
+msgstr "Ajout de chiffres-clés"
+
+#: src/pyams_content/component/keynumber/zmi/paragraph.py:94
+msgid "Edit key number paragraph properties"
+msgstr "Propriétés des chiffres-clés"
+
+#: src/pyams_content/component/gallery/__init__.py:155
+msgid "Gallery"
+msgstr "Galerie de médias"
+
+#: src/pyams_content/component/gallery/paragraph.py:45
+msgid "(gallery contains 1 media)"
+msgstr "(1 média dans la galerie)"
+
+#: src/pyams_content/component/gallery/paragraph.py:47
+msgid "(empty gallery)"
+msgstr "(aucun média dans la galerie)"
+
+#: src/pyams_content/component/gallery/paragraph.py:43
+#, python-format
+msgid "(gallery contains {0} medias)"
+msgstr "({0} medias dans la galerie)"
+
+#: src/pyams_content/component/gallery/interfaces/__init__.py:120
+msgid "Medias gallery"
+msgstr "Galerie de médias"
+
+#: src/pyams_content/component/gallery/interfaces/__init__.py:42
+#: src/pyams_content/component/illustration/interfaces/__init__.py:40
+#: src/pyams_content/component/illustration/interfaces/__init__.py:103
+msgid "Image or video data"
+msgstr "Fichier"
+
+#: src/pyams_content/component/gallery/interfaces/__init__.py:43
+#: src/pyams_content/component/illustration/interfaces/__init__.py:41
+#: src/pyams_content/component/illustration/interfaces/__init__.py:104
+msgid "Image or video content"
+msgstr ""
+"Cliquez sur le bouton 'Parcourir...' pour sélectionner un nouveau contenu..."
+
+#: src/pyams_content/component/gallery/interfaces/__init__.py:46
+#: src/pyams_content/component/video/interfaces/__init__.py:69
+#: src/pyams_content/component/paragraph/interfaces/video.py:43
+#: src/pyams_content/component/paragraph/interfaces/audio.py:43
+#: src/pyams_content/component/illustration/interfaces/__init__.py:47
+msgid "Legend"
+msgstr "Légende"
+
+#: src/pyams_content/component/gallery/interfaces/__init__.py:50
+msgid "Alternate title used to describe media content"
+msgstr ""
+"Ce texte est affiché lorsque le média ne peut être téléchargé ou affiché ; "
+"il est aussi utilisé par les navigateurs des personnes souffrant de "
+"déficiences visuelles. Il doit donc décrire le contenu du média, pour se "
+"conformer aux normes d'accessibilité."
+
+#: src/pyams_content/component/gallery/interfaces/__init__.py:53
+#: src/pyams_content/component/gallery/interfaces/__init__.py:110
+#: src/pyams_content/component/links/interfaces/__init__.py:39
+#: src/pyams_content/component/paragraph/interfaces/audio.py:50
+#: src/pyams_content/component/extfile/interfaces/__init__.py:40
+#: src/pyams_content/shared/form/interfaces/__init__.py:64
+msgid "Description"
+msgstr "Description"
+
+#: src/pyams_content/component/gallery/interfaces/__init__.py:56
+#: src/pyams_content/component/gallery/zmi/interfaces.py:39
+#: src/pyams_content/component/video/interfaces/__init__.py:42
+#: src/pyams_content/component/paragraph/interfaces/video.py:46
+#: src/pyams_content/component/paragraph/interfaces/verbatim.py:44
+#: src/pyams_content/component/paragraph/interfaces/audio.py:46
+#: src/pyams_content/component/extfile/interfaces/__init__.py:44
+#: src/pyams_content/component/illustration/interfaces/__init__.py:54
+msgid "Author"
+msgstr "Auteur"
+
+#: src/pyams_content/component/gallery/interfaces/__init__.py:57
+#: src/pyams_content/component/gallery/zmi/interfaces.py:40
+#: src/pyams_content/component/video/interfaces/__init__.py:43
+#: src/pyams_content/component/paragraph/interfaces/video.py:47
+#: src/pyams_content/component/paragraph/interfaces/audio.py:47
+#: src/pyams_content/component/extfile/interfaces/__init__.py:45
+msgid "Name of document's author"
+msgstr "Sous la forme \"Prénom Nom / Organisme\""
+
+#: src/pyams_content/component/gallery/interfaces/__init__.py:60
+#: src/pyams_content/component/paragraph/interfaces/audio.py:39
+#: src/pyams_content/component/extfile/interfaces/__init__.py:89
+msgid "Audio data"
+msgstr "Fichier"
+
+#: src/pyams_content/component/gallery/interfaces/__init__.py:61
+msgid "Sound file associated with the current media"
+msgstr "Vous pouvez associer un fichier audio à ce média"
+
+#: src/pyams_content/component/gallery/interfaces/__init__.py:64
+msgid "Sound title"
msgstr "Titre"
-#: src/pyams_content/component/keynumber/portlet/interfaces/__init__.py:35
-msgid "Teaser"
-msgstr "Accroche"
-
-#: src/pyams_content/component/keynumber/portlet/interfaces/__init__.py:36
-msgid "Short text displayed above key numbers"
-msgstr "Texte d'introduction des chiffres-clés"
-
-#: src/pyams_content/component/keynumber/interfaces/__init__.py:40
-#: src/pyams_content/component/paragraph/interfaces/milestone.py:40
-#: src/pyams_content/component/paragraph/interfaces/__init__.py:44
-#: src/pyams_content/component/paragraph/interfaces/pictogram.py:41
-#: src/pyams_content/component/association/interfaces/__init__.py:42
-#: src/pyams_content/shared/form/interfaces/__init__.py:85
-#: src/pyams_content/shared/site/interfaces/__init__.py:144
-#: src/pyams_content/features/alert/interfaces.py:54
-#: src/pyams_content/features/menu/interfaces/__init__.py:59
-msgid "Visible?"
-msgstr "Visible ?"
-
-#: src/pyams_content/component/keynumber/interfaces/__init__.py:41
-msgid "Is this key number visible in front-office?"
-msgstr "Si 'non', ce chiffre-clé ne sera pas présenté aux internautes"
-
-#: src/pyams_content/component/keynumber/interfaces/__init__.py:46
-msgid ""
-"Small text to be displayed above number (according to selected renderer)"
-msgstr ""
-"Texte court affiché au-dessus du chiffre (selon le mode de rendu sélectionné)"
-
-#: src/pyams_content/component/keynumber/interfaces/__init__.py:51
-msgid "Key number value"
-msgstr "Chiffre"
-
-#: src/pyams_content/component/keynumber/interfaces/__init__.py:55
-msgid "Displayed unit"
-msgstr "Unité affichée"
-
-#: src/pyams_content/component/keynumber/interfaces/__init__.py:59
-msgid "The way this text will be rendered depends on presentation template"
-msgstr ""
-"La présentation de cette information peut varier en fonction du mode de "
-"rendu choisi"
-
-#: src/pyams_content/component/keynumber/interfaces/__init__.py:94
-msgid "Key numbers template"
-msgstr "Mode de rendu"
-
-#: src/pyams_content/component/keynumber/interfaces/__init__.py:95
-msgid "Presentation template used for key numbers"
-msgstr "Modèle de présentation utilisé par ce bloc de contenu"
-
-#: src/pyams_content/component/illustration/__init__.py:177
-#: src/pyams_content/component/illustration/thesaurus.py:32
-#: src/pyams_content/component/illustration/zmi/paragraph.py:158
-#: src/pyams_content/component/illustration/zmi/__init__.py:56
-#: src/pyams_content/component/illustration/zmi/__init__.py:117
-#: src/pyams_content/component/illustration/interfaces/__init__.py:99
-msgid "Illustration"
-msgstr "Illustration"
-
-#: src/pyams_content/component/illustration/zmi/paragraph.py:60
-msgid "Illustration..."
-msgstr "Illustration"
-
-#: src/pyams_content/component/illustration/zmi/paragraph.py:73
-msgid "Add new illustration"
-msgstr "Ajout d'une illustration"
-
-#: src/pyams_content/component/illustration/zmi/paragraph.py:98
-#: src/pyams_content/component/illustration/zmi/thesaurus.py:42
-msgid "Edit illustration properties"
-msgstr "Propriétés de l'illustration"
-
-#: src/pyams_content/component/illustration/zmi/__init__.py:151
-msgid "Navigation link illustration"
-msgstr "Illustration de navigation"
-
-#: src/pyams_content/component/illustration/zmi/__init__.py:119
-msgid "Header illustration"
-msgstr "Illustration d'en-tête"
-
-#: src/pyams_content/component/illustration/interfaces/__init__.py:57
-#: src/pyams_content/reference/pictograms/interfaces/__init__.py:49
-msgid "Alternate title used to describe image content"
-msgstr ""
-"Ce texte est affiché lorsque le contenu ne peut être téléchargé ou affiché ; "
-"il est aussi utilisé par les navigateurs des personnes souffrant de "
-"déficiences visuelles. Il doit donc décrire le contenu, pour se conformer "
-"aux normes d'accessibilité."
-
-#: src/pyams_content/component/illustration/interfaces/__init__.py:65
-msgid "Illustration description displayed in front-office templates"
-msgstr ""
-"Le texte accompagne l'illustration, en complément de la légende. Attention : "
-"sa présence et sa mise en forme dépendent du mode de rendu choisi."
-
-#: src/pyams_content/component/illustration/interfaces/__init__.py:69
-msgid "Name of picture's author"
-msgstr "Sous la forme \"Prénom Nom / Organisme\""
-
-#: src/pyams_content/component/illustration/interfaces/__init__.py:72
-msgid "Illustration template"
+#: src/pyams_content/component/gallery/interfaces/__init__.py:65
+msgid "Title of associated sound file"
+msgstr "Titre du fichier audio associé à ce média"
+
+#: src/pyams_content/component/gallery/interfaces/__init__.py:68
+msgid "Sound description"
+msgstr "Description"
+
+#: src/pyams_content/component/gallery/interfaces/__init__.py:69
+msgid "Short description of associated sound file"
+msgstr "Courte description du fichier audio associé à ce média"
+
+#: src/pyams_content/component/gallery/interfaces/__init__.py:72
+msgid "Visible media?"
+msgstr "Média visible ?"
+
+#: src/pyams_content/component/gallery/interfaces/__init__.py:73
+msgid "If 'no', this media won't be displayed in front office"
+msgstr "Si 'non', ce média ne sera pas présenté aux internautes"
+
+#: src/pyams_content/component/gallery/interfaces/__init__.py:84
+msgid "Gallery template"
msgstr "Mode de rendu"
-#: src/pyams_content/component/illustration/interfaces/__init__.py:73
-msgid "Presentation template used for illustration"
-msgstr ""
-"<span>Modèle de présentation utilisé par cette illustration.<br /"
-"><strong>ATTENTION :</strong> certains modes de rendu ne prennent pas en "
-"compte tous les types de médias !</span>"
-
-#: src/pyams_content/component/paragraph/milestone.py:140
-msgid "Selected paragraph is missing"
-msgstr "le bloc sélectionné est introuvable"
-
-#: src/pyams_content/component/paragraph/milestone.py:143
-msgid "Selected paragraph is not visible"
-msgstr "le bloc sélectionné n'est pas visible"
-
-#: src/pyams_content/component/paragraph/container.py:97
-msgid "Paragraphs"
-msgstr "Blocs de contenu"
-
-#: src/pyams_content/component/paragraph/container.py:119
-msgid "no visible paragraph"
-msgstr "aucun bloc de contenu visible"
-
-#: src/pyams_content/component/paragraph/pictogram.py:135
-msgid "Selected pictogram is missing"
-msgstr "le pictogramme sélectionné est introuvable"
-
-#: src/pyams_content/component/paragraph/header.py:62
-msgid "This paragraph type is deprecated and should be removed!"
-msgstr "Ce type de paragraphe a été supprimé et ne doit plus être utilisé !"
-
-#: src/pyams_content/component/paragraph/zmi/milestone.py:78
-msgid "Milestones..."
-msgstr "Chronologie"
-
-#: src/pyams_content/component/paragraph/zmi/milestone.py:91
-msgid "Add new milestone paragraph"
-msgstr "Ajout d'une chronologie"
-
-#: src/pyams_content/component/paragraph/zmi/milestone.py:118
-msgid "Edit milestone paragraph properties"
-msgstr "Propriétés de la chronologie"
-
-#: src/pyams_content/component/paragraph/zmi/milestone.py:251
-#: src/pyams_content/component/paragraph/interfaces/milestone.py:49
-msgid "Associated label"
-msgstr "Information associée"
-
-#: src/pyams_content/component/paragraph/zmi/milestone.py:263
-#: src/pyams_content/component/paragraph/interfaces/milestone.py:53
-msgid "Anchor"
-msgstr "Ancre"
-
-#: src/pyams_content/component/paragraph/zmi/milestone.py:292
-#: src/pyams_content/component/paragraph/interfaces/milestone.py:76
-msgid "Milestones"
-msgstr "Chronologie"
-
-#: src/pyams_content/component/paragraph/zmi/milestone.py:307
-msgid "Add milestone"
-msgstr "Ajouter un jalon"
-
-#: src/pyams_content/component/paragraph/zmi/milestone.py:320
-msgid "Add new milestone"
-msgstr "Ajout d'un jalon"
-
-#: src/pyams_content/component/paragraph/zmi/milestone.py:347
-msgid "Edit milestone properties"
-msgstr "Propriétés du jalon"
-
-#: src/pyams_content/component/paragraph/zmi/milestone.py:335
-msgid "Milestone was correctly added"
-msgstr "Le jalon a été ajouté."
-
-#: src/pyams_content/component/paragraph/zmi/milestone.py:278
-msgid "(missing paragraph)"
-msgstr "(paragraphe supprimé)"
-
-#: src/pyams_content/component/paragraph/zmi/keypoint.py:52
-msgid "Key points..."
-msgstr "Points clés"
-
-#: src/pyams_content/component/paragraph/zmi/keypoint.py:65
-msgid "Add new key points paragraph"
-msgstr "Ajout de points clés"
-
-#: src/pyams_content/component/paragraph/zmi/keypoint.py:92
-msgid "Edit key points paragraph properties"
-msgstr "Propriétés des points clés"
-
-#: src/pyams_content/component/paragraph/zmi/__init__.py:64
-msgid "Content block types..."
-msgstr "Types de blocs de contenu"
-
-#: src/pyams_content/component/paragraph/zmi/__init__.py:78
-msgid "Content block types"
-msgstr "Types de blocs de contenu"
-
-#: src/pyams_content/component/paragraph/zmi/__init__.py:88
-msgid ""
-"You can define which types of paragraphs are allowed in this container.\n"
-"\n"
-"Default paragraphs will be added automatically (in selected order) to any "
-"new created content.\n"
-"\n"
-"NOTICE: removing types from allowed types list will have no effect on "
-"already created contents!"
-msgstr ""
-"Vous pouvez indiquer la liste des types de blocs de contenu autorisés pour "
-"ce gabarit.\n"
-"\n"
-"Les types de blocs par défaut seront ajoutés automatiquement (dans l'ordre "
-"défini) à chaque nouveau contenu créé selon ce gabarit.\n"
-"\n"
-"REMARQUE : supprimer des types de la liste des types de blocs autorisés sera "
-"sans effet sur les contenus existants."
-
-#: src/pyams_content/component/paragraph/zmi/__init__.py:206
-#: src/pyams_content/shared/common/zmi/templates/preview-input.pt:39
-#: src/pyams_content/features/preview/zmi/__init__.py:45
-msgid "Preview"
-msgstr "Aperçu"
-
-#: src/pyams_content/component/paragraph/zmi/__init__.py:211
-#: src/pyams_content/shared/common/zmi/workflow.py:123
-#: src/pyams_content/shared/common/zmi/workflow.py:210
-#: src/pyams_content/shared/common/zmi/workflow.py:250
-#: src/pyams_content/shared/common/zmi/workflow.py:304
-#: src/pyams_content/shared/common/zmi/workflow.py:393
-#: src/pyams_content/shared/common/zmi/workflow.py:449
-#: src/pyams_content/shared/common/zmi/workflow.py:489
-#: src/pyams_content/shared/common/zmi/workflow.py:530
-#: src/pyams_content/shared/common/zmi/workflow.py:573
-#: src/pyams_content/shared/common/zmi/workflow.py:613
-#: src/pyams_content/shared/common/zmi/workflow.py:654
-#: src/pyams_content/shared/common/zmi/workflow.py:705
-#: src/pyams_content/shared/common/zmi/__init__.py:273
-#: src/pyams_content/shared/common/zmi/owner.py:73
-#: src/pyams_content/features/review/zmi/__init__.py:90
-msgid "Cancel"
-msgstr "Annuler"
-
-#: src/pyams_content/component/paragraph/zmi/__init__.py:213
-msgid "Submit"
-msgstr "Enregistrer"
-
-#: src/pyams_content/component/paragraph/zmi/__init__.py:194
-msgid "Paragraph was correctly added."
-msgstr "Le bloc a été ajouté."
-
-#: src/pyams_content/component/paragraph/zmi/__init__.py:253
-msgid ""
-"You changed renderer selection. Don't omit to update new renderer "
-"properties..."
-msgstr ""
-"Vous avez changé de mode de rendu. N'oubliez pas de vérifier les propriétés "
-"du nouveau mode de rendu sélectionné..."
-
-#: src/pyams_content/component/paragraph/zmi/map.py:55
-msgid "Location map..."
-msgstr "Carte de situation"
-
-#: src/pyams_content/component/paragraph/zmi/map.py:68
-msgid "Add new location map"
-msgstr "Ajout d'une carte de situation"
-
-#: src/pyams_content/component/paragraph/zmi/map.py:91
-msgid "Edit location map properties"
-msgstr "Propriétés de la carte"
-
-#: src/pyams_content/component/paragraph/zmi/video.py:54
-msgid "Video paragraph..."
-msgstr "Vidéo"
-
-#: src/pyams_content/component/paragraph/zmi/video.py:67
-msgid "Add new video paragraph"
-msgstr "Ajout d'une vidéo"
-
-#: src/pyams_content/component/paragraph/zmi/video.py:90
-#: src/pyams_content/component/video/zmi/paragraph.py:189
-msgid "Edit video properties"
-msgstr "Propriétés de la vidéo"
-
-#: src/pyams_content/component/paragraph/zmi/container.py:74
-msgid "Contents..."
-msgstr "Blocs de contenu"
-
-#: src/pyams_content/component/paragraph/zmi/container.py:215
-msgid "Set navigation anchor"
-msgstr "Ancre de navigation"
-
-#: src/pyams_content/component/paragraph/zmi/container.py:286
-msgid "Show/hide all paragraphs"
-msgstr "Afficher/masquer tous les blocs"
-
-#: src/pyams_content/component/paragraph/zmi/container.py:334
-#: src/pyams_content/component/paragraph/zmi/container.py:343
-#: src/pyams_content/component/paragraph/zmi/container.py:356
-msgid "Content blocks"
-msgstr "Blocs de contenu"
-
-#: src/pyams_content/component/paragraph/zmi/container.py:413
-msgid "Links and attachments..."
-msgstr "Récap. liens et PJ"
-
-#: src/pyams_content/component/paragraph/zmi/container.py:425
-msgid "Content blocks links and attachments"
-msgstr "Récapitulatif des liens et pièces jointes par bloc de contenu"
-
-#: src/pyams_content/component/paragraph/zmi/container.py:145
-msgid "No currently defined paragraph."
-msgstr "Aucun bloc n'est associé à ce contenu."
-
-#: src/pyams_content/component/paragraph/zmi/container.py:295
-msgid "Click to open/close all paragraphs editors"
-msgstr "Afficher/masquer tous les blocs"
-
-#: src/pyams_content/component/paragraph/zmi/container.py:308
-msgid "Click to open/close paragraph editor"
-msgstr "Afficher/masquer ce bloc"
-
-#: src/pyams_content/component/paragraph/zmi/container.py:151
-msgid "Check allowed paragraph types to be able to create new paragraphs."
-msgstr ""
-"Vérifiez le paramétrage des types de blocs de contenu autorisés pour pouvoir "
-"ajouter de nouveaux blocs."
-
-#: src/pyams_content/component/paragraph/zmi/pictogram.py:83
-msgid "Pictograms..."
-msgstr "Pictogrammes"
-
-#: src/pyams_content/component/paragraph/zmi/pictogram.py:96
-msgid "Add new pictogram paragraph"
-msgstr "Ajout de pictogrammes"
-
-#: src/pyams_content/component/paragraph/zmi/pictogram.py:123
-msgid "Edit pictogram paragraph properties"
-msgstr "Propriétés des pictogrammes"
-
-#. Default: Header
-#: src/pyams_content/component/paragraph/zmi/pictogram.py:260
-msgid "pictogram-item-header"
-msgstr "En-tête"
-
-#: src/pyams_content/component/paragraph/zmi/pictogram.py:299
-#: src/pyams_content/component/paragraph/interfaces/pictogram.py:80
-msgid "Pictograms"
-msgstr "Pictogrammes"
-
-#: src/pyams_content/component/paragraph/zmi/pictogram.py:314
-#: src/pyams_content/reference/pictograms/zmi/__init__.py:59
-msgid "Add pictogram"
-msgstr "Ajouter un pictogramme"
-
-#: src/pyams_content/component/paragraph/zmi/pictogram.py:327
-#: src/pyams_content/reference/pictograms/zmi/__init__.py:71
-msgid "Add new pictogram"
-msgstr "Ajout d'un pictogramme"
-
-#: src/pyams_content/component/paragraph/zmi/pictogram.py:369
-#: src/pyams_content/reference/pictograms/zmi/__init__.py:95
-msgid "Edit pictogram properties"
-msgstr "Propriétés du pictogramme"
-
-#: src/pyams_content/component/paragraph/zmi/pictogram.py:349
-msgid "Pictogram was correctly added"
-msgstr "Le pictogramme a été ajouté."
-
-#: src/pyams_content/component/paragraph/zmi/pictogram.py:359
-#: src/pyams_content/component/paragraph/zmi/pictogram.py:397
-msgid "You must select a pictogram!"
-msgstr "Vous devez sélectionner un pictogramme !"
-
-#: src/pyams_content/component/paragraph/zmi/audio.py:54
-msgid "Audio paragraph..."
-msgstr "Bande son"
-
-#: src/pyams_content/component/paragraph/zmi/audio.py:67
-msgid "Add new audio paragraph"
-msgstr "Ajout d'une bande son"
-
-#: src/pyams_content/component/paragraph/zmi/audio.py:89
-msgid "Edit audio properties"
-msgstr "Propriétés de la bande son"
-
-#: src/pyams_content/component/paragraph/zmi/frame.py:86
-msgid "Framed text..."
-msgstr "Encadré"
-
-#: src/pyams_content/component/paragraph/zmi/frame.py:100
-msgid "Add new framed text paragraph"
-msgstr "Ajout d'un encadré"
-
-#: src/pyams_content/component/paragraph/zmi/frame.py:126
-msgid "Edit framed text paragraph properties"
-msgstr "Propriétés de l'encadré"
-
-#: src/pyams_content/component/paragraph/zmi/verbatim.py:57
-msgid "Verbatim..."
-msgstr "Verbatim"
-
-#: src/pyams_content/component/paragraph/zmi/verbatim.py:70
-msgid "Add new verbatim paragraph"
-msgstr "Ajout d'un verbatim"
-
-#: src/pyams_content/component/paragraph/zmi/verbatim.py:92
-msgid "Edit verbatim paragraph properties"
-msgstr "Propriétés du verbatim"
-
-#: src/pyams_content/component/paragraph/zmi/html.py:76
-msgid "Raw HTML..."
-msgstr "Code HTML"
-
-#: src/pyams_content/component/paragraph/zmi/html.py:89
-msgid "Add new raw HTML paragraph"
-msgstr "Ajout d'un bloc de code HTML"
-
-#: src/pyams_content/component/paragraph/zmi/html.py:119
-msgid "Edit raw HTML paragraph properties"
-msgstr "Propriétés du code HTML"
-
-#: src/pyams_content/component/paragraph/zmi/html.py:159
-msgid "Rich text..."
-msgstr "Texte enrichi"
-
-#: src/pyams_content/component/paragraph/zmi/html.py:172
-msgid "Add new rich text paragraph"
-msgstr "Ajout d'un bloc de texte enrichi"
-
-#: src/pyams_content/component/paragraph/zmi/html.py:197
-msgid "Edit rich text paragraph properties"
-msgstr "Propriétés du texte enrichi"
-
-#: src/pyams_content/component/paragraph/zmi/contact.py:53
-msgid "Contact card..."
-msgstr "Fiche contact"
-
-#: src/pyams_content/component/paragraph/zmi/contact.py:66
-msgid "Add new contact card"
-msgstr "Ajout d'une fiche contact"
-
-#: src/pyams_content/component/paragraph/zmi/contact.py:89
-msgid "Edit contact card properties"
-msgstr "Propriétés de la fiche contact"
-
-#: src/pyams_content/component/paragraph/zmi/header.py:49
-msgid "Edit header paragraph properties"
-msgstr "Propriétés du chapô"
-
-#: src/pyams_content/component/paragraph/portlet/__init__.py:79
-msgid "Content paragraphs"
-msgstr "Blocs de contenu"
-
-#: src/pyams_content/component/paragraph/portlet/zmi/__init__.py:68
-msgid "No filter, all paragraphs selected"
-msgstr "Pas de filtre, tous les blocs sont acceptés"
-
-#: src/pyams_content/component/paragraph/portlet/zmi/__init__.py:75
-msgid "No filter, all paragraph types selected"
-msgstr "Pas de filtre, tous les types de blocs sont acceptés"
-
-#: src/pyams_content/component/paragraph/portlet/zmi/templates/preview.pt:4
-msgid "Selected paragraphs:"
-msgstr "Blocs sélectionnés :"
-
-#: src/pyams_content/component/paragraph/portlet/zmi/templates/preview.pt:10
-msgid "Paragraphs filters:"
-msgstr "Filtrage des blocs :"
-
-#: src/pyams_content/component/paragraph/portlet/zmi/templates/preview.pt:13
-msgid "Selected paragraph types:"
-msgstr "Types de blocs :"
-
-#: src/pyams_content/component/paragraph/portlet/zmi/templates/preview.pt:18
-msgid "Only display anchors"
-msgstr "Ne sélectionner que les ancres"
-
-#: src/pyams_content/component/paragraph/portlet/interfaces/__init__.py:31
-msgid "Selected paragraphs"
-msgstr "Blocs sélectionnés"
-
-#: src/pyams_content/component/paragraph/portlet/interfaces/__init__.py:32
-msgid ""
-"List of selected paragraphs; an empty selection means that all paragraphs "
-"will be selectable by following filters; otherwise, this selection will have "
-"priority"
-msgstr ""
-"Liste des blocs sélectionnés ; si la sélection est vide, tous les blocs de contenu "
-"pourront être sélectionnés via les filtres ci-dessous ; dans le cas contraire, cette "
-"sélection devient prioritaire et les autres filtres ne sont pas appliqués"
-
-#: src/pyams_content/component/paragraph/portlet/interfaces/__init__.py:38
-msgid "Paragraph types"
-msgstr "Types de blocs"
-
-#: src/pyams_content/component/paragraph/portlet/interfaces/__init__.py:39
-msgid ""
-"Select list of paragraph types you want to include; an empty selection means "
-"that all paragraphs types will be selected"
-msgstr ""
-"Liste des types de blocs que vous souhaitez sélectionner ; si la sélection est vide, "
-"tous les types de blocs seront pris en compte"
-
-#: src/pyams_content/component/paragraph/portlet/interfaces/__init__.py:44
-msgid "Anchors only?"
-msgstr "Ancres seulement ?"
-
-#: src/pyams_content/component/paragraph/portlet/interfaces/__init__.py:45
-msgid "If 'yes', only paragraphs set as 'anchors' will be selected"
-msgstr "Si 'oui', seuls les blocs définis comme ancres de navigation seront sélectionnés"
-
-#: src/pyams_content/component/paragraph/interfaces/milestone.py:41
-msgid "Is this milestone visible in front-office?"
-msgstr "Si 'non', ce jalon ne sera pas présenté aux internautes"
-
-#: src/pyams_content/component/paragraph/interfaces/milestone.py:46
-msgid "Milestone title"
-msgstr "Libellé associé au jalon"
-
-#: src/pyams_content/component/paragraph/interfaces/milestone.py:50
-msgid "The way this label will be rendered depends on presentation template"
-msgstr ""
-"La présentation de cette information peut varier en fonction du mode de "
-"rendu choisi"
-
-#: src/pyams_content/component/paragraph/interfaces/milestone.py:54
-msgid "Paragraph to which this milestone should lead"
-msgstr "Bloc de contenu vers lequel ce jalon doit conduire"
-
-#: src/pyams_content/component/paragraph/interfaces/milestone.py:83
-msgid "Milestones template"
-msgstr "Mode de rendu"
-
-#: src/pyams_content/component/paragraph/interfaces/milestone.py:84
-msgid "Presentation template used for milestones"
-msgstr "Modèle de présentation utilisé par ce bloc de contenu"
-
-#: src/pyams_content/component/paragraph/interfaces/keypoint.py:33
-#: src/pyams_content/component/paragraph/interfaces/keypoint.py:40
-msgid "Key points"
-msgstr "Points clés"
-
-#: src/pyams_content/component/paragraph/interfaces/keypoint.py:41
-msgid "Enter one key point by line, without hyphen or prefix"
-msgstr ""
-"Indiquez un point clé par ligne, sans tiret. Passez à la ligne entre chaque "
-"point clé, la mise en forme sera effectuée automatiquement."
-
-#: src/pyams_content/component/paragraph/interfaces/keypoint.py:44
-msgid "Presentation template"
-msgstr "Mode de rendu"
-
-#: src/pyams_content/component/paragraph/interfaces/keypoint.py:45
-#: src/pyams_content/component/paragraph/interfaces/frame.py:44
-#: src/pyams_content/component/paragraph/interfaces/verbatim.py:53
-#: src/pyams_content/component/paragraph/interfaces/html.py:46
-#: src/pyams_content/component/paragraph/interfaces/html.py:67
-#: src/pyams_content/shared/imagemap/interfaces/__init__.py:101
-#: src/pyams_content/shared/logo/interfaces/__init__.py:82
-msgid "Presentation template used for this paragraph"
-msgstr "Mode de rendu utilisé par ce bloc de contenu"
-
-#: src/pyams_content/component/paragraph/interfaces/__init__.py:45
-msgid "Is this paragraph visible in front-office?"
-msgstr "Si 'non', ce bloc de contenu ne sera pas présenté aux internautes"
-
-#: src/pyams_content/component/paragraph/interfaces/__init__.py:49
-msgid "Anchor?"
-msgstr "Ancre ?"
-
-#: src/pyams_content/component/paragraph/interfaces/__init__.py:50
-msgid "Is this paragraph a navigation anchor?"
-msgstr ""
-"Si 'oui', ce bloc pourra recevoir une ancre de navigation au sein du contenu"
-
-#: src/pyams_content/component/paragraph/interfaces/__init__.py:54
-msgid "§ Title"
-msgstr "Titre §"
-
-#: src/pyams_content/component/paragraph/interfaces/__init__.py:94
-msgid "Allowed paragraphs"
-msgstr "Types de blocs autorisés"
-
-#: src/pyams_content/component/paragraph/interfaces/__init__.py:95
-msgid "List of paragraphs allowed for this content type"
-msgstr "Liste des types de blocs de contenu autorisés pour ce gabarit."
-
-#: src/pyams_content/component/paragraph/interfaces/__init__.py:99
-#: src/pyams_content/shared/common/zmi/types.py:172
-#: src/pyams_content/shared/common/zmi/types.py:412
-msgid "Default paragraphs"
-msgstr "Types de blocs par défaut"
-
-#: src/pyams_content/component/paragraph/interfaces/__init__.py:100
-msgid "List of paragraphs automatically added to a new content"
-msgstr "Liste des types de blocs ajoutés automatiquement aux nouveaux contenus"
-
-#: src/pyams_content/component/paragraph/interfaces/map.py:41
-msgid "Location map"
-msgstr "Carte"
-
-#: src/pyams_content/component/paragraph/interfaces/map.py:48
-#: src/pyams_content/component/paragraph/interfaces/contact.py:72
-msgid "GPS location"
-msgstr "Position GPS"
-
-#: src/pyams_content/component/paragraph/interfaces/map.py:49
-msgid "GPS coordinates used to locate map"
-msgstr "Coordonnées GPS de situation de la carte"
-
-#: src/pyams_content/component/paragraph/interfaces/map.py:52
-msgid "Display location mark?"
-msgstr "Marqueur de position ?"
-
-#: src/pyams_content/component/paragraph/interfaces/map.py:53
-msgid "If 'yes', a location marker will be displayed on map"
-msgstr "Si 'oui', un marqueur de position sera placé sur la carte"
-
-#: src/pyams_content/component/paragraph/interfaces/map.py:57
-msgid "Map template"
-msgstr "Mode de rendu"
-
-#: src/pyams_content/component/paragraph/interfaces/map.py:58
-msgid "Presentation template used for this map"
-msgstr "Mode de rendu utilisé par cette carte"
-
-#: src/pyams_content/component/paragraph/interfaces/video.py:42
-msgid "Video file content"
-msgstr ""
-"Cliquez sur le bouton 'Parcourir...' pour sélectionner un nouveau contenu"
-
-#: src/pyams_content/component/paragraph/interfaces/video.py:49
-#: src/pyams_content/component/video/interfaces/__init__.py:49
+#: src/pyams_content/component/gallery/interfaces/__init__.py:85
+msgid "Presentation template used for this gallery"
+msgstr ""
+"<span>Modèle de présentation utilisé par cette galerie.<br /"
+"><strong>ATTENTION :</strong> certains modes de rendu ne prennent en charge "
+"que certains types de médias !!</span>"
+
+#: src/pyams_content/component/gallery/interfaces/__init__.py:107
+msgid "Gallery title, as shown in front-office"
+msgstr "Titre de la galerie présenté aux internautes"
+
+#: src/pyams_content/component/gallery/interfaces/__init__.py:111
+msgid "Gallery description displayed by front-office template"
+msgstr "Description de la galerie de médias présentée aux internautes"
+
+#: src/pyams_content/component/gallery/zmi/file.py:57
+#: src/pyams_content/component/gallery/zmi/file.py:69
+#: src/pyams_content/component/gallery/zmi/paragraph.py:148
+msgid "Add media(s)"
+msgstr "Ajouter un média / un groupe de médias (zip)"
+
+#: src/pyams_content/component/gallery/zmi/file.py:178
+msgid "Update media properties"
+msgstr "Propriétés du média"
+
+#: src/pyams_content/component/gallery/zmi/file.py:227
+msgid "Remove media..."
+msgstr "Supprimer le média"
+
+#: src/pyams_content/component/gallery/zmi/file.py:142
+msgid "Show/hide media"
+msgstr "Cliquez pour rendre le média visible ou non"
+
+#: src/pyams_content/component/gallery/zmi/file.py:194
+msgid "Audio content"
+msgstr "Contenu audio associé"
+
+#: src/pyams_content/component/gallery/zmi/__init__.py:57
+msgid "Update gallery properties"
+msgstr "Propriétés de la galerie de médias"
+
+#: src/pyams_content/component/gallery/zmi/__init__.py:84
+msgid "Update gallery contents"
+msgstr "Contenu de la galerie de médias"
+
+#: src/pyams_content/component/gallery/zmi/interfaces.py:35
+msgid "Images or videos data"
+msgstr "Fichier"
+
+#: src/pyams_content/component/gallery/zmi/interfaces.py:36
+msgid "You can upload a single file or choose to upload a whole ZIP archive"
+msgstr ""
+"Vous pouvez déposer les médias un par un, ou en nombre en les réunissant au "
+"préalable dans un fichier ZIP"
+
+#: src/pyams_content/component/gallery/zmi/paragraph.py:60
+msgid "Medias gallery..."
+msgstr "Galerie de médias"
+
+#: src/pyams_content/component/gallery/zmi/paragraph.py:73
+msgid "Add new gallery"
+msgstr "Ajout d'une galerie de médias"
+
+#: src/pyams_content/component/gallery/zmi/paragraph.py:95
+msgid "Edit gallery properties"
+msgstr "Propriétés de la galerie de médias"
+
+#: src/pyams_content/component/gallery/zmi/paragraph.py:169
+msgid "Media(s) successfully added"
+msgstr "Les médias ont été ajoutés dans la galerie."
+
+#: src/pyams_content/component/gallery/zmi/templates/gallery-medias.pt:12
+msgid "Gallery medias"
+msgstr "Contenu de la galerie"
+
+#: src/pyams_content/component/gallery/zmi/templates/gallery-medias.pt:18
+msgid "Download medias"
+msgstr "Enregistrer tous les médias sous..."
+
+#: src/pyams_content/component/gallery/zmi/templates/gallery-medias.pt:42
+#: src/pyams_content/component/gallery/zmi/templates/gallery-media.pt:9
+msgid "Zoom image"
+msgstr "Agrandir l'image"
+
+#: src/pyams_content/component/video/__init__.py:67
+#: src/pyams_content/component/video/interfaces/__init__.py:62
+msgid "External video"
+msgstr "Vidéo externe"
+
+#: src/pyams_content/component/video/interfaces/__init__.py:47
+#: src/pyams_content/component/paragraph/interfaces/video.py:51
msgid "Video description displayed by front-office template"
msgstr ""
"Le texte accompagne la vidéo, en complément de la légende. Attention : sa "
"présence et sa mise en forme dépendent du mode de rendu choisi."
-#: src/pyams_content/component/paragraph/interfaces/video.py:56
-#: src/pyams_content/component/video/interfaces/__init__.py:78
+#: src/pyams_content/component/video/interfaces/__init__.py:50
+msgid "Video provider"
+msgstr "Fournisseur"
+
+#: src/pyams_content/component/video/interfaces/__init__.py:51
+msgid "Name of external platform providing selected video"
+msgstr "Nom de la plate-forme externe fournissant la vidéo à afficher"
+
+#: src/pyams_content/component/video/interfaces/__init__.py:72
+#: src/pyams_content/component/paragraph/interfaces/video.py:54
msgid "Video template"
msgstr "Mode de rendu"
-#: src/pyams_content/component/paragraph/interfaces/video.py:57
-#: src/pyams_content/component/video/interfaces/__init__.py:79
+#: src/pyams_content/component/video/interfaces/__init__.py:73
+#: src/pyams_content/component/paragraph/interfaces/video.py:55
msgid "Presentation template used for this video"
msgstr "Mode de rendu utilisé par cette vidéo"
-#: src/pyams_content/component/paragraph/interfaces/pictogram.py:42
-msgid "Is this pictogram visible in front-office?"
-msgstr "Si 'non', ce pictogramme ne sera pas présenté aux internautes"
-
-#: src/pyams_content/component/paragraph/interfaces/pictogram.py:46
-#: src/pyams_content/component/links/interfaces/__init__.py:43
-#: src/pyams_content/shared/common/interfaces/types.py:75
-msgid "Pictogram"
-msgstr "Pictogramme"
-
-#: src/pyams_content/component/paragraph/interfaces/pictogram.py:47
-msgid "Name of the pictogram to select"
-msgstr "Sélection du pictogramme à afficher"
-
-#: src/pyams_content/component/paragraph/interfaces/pictogram.py:53
-msgid "Alternate header"
-msgstr "En-tête de substitution"
-
-#: src/pyams_content/component/paragraph/interfaces/pictogram.py:54
-msgid ""
-"Alternate pictogram label; if not specified, the pictogram header will be "
-"used"
-msgstr ""
-"En-tête de substitution utilisé par le pictogramme; si rien n'est spécifié, "
-"l'en-tête du pictogramme sélectionné sera utilisé."
-
-#: src/pyams_content/component/paragraph/interfaces/pictogram.py:59
-msgid "Additional text associated to this pictogram"
-msgstr "Texte complémentaire associé à ce pictogramme"
-
-#: src/pyams_content/component/paragraph/interfaces/pictogram.py:87
-msgid "Pictograms template"
-msgstr "Mode de rendu"
-
-#: src/pyams_content/component/paragraph/interfaces/pictogram.py:88
-msgid "Presentation template used for pictograms"
-msgstr "Modèle de présentation utilisé par ce bloc de contenu"
-
-#: src/pyams_content/component/paragraph/interfaces/audio.py:34
-msgid "Audio"
-msgstr "Bande son"
-
-#: src/pyams_content/component/paragraph/interfaces/audio.py:56
-msgid "Audio template"
-msgstr "Mode de rendu"
-
-#: src/pyams_content/component/paragraph/interfaces/audio.py:57
-msgid "Presentation template used for this audio file"
-msgstr "Mode de rendu utilisé pour cette bande son"
-
-#: src/pyams_content/component/paragraph/interfaces/frame.py:33
-msgid "Framed text"
-msgstr "Encadré"
-
-#: src/pyams_content/component/paragraph/interfaces/frame.py:40
-msgid "Frame body"
-msgstr "Contenu"
-
-#: src/pyams_content/component/paragraph/interfaces/frame.py:43
-msgid "Text template"
-msgstr "Mode de rendu"
-
-#: src/pyams_content/component/paragraph/interfaces/verbatim.py:33
-msgid "Verbatim"
-msgstr "Verbatim"
-
-#: src/pyams_content/component/paragraph/interfaces/verbatim.py:40
-msgid "Quoted text"
-msgstr "Citation"
-
-#: src/pyams_content/component/paragraph/interfaces/verbatim.py:41
-msgid "Quotation marks will be added automatically by presentation template"
-msgstr "Les guillemets seront ajoutés automatiquement par le mode de rendu..."
-
-#: src/pyams_content/component/paragraph/interfaces/verbatim.py:45
-msgid "Name of the quote author"
-msgstr "Nom de l'auteur de la citation"
-
-#: src/pyams_content/component/paragraph/interfaces/verbatim.py:48
-#: src/pyams_content/component/paragraph/interfaces/contact.py:54
-msgid "In charge of"
-msgstr "Fonction"
-
-#: src/pyams_content/component/paragraph/interfaces/verbatim.py:49
-msgid "Label of author function"
-msgstr "Fonction de l'auteur"
-
-#: src/pyams_content/component/paragraph/interfaces/verbatim.py:52
-msgid "Verbatim template"
-msgstr "Mode de rendu"
-
-#: src/pyams_content/component/paragraph/interfaces/html.py:33
-msgid "Raw HTML "
-msgstr "Code HTML"
-
-#: src/pyams_content/component/paragraph/interfaces/html.py:56
-msgid "Rich text"
-msgstr "Texte enrichi"
-
-#: src/pyams_content/component/paragraph/interfaces/html.py:40
-msgid "Raw HTML code"
-msgstr "Code HTML"
-
-#: src/pyams_content/component/paragraph/interfaces/html.py:41
-msgid ""
-"This HTML code will be used 'as is', without any transformation. Use with "
-"care!!"
-msgstr ""
-"Ce code HTML sera utilisé en l'état et intégré dans les pages sans "
-"modification. À utiliser avec précaution !!!"
-
-#: src/pyams_content/component/paragraph/interfaces/html.py:45
-msgid "Raw HTML code template"
-msgstr "Mode de rendu"
-
-#: src/pyams_content/component/paragraph/interfaces/html.py:63
-msgid "Body"
-msgstr "Contenu HTML"
-
-#: src/pyams_content/component/paragraph/interfaces/html.py:66
-msgid "Body template"
-msgstr "Mode de rendu"
-
-#: src/pyams_content/component/paragraph/interfaces/contact.py:43
-msgid "Contact card"
-msgstr "Fiche contact"
-
-#: src/pyams_content/component/paragraph/interfaces/contact.py:50
-msgid "Contact identity"
-msgstr "Nom du contact"
-
-#: src/pyams_content/component/paragraph/interfaces/contact.py:51
-msgid "Name of the contact"
-msgstr "Nom complet du contact"
-
-#: src/pyams_content/component/paragraph/interfaces/contact.py:55
-msgid "Label of contact function"
-msgstr "Fonction du contact"
-
-#: src/pyams_content/component/paragraph/interfaces/contact.py:58
-msgid "Email address"
-msgstr "Adresse de messagerie"
-
-#: src/pyams_content/component/paragraph/interfaces/contact.py:59
-msgid "Contact email address"
-msgstr "Adresse de messagerie \"stricte\", soit uniquement \"xxx@yyy.com\""
-
-#: src/pyams_content/component/paragraph/interfaces/contact.py:62
-msgid "Contact form"
-msgstr "Formulaire de contact"
-
-#: src/pyams_content/component/paragraph/interfaces/contact.py:63
-msgid "Reference of contact form"
-msgstr "Référence d'un formulaire de contact"
-
-#: src/pyams_content/component/paragraph/interfaces/contact.py:67
-msgid "Photo"
-msgstr "Photo"
-
-#: src/pyams_content/component/paragraph/interfaces/contact.py:68
-msgid "Use 'browse' button to select contact picture"
-msgstr "Utilisez le bouton 'Parcourir' pour sélectionner la photo du contact"
-
-#: src/pyams_content/component/paragraph/interfaces/contact.py:76
-msgid "Address"
-msgstr "Adresse"
-
-#: src/pyams_content/component/paragraph/interfaces/contact.py:79
-msgid "Contact template"
-msgstr "Mode de rendu"
-
-#: src/pyams_content/component/paragraph/interfaces/contact.py:80
-msgid "Presentation template used for this contact"
-msgstr "Modèle de présentation utilisé pour ce contact"
-
-#: src/pyams_content/component/paragraph/interfaces/contact.py:73
-msgid "GPS coordinates used to locate contact"
-msgstr "Coordonnées GPS de situation du contact"
-
-#: src/pyams_content/component/paragraph/interfaces/header.py:33
-#: src/pyams_content/component/paragraph/interfaces/header.py:40
-#: src/pyams_content/shared/common/interfaces/__init__.py:153
-msgid "Header"
-msgstr "Chapô"
-
-#: src/pyams_content/component/paragraph/interfaces/header.py:43
-#: src/pyams_content/features/header/interfaces/__init__.py:39
-msgid "Header template"
-msgstr "Mode de rendu"
-
-#: src/pyams_content/component/paragraph/interfaces/header.py:44
-#: src/pyams_content/features/header/interfaces/__init__.py:40
-msgid "Presentation template used for this header"
-msgstr "Mode de rendu utilisé par ce chapô"
-
-#: src/pyams_content/component/theme/__init__.py:71
-#: src/pyams_content/component/theme/zmi/portlet.py:40
-#: src/pyams_content/component/theme/interfaces/__init__.py:47
-#: src/pyams_content/component/theme/interfaces/__init__.py:61
-#: src/pyams_content/shared/common/zmi/search.py:189
-#: src/pyams_content/root/zmi/search.py:179
-#: src/pyams_content/root/zmi/templates/advanced-search.pt:181
-msgid "Tags"
-msgstr "Tags"
-
-#: src/pyams_content/component/theme/__init__.py:119
-#: src/pyams_content/component/theme/zmi/portlet.py:55
-#: src/pyams_content/component/theme/interfaces/__init__.py:88
-#: src/pyams_content/component/theme/interfaces/__init__.py:102
-#: src/pyams_content/shared/common/zmi/search.py:192
-msgid "Themes"
-msgstr "Thèmes"
-
-#: src/pyams_content/component/theme/__init__.py:167
-#: src/pyams_content/component/theme/zmi/portlet.py:70
-#: src/pyams_content/component/theme/interfaces/__init__.py:129
-#: src/pyams_content/component/theme/interfaces/__init__.py:143
-#: src/pyams_content/shared/common/zmi/search.py:195
-msgid "Collections"
-msgstr "Collections"
-
-#: src/pyams_content/component/theme/__init__.py:80
-msgid "no defined tag"
-msgstr "aucun tag défini"
-
-#: src/pyams_content/component/theme/__init__.py:128
-msgid "no defined theme"
-msgstr "aucun thème défini"
-
-#: src/pyams_content/component/theme/__init__.py:176
-msgid "no defined collection"
-msgstr "aucune collection définie"
-
-#: src/pyams_content/component/theme/zmi/__init__.py:55
-#: src/pyams_content/shared/view/zmi/theme.py:56
-msgid "Tags..."
-msgstr "Tags"
-
-#: src/pyams_content/component/theme/zmi/__init__.py:66
-msgid "Content tags"
-msgstr "Tags du contenu"
-
-#: src/pyams_content/component/theme/zmi/__init__.py:99
-#: src/pyams_content/shared/view/zmi/theme.py:102
-msgid "Themes..."
-msgstr "Thèmes"
-
-#: src/pyams_content/component/theme/zmi/__init__.py:107
-msgid "Content themes"
-msgstr "Thèmes du contenu"
-
-#: src/pyams_content/component/theme/zmi/__init__.py:159
-#: src/pyams_content/shared/view/zmi/theme.py:148
-msgid "Collections..."
-msgstr "Collections"
-
-#: src/pyams_content/component/theme/zmi/__init__.py:172
-msgid "Content collections"
-msgstr "Collections associées au contenu"
-
-#: src/pyams_content/component/theme/zmi/manager.py:58
-msgid "Tags settings..."
-msgstr "Paramétrage des tags"
-
-#: src/pyams_content/component/theme/zmi/manager.py:72
-msgid "Selected tags"
-msgstr "Tags sélectionnés"
-
-#: src/pyams_content/component/theme/zmi/manager.py:108
-msgid "Themes settings..."
-msgstr "Paramétrage des thèmes"
-
-#: src/pyams_content/component/theme/zmi/manager.py:122
-msgid "Selected themes"
-msgstr "Thèmes sélectionnés"
-
-#: src/pyams_content/component/theme/zmi/manager.py:158
-msgid "Collections settings..."
-msgstr "Paramétrage des collections"
-
-#: src/pyams_content/component/theme/zmi/manager.py:172
-msgid "Selected collections"
-msgstr "Collections sélectionnées"
-
-#: src/pyams_content/component/association/container.py:91
-#: src/pyams_content/component/association/zmi/__init__.py:303
-#: src/pyams_content/component/association/interfaces/__init__.py:93
-msgid "Associations"
-msgstr "Liens et pièces jointes"
-
-#: src/pyams_content/component/association/zmi/paragraph.py:54
-#: src/pyams_content/component/association/zmi/__init__.py:96
-msgid "Associations..."
-msgstr "Liens et pièces jointes"
-
-#: src/pyams_content/component/association/zmi/paragraph.py:67
-msgid "Add new association paragraph"
-msgstr "Ajout d'un bloc « liens et pièces jointes »"
-
-#: src/pyams_content/component/association/zmi/paragraph.py:93
-msgid "Edit association paragraph properties"
-msgstr "Propriétés du bloc « liens et pièces jointes »"
-
-#: src/pyams_content/component/association/zmi/__init__.py:205
-msgid "Public title"
-msgstr "Libellé public"
-
-#: src/pyams_content/component/association/zmi/__init__.py:223
-msgid "Inner title"
-msgstr "Contenu interne"
-
-#: src/pyams_content/component/association/zmi/__init__.py:239
-msgid "Size"
-msgstr "Taille"
-
-#: src/pyams_content/component/association/zmi/__init__.py:280
-#: src/pyams_content/component/association/zmi/__init__.py:290
-msgid "Associations list"
-msgstr "Liste des liens et pièces jointes"
-
-#: src/pyams_content/component/association/zmi/__init__.py:66
-msgid "Association was correctly added."
-msgstr "L'association a été ajoutée."
-
-#: src/pyams_content/component/association/interfaces/__init__.py:43
-#: src/pyams_content/features/menu/interfaces/__init__.py:60
-msgid "Is this item visible in front-office?"
-msgstr "Si 'non', ce lien ne sera pas présenté aux internautes"
-
-#: src/pyams_content/component/association/interfaces/__init__.py:100
-msgid "Associations template"
-msgstr "Mode de rendu"
-
-#: src/pyams_content/component/association/interfaces/__init__.py:101
-msgid "Presentation template used for associations"
-msgstr "Modèle de présentation utilisé par ce bloc de contenu"
-
-#: src/pyams_content/component/links/__init__.py:144
-msgid "Internal link"
-msgstr "Lien interne"
-
-#: src/pyams_content/component/links/__init__.py:230
-msgid "External link"
-msgstr "Lien externe"
-
-#: src/pyams_content/component/links/__init__.py:283
-msgid "Mailto link"
-msgstr "Lien mailto"
-
-#: src/pyams_content/component/links/__init__.py:217
-msgid "target is not published"
-msgstr "le contenu ciblé n'est pas publié"
-
-#: src/pyams_content/component/links/zmi/__init__.py:60
-msgid "Internal links"
-msgstr "Liens internes"
-
-#: src/pyams_content/component/links/zmi/__init__.py:75
-msgid "Add internal link"
-msgstr "Lien interne"
-
-#: src/pyams_content/component/links/zmi/__init__.py:89
-msgid "Add new internal link"
-msgstr "Ajout d'un lien interne"
-
-#: src/pyams_content/component/links/zmi/__init__.py:120
-msgid "Edit internal link properties"
-msgstr "Propriétés du lien interne"
-
-#: src/pyams_content/component/links/zmi/__init__.py:149
-msgid "External links"
-msgstr "Liens externes"
-
-#: src/pyams_content/component/links/zmi/__init__.py:164
-msgid "Add external link"
-msgstr "Lien externe"
-
-#: src/pyams_content/component/links/zmi/__init__.py:178
-msgid "Add new external link"
-msgstr "Ajout d'un lien externe"
-
-#: src/pyams_content/component/links/zmi/__init__.py:209
-msgid "Edit external link properties"
-msgstr "Propriétés du lien externe"
-
-#: src/pyams_content/component/links/zmi/__init__.py:238
-msgid "Mailto links"
-msgstr "Liens mailto"
-
-#: src/pyams_content/component/links/zmi/__init__.py:253
-msgid "Add mailto link"
-msgstr "Lien mailto"
-
-#: src/pyams_content/component/links/zmi/__init__.py:267
-msgid "Add new mailto link"
-msgstr "Ajout d'un lien « mailto »"
-
-#: src/pyams_content/component/links/zmi/__init__.py:298
-msgid "Edit mailto link properties"
-msgstr "Propriétés du lien « mailto »"
-
-#: src/pyams_content/component/links/interfaces/__init__.py:36
-msgid "Link title, as shown in front-office"
-msgstr ""
-"Le contexte d'utilisation de ce lien peut nécessiter de modifier son titre "
-"d'origine. Ce titre de substitution sera alors présenté aux internautes."
-
-#: src/pyams_content/component/links/interfaces/__init__.py:40
-msgid "Link description displayed by front-office template"
-msgstr "Description du lien, présentée aux internautes"
-
-#: src/pyams_content/component/links/interfaces/__init__.py:44
-msgid "Name of the pictogram associated with this link"
-msgstr ""
-"Pictogramme à associer à ce lien. ATTENTION: ce pictogramme n'est affiché "
-"que par certains modes de rendu !!"
-
-#: src/pyams_content/component/links/interfaces/__init__.py:61
-#: src/pyams_content/shared/logo/interfaces/__init__.py:56
-#: src/pyams_content/features/redirect/interfaces/__init__.py:68
-msgid "Target URL"
-msgstr "URL cible"
-
-#: src/pyams_content/component/links/interfaces/__init__.py:62
-#: src/pyams_content/shared/logo/interfaces/__init__.py:57
-msgid "URL used to access external resource"
-msgstr ""
-"URL utilisée pour accéder à cette ressource externe. Doit comprendre le "
-"protocole d'accès au site, comme « http:// » ou « https:// »."
-
-#: src/pyams_content/component/links/interfaces/__init__.py:66
-msgid "Language used in this remote resource"
-msgstr ""
-"Langue utilisée par cette ressource extene ; à préciser lorsqu'il ne s'agit "
-"pas de la langue par défaut du site."
-
-#: src/pyams_content/component/links/interfaces/__init__.py:74
-msgid "Target address"
-msgstr "Adresse mail"
-
-#: src/pyams_content/component/links/interfaces/__init__.py:75
-msgid "Target email address"
-msgstr "Adresse de messagerie \"stricte\", soit uniquement \"xxx@yyy.com\""
-
-#: src/pyams_content/component/links/interfaces/__init__.py:78
-msgid "Address name"
-msgstr "Nom de messagerie"
-
-#: src/pyams_content/component/links/interfaces/__init__.py:79
-msgid "Address as displayed in address book"
-msgstr ""
-"Nom de la boîte aux lettres, tel qu'il sera affiché dans l'application de "
-"messagerie."
-
-#: src/pyams_content/component/video/__init__.py:73
-#: src/pyams_content/component/video/interfaces/__init__.py:68
-msgid "External video"
-msgstr "Vidéo externe"
-
#: src/pyams_content/component/video/provider/dailymotion.py:94
msgid "Dailymotion settings"
msgstr "Paramètres Dailymotion"
-#: src/pyams_content/component/video/provider/__init__.py:70
-msgid "Other provider"
-msgstr "Autre fournisseur"
-
-#: src/pyams_content/component/video/provider/__init__.py:94
-msgid "Custom video settings"
-msgstr "Paramètres spécifiques"
-
#: src/pyams_content/component/video/provider/vimeo.py:92
msgid "Vimeo settings"
msgstr "Paramètres Vimeo"
+#: src/pyams_content/component/video/provider/__init__.py:63
+msgid "Other provider"
+msgstr "Autre fournisseur"
+
+#: src/pyams_content/component/video/provider/__init__.py:87
+msgid "Custom video settings"
+msgstr "Paramètres spécifiques"
+
#: src/pyams_content/component/video/provider/interfaces.py:31
msgid "Integration code"
msgstr "Code d'intégration"
@@ -1925,1522 +838,2492 @@
msgid "Youtube settings"
msgstr "Paramétres Youtube"
-#: src/pyams_content/component/video/zmi/paragraph.py:62
+#: src/pyams_content/component/video/zmi/paragraph.py:55
msgid "External video..."
msgstr "Vidéo externe"
-#: src/pyams_content/component/video/zmi/paragraph.py:75
+#: src/pyams_content/component/video/zmi/paragraph.py:68
msgid "Add new external video..."
msgstr "Ajout d'une vidéo externe"
-#: src/pyams_content/component/video/zmi/paragraph.py:124
+#: src/pyams_content/component/video/zmi/paragraph.py:182
+#: src/pyams_content/component/paragraph/zmi/video.py:90
+msgid "Edit video properties"
+msgstr "Propriétés de la vidéo"
+
+#: src/pyams_content/component/video/zmi/paragraph.py:117
msgid "Video provider is required"
msgstr "Le nom du fournisseur est obligatoire"
-#: src/pyams_content/component/video/zmi/paragraph.py:172
-#: src/pyams_content/component/video/zmi/paragraph.py:223
+#: src/pyams_content/component/video/zmi/paragraph.py:165
+#: src/pyams_content/component/video/zmi/paragraph.py:216
msgid "Video provider settings"
msgstr "Paramètres liés au fournisseur"
-#: src/pyams_content/component/video/zmi/paragraph.py:152
+#: src/pyams_content/component/video/zmi/paragraph.py:145
msgid "Other settings"
msgstr "Autres paramètres"
-#: src/pyams_content/component/video/interfaces/__init__.py:56
-msgid "Video provider"
-msgstr "Fournisseur"
-
-#: src/pyams_content/component/video/interfaces/__init__.py:57
-msgid "Name of external platform providing selected video"
-msgstr "Nom de la plate-forme externe fournissant la vidéo à afficher"
-
-#: src/pyams_content/shared/common/__init__.py:242
-#: src/pyams_content/shared/common/zmi/properties.py:69
-#: src/pyams_content/shared/common/zmi/manager.py:96
-msgid "Properties"
-msgstr "Propriétés"
-
-#: src/pyams_content/shared/common/__init__.py:152
-#: src/pyams_content/shared/common/__init__.py:160
-#, python-format
-msgid "{date} by {principal}"
-msgstr "{date} par {principal}"
-
-#: src/pyams_content/shared/common/__init__.py:265
-#, python-format
-msgid "title length should be between 40 and 66 characters ({length} actually)"
-msgstr ""
-"Le titre devrait être composé de 40 à 66 caractères ({length} actuellement)"
-
-#: src/pyams_content/shared/common/zmi/search.py:96
-#: src/pyams_content/root/zmi/search.py:95
-msgid "Quick search results"
-msgstr "Résultats de la recherche rapide"
-
-#: src/pyams_content/shared/common/zmi/search.py:162
-#: src/pyams_content/shared/common/zmi/search.py:204
-#: src/pyams_content/root/zmi/search.py:152
-#: src/pyams_content/root/zmi/search.py:188
-msgid "Advanced search"
-msgstr "Recherche avancée"
-
-#: src/pyams_content/shared/common/zmi/search.py:332
-#: src/pyams_content/root/zmi/search.py:280
-msgid "Advanced search results"
-msgstr "Résultats de la recherche avancée"
-
-#: src/pyams_content/shared/common/zmi/search.py:170
-#: src/pyams_content/shared/common/zmi/dashboard.py:231
-#: src/pyams_content/root/zmi/search.py:164
-msgid "Owner"
-msgstr "Propriétaire"
-
-#: src/pyams_content/shared/common/zmi/search.py:173
-#: src/pyams_content/shared/common/zmi/dashboard.py:154
-msgid "Status"
-msgstr "Statut"
-
-#: src/pyams_content/shared/common/zmi/search.py:177
-#: src/pyams_content/root/zmi/search.py:167
-msgid "Created after..."
-msgstr "Créé entre le"
-
-#: src/pyams_content/shared/common/zmi/search.py:180
-#: src/pyams_content/root/zmi/search.py:170
-msgid "Created before..."
-msgstr "et le"
-
-#: src/pyams_content/shared/common/zmi/search.py:183
-#: src/pyams_content/root/zmi/search.py:173
-msgid "Modified after..."
-msgstr "Modifié entre le"
-
-#: src/pyams_content/shared/common/zmi/search.py:186
-#: src/pyams_content/root/zmi/search.py:176
-msgid "Modified before..."
-msgstr "et le"
-
-#: src/pyams_content/shared/common/zmi/properties.py:59
-msgid "Composition"
-msgstr "Composition"
-
-#: src/pyams_content/shared/common/zmi/properties.py:82
-msgid "Content properties"
-msgstr "Propriétés élémentaires"
-
-#: src/pyams_content/shared/common/zmi/types.py:70
-msgid "Data types"
-msgstr "Types de contenus"
-
-#: src/pyams_content/shared/common/zmi/types.py:148
-msgid "Data type label"
-msgstr "Libellé du type"
-
-#: src/pyams_content/shared/common/zmi/types.py:188
-#: src/pyams_content/shared/common/zmi/types.py:428
-msgid "Default associations"
-msgstr "Liens et pièces jointes par défaut"
-
-#: src/pyams_content/shared/common/zmi/types.py:204
-msgid "Default themes"
-msgstr "Thèmes par défaut"
-
-#: src/pyams_content/shared/common/zmi/types.py:232
-msgid "Content data types"
-msgstr "Types de contenus"
-
-#: src/pyams_content/shared/common/zmi/types.py:255
-msgid "Add data type"
-msgstr "Ajouter un type"
-
-#: src/pyams_content/shared/common/zmi/types.py:267
-msgid "Add new data type"
-msgstr "Ajout d'un type de contenu"
-
-#: src/pyams_content/shared/common/zmi/types.py:310
-msgid "Data type properties"
-msgstr "Propriétés du type de contenu"
-
-#: src/pyams_content/shared/common/zmi/types.py:391
-msgid "Subtype label"
-msgstr "Libellé du sous-type"
-
-#: src/pyams_content/shared/common/zmi/types.py:472
-msgid "Add subtype"
-msgstr "Ajouter un sous-type"
-
-#: src/pyams_content/shared/common/zmi/types.py:484
-msgid "Add new subtype"
-msgstr "Ajout d'un sous-type de contenu"
-
-#: src/pyams_content/shared/common/zmi/types.py:531
-msgid "Data subtype properties"
-msgstr "Propriétés du fichier standard"
-
-#: src/pyams_content/shared/common/zmi/types.py:573
-msgid "Select content type..."
-msgstr "Sélectionnez un type de contenu..."
-
-#: src/pyams_content/shared/common/zmi/types.py:115
-msgid "No currently defined data type."
-msgstr "Aucun type de contenu n'est actuellement défini."
-
-#: src/pyams_content/shared/common/zmi/types.py:300
-msgid "Specified type name is already used!"
-msgstr "Le nom indiqué pour ce type de contenu est déjà utilisé !"
-
-#: src/pyams_content/shared/common/zmi/types.py:507
-msgid "Subtype was correctly added."
-msgstr "Le sous-type a été ajouté."
-
-#: src/pyams_content/shared/common/zmi/types.py:521
-msgid "Specified subtype name is already used!"
-msgstr "Le nom indiqué pour ce sous-type de contenu est déjà utilisé !"
-
-#: src/pyams_content/shared/common/zmi/types.py:160
-msgid "Click to see subtypes"
-msgstr "Montrer ou caher les sous-types"
-
-#: src/pyams_content/shared/common/zmi/workflow.py:845
-msgid "Prior checks"
-msgstr "Contrôles préalables : avez-vous ?"
-
-#: src/pyams_content/shared/common/zmi/workflow.py:124
-msgid "Request publication"
-msgstr "Demander la publication"
-
-#: src/pyams_content/shared/common/zmi/workflow.py:211
-#: src/pyams_content/workflow/__init__.py:315
-msgid "Cancel publication request"
-msgstr "Annuler la demande de publication"
-
-#: src/pyams_content/shared/common/zmi/workflow.py:251
-msgid "Refuse publication request"
-msgstr "Refuser la demande de publication"
-
-#: src/pyams_content/shared/common/zmi/workflow.py:305
-#: src/pyams_content/workflow/basic.py:196
-msgid "Publish"
-msgstr "Publier"
-
-#: src/pyams_content/shared/common/zmi/workflow.py:394
-msgid "Request retire"
-msgstr "Demander le retrait"
-
-#: src/pyams_content/shared/common/zmi/workflow.py:450
-msgid "Cancel retire request"
-msgstr "Annuler la demande de retrait"
-
-#: src/pyams_content/shared/common/zmi/workflow.py:490
-msgid "Retire"
-msgstr "Retirer"
-
-#: src/pyams_content/shared/common/zmi/workflow.py:531
-#: src/pyams_content/workflow/__init__.py:436
-msgid "Request archive"
-msgstr "Demander l'archivage"
-
-#: src/pyams_content/shared/common/zmi/workflow.py:574
-msgid "Cancel archive request"
-msgstr "Annuler la demande d'archivage"
-
-#: src/pyams_content/shared/common/zmi/workflow.py:614
-msgid "Archive"
-msgstr "Archiver"
-
-#: src/pyams_content/shared/common/zmi/workflow.py:655
-#: src/pyams_content/workflow/__init__.py:501
-#: src/pyams_content/workflow/__init__.py:513
-#: src/pyams_content/workflow/__init__.py:525
-#: src/pyams_content/workflow/__init__.py:537
-#: src/pyams_content/workflow/__init__.py:549
-#: src/pyams_content/workflow/basic.py:224
-#: src/pyams_content/workflow/basic.py:236
-msgid "Create new version"
-msgstr "Créer une nouvelle version"
-
-#: src/pyams_content/shared/common/zmi/workflow.py:706
-#: src/pyams_content/workflow/__init__.py:561
-#: src/pyams_content/workflow/basic.py:248
-msgid "Delete version"
-msgstr "Supprimer cette version"
-
-#: src/pyams_content/shared/common/zmi/workflow.py:791
-msgid "Previewed content?"
-msgstr "Prévisualisé ce contenu ?"
-
-#: src/pyams_content/shared/common/zmi/workflow.py:795
-msgid "Verified content?"
-msgstr "Audité ce contenu ?"
-
-#: src/pyams_content/shared/common/zmi/workflow.py:181
-#: src/pyams_content/shared/common/zmi/workflow.py:363
-msgid "Publication start date is required"
-msgstr "La date de début de publication est obligatoire"
-
-#: src/pyams_content/shared/common/zmi/workflow.py:274
-#: src/pyams_content/shared/common/zmi/workflow.py:420
-msgid "A comment is required"
-msgstr "Le commentaire est obligatoire"
-
-#: src/pyams_content/shared/common/zmi/workflow.py:730
-msgid "Delete content"
-msgstr "Supprimer définitivement ce contenu"
-
-#: src/pyams_content/shared/common/zmi/workflow.py:739
-msgid "Delete definitively"
-msgstr "Supprimer définitivement"
-
-#: src/pyams_content/shared/common/zmi/workflow.py:868
+#: src/pyams_content/component/links/__init__.py:144
+msgid "Internal link"
+msgstr "Lien interne"
+
+#: src/pyams_content/component/links/__init__.py:230
+msgid "External link"
+msgstr "Lien externe"
+
+#: src/pyams_content/component/links/__init__.py:283
+msgid "Mailto link"
+msgstr "Lien mailto"
+
+#: src/pyams_content/component/links/__init__.py:217
+msgid "target is not published"
+msgstr "le contenu ciblé n'est pas publié"
+
+#: src/pyams_content/component/links/interfaces/__init__.py:35
+#: src/pyams_content/component/extfile/interfaces/__init__.py:36
+#: src/pyams_content/shared/imagemap/interfaces/__init__.py:55
+msgid "Alternate title"
+msgstr "Titre de substitution"
+
+#: src/pyams_content/component/links/interfaces/__init__.py:36
+msgid "Link title, as shown in front-office"
+msgstr ""
+"Le contexte d'utilisation de ce lien peut nécessiter de modifier son titre "
+"d'origine. Ce titre de substitution sera alors présenté aux internautes."
+
+#: src/pyams_content/component/links/interfaces/__init__.py:40
+msgid "Link description displayed by front-office template"
+msgstr "Description du lien, présentée aux internautes"
+
+#: src/pyams_content/component/links/interfaces/__init__.py:43
+#: src/pyams_content/component/paragraph/interfaces/pictogram.py:46
+#: src/pyams_content/shared/common/interfaces/types.py:75
+msgid "Pictogram"
+msgstr "Pictogramme"
+
+#: src/pyams_content/component/links/interfaces/__init__.py:44
+msgid "Name of the pictogram associated with this link"
+msgstr ""
+"Pictogramme à associer à ce lien. ATTENTION: ce pictogramme n'est affiché "
+"que par certains modes de rendu !!"
+
+#: src/pyams_content/component/links/interfaces/__init__.py:61
+#: src/pyams_content/features/redirect/interfaces/__init__.py:68
+#: src/pyams_content/shared/logo/interfaces/__init__.py:54
+msgid "Target URL"
+msgstr "URL cible"
+
+#: src/pyams_content/component/links/interfaces/__init__.py:62
+#: src/pyams_content/shared/logo/interfaces/__init__.py:55
+msgid "URL used to access external resource"
+msgstr ""
+"URL utilisée pour accéder à cette ressource externe. Doit comprendre le "
+"protocole d'accès au site, comme « http:// » ou « https:// »."
+
+#: src/pyams_content/component/links/interfaces/__init__.py:65
+#: src/pyams_content/component/extfile/interfaces/__init__.py:48
+msgid "Language"
+msgstr "Langue"
+
+#: src/pyams_content/component/links/interfaces/__init__.py:66
+msgid "Language used in this remote resource"
+msgstr ""
+"Langue utilisée par cette ressource extene ; à préciser lorsqu'il ne s'agit "
+"pas de la langue par défaut du site."
+
+#: src/pyams_content/component/links/interfaces/__init__.py:74
+msgid "Target address"
+msgstr "Adresse mail"
+
+#: src/pyams_content/component/links/interfaces/__init__.py:75
+msgid "Target email address"
+msgstr "Adresse de messagerie \"stricte\", soit uniquement \"xxx@yyy.com\""
+
+#: src/pyams_content/component/links/interfaces/__init__.py:78
+msgid "Address name"
+msgstr "Nom de messagerie"
+
+#: src/pyams_content/component/links/interfaces/__init__.py:79
+msgid "Address as displayed in address book"
+msgstr ""
+"Nom de la boîte aux lettres, tel qu'il sera affiché dans l'application de "
+"messagerie."
+
+#: src/pyams_content/component/links/zmi/__init__.py:60
+msgid "Internal links"
+msgstr "Liens internes"
+
+#: src/pyams_content/component/links/zmi/__init__.py:75
+msgid "Add internal link"
+msgstr "Lien interne"
+
+#: src/pyams_content/component/links/zmi/__init__.py:89
+msgid "Add new internal link"
+msgstr "Ajout d'un lien interne"
+
+#: src/pyams_content/component/links/zmi/__init__.py:120
+msgid "Edit internal link properties"
+msgstr "Propriétés du lien interne"
+
+#: src/pyams_content/component/links/zmi/__init__.py:149
+msgid "External links"
+msgstr "Liens externes"
+
+#: src/pyams_content/component/links/zmi/__init__.py:164
+msgid "Add external link"
+msgstr "Lien externe"
+
+#: src/pyams_content/component/links/zmi/__init__.py:178
+msgid "Add new external link"
+msgstr "Ajout d'un lien externe"
+
+#: src/pyams_content/component/links/zmi/__init__.py:209
+msgid "Edit external link properties"
+msgstr "Propriétés du lien externe"
+
+#: src/pyams_content/component/links/zmi/__init__.py:238
+msgid "Mailto links"
+msgstr "Liens mailto"
+
+#: src/pyams_content/component/links/zmi/__init__.py:253
+msgid "Add mailto link"
+msgstr "Lien mailto"
+
+#: src/pyams_content/component/links/zmi/__init__.py:267
+msgid "Add new mailto link"
+msgstr "Ajout d'un lien « mailto »"
+
+#: src/pyams_content/component/links/zmi/__init__.py:298
+msgid "Edit mailto link properties"
+msgstr "Propriétés du lien « mailto »"
+
+#: src/pyams_content/component/paragraph/header.py:62
+msgid "This paragraph type is deprecated and should be removed!"
+msgstr "Ce type de paragraphe a été supprimé et ne doit plus être utilisé !"
+
+#: src/pyams_content/component/paragraph/container.py:94
+msgid "Paragraphs"
+msgstr "Blocs de contenu"
+
+#: src/pyams_content/component/paragraph/container.py:116
+msgid "no visible paragraph"
+msgstr "aucun bloc de contenu visible"
+
+#: src/pyams_content/component/paragraph/pictogram.py:135
+msgid "Selected pictogram is missing"
+msgstr "le pictogramme sélectionné est introuvable"
+
+#: src/pyams_content/component/paragraph/milestone.py:138
+msgid "Selected paragraph is missing"
+msgstr "le bloc sélectionné est introuvable"
+
+#: src/pyams_content/component/paragraph/milestone.py:141
+msgid "Selected paragraph is not visible"
+msgstr "le bloc sélectionné n'est pas visible"
+
+#: src/pyams_content/component/paragraph/interfaces/header.py:33
+#: src/pyams_content/component/paragraph/interfaces/header.py:40
+#: src/pyams_content/shared/common/interfaces/__init__.py:151
+msgid "Header"
+msgstr "Chapô"
+
+#: src/pyams_content/component/paragraph/interfaces/header.py:43
+#: src/pyams_content/features/header/interfaces/__init__.py:39
+msgid "Header template"
+msgstr "Mode de rendu"
+
+#: src/pyams_content/component/paragraph/interfaces/header.py:44
+#: src/pyams_content/features/header/interfaces/__init__.py:40
+msgid "Presentation template used for this header"
+msgstr "Mode de rendu utilisé par ce chapô"
+
+#: src/pyams_content/component/paragraph/interfaces/contact.py:44
+msgid "Contact card"
+msgstr "Fiche contact"
+
+#: src/pyams_content/component/paragraph/interfaces/contact.py:51
+msgid "Contact identity"
+msgstr "Nom du contact"
+
+#: src/pyams_content/component/paragraph/interfaces/contact.py:52
+msgid "Name of the contact"
+msgstr "Nom complet du contact"
+
+#: src/pyams_content/component/paragraph/interfaces/contact.py:55
+#: src/pyams_content/component/paragraph/interfaces/verbatim.py:48
+msgid "In charge of"
+msgstr "Fonction"
+
+#: src/pyams_content/component/paragraph/interfaces/contact.py:56
+msgid "Label of contact function"
+msgstr "Fonction du contact"
+
+#: src/pyams_content/component/paragraph/interfaces/contact.py:59
+msgid "Email address"
+msgstr "Adresse de messagerie"
+
+#: src/pyams_content/component/paragraph/interfaces/contact.py:60
+msgid "Contact email address"
+msgstr "Adresse de messagerie \"stricte\", soit uniquement \"xxx@yyy.com\""
+
+#: src/pyams_content/component/paragraph/interfaces/contact.py:63
+msgid "Contact form"
+msgstr "Formulaire de contact"
+
+#: src/pyams_content/component/paragraph/interfaces/contact.py:64
+msgid "Reference of contact form"
+msgstr "Référence d'un formulaire de contact"
+
+#: src/pyams_content/component/paragraph/interfaces/contact.py:68
+msgid "Photo"
+msgstr "Photo"
+
+#: src/pyams_content/component/paragraph/interfaces/contact.py:69
+msgid "Use 'browse' button to select contact picture"
+msgstr "Utilisez le bouton 'Parcourir' pour sélectionner la photo du contact"
+
+#: src/pyams_content/component/paragraph/interfaces/contact.py:77
+msgid "Address"
+msgstr "Adresse"
+
+#: src/pyams_content/component/paragraph/interfaces/contact.py:80
+msgid "Contact template"
+msgstr "Mode de rendu"
+
+#: src/pyams_content/component/paragraph/interfaces/contact.py:81
+msgid "Presentation template used for this contact"
+msgstr "Modèle de présentation utilisé pour ce contact"
+
+#: src/pyams_content/component/paragraph/interfaces/contact.py:73
+#: src/pyams_content/component/paragraph/interfaces/map.py:48
+msgid "GPS location"
+msgstr "Position GPS"
+
+#: src/pyams_content/component/paragraph/interfaces/contact.py:74
+msgid "GPS coordinates used to locate contact"
+msgstr "Coordonnées GPS de situation du contact"
+
+#: src/pyams_content/component/paragraph/interfaces/video.py:32
+#: src/pyams_content/component/extfile/__init__.py:253
+#: src/pyams_content/component/extfile/__init__.py:257
+msgid "Video"
+msgstr "Vidéo"
+
+#: src/pyams_content/component/paragraph/interfaces/video.py:39
+#: src/pyams_content/component/extfile/interfaces/__init__.py:81
+msgid "Video data"
+msgstr "Fichier"
+
+#: src/pyams_content/component/paragraph/interfaces/video.py:40
+msgid "Video file content"
+msgstr ""
+"Cliquez sur le bouton 'Parcourir...' pour sélectionner un nouveau contenu"
+
+#: src/pyams_content/component/paragraph/interfaces/pictogram.py:80
+#: src/pyams_content/component/paragraph/zmi/pictogram.py:298
+msgid "Pictograms"
+msgstr "Pictogrammes"
+
+#: src/pyams_content/component/paragraph/interfaces/pictogram.py:42
+msgid "Is this pictogram visible in front-office?"
+msgstr "Si 'non', ce pictogramme ne sera pas présenté aux internautes"
+
+#: src/pyams_content/component/paragraph/interfaces/pictogram.py:47
+msgid "Name of the pictogram to select"
+msgstr "Sélection du pictogramme à afficher"
+
+#: src/pyams_content/component/paragraph/interfaces/pictogram.py:53
+msgid "Alternate header"
+msgstr "En-tête de substitution"
+
+#: src/pyams_content/component/paragraph/interfaces/pictogram.py:54
+msgid ""
+"Alternate pictogram label; if not specified, the pictogram header will be "
+"used"
+msgstr ""
+"En-tête de substitution utilisé par le pictogramme; si rien n'est spécifié, "
+"l'en-tête du pictogramme sélectionné sera utilisé."
+
+#: src/pyams_content/component/paragraph/interfaces/pictogram.py:59
+msgid "Additional text associated to this pictogram"
+msgstr "Texte complémentaire associé à ce pictogramme"
+
+#: src/pyams_content/component/paragraph/interfaces/pictogram.py:87
+msgid "Pictograms template"
+msgstr "Mode de rendu"
+
+#: src/pyams_content/component/paragraph/interfaces/pictogram.py:88
+msgid "Presentation template used for pictograms"
+msgstr "Modèle de présentation utilisé par ce bloc de contenu"
+
+#: src/pyams_content/component/paragraph/interfaces/milestone.py:74
+#: src/pyams_content/component/paragraph/zmi/milestone.py:291
+msgid "Milestones"
+msgstr "Chronologie"
+
+#: src/pyams_content/component/paragraph/interfaces/milestone.py:39
+msgid "Is this milestone visible in front-office?"
+msgstr "Si 'non', ce jalon ne sera pas présenté aux internautes"
+
+#: src/pyams_content/component/paragraph/interfaces/milestone.py:44
+msgid "Milestone title"
+msgstr "Libellé associé au jalon"
+
+#: src/pyams_content/component/paragraph/interfaces/milestone.py:47
+#: src/pyams_content/component/paragraph/zmi/milestone.py:250
+msgid "Associated label"
+msgstr "Information associée"
+
+#: src/pyams_content/component/paragraph/interfaces/milestone.py:48
+msgid "The way this label will be rendered depends on presentation template"
+msgstr ""
+"La présentation de cette information peut varier en fonction du mode de "
+"rendu choisi"
+
+#: src/pyams_content/component/paragraph/interfaces/milestone.py:51
+#: src/pyams_content/component/paragraph/zmi/milestone.py:262
+msgid "Anchor"
+msgstr "Ancre"
+
+#: src/pyams_content/component/paragraph/interfaces/milestone.py:52
+msgid "Paragraph to which this milestone should lead"
+msgstr "Bloc de contenu vers lequel ce jalon doit conduire"
+
+#: src/pyams_content/component/paragraph/interfaces/milestone.py:82
+msgid "Additional text associated to this milestone paragraph"
+msgstr "Texte complémentaire associé à ce bloc"
+
+#: src/pyams_content/component/paragraph/interfaces/milestone.py:85
+msgid "Milestones template"
+msgstr "Mode de rendu"
+
+#: src/pyams_content/component/paragraph/interfaces/milestone.py:86
+msgid "Presentation template used for milestones"
+msgstr "Modèle de présentation utilisé par ce bloc de contenu"
+
+#: src/pyams_content/component/paragraph/interfaces/html.py:33
+msgid "Raw HTML "
+msgstr "Code HTML"
+
+#: src/pyams_content/component/paragraph/interfaces/html.py:56
+msgid "Rich text"
+msgstr "Texte enrichi"
+
+#: src/pyams_content/component/paragraph/interfaces/html.py:40
+msgid "Raw HTML code"
+msgstr "Code HTML"
+
+#: src/pyams_content/component/paragraph/interfaces/html.py:41
+msgid ""
+"This HTML code will be used 'as is', without any transformation. Use with "
+"care!!"
+msgstr ""
+"Ce code HTML sera utilisé en l'état et intégré dans les pages sans "
+"modification. À utiliser avec précaution !!!"
+
+#: src/pyams_content/component/paragraph/interfaces/html.py:45
+msgid "Raw HTML code template"
+msgstr "Mode de rendu"
+
+#: src/pyams_content/component/paragraph/interfaces/html.py:46
+#: src/pyams_content/component/paragraph/interfaces/html.py:67
+#: src/pyams_content/component/paragraph/interfaces/verbatim.py:53
+#: src/pyams_content/component/paragraph/interfaces/keypoint.py:45
+#: src/pyams_content/component/paragraph/interfaces/frame.py:44
+#: src/pyams_content/shared/imagemap/interfaces/__init__.py:101
+#: src/pyams_content/shared/logo/interfaces/__init__.py:89
+msgid "Presentation template used for this paragraph"
+msgstr "Mode de rendu utilisé par ce bloc de contenu"
+
+#: src/pyams_content/component/paragraph/interfaces/html.py:63
+msgid "Body"
+msgstr "Contenu HTML"
+
+#: src/pyams_content/component/paragraph/interfaces/html.py:66
+msgid "Body template"
+msgstr "Mode de rendu"
+
+#: src/pyams_content/component/paragraph/interfaces/verbatim.py:33
+msgid "Verbatim"
+msgstr "Verbatim"
+
+#: src/pyams_content/component/paragraph/interfaces/verbatim.py:40
+msgid "Quoted text"
+msgstr "Citation"
+
+#: src/pyams_content/component/paragraph/interfaces/verbatim.py:41
+msgid "Quotation marks will be added automatically by presentation template"
+msgstr "Les guillemets seront ajoutés automatiquement par le mode de rendu..."
+
+#: src/pyams_content/component/paragraph/interfaces/verbatim.py:45
+msgid "Name of the quote author"
+msgstr "Nom de l'auteur de la citation"
+
+#: src/pyams_content/component/paragraph/interfaces/verbatim.py:49
+msgid "Label of author function"
+msgstr "Fonction de l'auteur"
+
+#: src/pyams_content/component/paragraph/interfaces/verbatim.py:52
+msgid "Verbatim template"
+msgstr "Mode de rendu"
+
+#: src/pyams_content/component/paragraph/interfaces/__init__.py:43
+msgid "Is this paragraph visible in front-office?"
+msgstr "Si 'non', ce bloc de contenu ne sera pas présenté aux internautes"
+
+#: src/pyams_content/component/paragraph/interfaces/__init__.py:47
+msgid "Anchor?"
+msgstr "Ancre ?"
+
+#: src/pyams_content/component/paragraph/interfaces/__init__.py:48
+msgid "Is this paragraph a navigation anchor?"
+msgstr ""
+"Si 'oui', ce bloc pourra recevoir une ancre de navigation au sein du contenu"
+
+#: src/pyams_content/component/paragraph/interfaces/__init__.py:52
+msgid "§ Title"
+msgstr "Titre §"
+
+#: src/pyams_content/component/paragraph/interfaces/__init__.py:92
+msgid "Allowed paragraphs"
+msgstr "Types de blocs autorisés"
+
+#: src/pyams_content/component/paragraph/interfaces/__init__.py:93
+msgid "List of paragraphs allowed for this content type"
+msgstr "Liste des types de blocs de contenu autorisés pour ce gabarit."
+
+#: src/pyams_content/component/paragraph/interfaces/__init__.py:97
+#: src/pyams_content/shared/common/zmi/types.py:171
+#: src/pyams_content/shared/common/zmi/types.py:411
+msgid "Default paragraphs"
+msgstr "Types de blocs par défaut"
+
+#: src/pyams_content/component/paragraph/interfaces/__init__.py:98
+msgid "List of paragraphs automatically added to a new content"
+msgstr "Liste des types de blocs ajoutés automatiquement aux nouveaux contenus"
+
+#: src/pyams_content/component/paragraph/interfaces/map.py:41
+msgid "Location map"
+msgstr "Carte"
+
+#: src/pyams_content/component/paragraph/interfaces/map.py:49
+msgid "GPS coordinates used to locate map"
+msgstr "Coordonnées GPS de situation de la carte"
+
+#: src/pyams_content/component/paragraph/interfaces/map.py:52
+msgid "Display location mark?"
+msgstr "Marqueur de position ?"
+
+#: src/pyams_content/component/paragraph/interfaces/map.py:53
+msgid "If 'yes', a location marker will be displayed on map"
+msgstr "Si 'oui', un marqueur de position sera placé sur la carte"
+
+#: src/pyams_content/component/paragraph/interfaces/map.py:57
+msgid "Map template"
+msgstr "Mode de rendu"
+
+#: src/pyams_content/component/paragraph/interfaces/map.py:58
+msgid "Presentation template used for this map"
+msgstr "Mode de rendu utilisé par cette carte"
+
+#: src/pyams_content/component/paragraph/interfaces/keypoint.py:33
+#: src/pyams_content/component/paragraph/interfaces/keypoint.py:40
+msgid "Key points"
+msgstr "Points clés"
+
+#: src/pyams_content/component/paragraph/interfaces/keypoint.py:41
+msgid "Enter one key point by line, without hyphen or prefix"
+msgstr ""
+"Indiquez un point clé par ligne, sans tiret. Passez à la ligne entre chaque "
+"point clé, la mise en forme sera effectuée automatiquement."
+
+#: src/pyams_content/component/paragraph/interfaces/keypoint.py:44
+msgid "Presentation template"
+msgstr "Mode de rendu"
+
+#: src/pyams_content/component/paragraph/interfaces/frame.py:33
+msgid "Framed text"
+msgstr "Encadré"
+
+#: src/pyams_content/component/paragraph/interfaces/frame.py:40
+msgid "Frame body"
+msgstr "Contenu"
+
+#: src/pyams_content/component/paragraph/interfaces/frame.py:43
+msgid "Text template"
+msgstr "Mode de rendu"
+
+#: src/pyams_content/component/paragraph/interfaces/audio.py:32
+msgid "Audio"
+msgstr "Bande son"
+
+#: src/pyams_content/component/paragraph/interfaces/audio.py:40
+#: src/pyams_content/component/extfile/interfaces/__init__.py:90
+msgid "Audio file content"
+msgstr ""
+"Cliquez sur le bouton 'Parcourir...' pour sélectionner un nouveau contenu"
+
+#: src/pyams_content/component/paragraph/interfaces/audio.py:51
+#: src/pyams_content/component/extfile/interfaces/__init__.py:41
+msgid "File description displayed by front-office template"
+msgstr "Description du fichier, présentée aux internautes"
+
+#: src/pyams_content/component/paragraph/interfaces/audio.py:54
+msgid "Audio template"
+msgstr "Mode de rendu"
+
+#: src/pyams_content/component/paragraph/interfaces/audio.py:55
+msgid "Presentation template used for this audio file"
+msgstr "Mode de rendu utilisé pour cette bande son"
+
+#: src/pyams_content/component/paragraph/portlet/__init__.py:83
+msgid "Content paragraphs"
+msgstr "Blocs de contenu"
+
+#: src/pyams_content/component/paragraph/portlet/__init__.py:135
+msgid "Paragraphs navigation anchors"
+msgstr "Navigation au sein des blocs"
+
+#: src/pyams_content/component/paragraph/portlet/interfaces/__init__.py:30
+#: src/pyams_content/component/paragraph/portlet/interfaces/__init__.py:52
+msgid "Selected paragraphs"
+msgstr "Blocs sélectionnés"
+
+#: src/pyams_content/component/paragraph/portlet/interfaces/__init__.py:31
+msgid ""
+"List of selected paragraphs; an empty selection means that all paragraphs "
+"will be selectable by following filters; otherwise, this selection will have "
+"priority"
+msgstr ""
+"Liste des blocs sélectionnés ; si la sélection est vide, tous les blocs de "
+"contenu pourront être sélectionnés via les filtres ci-dessous ; dans le cas "
+"contraire, cette sélection devient prioritaire et les autres filtres ne sont "
+"pas appliqués"
+
+#: src/pyams_content/component/paragraph/portlet/interfaces/__init__.py:37
+#: src/pyams_content/component/paragraph/portlet/interfaces/__init__.py:59
+msgid "Paragraph types"
+msgstr "Types de blocs"
+
+#: src/pyams_content/component/paragraph/portlet/interfaces/__init__.py:38
+msgid ""
+"Select list of paragraph types you want to include; an empty selection means "
+"that all paragraphs types will be selected"
+msgstr ""
+"Liste des types de blocs que vous souhaitez sélectionner ; si la sélection "
+"est vide, tous les types de blocs seront pris en compte"
+
+#: src/pyams_content/component/paragraph/portlet/interfaces/__init__.py:43
+#: src/pyams_content/component/paragraph/portlet/interfaces/__init__.py:65
+msgid "Anchors only?"
+msgstr "Ancres seulement ?"
+
+#: src/pyams_content/component/paragraph/portlet/interfaces/__init__.py:44
+msgid "If 'yes', only paragraphs set as 'anchors' will be selected"
+msgstr ""
+"Si 'oui', seuls les blocs définis comme ancres de navigation seront "
+"sélectionnés"
+
+#: src/pyams_content/component/paragraph/portlet/interfaces/__init__.py:53
+msgid ""
+"List of paragraphs selected for navigation; an empty selection means that "
+"all paragraphs will be selectable by following filters; otherwise, this "
+"selection will have priority"
+msgstr ""
+"Liste des blocs sélectionnés pour la navigation ; si la sélection est vide, "
+"tous les blocs de contenu pourront être sélectionnés via les filtres ci-"
+"dessous ; dans le cas contraire, cette sélection devient prioritaire et les "
+"autres filtres ne sont pas appliqués"
+
+#: src/pyams_content/component/paragraph/portlet/interfaces/__init__.py:60
+msgid ""
+"Select list of paragraph types you want to use for navigation; an empty "
+"selection means that all paragraphs types will be selected"
+msgstr ""
+"Liste des types de blocs que vous souhaitez sélectionner pour la "
+"navigation ; si la sélection est vide, tous les types de blocs seront pris "
+"en compte"
+
+#: src/pyams_content/component/paragraph/portlet/interfaces/__init__.py:66
+msgid "If 'no', all paragraphs will be used as navigation anchors"
+msgstr ""
+"Si 'non', tous les blocs seront utilisés comme liens de navigation même si "
+"ce ne sont pas des ancres"
+
+#: src/pyams_content/component/paragraph/portlet/zmi/__init__.py:67
+#: src/pyams_content/component/paragraph/portlet/zmi/__init__.py:122
+msgid "No filter, all paragraphs selected"
+msgstr "Pas de filtre, tous les blocs sont acceptés"
+
+#: src/pyams_content/component/paragraph/portlet/zmi/__init__.py:74
+#: src/pyams_content/component/paragraph/portlet/zmi/__init__.py:129
+msgid "No filter, all paragraph types selected"
+msgstr "Pas de filtre, tous les types de blocs sont acceptés"
+
+#: src/pyams_content/component/paragraph/portlet/zmi/templates/navigation-preview.pt:4
+#: src/pyams_content/component/paragraph/portlet/zmi/templates/container-preview.pt:4
+msgid "Selected paragraphs:"
+msgstr "Blocs sélectionnés :"
+
+#: src/pyams_content/component/paragraph/portlet/zmi/templates/navigation-preview.pt:10
+#: src/pyams_content/component/paragraph/portlet/zmi/templates/container-preview.pt:10
+msgid "Paragraphs filters:"
+msgstr "Filtrage des blocs :"
+
+#: src/pyams_content/component/paragraph/portlet/zmi/templates/navigation-preview.pt:13
+#: src/pyams_content/component/paragraph/portlet/zmi/templates/container-preview.pt:13
+msgid "Selected paragraph types:"
+msgstr "Types de blocs :"
+
+#: src/pyams_content/component/paragraph/portlet/zmi/templates/navigation-preview.pt:18
+#: src/pyams_content/component/paragraph/portlet/zmi/templates/container-preview.pt:18
+msgid "Only display anchors"
+msgstr "Ne sélectionner que les ancres"
+
+#: src/pyams_content/component/paragraph/zmi/header.py:49
+msgid "Edit header paragraph properties"
+msgstr "Propriétés du chapô"
+
+#: src/pyams_content/component/paragraph/zmi/container.py:74
+msgid "Contents..."
+msgstr "Blocs de contenu"
+
+#: src/pyams_content/component/paragraph/zmi/container.py:215
+msgid "Set navigation anchor"
+msgstr "Ancre de navigation"
+
+#: src/pyams_content/component/paragraph/zmi/container.py:286
+msgid "Show/hide all paragraphs"
+msgstr "Afficher/masquer tous les blocs"
+
+#: src/pyams_content/component/paragraph/zmi/container.py:334
+#: src/pyams_content/component/paragraph/zmi/container.py:343
+#: src/pyams_content/component/paragraph/zmi/container.py:356
+msgid "Content blocks"
+msgstr "Blocs de contenu"
+
+#: src/pyams_content/component/paragraph/zmi/container.py:413
+msgid "Links and attachments..."
+msgstr "Récap. liens et PJ"
+
+#: src/pyams_content/component/paragraph/zmi/container.py:425
+msgid "Content blocks links and attachments"
+msgstr "Récapitulatif des liens et pièces jointes par bloc de contenu"
+
+#: src/pyams_content/component/paragraph/zmi/container.py:145
+msgid "No currently defined paragraph."
+msgstr "Aucun bloc n'est associé à ce contenu."
+
+#: src/pyams_content/component/paragraph/zmi/container.py:295
+msgid "Click to open/close all paragraphs editors"
+msgstr "Afficher/masquer tous les blocs"
+
+#: src/pyams_content/component/paragraph/zmi/container.py:308
+msgid "Click to open/close paragraph editor"
+msgstr "Afficher/masquer ce bloc"
+
+#: src/pyams_content/component/paragraph/zmi/container.py:151
+msgid "Check allowed paragraph types to be able to create new paragraphs."
+msgstr ""
+"Vérifiez le paramétrage des types de blocs de contenu autorisés pour pouvoir "
+"ajouter de nouveaux blocs."
+
+#: src/pyams_content/component/paragraph/zmi/contact.py:53
+msgid "Contact card..."
+msgstr "Fiche contact"
+
+#: src/pyams_content/component/paragraph/zmi/contact.py:66
+msgid "Add new contact card"
+msgstr "Ajout d'une fiche contact"
+
+#: src/pyams_content/component/paragraph/zmi/contact.py:89
+msgid "Edit contact card properties"
+msgstr "Propriétés de la fiche contact"
+
+#: src/pyams_content/component/paragraph/zmi/video.py:54
+msgid "Video paragraph..."
+msgstr "Vidéo"
+
+#: src/pyams_content/component/paragraph/zmi/video.py:67
+msgid "Add new video paragraph"
+msgstr "Ajout d'une vidéo"
+
+#: src/pyams_content/component/paragraph/zmi/pictogram.py:82
+msgid "Pictograms..."
+msgstr "Pictogrammes"
+
+#: src/pyams_content/component/paragraph/zmi/pictogram.py:95
+msgid "Add new pictogram paragraph"
+msgstr "Ajout de pictogrammes"
+
+#: src/pyams_content/component/paragraph/zmi/pictogram.py:122
+msgid "Edit pictogram paragraph properties"
+msgstr "Propriétés des pictogrammes"
+
+#. Default: Header
+#: src/pyams_content/component/paragraph/zmi/pictogram.py:259
+msgid "pictogram-item-header"
+msgstr "En-tête"
+
+#: src/pyams_content/component/paragraph/zmi/pictogram.py:348
+msgid "Pictogram was correctly added"
+msgstr "Le pictogramme a été ajouté."
+
+#: src/pyams_content/component/paragraph/zmi/pictogram.py:358
+#: src/pyams_content/component/paragraph/zmi/pictogram.py:396
+msgid "You must select a pictogram!"
+msgstr "Vous devez sélectionner un pictogramme !"
+
+#: src/pyams_content/component/paragraph/zmi/milestone.py:77
+msgid "Milestones..."
+msgstr "Chronologie"
+
+#: src/pyams_content/component/paragraph/zmi/milestone.py:90
+msgid "Add new milestone paragraph"
+msgstr "Ajout d'une chronologie"
+
+#: src/pyams_content/component/paragraph/zmi/milestone.py:117
+msgid "Edit milestone paragraph properties"
+msgstr "Propriétés de la chronologie"
+
+#: src/pyams_content/component/paragraph/zmi/milestone.py:306
+msgid "Add milestone"
+msgstr "Ajouter un jalon"
+
+#: src/pyams_content/component/paragraph/zmi/milestone.py:319
+msgid "Add new milestone"
+msgstr "Ajout d'un jalon"
+
+#: src/pyams_content/component/paragraph/zmi/milestone.py:346
+msgid "Edit milestone properties"
+msgstr "Propriétés du jalon"
+
+#: src/pyams_content/component/paragraph/zmi/milestone.py:334
+msgid "Milestone was correctly added"
+msgstr "Le jalon a été ajouté."
+
+#: src/pyams_content/component/paragraph/zmi/milestone.py:277
+msgid "(missing paragraph)"
+msgstr "(paragraphe supprimé)"
+
+#: src/pyams_content/component/paragraph/zmi/html.py:76
+msgid "Raw HTML..."
+msgstr "Code HTML"
+
+#: src/pyams_content/component/paragraph/zmi/html.py:89
+msgid "Add new raw HTML paragraph"
+msgstr "Ajout d'un bloc de code HTML"
+
+#: src/pyams_content/component/paragraph/zmi/html.py:119
+msgid "Edit raw HTML paragraph properties"
+msgstr "Propriétés du code HTML"
+
+#: src/pyams_content/component/paragraph/zmi/html.py:159
+msgid "Rich text..."
+msgstr "Texte enrichi"
+
+#: src/pyams_content/component/paragraph/zmi/html.py:172
+msgid "Add new rich text paragraph"
+msgstr "Ajout d'un bloc de texte enrichi"
+
+#: src/pyams_content/component/paragraph/zmi/html.py:197
+msgid "Edit rich text paragraph properties"
+msgstr "Propriétés du texte enrichi"
+
+#: src/pyams_content/component/paragraph/zmi/verbatim.py:57
+msgid "Verbatim..."
+msgstr "Verbatim"
+
+#: src/pyams_content/component/paragraph/zmi/verbatim.py:70
+msgid "Add new verbatim paragraph"
+msgstr "Ajout d'un verbatim"
+
+#: src/pyams_content/component/paragraph/zmi/verbatim.py:92
+msgid "Edit verbatim paragraph properties"
+msgstr "Propriétés du verbatim"
+
+#: src/pyams_content/component/paragraph/zmi/__init__.py:64
+msgid "Content block types..."
+msgstr "Types de blocs de contenu"
+
+#: src/pyams_content/component/paragraph/zmi/__init__.py:78
+msgid "Content block types"
+msgstr "Types de blocs de contenu"
+
+#: src/pyams_content/component/paragraph/zmi/__init__.py:88
+msgid ""
+"You can define which types of paragraphs are allowed in this container.\n"
+"\n"
+"Default paragraphs will be added automatically (in selected order) to any "
+"new created content.\n"
+"\n"
+"NOTICE: removing types from allowed types list will have no effect on "
+"already created contents!"
+msgstr ""
+"Vous pouvez indiquer la liste des types de blocs de contenu autorisés pour "
+"ce gabarit.\n"
+"\n"
+"Les types de blocs par défaut seront ajoutés automatiquement (dans l'ordre "
+"défini) à chaque nouveau contenu créé selon ce gabarit.\n"
+"\n"
+"REMARQUE : supprimer des types de la liste des types de blocs autorisés sera "
+"sans effet sur les contenus existants."
+
+#: src/pyams_content/component/paragraph/zmi/__init__.py:208
+#: src/pyams_content/features/preview/zmi/__init__.py:45
+#: src/pyams_content/shared/common/zmi/templates/preview-input.pt:39
+msgid "Preview"
+msgstr "Aperçu"
+
+#: src/pyams_content/component/paragraph/zmi/__init__.py:213
+#: src/pyams_content/features/review/zmi/__init__.py:84
+#: src/pyams_content/shared/common/zmi/__init__.py:275
+#: src/pyams_content/shared/common/zmi/owner.py:73
+#: src/pyams_content/shared/common/zmi/workflow.py:123
+#: src/pyams_content/shared/common/zmi/workflow.py:210
+#: src/pyams_content/shared/common/zmi/workflow.py:250
+#: src/pyams_content/shared/common/zmi/workflow.py:304
+#: src/pyams_content/shared/common/zmi/workflow.py:393
+#: src/pyams_content/shared/common/zmi/workflow.py:449
+#: src/pyams_content/shared/common/zmi/workflow.py:489
+#: src/pyams_content/shared/common/zmi/workflow.py:530
+#: src/pyams_content/shared/common/zmi/workflow.py:573
+#: src/pyams_content/shared/common/zmi/workflow.py:613
+#: src/pyams_content/shared/common/zmi/workflow.py:654
+#: src/pyams_content/shared/common/zmi/workflow.py:705
+msgid "Cancel"
+msgstr "Annuler"
+
+#: src/pyams_content/component/paragraph/zmi/__init__.py:215
+msgid "Submit"
+msgstr "Enregistrer"
+
+#: src/pyams_content/component/paragraph/zmi/__init__.py:196
+msgid "Paragraph was correctly added."
+msgstr "Le bloc a été ajouté."
+
+#: src/pyams_content/component/paragraph/zmi/__init__.py:255
msgid ""
-"You must confirm that you previewed and checked this content before "
-"requesting publication!!"
-msgstr ""
-"Vous devez avoir prévisualisé et audité ce contenu avant de pouvoir le "
-"publier !!"
-
-#: src/pyams_content/shared/common/zmi/workflow.py:88
-#, python-format
-msgid "{state} | by {principal}"
-msgstr "{state} | par {principal}"
-
-#: src/pyams_content/shared/common/zmi/workflow.py:871
+"You changed renderer selection. Don't omit to update new renderer "
+"properties..."
+msgstr ""
+"Vous avez changé de mode de rendu. N'oubliez pas de vérifier les propriétés "
+"du nouveau mode de rendu sélectionné..."
+
+#: src/pyams_content/component/paragraph/zmi/map.py:55
+msgid "Location map..."
+msgstr "Carte de situation"
+
+#: src/pyams_content/component/paragraph/zmi/map.py:68
+msgid "Add new location map"
+msgstr "Ajout d'une carte de situation"
+
+#: src/pyams_content/component/paragraph/zmi/map.py:91
+msgid "Edit location map properties"
+msgstr "Propriétés de la carte"
+
+#: src/pyams_content/component/paragraph/zmi/keypoint.py:51
+msgid "Key points..."
+msgstr "Points clés"
+
+#: src/pyams_content/component/paragraph/zmi/keypoint.py:64
+msgid "Add new key points paragraph"
+msgstr "Ajout de points clés"
+
+#: src/pyams_content/component/paragraph/zmi/keypoint.py:91
+msgid "Edit key points paragraph properties"
+msgstr "Propriétés des points clés"
+
+#: src/pyams_content/component/paragraph/zmi/frame.py:86
+msgid "Framed text..."
+msgstr "Encadré"
+
+#: src/pyams_content/component/paragraph/zmi/frame.py:100
+msgid "Add new framed text paragraph"
+msgstr "Ajout d'un encadré"
+
+#: src/pyams_content/component/paragraph/zmi/frame.py:126
+msgid "Edit framed text paragraph properties"
+msgstr "Propriétés de l'encadré"
+
+#: src/pyams_content/component/paragraph/zmi/audio.py:54
+msgid "Audio paragraph..."
+msgstr "Bande son"
+
+#: src/pyams_content/component/paragraph/zmi/audio.py:67
+msgid "Add new audio paragraph"
+msgstr "Ajout d'une bande son"
+
+#: src/pyams_content/component/paragraph/zmi/audio.py:89
+msgid "Edit audio properties"
+msgstr "Propriétés de la bande son"
+
+#: src/pyams_content/component/association/container.py:91
+#: src/pyams_content/component/association/interfaces/__init__.py:93
+#: src/pyams_content/component/association/zmi/__init__.py:313
+msgid "Associations"
+msgstr "Liens et pièces jointes"
+
+#: src/pyams_content/component/association/interfaces/__init__.py:43
+#: src/pyams_content/features/menu/interfaces/__init__.py:60
+msgid "Is this item visible in front-office?"
+msgstr "Si 'non', ce lien ne sera pas présenté aux internautes"
+
+#: src/pyams_content/component/association/interfaces/__init__.py:100
+msgid "Associations template"
+msgstr "Mode de rendu"
+
+#: src/pyams_content/component/association/interfaces/__init__.py:101
+msgid "Presentation template used for associations"
+msgstr "Modèle de présentation utilisé par ce bloc de contenu"
+
+#: src/pyams_content/component/association/zmi/__init__.py:96
+#: src/pyams_content/component/association/zmi/paragraph.py:54
+msgid "Associations..."
+msgstr "Liens et pièces jointes"
+
+#: src/pyams_content/component/association/zmi/__init__.py:209
+msgid "Public title"
+msgstr "Libellé public"
+
+#: src/pyams_content/component/association/zmi/__init__.py:229
+msgid "Inner title"
+msgstr "Contenu interne"
+
+#: src/pyams_content/component/association/zmi/__init__.py:247
+msgid "Size"
+msgstr "Taille"
+
+#: src/pyams_content/component/association/zmi/__init__.py:290
+#: src/pyams_content/component/association/zmi/__init__.py:300
+msgid "Associations list"
+msgstr "Liste des liens et pièces jointes"
+
+#: src/pyams_content/component/association/zmi/__init__.py:66
+msgid "Association was correctly added."
+msgstr "L'association a été ajoutée."
+
+#: src/pyams_content/component/association/zmi/paragraph.py:67
+msgid "Add new association paragraph"
+msgstr "Ajout d'un bloc « liens et pièces jointes »"
+
+#: src/pyams_content/component/association/zmi/paragraph.py:93
+msgid "Edit association paragraph properties"
+msgstr "Propriétés du bloc « liens et pièces jointes »"
+
+#: src/pyams_content/component/extfile/__init__.py:172
+#: src/pyams_content/component/extfile/__init__.py:176
+msgid "Standard file"
+msgstr "Fichier"
+
+#: src/pyams_content/component/extfile/__init__.py:272
+#: src/pyams_content/component/extfile/__init__.py:276
+msgid "Audio file"
+msgstr "Fichier audio"
+
+#: src/pyams_content/component/extfile/interfaces/__init__.py:37
+msgid "File title, as shown in front-office"
+msgstr "Titre présenté aux internautes"
+
+#: src/pyams_content/component/extfile/interfaces/__init__.py:49
+msgid "File's content language"
+msgstr "Langue du fichier"
+
+#: src/pyams_content/component/extfile/interfaces/__init__.py:53
+msgid "Save file as..."
+msgstr "Nom du fichier"
+
+#: src/pyams_content/component/extfile/interfaces/__init__.py:54
+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 "
+"veiller au sens de ce nom, sans oublier d'indiquer l'extension (« .pdf », « ."
+"doc »...) !"
+
+#: src/pyams_content/component/extfile/interfaces/__init__.py:61
+msgid "File data"
+msgstr "Fichier"
+
+#: src/pyams_content/component/extfile/interfaces/__init__.py:62
+msgid "File content"
+msgstr ""
+"Cliquez sur le bouton 'Parcourir...' pour sélectionner un nouveau contenu"
+
+#: src/pyams_content/component/extfile/interfaces/__init__.py:73
+#: src/pyams_content/shared/logo/interfaces/__init__.py:59
+msgid "Image data"
+msgstr "Fichier"
+
+#: src/pyams_content/component/extfile/interfaces/__init__.py:74
+msgid "Image content"
+msgstr ""
+"Cliquez sur le bouton 'Parcourir...' pour sélectionner un nouveau contenu..."
+
+#: src/pyams_content/component/extfile/interfaces/__init__.py:82
+msgid "Video content"
+msgstr ""
+"Cliquez sur le bouton 'Parcourir...' pour sélectionner un nouveau contenu"
+
+#: src/pyams_content/component/extfile/zmi/__init__.py:74
+msgid "External files"
+msgstr "Fichiers"
+
+#: src/pyams_content/component/extfile/zmi/__init__.py:89
+msgid "Add external file"
+msgstr "Fichier"
+
+#: src/pyams_content/component/extfile/zmi/__init__.py:103
+msgid "Add new external file"
+msgstr "Ajout d'un fichier"
+
+#: src/pyams_content/component/extfile/zmi/__init__.py:133
+msgid "Update file properties"
+msgstr "Propriétés du fichier"
+
+#: src/pyams_content/component/extfile/zmi/__init__.py:161
+msgid "Images"
+msgstr "Images"
+
+#: src/pyams_content/component/extfile/zmi/__init__.py:176
+msgid "Add image"
+msgstr "Image téléchargeable"
+
+#: src/pyams_content/component/extfile/zmi/__init__.py:190
+msgid "Add new image"
+msgstr "Ajout d'une image téléchargeable"
+
+#: src/pyams_content/component/extfile/zmi/__init__.py:221
+msgid "Update image properties"
+msgstr "Propriétés de l'image téléchargeable"
+
+#: src/pyams_content/component/extfile/zmi/__init__.py:254
+msgid "Videos"
+msgstr "Vidéos"
+
+#: src/pyams_content/component/extfile/zmi/__init__.py:269
+msgid "Add video"
+msgstr "Vidéo téléchargeable"
+
+#: src/pyams_content/component/extfile/zmi/__init__.py:283
+msgid "Add new video"
+msgstr "Ajout d'une vidéo téléchargeable"
+
+#: src/pyams_content/component/extfile/zmi/__init__.py:307
+msgid "Update video properties"
+msgstr "Propriétés de la vidéo téléchargeable"
+
+#: src/pyams_content/component/extfile/zmi/__init__.py:333
+msgid "Audios files"
+msgstr "Fichiers audios"
+
+#: src/pyams_content/component/extfile/zmi/__init__.py:348
+msgid "Add audio file"
+msgstr "Bande son téléchargeable"
+
+#: src/pyams_content/component/extfile/zmi/__init__.py:362
+msgid "Add new audio file"
+msgstr "Ajout d'une bande son téléchargeable"
+
+#: src/pyams_content/component/extfile/zmi/__init__.py:386
+msgid "Update audio file properties"
+msgstr "Propriétés de la bande son téléchargeable"
+
+#: src/pyams_content/component/extfile/zmi/__init__.py:50
+msgid "External file type"
+msgstr "Type de fichier joint"
+
+#: src/pyams_content/component/illustration/__init__.py:171
+#: src/pyams_content/component/illustration/thesaurus.py:32
+#: src/pyams_content/component/illustration/interfaces/__init__.py:97
+#: src/pyams_content/component/illustration/zmi/__init__.py:51
+#: src/pyams_content/component/illustration/zmi/__init__.py:112
+#: src/pyams_content/component/illustration/zmi/paragraph.py:153
+msgid "Illustration"
+msgstr "Illustration"
+
+#: src/pyams_content/component/illustration/interfaces/__init__.py:55
+msgid "Name of picture's author"
+msgstr "Sous la forme \"Prénom Nom / Organisme\""
+
+#: src/pyams_content/component/illustration/interfaces/__init__.py:63
+msgid "Illustration description displayed in front-office templates"
+msgstr ""
+"Le texte accompagne l'illustration, en complément de la légende. Attention : "
+"sa présence et sa mise en forme dépendent du mode de rendu choisi."
+
+#: src/pyams_content/component/illustration/interfaces/__init__.py:66
+msgid "Illustration template"
+msgstr "Mode de rendu"
+
+#: src/pyams_content/component/illustration/interfaces/__init__.py:67
+msgid "Presentation template used for illustration"
+msgstr ""
+"<span>Modèle de présentation utilisé par cette illustration.<br /"
+"><strong>ATTENTION :</strong> certains modes de rendu ne prennent pas en "
+"compte tous les types de médias !</span>"
+
+#: src/pyams_content/component/illustration/zmi/__init__.py:146
+msgid "Navigation link illustration"
+msgstr "Illustration de navigation"
+
+#: src/pyams_content/component/illustration/zmi/__init__.py:114
+msgid "Header illustration"
+msgstr "Illustration d'en-tête"
+
+#: src/pyams_content/component/illustration/zmi/thesaurus.py:42
+#: src/pyams_content/component/illustration/zmi/paragraph.py:93
+msgid "Edit illustration properties"
+msgstr "Propriétés de l'illustration"
+
+#: src/pyams_content/component/illustration/zmi/paragraph.py:55
+msgid "Illustration..."
+msgstr "Illustration"
+
+#: src/pyams_content/component/illustration/zmi/paragraph.py:68
+msgid "Add new illustration"
+msgstr "Ajout d'une illustration"
+
+#: src/pyams_content/component/theme/__init__.py:74
+#: src/pyams_content/component/theme/interfaces/__init__.py:64
+#: src/pyams_content/component/theme/interfaces/__init__.py:78
+#: src/pyams_content/component/theme/zmi/portlet.py:40
+#: src/pyams_content/root/zmi/search.py:179
+#: src/pyams_content/root/zmi/templates/advanced-search.pt:181
+#: src/pyams_content/shared/common/zmi/search.py:189
+msgid "Tags"
+msgstr "Tags"
+
+#: src/pyams_content/component/theme/__init__.py:122
+#: src/pyams_content/component/theme/interfaces/__init__.py:105
+#: src/pyams_content/component/theme/interfaces/__init__.py:119
+#: src/pyams_content/component/theme/zmi/portlet.py:55
+#: src/pyams_content/shared/common/zmi/search.py:192
+msgid "Themes"
+msgstr "Thèmes"
+
+#: src/pyams_content/component/theme/__init__.py:170
+#: src/pyams_content/component/theme/interfaces/__init__.py:146
+#: src/pyams_content/component/theme/interfaces/__init__.py:160
+#: src/pyams_content/component/theme/zmi/portlet.py:70
+#: src/pyams_content/shared/common/zmi/search.py:195
+msgid "Collections"
+msgstr "Collections"
+
+#: src/pyams_content/component/theme/__init__.py:83
+msgid "no defined tag"
+msgstr "aucun tag défini"
+
+#: src/pyams_content/component/theme/__init__.py:131
+msgid "no defined theme"
+msgstr "aucun thème défini"
+
+#: src/pyams_content/component/theme/__init__.py:179
+msgid "no defined collection"
+msgstr "aucune collection définie"
+
+#: src/pyams_content/component/theme/interfaces/__init__.py:41
+msgid "Enable search by tag?"
+msgstr "Activer la recherche par tag ?"
+
+#: src/pyams_content/component/theme/interfaces/__init__.py:42
msgid ""
-"You must confirm that you checked this content before requesting "
-"publication!!"
-msgstr "Vous devez avoir audité ce contenu avant de pouvoir le publier !!"
-
-#: src/pyams_content/shared/common/zmi/workflow.py:84
-#: src/pyams_content/workflow/__init__.py:648
-#: src/pyams_content/workflow/__init__.py:619
-#: src/pyams_content/workflow/basic.py:315
-#: src/pyams_content/workflow/basic.py:286
-#, python-format
-msgid "{state} {date}"
-msgstr "{state} {date}"
-
-#: src/pyams_content/shared/common/zmi/__init__.py:263
-msgid "Duplicate content..."
-msgstr "Dupliquer le contenu"
-
-#: src/pyams_content/shared/common/zmi/__init__.py:283
-msgid "Duplicate content"
-msgstr "Dupliquer ce contenu"
-
-#: src/pyams_content/shared/common/zmi/__init__.py:84
-msgid "This title can be modified afterwards"
-msgstr "Pourra être modifié ultérieurement"
-
-#: src/pyams_content/shared/common/zmi/__init__.py:274
-msgid "Duplicate this content"
-msgstr "Dupliquer ce contenu"
-
-#: src/pyams_content/shared/common/zmi/__init__.py:330
-#, python-format
-msgid "Clone created from version {source} of {oid} (in « {state} » state)"
-msgstr ""
-"Duplication de la version {source} du contenu {oid} (alors en statut "
-"« {state} »)"
-
-#: src/pyams_content/shared/common/zmi/__init__.py:375
-msgid "Created or modified in this version"
-msgstr "Créé ou modifié dans cette version"
-
-#: src/pyams_content/shared/common/zmi/summary.py:52
-msgid "Display content summary"
-msgstr "Récapitulatif pour ce contenu"
-
-#: src/pyams_content/shared/common/zmi/summary.py:76
-msgid "Identity card"
-msgstr "Carte d'identité"
-
-#: src/pyams_content/shared/common/zmi/summary.py:94
-msgid "Requested action"
-msgstr "Évolution demandée"
-
-#: src/pyams_content/shared/common/zmi/summary.py:135
-msgid "Publication and retire dates"
-msgstr "Dates de publication et de retrait planifiées"
-
-#: src/pyams_content/shared/common/zmi/summary.py:154
-msgid "Current version"
-msgstr "À propos de cette version"
-
-#: src/pyams_content/shared/common/zmi/summary.py:184
-msgid "Content history"
-msgstr "Pour mémoire"
-
-#: src/pyams_content/shared/common/zmi/summary.py:125
-msgid "Associated comment"
-msgstr "Commentaire associé"
-
-#: src/pyams_content/shared/common/zmi/summary.py:166
-#: src/pyams_content/shared/common/zmi/dashboard.py:198
-msgid "Version"
-msgstr "Version"
-
-#: src/pyams_content/shared/common/zmi/summary.py:115
-#, python-format
-msgid "{state} {date} by {principal}"
-msgstr "{state} {date} par {principal}"
-
-#: src/pyams_content/shared/common/zmi/summary.py:172
-#, python-format
-msgid "{state} since {date}, by {principal}"
-msgstr "{state} depuis {date} par {principal}"
-
-#: src/pyams_content/shared/common/zmi/manager.py:107
-msgid "Shared tool properties"
-msgstr "Propriétés de l'outil"
-
-#: src/pyams_content/shared/common/zmi/manager.py:125
-msgid "WARNING"
-msgstr "ATTENTION"
-
-#: src/pyams_content/shared/common/zmi/manager.py:127
+"If 'yes', displayed tags will lead to a search engine displaying contents "
+"matching given tag"
+msgstr ""
+"Si 'oui', un clic sur un tag permet d'accéder à une page de résultat de "
+"recherche portant sur le tag sélectionné"
+
+#: src/pyams_content/component/theme/interfaces/__init__.py:47
+msgid "Tags search target"
+msgstr "Cible de la recherche"
+
+#: src/pyams_content/component/theme/interfaces/__init__.py:48
+msgid "Site or folder where tags search is displayed"
+msgstr "Site ou rubrique où la recherche par tags s'effectue"
+
+#: src/pyams_content/component/theme/interfaces/__init__.py:54
+msgid "You must specify search target when activating search by tags!"
+msgstr ""
+"Vous devez indiquer la cible de la recherche lorsque vous activez la "
+"recherche par tags !"
+
+#: src/pyams_content/component/theme/zmi/manager.py:58
+msgid "Tags settings..."
+msgstr "Paramétrage des tags"
+
+#: src/pyams_content/component/theme/zmi/manager.py:72
+msgid "Selected tags"
+msgstr "Tags sélectionnés"
+
+#: src/pyams_content/component/theme/zmi/manager.py:109
+msgid "Themes settings..."
+msgstr "Paramétrage des thèmes"
+
+#: src/pyams_content/component/theme/zmi/manager.py:123
+msgid "Selected themes"
+msgstr "Thèmes sélectionnés"
+
+#: src/pyams_content/component/theme/zmi/manager.py:159
+msgid "Collections settings..."
+msgstr "Paramétrage des collections"
+
+#: src/pyams_content/component/theme/zmi/manager.py:173
+msgid "Selected collections"
+msgstr "Collections sélectionnées"
+
+#: src/pyams_content/component/theme/zmi/__init__.py:55
+#: src/pyams_content/shared/view/zmi/theme.py:56
+msgid "Tags..."
+msgstr "Tags"
+
+#: src/pyams_content/component/theme/zmi/__init__.py:66
+msgid "Content tags"
+msgstr "Tags du contenu"
+
+#: src/pyams_content/component/theme/zmi/__init__.py:99
+#: src/pyams_content/shared/view/zmi/theme.py:102
+msgid "Themes..."
+msgstr "Thèmes"
+
+#: src/pyams_content/component/theme/zmi/__init__.py:107
+msgid "Content themes"
+msgstr "Thèmes du contenu"
+
+#: src/pyams_content/component/theme/zmi/__init__.py:159
+#: src/pyams_content/shared/view/zmi/theme.py:148
+msgid "Collections..."
+msgstr "Collections"
+
+#: src/pyams_content/component/theme/zmi/__init__.py:172
+msgid "Content collections"
+msgstr "Collections associées au contenu"
+
+#: src/pyams_content/interfaces/__init__.py:95
+msgid "Unique key"
+msgstr "Clé unique"
+
+#: src/pyams_content/interfaces/__init__.py:96
+msgid ""
+"WARNING: this key can't be modified after creation!!! Spaces, uppercase "
+"letters ou accentuated characters will be replaced automatically."
+msgstr ""
+"ATTENTION : cette clé ne pourra plus être modifiée après sa création. Les "
+"espaces, les majuscules, les lettres accentuées et les caractères spéciaux "
+"seront remplacées automatiquement."
+
+#: src/pyams_content/interfaces/__init__.py:102
+#: src/pyams_content/shared/site/zmi/folder.py:67
+msgid "Visible label used to display content"
+msgstr "Le titre présenté aux internautes"
+
+#: src/pyams_content/interfaces/__init__.py:105
+msgid "Short name"
+msgstr "Fil d'Ariane"
+
+#: src/pyams_content/interfaces/__init__.py:106
+msgid "Short name used in breadcrumbs"
+msgstr "Libellé utilisé dans le fil d'Ariane"
+
+#: src/pyams_content/interfaces/__init__.py:113
+#: src/pyams_content/features/review/interfaces.py:74
+#: src/pyams_content/shared/view/interfaces/__init__.py:43
+msgid "Creation date"
+msgstr "Date de création"
+
+#: src/pyams_content/interfaces/__init__.py:117
+msgid "Modification date"
+msgstr "Dernière modification apportée"
+
+#: src/pyams_content/features/alert/interfaces.py:39
+msgid "Alert"
+msgstr "Alerte"
+
+#: src/pyams_content/features/alert/interfaces.py:40
+msgid "End of alert"
+msgstr "Levée d'alerte"
+
+#: src/pyams_content/features/alert/interfaces.py:41
+msgid "Information"
+msgstr "Information"
+
+#: src/pyams_content/features/alert/interfaces.py:42
+msgid "Warning"
+msgstr "Avertissement"
+
+#: src/pyams_content/features/alert/interfaces.py:43
+msgid "Recommendation"
+msgstr "Recommandation"
+
+#: src/pyams_content/features/alert/interfaces.py:55
+msgid "Is this alert visible in front-office?"
+msgstr "Si 'non', cette alerte ne sera pas présentée aux internautes"
+
+#: src/pyams_content/features/alert/interfaces.py:59
+msgid "Alert gravity"
+msgstr "Niveau de gravité"
+
+#: src/pyams_content/features/alert/interfaces.py:60
+msgid "Alert gravity will affect rendered alert style"
+msgstr "Le niveau de gravité choisi affectera le style de rendu de l'alerte"
+
+#: src/pyams_content/features/alert/interfaces.py:65
+#: src/pyams_content/features/alert/zmi/container.py:143
+msgid "Message"
+msgstr "Message"
+
+#: src/pyams_content/features/alert/interfaces.py:66
+msgid "Alert message"
+msgstr "Le message d'alerte doit être assez court et explicite"
+
+#: src/pyams_content/features/alert/interfaces.py:69
+#: src/pyams_content/features/menu/interfaces/__init__.py:68
+#: src/pyams_content/shared/imagemap/interfaces/__init__.py:96
+msgid "Internal reference"
+msgstr "Référence interne"
+
+#: src/pyams_content/features/alert/interfaces.py:70
msgid ""
-"Workflow shouldn't be modified if this tool already contains any shared "
-"content!"
-msgstr ""
-"Le workflow ne doit pas être modifié si cet outil renferme déjà des contenus "
-"partagés !"
-
-#: src/pyams_content/shared/common/zmi/manager.py:150
-msgid "Languages"
-msgstr "Langues"
-
-#: src/pyams_content/shared/common/zmi/manager.py:162
-msgid "Content languages"
-msgstr "Langues pour la traduction de cet outil"
-
-#: src/pyams_content/shared/common/zmi/manager.py:172
+"Internal link target reference. You can search a reference using '+' "
+"followed by internal number, of by entering text matching content title."
+msgstr ""
+"Référence interne vers la cible du lien. Vous pouvez la rechercher par des "
+"mots de son titre, ou par son numéro interne (précédé d'un '+') ; le titre "
+"d'origine peut être modifié en utilisant le titre de substitution."
+
+#: src/pyams_content/features/alert/interfaces.py:75
+msgid "Display start date"
+msgstr "Date d'affichage"
+
+#: src/pyams_content/features/alert/interfaces.py:76
+msgid "First date at which alert should be displayed"
+msgstr ""
+"Première date à laquelle l'alerte sera affichée. Laissez la zone vide pour "
+"qu'elle soit affichée immédiatement."
+
+#: src/pyams_content/features/alert/interfaces.py:79
+msgid "Display end date"
+msgstr "Date de retrait"
+
+#: src/pyams_content/features/alert/interfaces.py:80
+msgid "Last date at which alert should be displayed"
+msgstr ""
+"Dernière date à laquelle l'alerte sera affichée. Laissez la zone vide pour "
+"qu'elle ne soit pas retirée."
+
+#: src/pyams_content/features/alert/interfaces.py:83
+msgid "Maximum interval"
+msgstr "Intervalle d'affichage"
+
+#: src/pyams_content/features/alert/interfaces.py:84
+msgid ""
+"Maximum interval between alert displays on a given device, given in hours; "
+"set to 0 to always display the alert"
+msgstr ""
+"Cet intervalle est donné en heures ; passé ce délai, pour un internaute "
+"donné, l'alerte apparaîtra à nouveau. Si aucun intervalle n'est indiqué, "
+"l'alerte s'affichera en permanence."
+
+#: src/pyams_content/features/alert/zmi/container.py:53
+msgid "Alerts"
+msgstr "Alertes"
+
+#: src/pyams_content/features/alert/zmi/container.py:165
+msgid "Alert list"
+msgstr "Liste des alertes"
+
+#: src/pyams_content/features/alert/zmi/container.py:95
+msgid "No currently defined alert."
+msgstr "Aucune alerte n'est définie actuellement."
+
+#: src/pyams_content/features/alert/zmi/__init__.py:45
+msgid "Add alert"
+msgstr "Ajouter une alerte"
+
+#: 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:79
+msgid "Edit alert properties"
+msgstr "Propriétés de l'alerte"
+
+#: src/pyams_content/features/redirect/container.py:81
+msgid "not matching"
+msgstr "pas de correspondance"
+
+#: src/pyams_content/features/redirect/interfaces/__init__.py:39
+msgid "Active rule?"
+msgstr "Règle active ?"
+
+#: src/pyams_content/features/redirect/interfaces/__init__.py:40
+msgid "If 'no', selected rule is inactive"
+msgstr "Si 'non', la règle est inactive"
+
+#: src/pyams_content/features/redirect/interfaces/__init__.py:44
+msgid "Chained rule?"
+msgstr "Règle chaînée ?"
+
+#: src/pyams_content/features/redirect/interfaces/__init__.py:45
msgid ""
-"Tool languages are used to translate own tool properties, and newly created "
-"contents will propose these languages by default"
-msgstr ""
-"Les langues sont utilisées pour traduire les propriétés de l'outil.\n"
+"If 'no', and if this rule is matching received request URL, the rule returns "
+"a redirection response; otherwise, the rule just rewrites the input URL "
+"which is forwarded to the next rule"
+msgstr ""
+"Si 'non', et si cette règle correspond à l'URL reçue en entrée, une réponde "
+"de redirection est renvoyée directement ; dans le cas contraire, l'URL "
+"générée par cette règle est passée en entrée de la règle suivante"
+
+#: src/pyams_content/features/redirect/interfaces/__init__.py:51
+msgid "Permanent redirect?"
+msgstr "Redirection permanente ?"
+
+#: src/pyams_content/features/redirect/interfaces/__init__.py:52
+msgid "Define if this redirection should be permanent or temporary"
+msgstr ""
+"Indique si cette redirection doit être considérée comme permanente ou "
+"temporaire"
+
+#: src/pyams_content/features/redirect/interfaces/__init__.py:56
+#: src/pyams_content/features/redirect/zmi/container.py:210
+#: src/pyams_content/features/redirect/zmi/container.py:366
+msgid "URL pattern"
+msgstr "Schéma d'URL"
+
+#: src/pyams_content/features/redirect/interfaces/__init__.py:57
+msgid "Regexp pattern of matching URLs for this redirection rule"
+msgstr "Modèle de l'URL d'origine de cette règle de redirection"
+
+#: src/pyams_content/features/redirect/interfaces/__init__.py:62
+msgid "Internal redirection target"
+msgstr "Redirection interne"
+
+#: src/pyams_content/features/redirect/interfaces/__init__.py:63
+msgid ""
+"Internal redirection reference. You can search a reference using '+' "
+"followed by internal number, of by entering text matching content title."
+msgstr ""
+"Référence interne vers une cible de redirection. Vous pouvez la rechercher "
+"par des mots de son titre, ou par son numéro interne (précédé d'un '+')"
+
+#: src/pyams_content/features/redirect/interfaces/__init__.py:69
+msgid "URL to which source URL should be redirected"
+msgstr "URL vers laquelle l'URL d'origine doit être redirigée"
+
+#: src/pyams_content/features/redirect/interfaces/__init__.py:75
+msgid "You can only provide an internal reference OR a target URL"
+msgstr ""
+"Vous ne pouvez fournir qu'une référence interne OU une URL de redirection !"
+
+#: src/pyams_content/features/redirect/interfaces/__init__.py:77
+msgid "You must provide an internal reference OR a target URL"
+msgstr "Vous devez fournir une référence interne OU une URL de redirection !"
+
+#: src/pyams_content/features/redirect/zmi/container.py:67
+msgid "Redirections"
+msgstr "Redirections"
+
+#: src/pyams_content/features/redirect/zmi/container.py:161
+msgid "Enable/disable rule"
+msgstr "Activer/désactiver la règle"
+
+#: src/pyams_content/features/redirect/zmi/container.py:188
+msgid "Chain/unchain rule"
+msgstr "Enchaîner la règle avec la suivante"
+
+#: src/pyams_content/features/redirect/zmi/container.py:220
+msgid "Target"
+msgstr "Cible"
+
+#: src/pyams_content/features/redirect/zmi/container.py:246
+msgid "Redirections list"
+msgstr "Liste des règles de redirection"
+
+#: src/pyams_content/features/redirect/zmi/container.py:261
+msgid "Redirection rules"
+msgstr "Règles de redirection"
+
+#: src/pyams_content/features/redirect/zmi/container.py:262
+msgid ""
+"Redirection rules are use to handle redirections responses when a request "
+"generates \n"
+"a famous « 404 NotFound » error.\n"
"\n"
-"Les nouveaux contenus proposeront également ces langues par défaut."
-
-#: src/pyams_content/shared/common/zmi/manager.py:80
-msgid "Content management"
-msgstr "Gérer ce gabarit"
-
-#: src/pyams_content/shared/common/zmi/manager.py:82
-msgid "Tool management"
-msgstr "Gérer cet outil"
-
-#: src/pyams_content/shared/common/zmi/owner.py:50
-msgid "Change owner..."
-msgstr "Changer de propriétaire"
-
-#: src/pyams_content/shared/common/zmi/owner.py:83
-msgid "Change content's owner"
-msgstr "Changement de propriétaire"
-
-#: src/pyams_content/shared/common/zmi/owner.py:125
+"Redirections are particularly useful when you are migrating from a previous "
+"site and don't want to lose \n"
+"your SEO.\n"
+"\n"
+"You can define a set of rules which will be applied to every \"NotFound\" "
+"request; rules are based on \n"
+"regular expressions which are applied to input URL: if the rule is \"matching"
+"\", the target URL is rewritten\n"
+"and a \"Redirect\" response is send.\n"
+"\n"
+"You can chain rules together: when a rule is chained, it's rewritten URL is "
+"passed as input URL to the \n"
+"next rule, until a matching rule is found.\n"
+msgstr ""
+"Les règles de redirection sont utilisées pour transmettre des réponses de "
+"redirection au lieu de la fameuse erreur « 404 - Page non trouvée ».\n"
+"\n"
+"La gestion des redirections est particulièrement importante en phase de "
+"migration d'un site web, pour éviter les liens cassés, ne pas perdre votre "
+"référencement et faciliter la mise à jour des moteurs de recherche.\n"
+"\n"
+"Vous pouvez définir un ensemble de règles qui seront appliquées dès lors "
+"qu'une requête adressée au serveur génère une erreur de page non trouvée ; "
+"les règles sont basées sur des expressions rationnelles que l'on applique à "
+"l'URL de la requête reçue : si la règle correspond, l'URL est réécrite et "
+"une réponse de redirection vers cette nouvelle URL est renvoyée.\n"
+"\n"
+"Vous pouvez également enchaîner les règles : lorsqu'une règle est \"chaînée"
+"\", la nouvelle URL qu'elle génère est passée aux règles suivantes, jusqu'à "
+"ce qu'une règle s'applique à cette nouvelle URL.\n"
+
+#: src/pyams_content/features/redirect/zmi/container.py:288
+msgid "Test"
+msgstr "Tester !"
+
+#: src/pyams_content/features/redirect/zmi/container.py:323
+msgid "Test redirection rules"
+msgstr "Test des règles de redirection"
+
+#: src/pyams_content/features/redirect/zmi/container.py:301
+msgid "Test URL"
+msgstr "URL à tester"
+
+#: src/pyams_content/features/redirect/zmi/container.py:304
+msgid "Check inactive rules?"
+msgstr "Tester les règles inactive ?"
+
+#: src/pyams_content/features/redirect/zmi/container.py:305
+msgid "If 'yes', inactive rules will also be tested"
+msgstr "Si 'oui', les règles inactives seront également testées"
+
+#: src/pyams_content/features/redirect/zmi/container.py:313
+msgid "Close"
+msgstr "Fermer"
+
+#: src/pyams_content/features/redirect/zmi/container.py:314
+msgid "Test rules"
+msgstr "Tester cette URL"
+
+#: src/pyams_content/features/redirect/zmi/container.py:123
+msgid "No currently defined redirection rule."
+msgstr "Aucune règle de redirection n'est définie actuellement."
+
+#: src/pyams_content/features/redirect/zmi/container.py:371
+msgid "No matching rule!"
+msgstr "Aucune règle ne correspond !"
+
+#: src/pyams_content/features/redirect/zmi/container.py:365
+msgid "Input URL"
+msgstr "URL en entrée"
+
+#: src/pyams_content/features/redirect/zmi/container.py:367
+msgid "Output URL"
+msgstr "URL générée"
+
+#: src/pyams_content/features/redirect/zmi/__init__.py:50
+msgid "Add rule"
+msgstr "Ajouter une règle"
+
+#: src/pyams_content/features/redirect/zmi/__init__.py:63
+msgid "Add new redirection rule"
+msgstr "Ajout d'une règle de redirection"
+
+#: src/pyams_content/features/redirect/zmi/__init__.py:88
+msgid "Edit redirection rule properties"
+msgstr "Propriétés de la règle de redirection"
+
+#: src/pyams_content/features/redirect/zmi/__init__.py:109
+msgid ""
+"URL pattern and target URL are defined by *regular expressions* (see |"
+"regexp|).\n"
+" \n"
+"In URL pattern, you can use any valid regular expression element, notably:\n"
+"\n"
+"- « .* » to match any list of characters \n"
+"\n"
+"- « ( ) » to \"memorize\" parts of the URL which can be replaced into target "
+"URL\n"
+"\n"
+"- special characters (like \"+\") must be escaped with an « \\\\ ».\n"
+"\n"
+"In target URL, memorized parts can be reused using « \\\\1 », « \\\\2 » and "
+"so on, where given number is\n"
+"the order of the matching pattern element.\n"
+"\n"
+".. |regexp| raw:: html\n"
+"\n"
+" <a href=\"https://docs.python.org/3/library/re.html\" target=\"_blank"
+"\">Python Regular Expressions</a>\n"
+msgstr ""
+"Le schéma d'URL et l'URL cible sont définis en tant que « expressions "
+"rationelles » (voir |regexp|).\n"
+"\n"
+"Dans le schéma d'URL utilisé pour identifier les requêtes en entrée, vous "
+"pouvez utiliser tout élément d'une expression rationnelle valide, "
+"notamment :\n"
+"\n"
+"- « .* » pour rechercher n'importe quelle suite de caractères\n"
+"\n"
+"- « ^ » et « $ » pour identifier le début ou la fin de l'URL\n"
+"\n"
+"- « ( ) » pour \"mémoriser\" certains éléments de l'URL qui pourront être "
+"repris dans l'URL cible\n"
+"\n"
+"- les caractères spéciaux (comme les \"+\") doivent être protégés par un "
+"caractère « \\\\ ».\n"
+"\n"
+"For exemple : dans le schéma « ^/.*?oid=([a-z0-9]+)$ », toute URL contenant "
+"un paramètre \"oid\" composé de minuscules et/ou de chiffres sera mémorisé "
+"pour pouvoir être réutilisé dans l'URL cible.\n"
+"\n"
+"Dans l'URL cible, les éléments mémorisés peuvent être réutilisés en "
+"utilisant une expression comme « \\\\1 », « \\\\2 » (et ainsi de suite), le "
+"chiffre indiquant la position de l'élément dans la liste des éléments "
+"mémorisés.\n"
+"\n"
+".. |regexp| raw:: html\n"
+"\n"
+" <a href=\"https://docs.python.org/fr/3/library/re.html\" target=\"_blank"
+"\">Expressions rationnelles en Python</a>\n"
+
+#: src/pyams_content/features/review/__init__.py:181
+#, python-format
+msgid "Request comment: {comment}"
+msgstr "Commentaire joint : {comment}"
+
+#: src/pyams_content/features/review/__init__.py:211
+#, python-format
+msgid "A new comment was added on content « {0} »"
+msgstr "Un nouveau commentaire a été ajouté pour le contenu « {0} »"
+
+#: src/pyams_content/features/review/__init__.py:168
+#, python-format
+msgid "[{service_name}] A content review is requested"
+msgstr "[{service_name}] Demande de relecture"
+
+#: src/pyams_content/features/review/interfaces.py:32
+msgid "Review request"
+msgstr "Demande de relecture"
+
+#: src/pyams_content/features/review/interfaces.py:33
+msgid "Reviewer comment"
+msgstr "Commentaire"
+
+#: src/pyams_content/features/review/interfaces.py:56
+msgid "Comment writer"
+msgstr "Rédacteur"
+
+#: src/pyams_content/features/review/interfaces.py:59
+msgid "Content reviewers"
+msgstr "Relecteurs sollicités"
+
+#: src/pyams_content/features/review/interfaces.py:62
+msgid "Comment type"
+msgstr "Type de commentaire"
+
+#: src/pyams_content/features/review/interfaces.py:67
+msgid "Comment body"
+msgstr "Commentaire"
+
+#: src/pyams_content/features/review/interfaces.py:70
+msgid "Reviewer comment?"
+msgstr "Commentaire d'un relecteur ?"
+
+#: src/pyams_content/features/review/interfaces.py:86
+msgid "Reviewers list"
+msgstr "Liste des relecteurs"
+
+#: src/pyams_content/features/review/interfaces.py:87
+msgid "List of principals which reviewed the comment"
+msgstr "Liste des utilisateurs qui ont apporté des commentaires sur ce contenu"
+
+#: src/pyams_content/features/review/zmi/__init__.py:55
+msgid "Ask for review..."
+msgstr "Demander une relecture"
+
+#: src/pyams_content/features/review/zmi/__init__.py:94
+msgid "Content review request"
+msgstr "Demande de relecture"
+
+#: src/pyams_content/features/review/zmi/__init__.py:159
+msgid "Comments"
+msgstr "Commentaires"
+
+#: src/pyams_content/features/review/zmi/__init__.py:179
+msgid "Review comments"
+msgstr "Commentaires associés à cette version"
+
+#: src/pyams_content/features/review/zmi/__init__.py:65
+msgid "Sought principals"
+msgstr "Relecteurs sollicités"
+
+#: src/pyams_content/features/review/zmi/__init__.py:66
+msgid "List of principals from which a review is requested"
+msgstr ""
+"Liste des utilisateurs que vous souhaitez solliciter par mail pour relire ce "
+"contenu"
+
+#: src/pyams_content/features/review/zmi/__init__.py:69
+msgid "Comment"
+msgstr "Commentaire"
+
+#: src/pyams_content/features/review/zmi/__init__.py:70
+msgid "Comment associated with this request"
+msgstr ""
+"Ce commentaire associé à cette demande sera également transmis par mail"
+
+#: src/pyams_content/features/review/zmi/__init__.py:73
+msgid "Notify all reviewers"
+msgstr "Notifier tous les relecteurs"
+
+#: src/pyams_content/features/review/zmi/__init__.py:74
+msgid ""
+"If 'yes', selected reviewers will be notified by mail of your request, even "
+"if they were already members of the reviewers group. Otherwise, only new "
+"reviewers will be notified"
+msgstr ""
+"Si 'oui', tous les relecteurs sollicités seront notifiés par mail de votre "
+"demande, même s'ils avaient déjà été sollicités auparavant. Dans le cas "
+"contraire, seuls les nouveaux relecteurs seront notifiés."
+
+#: src/pyams_content/features/review/zmi/__init__.py:85
+msgid "Ask for content review"
+msgstr "Demander la relecture"
+
+#: src/pyams_content/features/review/zmi/__init__.py:140
+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:256
+msgid "Message is mandatory!"
+msgstr "Un commentaire est obligatoire !"
+
+#: src/pyams_content/features/review/zmi/__init__.py:128
+#, python-format
+msgid "Request successful. {count} new notification(s) have been sent"
+msgstr "Votre demande a été transmise. {count} notification(s) envoyée(s)."
+
+#: src/pyams_content/features/review/zmi/templates/review-comments-json.pt:15
+#: src/pyams_content/features/review/zmi/templates/review-comments.pt:32
+#: src/pyams_content/features/review/zmi/templates/review-add-comment.pt:14
+msgid "Review query from"
+msgstr "Demande de relecture de "
+
+#: src/pyams_content/features/review/zmi/templates/review-comments-json.pt:21
+#: src/pyams_content/features/review/zmi/templates/review-comments.pt:38
+#: src/pyams_content/features/review/zmi/templates/review-add-comment.pt:20
+msgid "(as reviewer)"
+msgstr "(relecteur)"
+
+#: src/pyams_content/features/review/zmi/templates/review-comments-json.pt:30
+#: src/pyams_content/features/review/zmi/templates/review-comments.pt:47
+msgid "Selected reviewers:"
+msgstr "Auprès de :"
+
+#: src/pyams_content/features/review/zmi/templates/review-comments.pt:64
+msgid "Add comment"
+msgstr "Déposer un commentaire"
+
+#: src/pyams_content/features/review/zmi/templates/review-comments.pt:67
+msgid "Add a comment..."
+msgstr "Votre commentaire..."
+
+#: src/pyams_content/features/review/zmi/templates/review-comments.pt:73
+msgid "Add this comment"
+msgstr "Ajouter ce commentaire"
+
+#: src/pyams_content/features/review/zmi/templates/review-notification.pt:4
+msgid "[${service_name}] You are requested for a content review"
+msgstr "[${service_name}] Demande de relecture"
+
+#: src/pyams_content/features/review/zmi/templates/review-notification.pt:30
+msgid "Hello,"
+msgstr "Bonjour,"
+
+#: src/pyams_content/features/review/zmi/templates/review-notification.pt:31
+msgid ""
+"You have been requested by ${sender}, contributor of « ${service_name} » "
+"website, to make a review of a content."
+msgstr ""
+"Vous êtes sollicité par ${sender}, contributeur du site internet "
+"${service_name}, qui souhaite recueillir votre commentaire à propos d'un "
+"contenu."
+
+#: src/pyams_content/features/review/zmi/templates/review-notification.pt:36
+msgid "${sender} added the following message to his request:"
+msgstr "${sender} a accompagné sa demande de relecture du message suivant :"
+
+#: src/pyams_content/features/review/zmi/templates/review-notification.pt:41
msgid ""
-"All versions of this content which are not archived will be transferred to "
-"newly selected owner"
-msgstr ""
-"Toutes les versions non archivées de ce contenu seront transférées au "
-"nouveau propriétaire sélectionné"
-
-#: src/pyams_content/shared/common/zmi/owner.py:60
-msgid "New owner"
-msgstr "Nouveau propriétaire"
-
-#: src/pyams_content/shared/common/zmi/owner.py:61
-msgid "The selected user will become the new content's owner"
-msgstr "L'utilisateur sélectionné deviendra le nouveau propriétaire du contenu"
-
-#: src/pyams_content/shared/common/zmi/owner.py:63
-msgid "Keep previous owner as contributor"
-msgstr "L'ancien propriétaire reste contributeur"
-
-#: src/pyams_content/shared/common/zmi/owner.py:64
-msgid "If 'yes', the previous owner will still be able to modify this content"
-msgstr ""
-"Si 'oui', l'actuel propriétaire du contenu en restera contributeur et pourra "
-"donc continuer à le mettre à jour"
-
-#: src/pyams_content/shared/common/zmi/owner.py:74
-msgid "Change owner"
-msgstr "Changer le propriétaire"
-
-#: src/pyams_content/shared/common/zmi/rename.py:62
-msgid "Change URL..."
-msgstr "Changer d'URL"
-
-#: src/pyams_content/shared/common/zmi/rename.py:79
-msgid "Change item URL"
-msgstr "Modification de l'URL"
-
-#: src/pyams_content/shared/common/zmi/rename.py:86
-msgid "Item URL part"
-msgstr "URL du contenu"
-
-#: src/pyams_content/shared/common/zmi/rename.py:87
-msgid "URL part used to access this content"
-msgstr "Portion de l'URL utilisée pour accéder à ce contenu"
-
-#: src/pyams_content/shared/common/zmi/rename.py:121
-msgid "You must provide an URL for this item!"
-msgstr "Vous devez fournir une URL pour ce contenu !"
-
-#: src/pyams_content/shared/common/zmi/reverse.py:57
-msgid "Reverse links"
-msgstr "Liens amont"
-
-#: src/pyams_content/shared/common/zmi/reverse.py:66
-msgid "Content's internal links"
-msgstr "Autres contenus qui pointent vers ce contenu"
-
-#: src/pyams_content/shared/common/zmi/site.py:38
+"To review and comment this publication, please use the following link: "
+"${target}."
+msgstr "Pour accéder à cette contribution, cliquer ici : ${target}."
+
+#: src/pyams_content/features/review/zmi/templates/review-notification.pt:44
+msgid "After reading this content, please use the « Comments » menu entry."
+msgstr ""
+"Lorsque vous aurez pris connaissance du contenu, cliquez sur « Commentaires "
+"» dans le menu en colonne de gauche."
+
+#: src/pyams_content/features/review/zmi/templates/review-notification.pt:45
+msgid ""
+"If you don't want to reply to this request, please contact ${sender} "
+"directly by replying to this mail."
+msgstr ""
+"Si vous ne souhaitez pas donner suite à cette demande, vous pouvez répondre "
+"directement à ${sender} en lui adressant un message dans ce sens."
+
+#: src/pyams_content/features/review/zmi/templates/review-notification.pt:47
+msgid "Thank you."
+msgstr "Merci."
+
+#: src/pyams_content/features/review/zmi/templates/review-add-comment.pt:22
+msgid "just now"
+msgstr "À l'instant !"
+
+#: src/pyams_content/features/renderer/zmi/__init__.py:71
+#: src/pyams_content/features/renderer/zmi/templates/renderer-input.pt:4
+msgid "Edit renderer properties"
+msgstr "Propriétés de ce mode de rendu"
+
+#: src/pyams_content/features/renderer/skin/__init__.py:65
+msgid "Hidden content"
+msgstr "NON affiché"
+
+#: src/pyams_content/features/preview/zmi/__init__.py:62
+msgid "Content preview"
+msgstr "Aperçu du contenu"
+
+#: src/pyams_content/features/preview/zmi/__init__.py:67
+#, python-format
+msgid "{title} ({preview})"
+msgstr "{title} ({preview})"
+
+#: src/pyams_content/features/preview/zmi/__init__.py:68
+msgid "preview"
+msgstr "aperçu"
+
+#: src/pyams_content/features/footer/interfaces/__init__.py:39
+msgid "Footer template"
+msgstr "Mode de rendu"
+
+#: src/pyams_content/features/footer/interfaces/__init__.py:40
+msgid "Presentation template used for this footer"
+msgstr "Mode de rendu utilisé par ce pied de page"
+
+#: src/pyams_content/features/footer/zmi/__init__.py:60
+msgid "Page footer"
+msgstr "Pied de pages"
+
+#: src/pyams_content/features/footer/zmi/__init__.py:78
+msgid "Edit footer settings"
+msgstr "Paramétrage des pieds de pages"
+
+#: src/pyams_content/features/footer/zmi/__init__.py:152
+msgid ""
+"WARNING: Footer properties are saved automatically when changing inherit "
+"mode!!"
+msgstr ""
+"ATTENTION : les propriétés du pied de page sont enregistrées automatiquement "
+"lorsque vous modifiez le mode d'héritage !!"
+
+#: src/pyams_content/features/footer/zmi/__init__.py:220
+msgid "Footer renderer settings"
+msgstr "Propriétés de ce mode de rendu"
+
+#: src/pyams_content/features/footer/zmi/__init__.py:107
+msgid "Don't inherit parent footer"
+msgstr "Ne pas hériter du pied de pages du parent"
+
+#: src/pyams_content/features/footer/skin/__init__.py:94
+msgid "Hidden footer"
+msgstr "Ne pas afficher de pied de pages"
+
+#: src/pyams_content/features/menu/interfaces/__init__.py:64
+msgid "Menu title"
+msgstr "Libellé"
+
+#: src/pyams_content/features/menu/interfaces/__init__.py:65
+msgid "Displayed menu label"
+msgstr "Libellé du menu"
+
+#: src/pyams_content/features/menu/interfaces/__init__.py:69
+msgid "Direct reference to menu target"
+msgstr ""
+"Lorsque le menu est utilisé dans l'en-tête de page, référence interne vers "
+"la cible du menu (site ou rubrique) permettant de mettre en évidence le menu "
+"actif ; un lien sera également créé vers cette référence si le menu ne "
+"contient aucun lien."
+
+#: src/pyams_content/features/menu/portlet/navigation/simple.py:67
+msgid "Simple navigation"
+msgstr "Navigation à un niveau"
+
+#: src/pyams_content/features/menu/portlet/navigation/double.py:67
+msgid "Double navigation"
+msgstr "Navigation à deux niveaux"
+
+#: src/pyams_content/features/menu/portlet/navigation/interfaces/simple.py:32
+#: src/pyams_content/features/menu/portlet/navigation/interfaces/double.py:32
+msgid "Portlet main title"
+msgstr "Titre du composant"
+
+#: src/pyams_content/features/menu/portlet/navigation/zmi/simple.py:69
+msgid "Navigation links"
+msgstr "Liens de navigation"
+
+#: src/pyams_content/features/menu/portlet/navigation/zmi/double.py:69
+msgid "Navigation menus"
+msgstr "Menus de navigation"
+
+#: src/pyams_content/features/menu/portlet/navigation/zmi/templates/double-preview.pt:14
+#: src/pyams_content/features/menu/portlet/navigation/zmi/templates/simple-preview.pt:11
+msgid "Link has no illustration"
+msgstr "Le lien n'a pas d'illustration"
+
+#: src/pyams_content/features/menu/zmi/__init__.py:81
+msgid "Add menu..."
+msgstr "Ajouter une entrée"
+
+#: src/pyams_content/features/menu/zmi/__init__.py:92
+msgid "Add new menu"
+msgstr "Ajout d'un menu"
+
+#: src/pyams_content/features/menu/zmi/__init__.py:123
+msgid "Edit menu properties"
+msgstr "Propriétés du menu"
+
+#: src/pyams_content/features/menu/zmi/__init__.py:215
+#: src/pyams_content/shared/form/interfaces/__init__.py:60
+#: src/pyams_content/shared/form/zmi/field.py:167
+#: src/pyams_content/shared/common/interfaces/types.py:47
+#: src/pyams_content/shared/common/zmi/templates/preview-input.pt:34
+#: src/pyams_content/shared/common/zmi/templates/check-input.pt:34
+msgid "Label"
+msgstr "Libellé"
+
+#: src/pyams_content/features/menu/zmi/__init__.py:110
+msgid "Menu was correctly added."
+msgstr "Le menu a été ajouté."
+
+#: src/pyams_content/features/menu/zmi/__init__.py:395
+msgid "Link was correctly added."
+msgstr "Le lien a été ajouté."
+
+#: src/pyams_content/features/menu/zmi/templates/menu-name-cell.pt:7
+msgid "Click to see menu items"
+msgstr "Montrer ou cacher les éléments du menu"
+
+#: src/pyams_content/features/checker/interfaces.py:27
#, python-format
-msgid ""
-"SEARCH - Between all contents published into « {site} »"
-msgstr ""
-"RECHERCHE - Tous contenus présents dans « {site} » "
-"confondus"
-
-#: src/pyams_content/shared/common/zmi/portal.py:44
-msgid "Edit default template properties"
-msgstr "Modèle de présentation par défaut"
-
-#: src/pyams_content/shared/common/zmi/portal.py:54
+msgid " - {field}: <span class=\"text-danger\">no value</span>"
+msgstr " - {field} : <span class=\"text-danger\">non renseigné</span>"
+
+#: src/pyams_content/features/checker/interfaces.py:28
+#, python-format
+msgid " - {field} ({lang}): <span class=\"text-danger\">no value</span>"
+msgstr " - {field} ({lang}) : <span class=\"text-danger\">non renseigné</span>"
+
+#: src/pyams_content/features/checker/interfaces.py:29
+#, python-format
+msgid " - {field}: <span class=\"text-danger\">{message}</span>"
+msgstr " - {field} : <span class=\"text-danger\">{message}</span>"
+
+#: src/pyams_content/features/checker/zmi/__init__.py:43
+#: src/pyams_content/shared/common/zmi/templates/check-input.pt:39
+msgid "Audit"
+msgstr "Audit"
+
+#: src/pyams_content/features/checker/zmi/__init__.py:58
+msgid "Content check"
+msgstr "Audit du contenu"
+
+#: src/pyams_content/features/checker/zmi/__init__.py:82
+msgid "No checker available. This content is clean!"
+msgstr "Pas de vérificateur disponible pour ce contenu."
+
+#: src/pyams_content/features/checker/zmi/__init__.py:78
+#, python-format
+msgid "{0}:"
+msgstr "{0} :"
+
+#: src/pyams_content/features/header/zmi/__init__.py:66
+msgid "Page header"
+msgstr "En-tête de pages"
+
+#: src/pyams_content/features/header/zmi/__init__.py:84
+msgid "Edit header settings"
+msgstr "Paramétrage des en-têtes de pages"
+
+#: src/pyams_content/features/header/zmi/__init__.py:161
msgid ""
-"**This form allows you to select shared content default template.**\n"
-"\n"
-"If you choose to use a shared template, you can only adjust settings of each "
-"portlet individually but can't change portlets list or page configuration.\n"
-"\n"
-"If you use a local template, you can define a whole custom configuration but "
-"the template definition can't be reused anywhere..."
-msgstr ""
-"Vous pouvez modifier le modèle de présentation qui sera appliqué **par "
-"défaut** à tous les contenus de ce gabarit.\n"
-"\n"
-"Si vous choisissez d'utiliser un modèle de présentation partagé, vous "
-"pourrez ajuster les paramètres de chaque composant mais ne pourrez pas "
-"modifier la liste des composants ou leur position et la configuration de la "
-"page.\n"
-"\n"
-"Si vous choisissez d'utiliser un modèle de présentation \"local\", vous "
-"pourrez définir l'ensemble de la configuration mais le modèle de "
-"présentation ne pourra pas être réutilisé ailleurs que dans les contenus de "
-"ce gabarit."
-
-#: src/pyams_content/shared/common/zmi/portal.py:70
-msgid "Use tool default template"
-msgstr "Utiliser le modèle de présentation par défaut de ce gabarit"
-
-#: src/pyams_content/shared/common/zmi/dashboard.py:134
-msgid "Unique ID"
+"WARNING: Header properties are saved automatically when changing inherit "
+"mode!!"
+msgstr ""
+"ATTENTION : les propriétés de l'en-tête sont enregistrées automatiquement "
+"lorsque vous modifiez le mode d'héritage !!"
+
+#: src/pyams_content/features/header/zmi/__init__.py:229
+msgid "Header renderer settings"
+msgstr "Propriétés de ce mode de rendu"
+
+#: src/pyams_content/features/header/zmi/__init__.py:113
+msgid "Don't inherit parent header"
+msgstr "Ne pas hériter de l'en-tête de pages du parent"
+
+#: src/pyams_content/features/header/skin/__init__.py:100
+msgid "Hidden header"
+msgstr "Ne pas afficher d'en-tête de pages"
+
+#: src/pyams_content/profile/interfaces/__init__.py:33
+msgid "User favorites"
+msgstr "Favoris de l'utilisateur"
+
+#: src/pyams_content/profile/interfaces/__init__.py:34
+msgid "List of internal numbers of shared contents stored for quick access"
+msgstr "Liste des numéros internes des contenus mémorisés pour un accès rapide"
+
+#: src/pyams_content/profile/interfaces/__init__.py:37
+msgid "Default table length"
+msgstr "Longueur des tableaux"
+
+#: src/pyams_content/profile/interfaces/__init__.py:38
+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/profile/zmi/__init__.py:42
+msgid "Admin. profile"
+msgstr "Profil intervenant"
+
+#: src/pyams_content/skin/zmi/viewlet/toplinks/__init__.py:43
+msgid "Shared sites"
+msgstr "Sites et blogs"
+
+#: src/pyams_content/skin/zmi/viewlet/toplinks/__init__.py:64
+msgid "Shared contents"
+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:110
+msgid "My roles"
+msgstr "Mes rôles"
+
+#: src/pyams_content/skin/zmi/viewlet/toplinks/templates/user-addings.pt:7
+msgid "Create new content"
+msgstr "Créer un nouveau contenu"
+
+#: src/pyams_content/root/__init__.py:63
+msgid "Site root"
+msgstr "Racine du site"
+
+#: src/pyams_content/root/interfaces/__init__.py:33
+msgid "Site managers"
+msgstr "Administrateurs"
+
+#: src/pyams_content/root/interfaces/__init__.py:37
+#: src/pyams_content/shared/common/interfaces/__init__.py:41
+msgid "Webmasters"
+msgstr "Webmestres"
+
+#: src/pyams_content/root/interfaces/__init__.py:41
+msgid "Templates managers"
+msgstr "Designers"
+
+#: src/pyams_content/root/interfaces/__init__.py:45
+msgid "Operators group"
+msgstr "Groupe des opérateurs"
+
+#: src/pyams_content/root/interfaces/__init__.py:46
+msgid "Name of group containing all roles owners"
+msgstr ""
+"Tous les utilisateurs auxquels sera attribué un rôle seront placés dans ce "
+"groupe"
+
+#: src/pyams_content/root/zmi/sites.py:68
+#: src/pyams_content/shared/site/zmi/container.py:176
+#: src/pyams_content/shared/site/zmi/container.py:186
+msgid "Site tree"
+msgstr "Arborescence du site"
+
+#: src/pyams_content/root/zmi/sites.py:78
+msgid "Blogs and shared sites"
+msgstr "Blogs et sites partagés"
+
+#: src/pyams_content/root/zmi/sites.py:108
+msgid "Visible site?"
+msgstr "Site visible ?"
+
+#: src/pyams_content/root/zmi/sites.py:134
+msgid "OID"
msgstr "N° IN"
-#: src/pyams_content/shared/common/zmi/dashboard.py:181
-msgid "Status date"
-msgstr "En date du"
-
-#: src/pyams_content/shared/common/zmi/dashboard.py:213
-msgid "Status principal"
-msgstr "Intervenant"
-
-#: src/pyams_content/shared/common/zmi/dashboard.py:250
-msgid "Last modification"
-msgstr "Dernière modification"
-
-#: src/pyams_content/shared/common/zmi/dashboard.py:273
+#: src/pyams_content/root/zmi/sites.py:152
+msgid "Delete shared site"
+msgstr "Supprimer ce site"
+
+#: src/pyams_content/root/zmi/sites.py:171
+#: src/pyams_content/shared/imagemap/zmi/container.py:175
+msgid "No provided object_name argument!"
+msgstr "Argument 'object_name' non fourni !"
+
+#: src/pyams_content/root/zmi/sites.py:180
+msgid "Given element name doesn't exist!"
+msgstr "Le nom de l'élément indiqué n'existe pas !"
+
+#: src/pyams_content/root/zmi/__init__.py:78
+msgid "Home"
+msgstr "Accueil"
+
#: src/pyams_content/root/zmi/__init__.py:110
+#: src/pyams_content/shared/common/zmi/dashboard.py:267
msgid "Dashboard"
msgstr "Tableau de bord"
-#: src/pyams_content/shared/common/zmi/dashboard.py:283
-msgid "Contents dashboard"
-msgstr "Mon tableau de bord"
-
-#: src/pyams_content/shared/common/zmi/dashboard.py:329
#: src/pyams_content/root/zmi/__init__.py:159
+#: src/pyams_content/shared/common/zmi/dashboard.py:323
#, python-format
msgid "MANAGER - {0} content waiting for your action"
msgstr "RESPONSABLE - {0} contenu en attente de votre intervention"
-#: src/pyams_content/shared/common/zmi/dashboard.py:330
#: src/pyams_content/root/zmi/__init__.py:160
+#: src/pyams_content/shared/common/zmi/dashboard.py:324
#, python-format
msgid "MANAGER - {0} contents waiting for your action"
msgstr "RESPONSABLE - {0} contenus en attente de votre intervention"
-#: src/pyams_content/shared/common/zmi/dashboard.py:371
#: src/pyams_content/root/zmi/__init__.py:204
+#: src/pyams_content/shared/common/zmi/dashboard.py:365
#, python-format
msgid "CONTRIBUTOR - {0} content waiting for action"
msgstr "CONTRIBUTEUR - {0} contenu soumis à un responsable"
-#: src/pyams_content/shared/common/zmi/dashboard.py:372
#: src/pyams_content/root/zmi/__init__.py:205
+#: src/pyams_content/shared/common/zmi/dashboard.py:366
#, python-format
msgid "CONTRIBUTOR - {0} contents waiting for action"
msgstr "CONTRIBUTEUR - {0} contenus soumis à un responsable"
-#: src/pyams_content/shared/common/zmi/dashboard.py:404
#: src/pyams_content/root/zmi/__init__.py:240
+#: src/pyams_content/shared/common/zmi/dashboard.py:398
#, python-format
msgid "CONTRIBUTOR - {0} modified content"
msgstr "CONTRIBUTEUR - {0} contenu modifié"
-#: src/pyams_content/shared/common/zmi/dashboard.py:445
#: src/pyams_content/root/zmi/__init__.py:283
+#: src/pyams_content/shared/common/zmi/dashboard.py:439
msgid "My contents"
msgstr "Mes contenus"
-#: src/pyams_content/shared/common/zmi/dashboard.py:460
-#: src/pyams_content/shared/common/zmi/templates/dashboard.pt:8
#: src/pyams_content/root/zmi/__init__.py:298
#: src/pyams_content/root/zmi/templates/dashboard.pt:8
+#: src/pyams_content/shared/common/zmi/dashboard.py:454
+#: src/pyams_content/shared/common/zmi/templates/dashboard.pt:8
msgid "My favorites"
msgstr "Mes favoris"
-#: src/pyams_content/shared/common/zmi/dashboard.py:469
#: src/pyams_content/root/zmi/__init__.py:307
+#: src/pyams_content/shared/common/zmi/dashboard.py:463
#, python-format
msgid "CONTRIBUTOR - {0} favorite"
msgstr "CONTRIBUTEUR - {0} contenu favori"
-#: src/pyams_content/shared/common/zmi/dashboard.py:470
#: src/pyams_content/root/zmi/__init__.py:308
+#: src/pyams_content/shared/common/zmi/dashboard.py:464
#, python-format
msgid "CONTRIBUTOR - {0} favorites"
msgstr "CONTRIBUTEUR - {0} contenus favoris"
-#: src/pyams_content/shared/common/zmi/dashboard.py:482
-#: src/pyams_content/shared/common/zmi/templates/header.pt:23
-msgid "Add/remove from favorites"
-msgstr "Ajouter/enlever des favoris"
-
-#: src/pyams_content/shared/common/zmi/dashboard.py:545
#: src/pyams_content/root/zmi/__init__.py:346
+#: src/pyams_content/shared/common/zmi/dashboard.py:539
msgid "Your favorite contents"
msgstr "Mes contenus favoris"
-#: src/pyams_content/shared/common/zmi/dashboard.py:558
#: src/pyams_content/root/zmi/__init__.py:359
+#: src/pyams_content/shared/common/zmi/dashboard.py:552
msgid "My preparations"
msgstr "Mes préparations"
-#: src/pyams_content/shared/common/zmi/dashboard.py:567
#: src/pyams_content/root/zmi/__init__.py:368
+#: src/pyams_content/shared/common/zmi/dashboard.py:561
#, python-format
msgid "CONTRIBUTOR - {0} prepared content"
msgstr "CONTRIBUTEUR - {0} contenu en préparation"
-#: src/pyams_content/shared/common/zmi/dashboard.py:568
#: src/pyams_content/root/zmi/__init__.py:369
+#: src/pyams_content/shared/common/zmi/dashboard.py:562
#, python-format
msgid "CONTRIBUTOR - {0} prepared contents"
msgstr "CONTRIBUTEUR - {0} contenus en préparation"
-#: src/pyams_content/shared/common/zmi/dashboard.py:608
#: src/pyams_content/root/zmi/__init__.py:408
+#: src/pyams_content/shared/common/zmi/dashboard.py:603
msgid "Your prepared contents"
msgstr "Mes contenus en préparation"
-#: src/pyams_content/shared/common/zmi/dashboard.py:621
#: src/pyams_content/root/zmi/__init__.py:421
+#: src/pyams_content/shared/common/zmi/dashboard.py:616
msgid "My submissions"
msgstr "Mes demandes"
-#: src/pyams_content/shared/common/zmi/dashboard.py:630
#: src/pyams_content/root/zmi/__init__.py:430
+#: src/pyams_content/shared/common/zmi/dashboard.py:625
#, python-format
msgid "CONTRIBUTOR - {0} submitted content"
msgstr "CONTRIBUTEUR - {0} contenu soumis à un responsable"
-#: src/pyams_content/shared/common/zmi/dashboard.py:631
#: src/pyams_content/root/zmi/__init__.py:431
+#: src/pyams_content/shared/common/zmi/dashboard.py:626
#, python-format
msgid "CONTRIBUTOR - {0} submitted contents"
msgstr "CONTRIBUTEUR - {0} contenus soumis à un responsable"
-#: src/pyams_content/shared/common/zmi/dashboard.py:671
#: src/pyams_content/root/zmi/__init__.py:470
+#: src/pyams_content/shared/common/zmi/dashboard.py:667
msgid "Your submitted contents"
msgstr "Mes contenus soumis à un responsable"
-#: src/pyams_content/shared/common/zmi/dashboard.py:684
#: src/pyams_content/root/zmi/__init__.py:483
+#: src/pyams_content/shared/common/zmi/dashboard.py:680
msgid "My publications"
msgstr "Mes publications"
-#: src/pyams_content/shared/common/zmi/dashboard.py:693
#: src/pyams_content/root/zmi/__init__.py:492
+#: src/pyams_content/shared/common/zmi/dashboard.py:689
#, python-format
msgid "CONTRIBUTOR - {0} published content"
msgstr "CONTRIBUTEUR - {0} contenu publié"
-#: src/pyams_content/shared/common/zmi/dashboard.py:694
#: src/pyams_content/root/zmi/__init__.py:493
+#: src/pyams_content/shared/common/zmi/dashboard.py:690
#, python-format
msgid "CONTRIBUTOR - {0} published contents"
msgstr "CONTRIBUTEUR - {0} contenus publiés"
-#: src/pyams_content/shared/common/zmi/dashboard.py:734
#: src/pyams_content/root/zmi/__init__.py:532
+#: src/pyams_content/shared/common/zmi/dashboard.py:731
msgid "Your published contents"
msgstr "Mes contenus publiés"
-#: src/pyams_content/shared/common/zmi/dashboard.py:747
#: src/pyams_content/root/zmi/__init__.py:545
+#: src/pyams_content/shared/common/zmi/dashboard.py:744
msgid "My retired contents"
msgstr "Mes contenus retirés"
-#: src/pyams_content/shared/common/zmi/dashboard.py:756
#: src/pyams_content/root/zmi/__init__.py:554
+#: src/pyams_content/shared/common/zmi/dashboard.py:753
#, python-format
msgid "CONTRIBUTOR - {0} retired content"
msgstr "CONTRIBUTEUR - {0} contenu retiré"
-#: src/pyams_content/shared/common/zmi/dashboard.py:757
#: src/pyams_content/root/zmi/__init__.py:555
+#: src/pyams_content/shared/common/zmi/dashboard.py:754
#, python-format
msgid "CONTRIBUTOR - {0} retired contents"
msgstr "CONTRIBUTEUR - {0} contenus retirés"
-#: src/pyams_content/shared/common/zmi/dashboard.py:798
#: src/pyams_content/root/zmi/__init__.py:595
+#: src/pyams_content/shared/common/zmi/dashboard.py:795
msgid "Your retired contents"
msgstr "Mes contenus retirés"
-#: src/pyams_content/shared/common/zmi/dashboard.py:811
#: src/pyams_content/root/zmi/__init__.py:608
+#: src/pyams_content/shared/common/zmi/dashboard.py:808
msgid "My archived contents"
msgstr "Mes contenus archivés"
-#: src/pyams_content/shared/common/zmi/dashboard.py:820
#: src/pyams_content/root/zmi/__init__.py:617
+#: src/pyams_content/shared/common/zmi/dashboard.py:817
#, python-format
msgid "CONTRIBUTOR - {0} archived content"
msgstr "CONTRIBUTEUR - {0} contenu archivé"
-#: src/pyams_content/shared/common/zmi/dashboard.py:821
#: src/pyams_content/root/zmi/__init__.py:618
+#: src/pyams_content/shared/common/zmi/dashboard.py:818
#, python-format
msgid "CONTRIBUTOR - {0} archived contents"
msgstr "CONTRIBUTEUR - {0} contenus archivés"
-#: src/pyams_content/shared/common/zmi/dashboard.py:868
#: src/pyams_content/root/zmi/__init__.py:664
+#: src/pyams_content/shared/common/zmi/dashboard.py:865
msgid "Your archived contents"
msgstr "Mes contenus archivés"
-#: src/pyams_content/shared/common/zmi/dashboard.py:882
#: src/pyams_content/root/zmi/__init__.py:678
+#: src/pyams_content/shared/common/zmi/dashboard.py:879
msgid "Other interventions"
msgstr "Toutes les interventions"
-#: src/pyams_content/shared/common/zmi/dashboard.py:897
#: src/pyams_content/root/zmi/__init__.py:693
+#: src/pyams_content/shared/common/zmi/dashboard.py:894
msgid "Last publications"
msgstr "Dernières publications"
-#: src/pyams_content/shared/common/zmi/dashboard.py:906
#: src/pyams_content/root/zmi/__init__.py:702
+#: src/pyams_content/shared/common/zmi/dashboard.py:903
#, python-format
msgid "CONTRIBUTORS - {0} published content"
msgstr "TOUS CONTRIBUTEURS - {0} contenu publié"
-#: src/pyams_content/shared/common/zmi/dashboard.py:953
#: src/pyams_content/root/zmi/__init__.py:748
+#: src/pyams_content/shared/common/zmi/dashboard.py:950
msgid "Last published contents"
msgstr "Derniers contenus publiés"
-#: src/pyams_content/shared/common/zmi/dashboard.py:966
#: src/pyams_content/root/zmi/__init__.py:761
+#: src/pyams_content/shared/common/zmi/dashboard.py:963
msgid "Last updates"
msgstr "Dernières modifications"
-#: src/pyams_content/shared/common/zmi/dashboard.py:975
#: src/pyams_content/root/zmi/__init__.py:770
+#: src/pyams_content/shared/common/zmi/dashboard.py:972
#, python-format
msgid "CONTRIBUTORS - {0} updated content"
msgstr "TOUS CONTRIBUTEURS - {0} contenu modifié"
-#: src/pyams_content/shared/common/zmi/dashboard.py:1020
#: src/pyams_content/root/zmi/__init__.py:814
+#: src/pyams_content/shared/common/zmi/dashboard.py:1017
msgid "Last updated contents"
msgstr "Derniers contenus modifiés"
-#: src/pyams_content/shared/common/zmi/dashboard.py:409
+#: src/pyams_content/root/zmi/__init__.py:825
+#: src/pyams_content/shared/site/zmi/container.py:407
+msgid "Content"
+msgstr "Contenu"
+
#: src/pyams_content/root/zmi/__init__.py:245
+#: src/pyams_content/shared/common/zmi/dashboard.py:403
#, python-format
msgid "CONTRIBUTOR - {0} modified contents"
msgstr "CONTRIBUTEUR - {0} contenus modifiés"
-#: src/pyams_content/shared/common/zmi/dashboard.py:411
#: src/pyams_content/root/zmi/__init__.py:247
+#: src/pyams_content/shared/common/zmi/dashboard.py:405
#, python-format
msgid "CONTRIBUTOR - Last {0} modified contents"
msgstr "CONTRIBUTEUR - Les {0} dernières modifications"
-#: src/pyams_content/shared/common/zmi/dashboard.py:911
#: src/pyams_content/root/zmi/__init__.py:707
+#: src/pyams_content/shared/common/zmi/dashboard.py:908
#, python-format
msgid "CONTRIBUTORS - Last {0} published contents"
msgstr "TOUS CONTRIBUTEURS - Les {0} dernières publications"
-#: src/pyams_content/shared/common/zmi/dashboard.py:913
#: src/pyams_content/root/zmi/__init__.py:709
+#: src/pyams_content/shared/common/zmi/dashboard.py:910
msgid "CONTRIBUTORS - Last published contents (in the limit of 50)"
msgstr "TOUS CONTRIBUTEURS - Les {0} dernières publications"
-#: src/pyams_content/shared/common/zmi/dashboard.py:980
#: src/pyams_content/root/zmi/__init__.py:775
+#: src/pyams_content/shared/common/zmi/dashboard.py:977
#, python-format
msgid "CONTRIBUTORS - Last {0} updated contents"
msgstr "TOUS CONTRIBUTEURS - Les {0} dernières modifications"
-#: src/pyams_content/shared/common/zmi/dashboard.py:982
#: src/pyams_content/root/zmi/__init__.py:777
+#: src/pyams_content/shared/common/zmi/dashboard.py:979
msgid "CONTRIBUTORS - Last updated contents (in the limit of 50)"
msgstr "TOUS CONTRIBUTEURS - Les {0} dernières modifications"
-#: src/pyams_content/shared/common/zmi/dashboard.py:306
-#, python-format
-msgid "SEARCH - Between all contents of type « {type} »"
-msgstr "RECHERCHE - Tous contenus « {type} » confondus"
-
-#: src/pyams_content/shared/common/zmi/dashboard.py:171
-#: src/pyams_content/shared/common/zmi/header.py:96
-msgid "Content publication start date is not passed yet"
-msgstr "La date de début de publication n'est pas encore atteinte"
-
-#: src/pyams_content/shared/common/zmi/security.py:64
-msgid "Contributors restrictions"
-msgstr "Paramètres des contributeurs"
-
-#: src/pyams_content/shared/common/zmi/security.py:73
-msgid "Content contributors restrictions"
-msgstr "Liste des contributeurs"
-
-#: src/pyams_content/shared/common/zmi/security.py:107
-msgid "Contributor name"
-msgstr "Nom du contributeur"
-
-#: src/pyams_content/shared/common/zmi/security.py:118
-#: src/pyams_content/shared/common/zmi/security.py:270
-msgid "Activated publication checks?"
-msgstr "Tunnel de publication activé"
-
-#: src/pyams_content/shared/common/zmi/security.py:218
-msgid "Managers restrictions"
-msgstr "Paramètres des responsables"
-
-#: src/pyams_content/shared/common/zmi/security.py:227
-msgid "Content managers restrictions"
-msgstr "Liste des responsables"
-
-#: src/pyams_content/shared/common/zmi/security.py:259
-msgid "Manager name"
-msgstr "Nom du responsable"
-
-#: src/pyams_content/shared/common/zmi/security.py:287
-msgid "Restricted"
-msgstr "Restrictions"
-
-#: src/pyams_content/shared/common/zmi/security.py:304
-msgid "Owners"
-msgstr "Propriétaires"
-
-#: src/pyams_content/shared/common/zmi/security.py:394
-msgid "Publication workflow"
-msgstr "Workflow de publication"
-
-#: src/pyams_content/shared/common/zmi/security.py:167
-#, python-format
-msgid "Edit contributor restrictions for « {0} »"
-msgstr "Gérer les paramètres d'intervention de « {0} »"
-
-#: src/pyams_content/shared/common/zmi/security.py:353
-#, python-format
-msgid "Edit manager restrictions for « {0} »"
-msgstr "Gérer les paramètres d'intervention de « {0} »"
-
-#: src/pyams_content/shared/common/zmi/security.py:400
-msgid "Apply contents restrictions"
-msgstr "Appliquer des restrictions d'accès"
-
-#: src/pyams_content/shared/common/zmi/security.py:402
-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 "
-"which at least one criteria is matching."
-msgstr ""
-"Vous pouvez indiquer les propriétés des contenus que ce responsable sera "
-"autorisé à gérer. Si vous indiquez plusieurs critères, il pourra gérer les "
-"contenus pour lesquels au moins l'un des critères correspond."
-
-#: src/pyams_content/shared/common/zmi/header.py:85
-#, python-format
-msgid "{state} by {principal}"
-msgstr "{state} par {principal}"
-
-#: src/pyams_content/shared/common/zmi/header.py:116
-#, python-format
-msgid "since {date}"
-msgstr "depuis {date}"
-
-#: src/pyams_content/shared/common/zmi/header.py:128
-msgid "access published version"
-msgstr "accéder à la version en ligne"
-
-#: src/pyams_content/shared/common/zmi/header.py:135
-msgid "access new version"
-msgstr "accéder à la version en préparation"
-
-#: src/pyams_content/shared/common/zmi/header.py:145
-msgid "access waiting version"
-msgstr "accéder à la version en attente"
-
-#: src/pyams_content/shared/common/zmi/header.py:156
-msgid "access retired version"
-msgstr "accéder à la version retirée"
-
-#: src/pyams_content/shared/common/zmi/header.py:166
-msgid "access archived version"
-msgstr "accéder à la version archivée"
-
-#: src/pyams_content/shared/common/zmi/templates/wf-retiring-message.pt:2
-msgid ""
-"You considerate that the currently published version should no more be "
-"publicly visible."
-msgstr ""
-"Vous considérez que la version actuellement en ligne ne doit plus être "
-"consultable."
-
-#: src/pyams_content/shared/common/zmi/templates/wf-retiring-message.pt:3
-msgid ""
-"WARNING: the content will remain visible until a manager validate the "
-"request."
-msgstr ""
-"ATTENTION : ce contenu restera visible jusqu'à ce qu'un responsable prenne "
-"en charge votre demande."
-
-#: src/pyams_content/shared/common/zmi/templates/header.pt:6
-msgid "Back to previous page"
-msgstr "Revenir à la page précédente"
-
-#: src/pyams_content/shared/common/zmi/templates/header.pt:20
-msgid "by ${owner}"
-msgstr "de ${owner}"
-
-#: src/pyams_content/shared/common/zmi/templates/wf-archive-message.pt:2
-msgid "As a manager, you considerate that this content must be archived."
-msgstr ""
-"En tant que responsable, vous considérez que ce contenu doit être archivé."
-
-#: src/pyams_content/shared/common/zmi/templates/wf-archive-message.pt:3
-#: src/pyams_content/shared/common/zmi/templates/wf-archiving-message.pt:3
-msgid ""
-"After archiving, it will be backed up but you will not be able to publish it "
-"again except by creating a new version."
-msgstr ""
-"L'archivage permet de conserver une version d'un contenu dans son état "
-"actuel ; il pourra ensuite à nouveau être publié, en créant une nouvelle "
-"version."
-
-#: src/pyams_content/shared/common/zmi/templates/check-input.pt:34
-#: src/pyams_content/shared/common/zmi/templates/preview-input.pt:34
-#: src/pyams_content/shared/common/interfaces/types.py:47
-#: src/pyams_content/shared/form/zmi/field.py:167
-#: src/pyams_content/shared/form/interfaces/__init__.py:60
-#: src/pyams_content/features/menu/zmi/__init__.py:215
-msgid "Label"
-msgstr "Libellé"
-
-#: src/pyams_content/shared/common/zmi/templates/check-input.pt:39
-#: src/pyams_content/features/checker/zmi/__init__.py:43
-msgid "Audit"
-msgstr "Audit"
-
+#: src/pyams_content/root/zmi/search.py:95
+#: src/pyams_content/shared/common/zmi/search.py:96
+msgid "Quick search results"
+msgstr "Résultats de la recherche rapide"
+
+#: src/pyams_content/root/zmi/search.py:152
+#: src/pyams_content/root/zmi/search.py:188
+#: src/pyams_content/shared/common/zmi/search.py:162
+#: src/pyams_content/shared/common/zmi/search.py:204
+msgid "Advanced search"
+msgstr "Recherche avancée"
+
+#: src/pyams_content/root/zmi/search.py:280
+#: src/pyams_content/shared/common/zmi/search.py:332
+msgid "Advanced search results"
+msgstr "Résultats de la recherche avancée"
+
+#: src/pyams_content/root/zmi/search.py:160
+msgid "Content types"
+msgstr "Types de contenus"
+
+#: src/pyams_content/root/zmi/search.py:164
+#: src/pyams_content/shared/common/zmi/dashboard.py:225
+#: src/pyams_content/shared/common/zmi/search.py:170
+msgid "Owner"
+msgstr "Propriétaire"
+
+#: src/pyams_content/root/zmi/search.py:167
+#: src/pyams_content/shared/common/zmi/search.py:177
+msgid "Created after..."
+msgstr "Créé entre le"
+
+#: src/pyams_content/root/zmi/search.py:170
+#: src/pyams_content/shared/common/zmi/search.py:180
+msgid "Created before..."
+msgstr "et le"
+
+#: src/pyams_content/root/zmi/search.py:173
+#: src/pyams_content/shared/common/zmi/search.py:183
+msgid "Modified after..."
+msgstr "Modifié entre le"
+
+#: src/pyams_content/root/zmi/search.py:176
+#: src/pyams_content/shared/common/zmi/search.py:186
+msgid "Modified before..."
+msgstr "et le"
+
+#: src/pyams_content/root/zmi/templates/dashboard.pt:7
+msgid "Your contents dashboard"
+msgstr "Les contenus qui me concernent"
+
+#: src/pyams_content/root/zmi/templates/dashboard.pt:18
+msgid "SEARCH - Between all contents"
+msgstr "RECHERCHE - Tous contenus confondus"
+
+#: src/pyams_content/root/zmi/templates/dashboard.pt:29
#: src/pyams_content/shared/common/zmi/templates/dashboard.pt:29
-#: src/pyams_content/root/zmi/templates/dashboard.pt:29
msgid "Quick search..."
msgstr "Recherche rapide..."
+#: src/pyams_content/root/zmi/templates/dashboard.pt:35
#: src/pyams_content/shared/common/zmi/templates/dashboard.pt:35
-#: src/pyams_content/root/zmi/templates/dashboard.pt:35
msgid "Advanced search..."
msgstr "Recherche avancée..."
+#: src/pyams_content/root/zmi/templates/dashboard.pt:49
#: src/pyams_content/shared/common/zmi/templates/dashboard.pt:49
-#: src/pyams_content/root/zmi/templates/dashboard.pt:49
msgid "You are not actually concerned by any content."
msgstr "Vous n'êtes actuellement concerné par aucun contenu."
-#: src/pyams_content/shared/common/zmi/templates/wf-publish-message.pt:2
-msgid ""
-"As a manager, you considerate that this content is complete and can be "
-"published 'as is'."
-msgstr ""
-"En tant que responsable, vous considérez que ce contenu peut être publié en "
-"l'état."
-
-#: src/pyams_content/shared/common/zmi/templates/wf-publish-message.pt:4
-msgid ""
-"This operation will make the content publicly available (except if "
-"restricted access has been set)."
-msgstr ""
-"Cette opération va rendre le contenu visible de tous, sauf si des "
-"restrictions d'accès lui ont été appliquées."
-
-#: src/pyams_content/shared/common/zmi/templates/wf-create-message.pt:2
-msgid ""
-"This new content is going to be created in 'draft' mode, so that you can "
-"complete it before publication."
-msgstr ""
-"Ce nouveau contenu va être créé en statut 'Brouillon' pour vous permettre de "
-"le préparer."
-
-#: src/pyams_content/shared/common/zmi/templates/wf-create-message.pt:4
-msgid ""
-"A unique number is also going to be assigned to it. This number will be "
-"shared by all content's versions."
-msgstr ""
-"Un numéro unique va lui être attribué ; il sera permanent, quelle que soit "
-"la version."
-
-#: src/pyams_content/shared/common/zmi/templates/wf-operator-warning.pt:1
-msgid ""
-"WARNING: this request was made by a contributor which is not the owner of "
-"this content."
-msgstr ""
-"ATTENTION : cette demande est formulée par un contributeur habilité qui "
-"n'est pas le propriétaire."
-
-#: src/pyams_content/shared/common/zmi/templates/wf-clone-message.pt:2
-msgid "You considerate that the currently published must evolve."
-msgstr "Vous considérez que la version actuelle de ce contenu doit évoluer."
-
-#: src/pyams_content/shared/common/zmi/templates/wf-clone-message.pt:3
-msgid ""
-"By creating a new version, you can update it's content without impacting the "
-"currently published one."
-msgstr ""
-"En créant une nouvelle version, vous pourrez apporter des modifications sans "
-"impacter la version actuelle."
-
-#: src/pyams_content/shared/common/zmi/templates/wf-clone-message.pt:5
-msgid ""
-"When the new version will be complete, you will be able to make a new "
-"publication request to replace the currently published version (which will "
-"be archived automatically)."
-msgstr ""
-"Lorsque la nouvelle version sera prête, vous demanderez sa publication (et "
-"la version actuelle sera automatiquement archivée)."
-
-#: src/pyams_content/shared/common/zmi/templates/wf-propose-message.pt:1
-msgid ""
-"This publication request is going to be transmitted to a content manager."
-msgstr "Cette demande de publication va être soumise à un responsable."
-
-#: src/pyams_content/shared/common/zmi/templates/wf-duplicate-message.pt:2
-msgid "You are going to duplicate a whole content."
-msgstr ""
-"Vous vous apprêtez à dupliquer une version de ce contenu pour en créer un "
-"nouveau."
-
-#: src/pyams_content/shared/common/zmi/templates/wf-duplicate-message.pt:3
-msgid ""
-"The new copy is going to be created in 'draft' mode, so that you can modify "
-"it before publication."
-msgstr ""
-"Cette copie va être créée en statut 'Brouillon' pour vous permettre de la "
-"préparer."
-
-#: src/pyams_content/shared/common/zmi/templates/wf-duplicate-message.pt:5
-msgid ""
-"A new unique number is also going to be assigned to it. This number will be "
-"shared by all content's versions."
-msgstr ""
-"Un numéro unique lui sera également attribué ; ce numéro sera conservé "
-"pendant toute la vie du contenu, quelle que soit la version."
-
+#: src/pyams_content/root/zmi/templates/advanced-search.pt:130
#: src/pyams_content/shared/common/zmi/templates/advanced-search.pt:130
-#: src/pyams_content/root/zmi/templates/advanced-search.pt:130
msgid "Created between"
msgstr "Créé entre le"
+#: src/pyams_content/root/zmi/templates/advanced-search.pt:142
+#: src/pyams_content/root/zmi/templates/advanced-search.pt:168
#: src/pyams_content/shared/common/zmi/templates/advanced-search.pt:142
#: src/pyams_content/shared/common/zmi/templates/advanced-search.pt:168
-#: src/pyams_content/root/zmi/templates/advanced-search.pt:142
-#: src/pyams_content/root/zmi/templates/advanced-search.pt:168
msgid "and"
msgstr "et le"
+#: src/pyams_content/root/zmi/templates/advanced-search.pt:156
#: src/pyams_content/shared/common/zmi/templates/advanced-search.pt:156
-#: src/pyams_content/root/zmi/templates/advanced-search.pt:156
msgid "Modified between"
msgstr "Modifié entre le"
+#: src/pyams_content/root/zmi/templates/advanced-search.pt:211
#: src/pyams_content/shared/common/zmi/templates/advanced-search.pt:214
-#: src/pyams_content/root/zmi/templates/advanced-search.pt:211
msgid "Tab label"
msgstr "Libellé de l'onglet"
-#: src/pyams_content/shared/common/zmi/templates/wf-refuse-propose-message.pt:2
-msgid ""
-"As a content manager, you considerate that this content can't be published "
-"'as is'."
-msgstr ""
-"En tant que responsable, vous considérez que ce contenu ne peut pas être "
-"publié en l'état."
-
-#: src/pyams_content/shared/common/zmi/templates/wf-refuse-propose-message.pt:4
-msgid ""
-"The contributor will be notified of this and will be able to update the "
-"content before doing a new publication request."
-msgstr ""
-"Le contributeur qui vous a sollicité va être notifié de votre refus ; il "
-"pourra modifier ce contenu et effectuer une nouvelle demande de publication."
-
-#: src/pyams_content/shared/common/zmi/templates/wf-cancel-archiving-message.pt:1
-msgid ""
-"After cancelling this request, the content will return to it's previous "
-"retired state."
-msgstr "En annulant cette demande, ce contenu va retourner en statut 'Retiré'."
-
-#: src/pyams_content/shared/common/zmi/templates/wf-cancel-retiring-message.pt:1
-msgid ""
-"After cancelling this request, the content will return to it's normal "
-"published state."
-msgstr "En annulant cette demande, ce contenu va retourner en statut 'Publié'."
-
-#: src/pyams_content/shared/common/zmi/templates/wf-retire-message.pt:2
-msgid ""
-"As a content manager, you considerate that this content should no longer be "
-"published."
-msgstr ""
-"En tant que responsable, vous considérez que ce contenu ne doit plus être "
-"publié."
-
-#: src/pyams_content/shared/common/zmi/templates/wf-retire-message.pt:4
-msgid ""
-"Retired content won't be visible anymore, but it can be updated and "
-"published again, or archived."
-msgstr ""
-"Après ce retrait, il ne sera plus visible des internautes. Il pourra par "
-"contre être publié à nouveau, archivé, ou modifié en créant une nouvelle "
-"version."
-
-#: src/pyams_content/shared/common/zmi/templates/wf-cancel-propose-message.pt:1
-msgid ""
-"After canceling the request, you will be able to update the content again."
-msgstr "En annulant cette demande, ce contenu pourra à nouveau être modifié."
-
-#: src/pyams_content/shared/common/zmi/templates/wf-delete-message.pt:2
-msgid ""
-"This content was never published. If you confirm deletion, it won't be "
-"possible to restore it."
-msgstr ""
-"Ce contenu n'a jamais été publié. Une fois supprimé, il ne pourra pas être "
-"récupéré."
-
-#: src/pyams_content/shared/common/zmi/templates/wf-delete-message.pt:6
-msgid ""
-"The content version is going to be definitely deleted. Will only remain the "
-"currently published version."
-msgstr ""
-"Cette version va être définitivement supprimée, pour revenir à la version "
-"précédente."
-
-#: src/pyams_content/shared/common/zmi/templates/wf-owner-warning.pt:1
-msgid ""
-"RECALL: you are not the owner of the content on which you are intervening."
-msgstr ""
-"ATTENTION : vous intervenez sur un contenu dont vous n'êtes pas le "
-"propriétaire."
-
-#: src/pyams_content/shared/common/zmi/templates/wf-transition-info.pt:2
-msgid "FOR YOUR INFORMATION"
-msgstr "POUR VOTRE INFORMATION"
-
-#: src/pyams_content/shared/common/zmi/templates/wf-transition-info.pt:5
-msgid "Next step"
-msgstr "Étape suivante"
-
-#: src/pyams_content/shared/common/zmi/templates/wf-transition-info.pt:7
-msgid "Previous step"
-msgstr "Étape précédente"
-
-#: src/pyams_content/shared/common/zmi/templates/wf-transition-info.pt:10
-msgid "With this comment:"
-msgstr "Avec ce commentaire :"
-
-#: src/pyams_content/shared/common/zmi/templates/wf-archiving-message.pt:2
-msgid "This content is already retired and not visible."
-msgstr "Ce contenu est déjà retiré et n'est plus visible des internautes."
-
-#: src/pyams_content/shared/common/interfaces/types.py:43
-#: src/pyams_content/shared/form/zmi/field.py:156
-msgid "Name"
-msgstr "Nom"
-
-#: src/pyams_content/shared/common/interfaces/types.py:44
-msgid "Name of this data type; must be unique between all data types"
-msgstr "Nom de ce type de donnée ; doit être unique entre tous les types"
-
-#: src/pyams_content/shared/common/interfaces/types.py:50
-msgid "Navigation label"
-msgstr "Libellé de navigation"
-
-#: src/pyams_content/shared/common/interfaces/types.py:51
-msgid "Label used for navigation entries"
-msgstr "Libellé utilisé pour les entrées de navigation"
-
-#: src/pyams_content/shared/common/interfaces/types.py:54
-msgid "Tab-folder label"
-msgstr "Libellé d'un l'onglet"
-
-#: src/pyams_content/shared/common/interfaces/types.py:55
-msgid "Label used to include into tab folder"
-msgstr "Libellé utilisé pour l'affichage du type sous la forme d'un onglet"
-
-#: src/pyams_content/shared/common/interfaces/types.py:58
-msgid "'See also' label"
-msgstr "Libellé 'À voir aussi'"
-
-#: src/pyams_content/shared/common/interfaces/types.py:59
-msgid ""
-"This label can be used when contents of this type will be displayed in a "
-"'See also' entries block"
-msgstr ""
-"Ce libellé peut être utilisé lorsque des contenus de ce type sont affichés "
-"sous la forme d'un bloc 'À voir aussi'"
-
-#: src/pyams_content/shared/common/interfaces/types.py:63
-msgid "'Single value' label"
-msgstr "Libellé 'Valeur unique'"
-
-#: src/pyams_content/shared/common/interfaces/types.py:64
-msgid "Label given to this type when a single value is displayed"
-msgstr "Libellé utilisé pour ce type lorsqu'une seule valeur est affichée"
-
-#: src/pyams_content/shared/common/interfaces/types.py:67
-msgid "'Link to list' label"
-msgstr "Libellé 'Lien vers une liste'"
-
-#: src/pyams_content/shared/common/interfaces/types.py:68
-msgid "Label used to display a link to a list of items of this type"
-msgstr ""
-"Libellé utilisé lorsque l'on crée un lien vers uns liste de contenus de ce "
-"type"
-
-#: src/pyams_content/shared/common/interfaces/types.py:71
-msgid "Next content label"
-msgstr "Libellé du contenu suivant"
-
-#: src/pyams_content/shared/common/interfaces/types.py:72
-msgid "Label used to announce next date for this type"
-msgstr ""
-"Libellé utilisé pour afficher la prochaine date d'un événement pour ce type"
-
-#: src/pyams_content/shared/common/interfaces/types.py:76
-msgid "Pictogram associated with this data type"
-msgstr "Pictogramme associé à ce type"
-
-#: src/pyams_content/shared/common/interfaces/types.py:90
-msgid "Field names"
-msgstr "Champs associés"
-
-#: src/pyams_content/shared/common/interfaces/types.py:91
-msgid "List of fields associated with this data type"
-msgstr "Liste des champs de saisie associés à ce type"
-
-#: src/pyams_content/shared/common/interfaces/types.py:125
-msgid "Data type"
-msgstr "Type du contenu"
-
-#: src/pyams_content/shared/common/interfaces/types.py:126
-msgid "Type of content data"
-msgstr "Type du contenu associé à ce gabarit"
-
-#: src/pyams_content/shared/common/interfaces/__init__.py:45
-#: src/pyams_content/root/interfaces/__init__.py:43
-msgid "Webmasters"
-msgstr "Webmestres"
-
-#: src/pyams_content/shared/common/interfaces/__init__.py:46
-msgid "Webmasters can handle all contents, including published ones"
-msgstr ""
-"Les webmestres peuvent modifier et gérer tous les contenus, y compris ceux "
-"qui sont publiés et hormis ceux qui sont archivés"
-
-#: src/pyams_content/shared/common/interfaces/__init__.py:50
-msgid "Pilots"
-msgstr "Pilotes"
-
-#: src/pyams_content/shared/common/interfaces/__init__.py:51
-msgid ""
-"Pilots can handle tool configuration, manage access rules, grant users roles "
-"and manage managers restrictions"
-msgstr ""
-"Les pilotes gèrent la configuration des outils, désignent les responsables "
-"et les contributeurs, et limitent si nécessaire l'intervention des "
-"responsables à certains contenus"
-
-#: src/pyams_content/shared/common/interfaces/__init__.py:56
-#: src/pyams_content/shared/common/interfaces/__init__.py:196
-msgid "Managers"
-msgstr "Responsables"
-
-#: src/pyams_content/shared/common/interfaces/__init__.py:57
-#: src/pyams_content/shared/common/interfaces/__init__.py:197
-msgid ""
-"Managers can handle main operations in tool's workflow, like publish or "
-"retire contents"
-msgstr ""
-"Les responsables peuvent intervenir sur les étapes importantes du workflow "
-"(comme la publication ou le retrait des contenus), dans la limite des "
-"restrictions qui leur sont imposées"
-
-#: src/pyams_content/shared/common/interfaces/__init__.py:62
-#: src/pyams_content/shared/common/interfaces/__init__.py:202
-msgid "Contributors"
-msgstr "Contributeurs"
-
-#: src/pyams_content/shared/common/interfaces/__init__.py:63
-msgid "Contributors are users which are allowed to create new contents"
-msgstr "Les contributeurs sont autorisés à créer de nouveaux contenus"
-
-#: src/pyams_content/shared/common/interfaces/__init__.py:67
-#: src/pyams_content/shared/common/interfaces/__init__.py:208
-msgid "Designers"
-msgstr "Designers"
-
-#: src/pyams_content/shared/common/interfaces/__init__.py:68
-#: src/pyams_content/shared/common/interfaces/__init__.py:209
-msgid "Designers are users which are allowed to manage presentation templates"
-msgstr "Les designers sont autorisés à configurer les modèles de présentation"
-
-#: src/pyams_content/shared/common/interfaces/__init__.py:94
-msgid "Workflow name"
-msgstr "Nom du workflow"
-
-#: src/pyams_content/shared/common/interfaces/__init__.py:95
-msgid "Name of workflow utility used to manage tool contents"
-msgstr "Nom du workflow qui gère le cycle de vie des contenus de cet outil"
-
-#: src/pyams_content/shared/common/interfaces/__init__.py:123
-msgid "Content URL"
-msgstr "URL du contenu"
-
-#: src/pyams_content/shared/common/interfaces/__init__.py:124
-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 ""
-"<span>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.</span><br /><strong>Remarque :</strong> 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:129
-msgid "Version creator"
-msgstr "À l'origine de cette version"
-
-#: src/pyams_content/shared/common/interfaces/__init__.py:130
-msgid ""
-"Name of content's version creator. The creator of the first version is also "
-"it's owner."
-msgstr ""
-"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:134
-msgid "First owner"
-msgstr "Premier propriétaire"
-
-#: src/pyams_content/shared/common/interfaces/__init__.py:135
-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:139
-msgid "Version creation"
-msgstr "Date de création"
-
-#: src/pyams_content/shared/common/interfaces/__init__.py:142
-msgid "Version modifiers"
-msgstr "Intervenants"
-
-#: src/pyams_content/shared/common/interfaces/__init__.py:143
-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:146
-msgid "Last modifier"
-msgstr "Dernier intervenant"
-
-#: src/pyams_content/shared/common/interfaces/__init__.py:147
-msgid "Last principal who modified this content"
-msgstr "Dernier utilisateur étant intervenu sur ce contenu"
-
-#: src/pyams_content/shared/common/interfaces/__init__.py:150
-msgid "Last update"
-msgstr "Dernière modification"
-
-#: src/pyams_content/shared/common/interfaces/__init__.py:154
-msgid "Content's header is generally displayed in page header"
-msgstr "Le chapô du contenu est généralement affiché en tête de page"
-
-#: src/pyams_content/shared/common/interfaces/__init__.py:159
-msgid "Meta-description"
-msgstr "Méta-description"
-
-#: src/pyams_content/shared/common/interfaces/__init__.py:160
-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; if description is empty, content's header will be used."
-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 ; si la description n'est pas renseignée, le chapô "
-"(s'il existe pour ce contenu) sera utilisé."
-
-#: src/pyams_content/shared/common/interfaces/__init__.py:165
-msgid "Keywords"
-msgstr "Mots-clés"
-
-#: src/pyams_content/shared/common/interfaces/__init__.py:166
-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:169
-#: src/pyams_content/shared/site/zmi/folder.py:79
-#: src/pyams_content/shared/site/interfaces/__init__.py:76
-msgid "Notepad"
-msgstr "Bloc-notes"
-
-#: src/pyams_content/shared/common/interfaces/__init__.py:170
-#: src/pyams_content/shared/site/zmi/folder.py:80
-#: src/pyams_content/shared/site/interfaces/__init__.py:77
-msgid "Internal information to be known about this content"
-msgstr ""
-"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:189
-msgid "Content owner"
-msgstr "Propriétaire"
-
-#: src/pyams_content/shared/common/interfaces/__init__.py:190
-msgid ""
-"The owner is the creator of content's first version, except if it was "
-"transferred afterwards to another owner"
-msgstr ""
-"Le propriétaire est le créateur de la première version d'un contenu, sauf "
-"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:203
-msgid ""
-"Contributors are users which are allowed to update this content in addition "
-"to it's owner"
-msgstr ""
-"Les contributeurs sont autorisés, en plus du propriétaire, à modifier ce "
-"contenu"
-
-#: src/pyams_content/shared/common/interfaces/__init__.py:213
-msgid "Readers"
-msgstr "Relecteurs"
-
-#: src/pyams_content/shared/common/interfaces/__init__.py:214
-msgid ""
-"Readers are users which are asked to verify and comment contents before they "
-"are published"
-msgstr ""
-"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:219
-msgid "Guests"
-msgstr "Invités"
-
-#: src/pyams_content/shared/common/interfaces/__init__.py:220
-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:243
-msgid "Principal ID"
-msgstr "ID utilisateur"
-
-#: src/pyams_content/shared/common/interfaces/__init__.py:282
-#: src/pyams_content/shared/common/interfaces/__init__.py:307
-msgid "Publication checks"
-msgstr "Activer le tunnel de publication"
-
-#: src/pyams_content/shared/common/interfaces/__init__.py:283
-msgid ""
-"If 'yes', this contributor will have to confirm that contents have been "
-"previewed and checked before asking for publication"
-msgstr ""
-"Si 'oui', ce contributeur devra confirmer qu'il a bien prévisualisé et "
-"audité chaque contenu avant de pouvoir effectuer une demande de publication"
-
-#: src/pyams_content/shared/common/interfaces/__init__.py:308
-msgid ""
-"If 'yes', this manager will have to confirm that contents have been "
-"previewed and checked before publishing a content"
-msgstr ""
-"Si 'oui', ce responsable devra confirmer qu'il a bien prévisualisé et audité "
-"chaque contenu avant de pouvoir effectuer une publication"
-
-#: src/pyams_content/shared/common/interfaces/__init__.py:313
-msgid "Restricted contents"
-msgstr "Accès restreints"
-
-#: src/pyams_content/shared/common/interfaces/__init__.py:314
-msgid ""
-"If 'yes', this manager will get restricted access to manage contents based "
-"on selected settings"
-msgstr ""
-"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:319
-msgid "Selected owners"
-msgstr "Propriétaires"
-
-#: src/pyams_content/shared/common/interfaces/__init__.py:320
-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 "
-"propriétaires"
-
-#: src/pyams_content/shared/form/__init__.py:97
-msgid "Form fields"
-msgstr "Champs de saisie"
-
-#: src/pyams_content/shared/form/__init__.py:98
-msgid "no field defined"
-msgstr "aucun champ défini"
-
-#: src/pyams_content/shared/form/handler.py:80
-msgid "Mailto form handler"
-msgstr "Envoi des données par mail"
-
-#: src/pyams_content/shared/form/handler.py:44
-msgid "No selected handler..."
-msgstr "Aucun gestionnaire sélectionné"
-
#: src/pyams_content/shared/form/field.py:146
msgid "Text"
msgstr "Texte simple"
@@ -3481,61 +3364,21 @@
msgid "List"
msgstr "Choix multiples dans une liste"
-#: 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:65
-msgid "Form handler settings"
-msgstr "Paramètres du gestionnaire"
-
-#: src/pyams_content/shared/form/zmi/__init__.py:44
-msgid "This form"
-msgstr "Ce formulaire"
-
-#: src/pyams_content/shared/form/zmi/__init__.py:63
-#: src/pyams_content/shared/form/zmi/__init__.py:74
-msgid "Add form"
-msgstr "Ajouter un formulaire"
-
-#: src/pyams_content/shared/form/zmi/__init__.py:54
-#, python-format
-msgid "Form « {title} »"
-msgstr "Formulaire « {title} »"
-
-#: src/pyams_content/shared/form/zmi/field.py:69
-msgid "Form fields..."
+#: src/pyams_content/shared/form/handler.py:80
+msgid "Mailto form handler"
+msgstr "Envoi des données par mail"
+
+#: src/pyams_content/shared/form/handler.py:44
+msgid "No selected handler..."
+msgstr "Aucun gestionnaire sélectionné"
+
+#: src/pyams_content/shared/form/__init__.py:97
+msgid "Form fields"
msgstr "Champs de saisie"
-#: src/pyams_content/shared/form/zmi/field.py:178
-#: src/pyams_content/shared/form/interfaces/__init__.py:55
-msgid "Field type"
-msgstr "Type de champ"
-
-#: src/pyams_content/shared/form/zmi/field.py:211
-msgid "Form fields list"
-msgstr "Liste des champs du formulaire"
-
-#: src/pyams_content/shared/form/zmi/field.py:234
-#: src/pyams_content/shared/form/zmi/field.py:247
-msgid "Add form field"
-msgstr "Ajouter un champ"
-
-#: 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:187
-msgid "-- unknown field type --"
-msgstr "-- type de champ inconnu --"
-
-#: src/pyams_content/shared/form/zmi/field.py:122
-msgid "No currently defined form field."
-msgstr "Ce formulaire ne comporte aucun champ."
-
-#: src/pyams_content/shared/form/zmi/field.py:269
-msgid "Specified name is already used!"
-msgstr "Le nom indiqué pour ce champ est déjà utilisé !"
+#: src/pyams_content/shared/form/__init__.py:98
+msgid "no field defined"
+msgstr "aucun champ défini"
#: src/pyams_content/shared/form/interfaces/__init__.py:33
msgid "Form"
@@ -3550,6 +3393,11 @@
msgstr ""
"Nom interne du champ ; ce nom doit être unique pour un formulaire donné"
+#: src/pyams_content/shared/form/interfaces/__init__.py:55
+#: src/pyams_content/shared/form/zmi/field.py:178
+msgid "Field type"
+msgstr "Type de champ"
+
#: src/pyams_content/shared/form/interfaces/__init__.py:56
msgid "Selected field type"
msgstr "Type de champ proposé à l'internaute"
@@ -3679,23 +3527,61 @@
msgid "Name of data recipient"
msgstr "Nom du destinataire des messages"
-#: src/pyams_content/shared/news/zmi/__init__.py:44
-msgid "This news topic"
-msgstr "Cette actualité"
-
-#: src/pyams_content/shared/news/zmi/__init__.py:63
-#: src/pyams_content/shared/news/zmi/__init__.py:74
-msgid "Add news topic"
-msgstr "Ajouter une actualité"
-
-#: src/pyams_content/shared/news/zmi/__init__.py:54
+#: 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:65
+msgid "Form handler settings"
+msgstr "Paramètres du gestionnaire"
+
+#: src/pyams_content/shared/form/zmi/field.py:69
+msgid "Form fields..."
+msgstr "Champs de saisie"
+
+#: src/pyams_content/shared/form/zmi/field.py:156
+#: src/pyams_content/shared/common/interfaces/types.py:43
+msgid "Name"
+msgstr "Nom"
+
+#: src/pyams_content/shared/form/zmi/field.py:211
+msgid "Form fields list"
+msgstr "Liste des champs du formulaire"
+
+#: src/pyams_content/shared/form/zmi/field.py:234
+#: src/pyams_content/shared/form/zmi/field.py:247
+msgid "Add form field"
+msgstr "Ajouter un champ"
+
+#: 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:187
+msgid "-- unknown field type --"
+msgstr "-- type de champ inconnu --"
+
+#: src/pyams_content/shared/form/zmi/field.py:122
+msgid "No currently defined form field."
+msgstr "Ce formulaire ne comporte aucun champ."
+
+#: src/pyams_content/shared/form/zmi/field.py:269
+msgid "Specified name is already used!"
+msgstr "Le nom indiqué pour ce champ est déjà utilisé !"
+
+#: src/pyams_content/shared/form/zmi/__init__.py:44
+msgid "This form"
+msgstr "Ce formulaire"
+
+#: src/pyams_content/shared/form/zmi/__init__.py:63
+#: src/pyams_content/shared/form/zmi/__init__.py:74
+msgid "Add form"
+msgstr "Ajouter un formulaire"
+
+#: src/pyams_content/shared/form/zmi/__init__.py:54
#, python-format
-msgid "News topic « {title} »"
-msgstr "Actualité « {title} »"
-
-#: src/pyams_content/shared/news/interfaces/__init__.py:29
-msgid "News topic"
-msgstr "Actualité"
+msgid "Form « {title} »"
+msgstr "Formulaire « {title} »"
#: src/pyams_content/shared/view/merge.py:59
msgid "Concatenate views items in order"
@@ -3739,126 +3625,6 @@
"Trier tous les résultats sur la date de première publication (du plus récent "
"au plus ancien)"
-#: src/pyams_content/shared/view/zmi/properties.py:45
-msgid "Main view settings"
-msgstr "Paramètres de la vue"
-
-#: src/pyams_content/shared/view/zmi/__init__.py:44
-msgid "This view"
-msgstr "Cette vue"
-
-#: src/pyams_content/shared/view/zmi/__init__.py:63
-#: src/pyams_content/shared/view/zmi/__init__.py:73
-msgid "Add view"
-msgstr "Ajouter une vue"
-
-#: src/pyams_content/shared/view/zmi/__init__.py:54
-#, python-format
-msgid "View « {title} »"
-msgstr "Vue « {title} »"
-
-#: src/pyams_content/shared/view/zmi/theme.py:67
-msgid "View tags settings"
-msgstr "Paramétrage des tags de la vue"
-
-#: src/pyams_content/shared/view/zmi/theme.py:113
-msgid "View themes settings"
-msgstr "Paramétrage des thèmes de la vue"
-
-#: src/pyams_content/shared/view/zmi/theme.py:159
-msgid "View collections settings"
-msgstr "Paramétrage des collections de la vue"
-
-#: src/pyams_content/shared/view/zmi/reference.py:52
-msgid "References..."
-msgstr "Références"
-
-#: src/pyams_content/shared/view/zmi/reference.py:63
-msgid "View internal references settings"
-msgstr "Références internes de la vue"
-
-#: src/pyams_content/shared/view/portlet/__init__.py:89
-msgid "View items"
-msgstr "Contenu d'une vue"
-
-#: src/pyams_content/shared/view/portlet/interfaces.py:41
-msgid "Display context"
-msgstr "Contexte d'affichage"
-
-#: src/pyams_content/shared/view/portlet/interfaces.py:42
-msgid "Content context"
-msgstr "Contexte du contenu"
-
-#: src/pyams_content/shared/view/portlet/interfaces.py:59
-msgid "Selected views"
-msgstr "Vue(s) sélectionnée(s)"
-
-#: src/pyams_content/shared/view/portlet/interfaces.py:60
-msgid ""
-"Reference to the view(s) from which items are extracted; you can combine "
-"several views together and specify in which order they should be mixed"
-msgstr ""
-"Références des vues dont sont extraits les résultats ; vous pouvez combiner "
-"plusieurs vues ensemble en indiquant la façon dont leurs résultats seront "
-"fusionnés"
-
-#: src/pyams_content/shared/view/portlet/interfaces.py:69
-msgid "Views context"
-msgstr "Contexte des vues"
-
-#: src/pyams_content/shared/view/portlet/interfaces.py:70
-msgid ""
-"When searching for items, a view receives a \"context\" which is the object "
-"from which settings can be extracted; this context can be the \"display\" "
-"context or the \"content\" context: when the portlet is used to display the "
-"site root, a site manager or a site folder, both are identical; when the "
-"portlet is used to display a shared content, the \"content\" context is the "
-"displayed content, while the \"display\" context is the container (site "
-"root, site manager or site folder) into which content is displayed"
-msgstr ""
-"Pour extraire sa liste de résultats, chaque vue est associée à un \"contexte"
-"\", qui est l'objet dont sont extraits les critères de recherche ; ce "
-"contexte peut être le contexte \"d'affichage\" ou le contexte \"du contenu"
-"\" : lorsque ce composant est associé à la page d'accueil, à un site ou à "
-"une rubrique, ces deux contextes sont identiques ; par contre, lorsque ce "
-"composant est associé à un contenu partagé, le contexte de contenu est le "
-"contenu partagé, tandis que le contexte d'affichage est le conteneur (page "
-"d'accueil, site ou rubrique) au sein duquel le contenu est affiché."
-
-#: src/pyams_content/shared/view/portlet/interfaces.py:81
-msgid "Views merge mode"
-msgstr "Mode de fusion des vues"
-
-#: src/pyams_content/shared/view/portlet/interfaces.py:82
-msgid ""
-"If you select several views, you can select \"merge\" mode, which is the way "
-"used to merge items from several views"
-msgstr ""
-"Si vous sélectionnez plusieurs vues, vous devez indiquer la façon dont leurs "
-"résultats seront fusionnés; ce paramètre est sans effet lorsque vous ne "
-"sélectionnez qu'une seule vue, car l'ordre des résultats est alors basé "
-"uniquement sur les paramètres de la vue."
-
-#: src/pyams_content/shared/view/portlet/interfaces.py:91
-#: src/pyams_content/shared/view/interfaces/__init__.py:102
-msgid "Results count limit"
-msgstr "Limite de résultats"
-
-#: src/pyams_content/shared/view/portlet/interfaces.py:92
-msgid ""
-"Maximum number of results that the component may extract from merged views"
-msgstr ""
-"Nombre maximal de résultats que le composant doit extraire des vues "
-"fusionnées"
-
-#: src/pyams_content/shared/view/portlet/zmi/templates/view-items-list-preview.pt:14
-msgid "No result found"
-msgstr "Aucun résultat à afficher."
-
-#: src/pyams_content/shared/view/portlet/zmi/templates/view-items-list-preview.pt:15
-msgid "No selected view"
-msgstr "Aucune vue sélectionnée."
-
#: src/pyams_content/shared/view/interfaces/__init__.py:34
msgid "View"
msgstr "Vue"
@@ -3871,12 +3637,6 @@
msgid "Include selected internal references only if empty"
msgstr "Inclure les références internes seulement lorsque la vue est vide"
-#: src/pyams_content/shared/view/interfaces/__init__.py:43
-#: src/pyams_content/interfaces/__init__.py:113
-#: src/pyams_content/features/review/interfaces.py:74
-msgid "Creation date"
-msgstr "Date de création"
-
#: src/pyams_content/shared/view/interfaces/__init__.py:44
msgid "Last update date"
msgstr "Date de dernière modification"
@@ -3891,7 +3651,7 @@
#: src/pyams_content/shared/view/interfaces/__init__.py:64
msgid "Select context type?"
-msgstr "Gabarit du contexte ?"
+msgstr "Même gabarit que le contexte ?"
#: src/pyams_content/shared/view/interfaces/__init__.py:65
msgid "If 'yes', content type will be extracted from context"
@@ -3911,7 +3671,7 @@
#: src/pyams_content/shared/view/interfaces/__init__.py:77
msgid "Select context data type?"
-msgstr "Type du contexte ?"
+msgstr "Mëme type que le contexte ?"
#: src/pyams_content/shared/view/interfaces/__init__.py:78
msgid ""
@@ -3951,6 +3711,11 @@
"Si 'non', le tri se fera en ordre \"naturel\", donc du plus ancien au plus "
"récent"
+#: src/pyams_content/shared/view/interfaces/__init__.py:102
+#: src/pyams_content/shared/view/portlet/interfaces.py:91
+msgid "Results count limit"
+msgstr "Limite de résultats"
+
#: src/pyams_content/shared/view/interfaces/__init__.py:103
msgid "Maximum number of results that the view may retrieve"
msgstr "Nombre maximal de résultats que la vue doit renvoyer"
@@ -4017,6 +3782,1651 @@
msgid "Other collections"
msgstr "Autres collections"
+#: src/pyams_content/shared/view/portlet/__init__.py:87
+msgid "View items"
+msgstr "Contenu d'une vue"
+
+#: src/pyams_content/shared/view/portlet/interfaces.py:41
+msgid "Display context"
+msgstr "Contexte d'affichage"
+
+#: src/pyams_content/shared/view/portlet/interfaces.py:42
+msgid "Content context"
+msgstr "Contexte du contenu"
+
+#: src/pyams_content/shared/view/portlet/interfaces.py:59
+msgid "Selected views"
+msgstr "Vue(s) sélectionnée(s)"
+
+#: src/pyams_content/shared/view/portlet/interfaces.py:60
+msgid ""
+"Reference to the view(s) from which items are extracted; you can combine "
+"several views together and specify in which order they should be mixed"
+msgstr ""
+"Références des vues dont sont extraits les résultats ; vous pouvez combiner "
+"plusieurs vues ensemble en indiquant la façon dont leurs résultats seront "
+"fusionnés"
+
+#: src/pyams_content/shared/view/portlet/interfaces.py:69
+msgid "Views context"
+msgstr "Contexte des vues"
+
+#: src/pyams_content/shared/view/portlet/interfaces.py:70
+msgid ""
+"When searching for items, a view receives a \"context\" which is the object "
+"from which settings can be extracted; this context can be the \"display\" "
+"context or the \"content\" context: when the portlet is used to display the "
+"site root, a site manager or a site folder, both are identical; when the "
+"portlet is used to display a shared content, the \"content\" context is the "
+"displayed content, while the \"display\" context is the container (site "
+"root, site manager or site folder) into which content is displayed"
+msgstr ""
+"Pour extraire sa liste de résultats, chaque vue est associée à un \"contexte"
+"\", qui est l'objet dont sont extraits les critères de recherche ; ce "
+"contexte peut être le contexte \"d'affichage\" ou le contexte \"du contenu"
+"\" : lorsque ce composant est associé à la page d'accueil, à un site ou à "
+"une rubrique, ces deux contextes sont identiques ; par contre, lorsque ce "
+"composant est associé à un contenu partagé, le contexte de contenu est le "
+"contenu partagé, tandis que le contexte d'affichage est le conteneur (page "
+"d'accueil, site ou rubrique) au sein duquel le contenu est affiché."
+
+#: src/pyams_content/shared/view/portlet/interfaces.py:81
+msgid "Views merge mode"
+msgstr "Mode de fusion des vues"
+
+#: src/pyams_content/shared/view/portlet/interfaces.py:82
+msgid ""
+"If you select several views, you can select \"merge\" mode, which is the way "
+"used to merge items from several views"
+msgstr ""
+"Si vous sélectionnez plusieurs vues, vous devez indiquer la façon dont leurs "
+"résultats seront fusionnés; ce paramètre est sans effet lorsque vous ne "
+"sélectionnez qu'une seule vue, car l'ordre des résultats est alors basé "
+"uniquement sur les paramètres de la vue."
+
+#: src/pyams_content/shared/view/portlet/interfaces.py:92
+msgid ""
+"Maximum number of results that the component may extract from merged views"
+msgstr ""
+"Nombre maximal de résultats que le composant doit extraire des vues "
+"fusionnées"
+
+#: src/pyams_content/shared/view/portlet/interfaces.py:95
+msgid "Starting from..."
+msgstr "A partir de"
+
+#: src/pyams_content/shared/view/portlet/interfaces.py:96
+msgid "You can skip several results if specifying an integer value here..."
+msgstr ""
+"Vous pouvez écarter un certain nombre de résultats, en indiquant ici la "
+"position du premier élément à prendre en compte"
+
+#: src/pyams_content/shared/view/portlet/zmi/templates/view-items-list-preview.pt:8
+msgid "Selected views:"
+msgstr "Vue(s) sélectionnée(s) : "
+
+#: src/pyams_content/shared/view/portlet/zmi/templates/view-items-list-preview.pt:9
+msgid "none"
+msgstr "aucune"
+
+#: src/pyams_content/shared/view/portlet/zmi/templates/view-items-list-preview.pt:15
+msgid "Extracted contents:"
+msgstr "Contenus extraits :"
+
+#: src/pyams_content/shared/view/portlet/zmi/templates/view-items-list-preview.pt:16
+msgid "none (no selected view)"
+msgstr "aucun (aucune vue sélectionnée)"
+
+#: src/pyams_content/shared/view/portlet/zmi/templates/view-items-list-preview.pt:22
+msgid "No result found"
+msgstr "aucun"
+
+#: src/pyams_content/shared/view/zmi/properties.py:45
+msgid "Main view settings"
+msgstr "Paramètres de la vue"
+
+#: src/pyams_content/shared/view/zmi/__init__.py:44
+msgid "This view"
+msgstr "Cette vue"
+
+#: src/pyams_content/shared/view/zmi/__init__.py:63
+#: src/pyams_content/shared/view/zmi/__init__.py:73
+msgid "Add view"
+msgstr "Ajouter une vue"
+
+#: src/pyams_content/shared/view/zmi/__init__.py:54
+#, python-format
+msgid "View « {title} »"
+msgstr "Vue « {title} »"
+
+#: src/pyams_content/shared/view/zmi/theme.py:67
+msgid "View tags settings"
+msgstr "Paramétrage des tags de la vue"
+
+#: src/pyams_content/shared/view/zmi/theme.py:113
+msgid "View themes settings"
+msgstr "Paramétrage des thèmes de la vue"
+
+#: src/pyams_content/shared/view/zmi/theme.py:159
+msgid "View collections settings"
+msgstr "Paramétrage des collections de la vue"
+
+#: src/pyams_content/shared/view/zmi/reference.py:52
+msgid "References..."
+msgstr "Références"
+
+#: src/pyams_content/shared/view/zmi/reference.py:63
+msgid "View internal references settings"
+msgstr "Références internes de la vue"
+
+#: src/pyams_content/shared/blog/interfaces/__init__.py:30
+msgid "Blog post"
+msgstr "Article (dans un blog)"
+
+#: src/pyams_content/shared/blog/interfaces/__init__.py:68
+#: src/pyams_content/shared/common/interfaces/__init__.py:157
+#: src/pyams_content/shared/site/interfaces/__init__.py:72
+#: src/pyams_content/shared/site/interfaces/__init__.py:117
+msgid "Meta-description"
+msgstr "Méta-description"
+
+#: src/pyams_content/shared/blog/interfaces/__init__.py:69
+msgid ""
+"The blog'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; "
+"if description is empty, content's header will be used."
+msgstr ""
+"La méta-description du blog 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 ; si la description n'est pas renseignée, le chapô "
+"(s'il existe pour ce contenu) sera utilisé."
+
+#: src/pyams_content/shared/blog/interfaces/__init__.py:74
+#: src/pyams_content/shared/common/interfaces/__init__.py:169
+#: src/pyams_content/shared/site/interfaces/__init__.py:78
+#: src/pyams_content/shared/site/interfaces/__init__.py:123
+#: src/pyams_content/shared/site/zmi/folder.py:74
+msgid "Notepad"
+msgstr "Bloc-notes"
+
+#: src/pyams_content/shared/blog/interfaces/__init__.py:75
+#: src/pyams_content/shared/common/interfaces/__init__.py:170
+#: src/pyams_content/shared/site/interfaces/__init__.py:79
+#: src/pyams_content/shared/site/interfaces/__init__.py:124
+#: src/pyams_content/shared/site/zmi/folder.py:75
+msgid "Internal information to be known about this content"
+msgstr ""
+"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/blog/zmi/manager.py:57
+msgid "Blog management"
+msgstr "Gérer ce blog"
+
+#: src/pyams_content/shared/blog/zmi/manager.py:80
+#: src/pyams_content/shared/blog/zmi/manager.py:94
+msgid "Add blog manager"
+msgstr "Ajouter un blog"
+
+#: src/pyams_content/shared/blog/zmi/manager.py:93
+msgid "Blog manager"
+msgstr "Blog"
+
+#: src/pyams_content/shared/blog/zmi/manager.py:148
+msgid "Blog properties"
+msgstr "Propriétés du blog"
+
+#: src/pyams_content/shared/blog/zmi/manager.py:163
+#: src/pyams_content/shared/blog/zmi/manager.py:175
+#: src/pyams_content/shared/site/zmi/container.py:104
+#: src/pyams_content/shared/site/zmi/container.py:116
+msgid "Publication dates..."
+msgstr "Dates de publication"
+
+#: src/pyams_content/shared/blog/zmi/manager.py:189
+#: src/pyams_content/shared/site/zmi/container.py:130
+msgid "Update publication dates"
+msgstr "Dates de publication"
+
+#: src/pyams_content/shared/blog/zmi/manager.py:124
+#: src/pyams_content/shared/site/zmi/manager.py:163
+msgid "You must provide a short name for default server language!"
+msgstr "Vous devez fournir un nom court pour la langue par défaut du serveur !"
+
+#: src/pyams_content/shared/blog/zmi/manager.py:128
+msgid "Specified blog manager name is already used!"
+msgstr "Le nom indiqué pour ce blog existe déjà !"
+
+#: src/pyams_content/shared/blog/zmi/manager.py:132
+msgid "A blog manager is already registered with this name!!"
+msgstr "Un blog est déjà inscrit dans le registre avec ce nom !"
+
+#: src/pyams_content/shared/blog/zmi/__init__.py:52
+msgid "This blog post"
+msgstr "Cet article"
+
+#: src/pyams_content/shared/blog/zmi/__init__.py:71
+#: src/pyams_content/shared/blog/zmi/__init__.py:81
+msgid "Add blog post"
+msgstr "Ajouter un article"
+
+#: src/pyams_content/shared/blog/zmi/__init__.py:62
+#, python-format
+msgid "Blog post « {title} »"
+msgstr "Article « {title} »"
+
+#: src/pyams_content/shared/common/__init__.py:244
+#: src/pyams_content/shared/common/zmi/properties.py:69
+#: src/pyams_content/shared/common/zmi/manager.py:96
+msgid "Properties"
+msgstr "Propriétés"
+
+#: src/pyams_content/shared/common/__init__.py:154
+#: src/pyams_content/shared/common/__init__.py:162
+#, python-format
+msgid "{date} by {principal}"
+msgstr "{date} par {principal}"
+
+#: src/pyams_content/shared/common/__init__.py:267
+#, python-format
+msgid "title length should be between 40 and 66 characters ({length} actually)"
+msgstr ""
+"Le titre devrait être composé de 40 à 66 caractères ({length} actuellement)"
+
+#: src/pyams_content/shared/common/interfaces/types.py:44
+msgid "Name of this data type; must be unique between all data types"
+msgstr "Nom de ce type de donnée ; doit être unique entre tous les types"
+
+#: src/pyams_content/shared/common/interfaces/types.py:50
+msgid "Navigation label"
+msgstr "Libellé de navigation"
+
+#: src/pyams_content/shared/common/interfaces/types.py:51
+msgid "Label used for navigation entries"
+msgstr "Libellé utilisé pour les entrées de navigation"
+
+#: src/pyams_content/shared/common/interfaces/types.py:54
+msgid "Tab-folder label"
+msgstr "Libellé d'un l'onglet"
+
+#: src/pyams_content/shared/common/interfaces/types.py:55
+msgid "Label used to include into tab folder"
+msgstr "Libellé utilisé pour l'affichage du type sous la forme d'un onglet"
+
+#: src/pyams_content/shared/common/interfaces/types.py:58
+msgid "'See also' label"
+msgstr "Libellé 'À voir aussi'"
+
+#: src/pyams_content/shared/common/interfaces/types.py:59
+msgid ""
+"This label can be used when contents of this type will be displayed in a "
+"'See also' entries block"
+msgstr ""
+"Ce libellé peut être utilisé lorsque des contenus de ce type sont affichés "
+"sous la forme d'un bloc 'À voir aussi'"
+
+#: src/pyams_content/shared/common/interfaces/types.py:63
+msgid "'Single value' label"
+msgstr "Libellé 'Valeur unique'"
+
+#: src/pyams_content/shared/common/interfaces/types.py:64
+msgid "Label given to this type when a single value is displayed"
+msgstr "Libellé utilisé pour ce type lorsqu'une seule valeur est affichée"
+
+#: src/pyams_content/shared/common/interfaces/types.py:67
+msgid "'Link to list' label"
+msgstr "Libellé 'Lien vers une liste'"
+
+#: src/pyams_content/shared/common/interfaces/types.py:68
+msgid "Label used to display a link to a list of items of this type"
+msgstr ""
+"Libellé utilisé lorsque l'on crée un lien vers uns liste de contenus de ce "
+"type"
+
+#: src/pyams_content/shared/common/interfaces/types.py:71
+msgid "Next content label"
+msgstr "Libellé du contenu suivant"
+
+#: src/pyams_content/shared/common/interfaces/types.py:72
+msgid "Label used to announce next date for this type"
+msgstr ""
+"Libellé utilisé pour afficher la prochaine occurence d'un contenu de ce type"
+
+#: src/pyams_content/shared/common/interfaces/types.py:76
+msgid "Pictogram associated with this data type"
+msgstr "Pictogramme associé à ce type"
+
+#: src/pyams_content/shared/common/interfaces/types.py:90
+msgid "Field names"
+msgstr "Champs associés"
+
+#: src/pyams_content/shared/common/interfaces/types.py:91
+msgid "List of fields associated with this data type"
+msgstr "Liste des champs de saisie associés à ce type"
+
+#: src/pyams_content/shared/common/interfaces/types.py:125
+msgid "Data type"
+msgstr "Type du contenu"
+
+#: src/pyams_content/shared/common/interfaces/types.py:126
+msgid "Type of content data"
+msgstr "Type du contenu associé à ce gabarit"
+
+#: src/pyams_content/shared/common/interfaces/__init__.py:42
+msgid "Webmasters can handle all contents, including published ones"
+msgstr ""
+"Les webmestres peuvent modifier et gérer tous les contenus, y compris ceux "
+"qui sont publiés et hormis ceux qui sont archivés"
+
+#: src/pyams_content/shared/common/interfaces/__init__.py:46
+msgid "Pilots"
+msgstr "Pilotes"
+
+#: src/pyams_content/shared/common/interfaces/__init__.py:47
+msgid ""
+"Pilots can handle tool configuration, manage access rules, grant users roles "
+"and manage managers restrictions"
+msgstr ""
+"Les pilotes gèrent la configuration des outils, désignent les responsables "
+"et les contributeurs, et limitent si nécessaire l'intervention des "
+"responsables à certains contenus"
+
+#: src/pyams_content/shared/common/interfaces/__init__.py:52
+#: src/pyams_content/shared/common/interfaces/__init__.py:196
+msgid "Managers"
+msgstr "Responsables"
+
+#: src/pyams_content/shared/common/interfaces/__init__.py:53
+#: src/pyams_content/shared/common/interfaces/__init__.py:197
+msgid ""
+"Managers can handle main operations in tool's workflow, like publish or "
+"retire contents"
+msgstr ""
+"Les responsables peuvent intervenir sur les étapes importantes du workflow "
+"(comme la publication ou le retrait des contenus), dans la limite des "
+"restrictions qui leur sont imposées"
+
+#: src/pyams_content/shared/common/interfaces/__init__.py:58
+#: src/pyams_content/shared/common/interfaces/__init__.py:202
+msgid "Contributors"
+msgstr "Contributeurs"
+
+#: src/pyams_content/shared/common/interfaces/__init__.py:59
+msgid "Contributors are users which are allowed to create new contents"
+msgstr "Les contributeurs sont autorisés à créer de nouveaux contenus"
+
+#: src/pyams_content/shared/common/interfaces/__init__.py:63
+#: src/pyams_content/shared/common/interfaces/__init__.py:208
+msgid "Designers"
+msgstr "Designers"
+
+#: src/pyams_content/shared/common/interfaces/__init__.py:64
+#: src/pyams_content/shared/common/interfaces/__init__.py:209
+msgid "Designers are users which are allowed to manage presentation templates"
+msgstr "Les designers sont autorisés à configurer les modèles de présentation"
+
+#: src/pyams_content/shared/common/interfaces/__init__.py:90
+msgid "Workflow name"
+msgstr "Nom du workflow"
+
+#: src/pyams_content/shared/common/interfaces/__init__.py:91
+msgid "Name of workflow utility used to manage tool contents"
+msgstr "Nom du workflow qui gère le cycle de vie des contenus de cet outil"
+
+#: src/pyams_content/shared/common/interfaces/__init__.py:119
+msgid "Content URL"
+msgstr "URL du contenu"
+
+#: src/pyams_content/shared/common/interfaces/__init__.py:120
+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 ""
+"<span>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.</span><br /><strong>Remarque :</strong> 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:127
+msgid "Version creator"
+msgstr "À l'origine de cette version"
+
+#: src/pyams_content/shared/common/interfaces/__init__.py:128
+msgid ""
+"Name of content's version creator. The creator of the first version is also "
+"it's owner."
+msgstr ""
+"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:132
+msgid "First owner"
+msgstr "Premier propriétaire"
+
+#: src/pyams_content/shared/common/interfaces/__init__.py:133
+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:137
+msgid "Version creation"
+msgstr "Date de création"
+
+#: src/pyams_content/shared/common/interfaces/__init__.py:140
+msgid "Version modifiers"
+msgstr "Intervenants"
+
+#: src/pyams_content/shared/common/interfaces/__init__.py:141
+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:144
+msgid "Last modifier"
+msgstr "Dernier intervenant"
+
+#: src/pyams_content/shared/common/interfaces/__init__.py:145
+msgid "Last principal who modified this content"
+msgstr "Dernier utilisateur étant intervenu sur ce contenu"
+
+#: src/pyams_content/shared/common/interfaces/__init__.py:148
+msgid "Last update"
+msgstr "Dernière modification"
+
+#: src/pyams_content/shared/common/interfaces/__init__.py:152
+msgid "Content's header is generally displayed in page header"
+msgstr "Le chapô du contenu est généralement affiché en tête de page"
+
+#: src/pyams_content/shared/common/interfaces/__init__.py:158
+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; if description is empty, content's header will be used."
+msgstr ""
+"La méta-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 ; si la description n'est pas renseignée, le chapô "
+"(s'il existe pour ce contenu) sera utilisé."
+
+#: src/pyams_content/shared/common/interfaces/__init__.py:165
+msgid "Keywords"
+msgstr "Mots-clés"
+
+#: src/pyams_content/shared/common/interfaces/__init__.py:166
+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:189
+msgid "Content owner"
+msgstr "Propriétaire"
+
+#: src/pyams_content/shared/common/interfaces/__init__.py:190
+msgid ""
+"The owner is the creator of content's first version, except if it was "
+"transferred afterwards to another owner"
+msgstr ""
+"Le propriétaire est le créateur de la première version d'un contenu, sauf "
+"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:203
+msgid ""
+"Contributors are users which are allowed to update this content in addition "
+"to it's owner"
+msgstr ""
+"Les contributeurs sont autorisés, en plus du propriétaire, à modifier ce "
+"contenu"
+
+#: src/pyams_content/shared/common/interfaces/__init__.py:213
+msgid "Readers"
+msgstr "Relecteurs"
+
+#: src/pyams_content/shared/common/interfaces/__init__.py:214
+msgid ""
+"Readers are users which are asked to verify and comment contents before they "
+"are published"
+msgstr ""
+"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:219
+msgid "Guests"
+msgstr "Invités"
+
+#: src/pyams_content/shared/common/interfaces/__init__.py:220
+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:243
+msgid "Principal ID"
+msgstr "ID utilisateur"
+
+#: src/pyams_content/shared/common/interfaces/__init__.py:282
+#: src/pyams_content/shared/common/interfaces/__init__.py:307
+msgid "Publication checks"
+msgstr "Activer le tunnel de publication"
+
+#: src/pyams_content/shared/common/interfaces/__init__.py:283
+msgid ""
+"If 'yes', this contributor will have to confirm that contents have been "
+"previewed and checked before asking for publication"
+msgstr ""
+"Si 'oui', ce contributeur devra confirmer qu'il a bien prévisualisé et "
+"audité chaque contenu avant de pouvoir effectuer une demande de publication"
+
+#: src/pyams_content/shared/common/interfaces/__init__.py:308
+msgid ""
+"If 'yes', this manager will have to confirm that contents have been "
+"previewed and checked before publishing a content"
+msgstr ""
+"Si 'oui', ce responsable devra confirmer qu'il a bien prévisualisé et audité "
+"chaque contenu avant de pouvoir effectuer une publication"
+
+#: src/pyams_content/shared/common/interfaces/__init__.py:313
+msgid "Restricted contents"
+msgstr "Accès restreints"
+
+#: src/pyams_content/shared/common/interfaces/__init__.py:314
+msgid ""
+"If 'yes', this manager will get restricted access to manage contents based "
+"on selected settings"
+msgstr ""
+"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:319
+msgid "Selected owners"
+msgstr "Propriétaires"
+
+#: src/pyams_content/shared/common/interfaces/__init__.py:320
+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 "
+"propriétaires"
+
+#: src/pyams_content/shared/common/portlet/title.py:38
+msgid "Content title"
+msgstr "Titre du gabarit"
+
+#: src/pyams_content/shared/common/portlet/head.py:46
+msgid "Content header"
+msgstr "En-tête de gabarit"
+
+#: src/pyams_content/shared/common/portlet/interfaces/__init__.py:25
+msgid "Display breadcrumbs?"
+msgstr "Afficher le fil d'Ariane ?"
+
+#: src/pyams_content/shared/common/portlet/interfaces/__init__.py:29
+msgid "Display title?"
+msgstr "Afficher le titre ?"
+
+#: src/pyams_content/shared/common/portlet/interfaces/__init__.py:33
+msgid "Display tags?"
+msgstr "Afficher les tags ?"
+
+#: src/pyams_content/shared/common/portlet/interfaces/__init__.py:37
+msgid "Display header?"
+msgstr "Afficher le chapô ?"
+
+#: src/pyams_content/shared/common/portlet/interfaces/__init__.py:41
+msgid "Display specificities?"
+msgstr "Afficher les spécificités ?"
+
+#: src/pyams_content/shared/common/portlet/interfaces/__init__.py:42
+msgid "If 'no', specific content's informations won't be displayed..."
+msgstr ""
+"Si 'non', les informations spécifiques que le gabarit est susceptible "
+"d'intégrer dans l'en-tête de page ne seront pas affichées"
+
+#: src/pyams_content/shared/common/portlet/zmi/templates/head-preview.pt:4
+msgid "Display breadcrumbs"
+msgstr "Afficher le fil d'Ariane"
+
+#: src/pyams_content/shared/common/portlet/zmi/templates/head-preview.pt:8
+msgid "Display title"
+msgstr "Afficher le titre"
+
+#: src/pyams_content/shared/common/portlet/zmi/templates/head-preview.pt:12
+msgid "Display tags"
+msgstr "Afficher les tags"
+
+#: src/pyams_content/shared/common/portlet/zmi/templates/head-preview.pt:16
+msgid "Display header"
+msgstr "Afficher le chapô"
+
+#: src/pyams_content/shared/common/portlet/zmi/templates/head-preview.pt:20
+msgid "Display specificities"
+msgstr "Afficher les spécificités"
+
+#: src/pyams_content/shared/common/zmi/portal.py:44
+msgid "Edit default template properties"
+msgstr "Modèle de présentation par défaut"
+
+#: src/pyams_content/shared/common/zmi/portal.py:54
+msgid ""
+"**This form allows you to select shared content default template.**\n"
+"\n"
+"If you choose to use a shared template, you can only adjust settings of each "
+"portlet individually but can't change portlets list or page configuration.\n"
+"\n"
+"If you use a local template, you can define a whole custom configuration but "
+"the template definition can't be reused anywhere..."
+msgstr ""
+"Vous pouvez modifier le modèle de présentation qui sera appliqué **par "
+"défaut** à tous les contenus de ce gabarit.\n"
+"\n"
+"Si vous choisissez d'utiliser un modèle de présentation partagé, vous "
+"pourrez ajuster les paramètres de chaque composant mais ne pourrez pas "
+"modifier la liste des composants ou leur position et la configuration de la "
+"page.\n"
+"\n"
+"Si vous choisissez d'utiliser un modèle de présentation \"local\", vous "
+"pourrez définir l'ensemble de la configuration mais le modèle de "
+"présentation ne pourra pas être réutilisé ailleurs que dans les contenus de "
+"ce gabarit."
+
+#: src/pyams_content/shared/common/zmi/portal.py:70
+msgid "Use tool default template"
+msgstr "Utiliser le modèle de présentation par défaut de ce gabarit"
+
+#: src/pyams_content/shared/common/zmi/properties.py:59
+msgid "Composition"
+msgstr "Composition"
+
+#: src/pyams_content/shared/common/zmi/properties.py:82
+msgid "Content properties"
+msgstr "Propriétés élémentaires"
+
+#: src/pyams_content/shared/common/zmi/site.py:38
+#, python-format
+msgid ""
+"SEARCH - Between all contents published into « {site} »"
+msgstr ""
+"RECHERCHE - Tous contenus présents dans « {site} » "
+"confondus"
+
+#: src/pyams_content/shared/common/zmi/header.py:79
+#, python-format
+msgid "{state} by {principal}"
+msgstr "{state} par {principal}"
+
+#: src/pyams_content/shared/common/zmi/header.py:112
+#, python-format
+msgid "since {date}"
+msgstr "depuis {date}"
+
+#: src/pyams_content/shared/common/zmi/header.py:91
+#: src/pyams_content/shared/common/zmi/dashboard.py:165
+msgid "Content publication start date is not passed yet"
+msgstr "La date de début de publication n'est pas encore atteinte"
+
+#: src/pyams_content/shared/common/zmi/header.py:124
+msgid "access published version"
+msgstr "accéder à la version en ligne"
+
+#: src/pyams_content/shared/common/zmi/header.py:131
+msgid "access new version"
+msgstr "accéder à la version en préparation"
+
+#: src/pyams_content/shared/common/zmi/header.py:141
+msgid "access waiting version"
+msgstr "accéder à la version en attente"
+
+#: src/pyams_content/shared/common/zmi/header.py:152
+msgid "access retired version"
+msgstr "accéder à la version retirée"
+
+#: src/pyams_content/shared/common/zmi/header.py:162
+msgid "access archived version"
+msgstr "accéder à la version archivée"
+
+#: src/pyams_content/shared/common/zmi/manager.py:107
+msgid "Shared tool properties"
+msgstr "Propriétés de l'outil"
+
+#: src/pyams_content/shared/common/zmi/manager.py:125
+msgid "WARNING"
+msgstr "ATTENTION"
+
+#: src/pyams_content/shared/common/zmi/manager.py:127
+msgid ""
+"Workflow shouldn't be modified if this tool already contains any shared "
+"content!"
+msgstr ""
+"Le workflow ne doit pas être modifié si cet outil renferme déjà des contenus "
+"partagés !"
+
+#: src/pyams_content/shared/common/zmi/manager.py:150
+msgid "Languages"
+msgstr "Langues"
+
+#: src/pyams_content/shared/common/zmi/manager.py:162
+msgid "Content languages"
+msgstr "Langues pour la traduction de cet outil"
+
+#: src/pyams_content/shared/common/zmi/manager.py:172
+msgid ""
+"Tool languages are used to translate own tool properties, and newly created "
+"contents will propose these languages by default"
+msgstr ""
+"Les langues sont utilisées pour traduire les propriétés de l'outil.\n"
+"\n"
+"Les nouveaux contenus proposeront également ces langues par défaut."
+
+#: src/pyams_content/shared/common/zmi/manager.py:80
+msgid "Content management"
+msgstr "Gérer ce gabarit"
+
+#: src/pyams_content/shared/common/zmi/manager.py:82
+msgid "Tool management"
+msgstr "Gérer cet outil"
+
+#: src/pyams_content/shared/common/zmi/types.py:69
+msgid "Data types"
+msgstr "Types de contenus"
+
+#: src/pyams_content/shared/common/zmi/types.py:147
+msgid "Data type label"
+msgstr "Libellé du type"
+
+#: src/pyams_content/shared/common/zmi/types.py:187
+#: src/pyams_content/shared/common/zmi/types.py:427
+msgid "Default associations"
+msgstr "Liens et pièces jointes par défaut"
+
+#: src/pyams_content/shared/common/zmi/types.py:203
+msgid "Default themes"
+msgstr "Thèmes par défaut"
+
+#: src/pyams_content/shared/common/zmi/types.py:231
+msgid "Content data types"
+msgstr "Types de contenus"
+
+#: src/pyams_content/shared/common/zmi/types.py:254
+msgid "Add data type"
+msgstr "Ajouter un type"
+
+#: src/pyams_content/shared/common/zmi/types.py:266
+msgid "Add new data type"
+msgstr "Ajout d'un type de contenu"
+
+#: src/pyams_content/shared/common/zmi/types.py:309
+msgid "Data type properties"
+msgstr "Propriétés du type de contenu"
+
+#: src/pyams_content/shared/common/zmi/types.py:390
+msgid "Subtype label"
+msgstr "Libellé du sous-type"
+
+#: src/pyams_content/shared/common/zmi/types.py:471
+msgid "Add subtype"
+msgstr "Ajouter un sous-type"
+
+#: src/pyams_content/shared/common/zmi/types.py:483
+msgid "Add new subtype"
+msgstr "Ajout d'un sous-type de contenu"
+
+#: src/pyams_content/shared/common/zmi/types.py:530
+msgid "Data subtype properties"
+msgstr "Propriétés du fichier standard"
+
+#: src/pyams_content/shared/common/zmi/types.py:572
+msgid "Select content type..."
+msgstr "Sélectionnez un type de contenu..."
+
+#: src/pyams_content/shared/common/zmi/types.py:114
+msgid "No currently defined data type."
+msgstr "Aucun type de contenu n'est actuellement défini."
+
+#: src/pyams_content/shared/common/zmi/types.py:299
+msgid "Specified type name is already used!"
+msgstr "Le nom indiqué pour ce type de contenu est déjà utilisé !"
+
+#: src/pyams_content/shared/common/zmi/types.py:506
+msgid "Subtype was correctly added."
+msgstr "Le sous-type a été ajouté."
+
+#: src/pyams_content/shared/common/zmi/types.py:520
+msgid "Specified subtype name is already used!"
+msgstr "Le nom indiqué pour ce sous-type de contenu est déjà utilisé !"
+
+#: src/pyams_content/shared/common/zmi/types.py:159
+msgid "Click to see subtypes"
+msgstr "Montrer ou caher les sous-types"
+
+#: src/pyams_content/shared/common/zmi/types.py:610
+#, python-format
+msgid "Custom properties for type « {0} »"
+msgstr "Propriétés spécifiques au type « {0} »"
+
+#: src/pyams_content/shared/common/zmi/dashboard.py:128
+msgid "Unique ID"
+msgstr "N° IN"
+
+#: src/pyams_content/shared/common/zmi/dashboard.py:148
+#: src/pyams_content/shared/common/zmi/search.py:173
+msgid "Status"
+msgstr "Statut"
+
+#: src/pyams_content/shared/common/zmi/dashboard.py:175
+msgid "Status date"
+msgstr "En date du"
+
+#: src/pyams_content/shared/common/zmi/dashboard.py:192
+#: src/pyams_content/shared/common/zmi/summary.py:165
+msgid "Version"
+msgstr "Version"
+
+#: src/pyams_content/shared/common/zmi/dashboard.py:207
+msgid "Status principal"
+msgstr "Intervenant"
+
+#: src/pyams_content/shared/common/zmi/dashboard.py:244
+msgid "Last modification"
+msgstr "Dernière modification"
+
+#: src/pyams_content/shared/common/zmi/dashboard.py:277
+msgid "Contents dashboard"
+msgstr "Mon tableau de bord"
+
+#: src/pyams_content/shared/common/zmi/dashboard.py:476
+#: src/pyams_content/shared/common/zmi/templates/header.pt:23
+msgid "Add/remove from favorites"
+msgstr "Ajouter/enlever des favoris"
+
+#: src/pyams_content/shared/common/zmi/dashboard.py:300
+#, python-format
+msgid "SEARCH - Between all contents of type « {type} »"
+msgstr "RECHERCHE - Tous contenus « {type} » confondus"
+
+#: src/pyams_content/shared/common/zmi/rename.py:62
+msgid "Change URL..."
+msgstr "Changer d'URL"
+
+#: src/pyams_content/shared/common/zmi/rename.py:79
+msgid "Change item URL"
+msgstr "Modification de l'URL"
+
+#: src/pyams_content/shared/common/zmi/rename.py:86
+msgid "Item URL part"
+msgstr "URL du contenu"
+
+#: src/pyams_content/shared/common/zmi/rename.py:87
+msgid "URL part used to access this content"
+msgstr "Portion de l'URL utilisée pour accéder à ce contenu"
+
+#: src/pyams_content/shared/common/zmi/rename.py:121
+msgid "You must provide an URL for this item!"
+msgstr "Vous devez fournir une URL pour ce contenu !"
+
+#: src/pyams_content/shared/common/zmi/security.py:64
+msgid "Contributors restrictions"
+msgstr "Paramètres des contributeurs"
+
+#: src/pyams_content/shared/common/zmi/security.py:73
+msgid "Content contributors restrictions"
+msgstr "Liste des contributeurs"
+
+#: src/pyams_content/shared/common/zmi/security.py:107
+msgid "Contributor name"
+msgstr "Nom du contributeur"
+
+#: src/pyams_content/shared/common/zmi/security.py:118
+#: src/pyams_content/shared/common/zmi/security.py:272
+msgid "Activated publication checks?"
+msgstr "Tunnel de publication activé"
+
+#: src/pyams_content/shared/common/zmi/security.py:219
+msgid "Managers restrictions"
+msgstr "Paramètres des responsables"
+
+#: src/pyams_content/shared/common/zmi/security.py:228
+msgid "Content managers restrictions"
+msgstr "Liste des responsables"
+
+#: src/pyams_content/shared/common/zmi/security.py:261
+msgid "Manager name"
+msgstr "Nom du responsable"
+
+#: src/pyams_content/shared/common/zmi/security.py:289
+msgid "Restricted"
+msgstr "Restrictions"
+
+#: src/pyams_content/shared/common/zmi/security.py:306
+msgid "Owners"
+msgstr "Propriétaires"
+
+#: src/pyams_content/shared/common/zmi/security.py:396
+msgid "Publication workflow"
+msgstr "Workflow de publication"
+
+#: src/pyams_content/shared/common/zmi/security.py:167
+#, python-format
+msgid "Edit contributor restrictions for « {0} »"
+msgstr "Gérer les paramètres d'intervention de « {0} »"
+
+#: src/pyams_content/shared/common/zmi/security.py:355
+#, python-format
+msgid "Edit manager restrictions for « {0} »"
+msgstr "Gérer les paramètres d'intervention de « {0} »"
+
+#: src/pyams_content/shared/common/zmi/security.py:402
+msgid "Apply contents restrictions"
+msgstr "Appliquer des restrictions d'accès"
+
+#: src/pyams_content/shared/common/zmi/security.py:404
+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 "
+"which at least one criteria is matching."
+msgstr ""
+"Vous pouvez indiquer les propriétés des contenus que ce responsable sera "
+"autorisé à gérer. Si vous indiquez plusieurs critères, il pourra gérer les "
+"contenus pour lesquels au moins l'un des critères correspond."
+
+#: src/pyams_content/shared/common/zmi/__init__.py:265
+msgid "Duplicate content..."
+msgstr "Dupliquer le contenu"
+
+#: src/pyams_content/shared/common/zmi/__init__.py:285
+msgid "Duplicate content"
+msgstr "Dupliquer ce contenu"
+
+#: src/pyams_content/shared/common/zmi/__init__.py:86
+msgid "This title can be modified afterwards"
+msgstr "Pourra être modifié ultérieurement"
+
+#: src/pyams_content/shared/common/zmi/__init__.py:276
+msgid "Duplicate this content"
+msgstr "Dupliquer ce contenu"
+
+#: src/pyams_content/shared/common/zmi/__init__.py:332
+#, python-format
+msgid "Clone created from version {source} of {oid} (in « {state} » state)"
+msgstr ""
+"Duplication de la version {source} du contenu {oid} (alors en statut "
+"« {state} »)"
+
+#: src/pyams_content/shared/common/zmi/__init__.py:377
+msgid "Created or modified in this version"
+msgstr "Créé ou modifié dans cette version"
+
+#: src/pyams_content/shared/common/zmi/owner.py:50
+msgid "Change owner..."
+msgstr "Changer de propriétaire"
+
+#: src/pyams_content/shared/common/zmi/owner.py:83
+msgid "Change content's owner"
+msgstr "Changement de propriétaire"
+
+#: src/pyams_content/shared/common/zmi/owner.py:125
+msgid ""
+"All versions of this content which are not archived will be transferred to "
+"newly selected owner"
+msgstr ""
+"Toutes les versions non archivées de ce contenu seront transférées au "
+"nouveau propriétaire sélectionné"
+
+#: src/pyams_content/shared/common/zmi/owner.py:60
+msgid "New owner"
+msgstr "Nouveau propriétaire"
+
+#: src/pyams_content/shared/common/zmi/owner.py:61
+msgid "The selected user will become the new content's owner"
+msgstr "L'utilisateur sélectionné deviendra le nouveau propriétaire du contenu"
+
+#: src/pyams_content/shared/common/zmi/owner.py:63
+msgid "Keep previous owner as contributor"
+msgstr "L'ancien propriétaire reste contributeur"
+
+#: src/pyams_content/shared/common/zmi/owner.py:64
+msgid "If 'yes', the previous owner will still be able to modify this content"
+msgstr ""
+"Si 'oui', l'actuel propriétaire du contenu en restera contributeur et pourra "
+"donc continuer à le mettre à jour"
+
+#: src/pyams_content/shared/common/zmi/owner.py:74
+msgid "Change owner"
+msgstr "Changer le propriétaire"
+
+#: src/pyams_content/shared/common/zmi/workflow.py:847
+msgid "Prior checks"
+msgstr "Contrôles préalables : avez-vous ?"
+
+#: src/pyams_content/shared/common/zmi/workflow.py:124
+msgid "Request publication"
+msgstr "Demander la publication"
+
+#: src/pyams_content/shared/common/zmi/workflow.py:211
+#: src/pyams_content/workflow/__init__.py:316
+msgid "Cancel publication request"
+msgstr "Annuler la demande de publication"
+
+#: src/pyams_content/shared/common/zmi/workflow.py:251
+msgid "Refuse publication request"
+msgstr "Refuser la demande de publication"
+
+#: src/pyams_content/shared/common/zmi/workflow.py:305
+#: src/pyams_content/workflow/basic.py:197
+msgid "Publish"
+msgstr "Publier"
+
+#: src/pyams_content/shared/common/zmi/workflow.py:394
+msgid "Request retire"
+msgstr "Demander le retrait"
+
+#: src/pyams_content/shared/common/zmi/workflow.py:450
+msgid "Cancel retire request"
+msgstr "Annuler la demande de retrait"
+
+#: src/pyams_content/shared/common/zmi/workflow.py:490
+msgid "Retire"
+msgstr "Retirer"
+
+#: src/pyams_content/shared/common/zmi/workflow.py:531
+#: src/pyams_content/workflow/__init__.py:437
+msgid "Request archive"
+msgstr "Demander l'archivage"
+
+#: src/pyams_content/shared/common/zmi/workflow.py:574
+msgid "Cancel archive request"
+msgstr "Annuler la demande d'archivage"
+
+#: src/pyams_content/shared/common/zmi/workflow.py:614
+msgid "Archive"
+msgstr "Archiver"
+
+#: src/pyams_content/shared/common/zmi/workflow.py:655
+#: src/pyams_content/workflow/__init__.py:502
+#: src/pyams_content/workflow/__init__.py:514
+#: src/pyams_content/workflow/__init__.py:526
+#: src/pyams_content/workflow/__init__.py:538
+#: src/pyams_content/workflow/__init__.py:550
+#: src/pyams_content/workflow/basic.py:225
+#: src/pyams_content/workflow/basic.py:237
+msgid "Create new version"
+msgstr "Créer une nouvelle version"
+
+#: src/pyams_content/shared/common/zmi/workflow.py:706
+#: src/pyams_content/workflow/__init__.py:562
+#: src/pyams_content/workflow/basic.py:249
+msgid "Delete version"
+msgstr "Supprimer cette version"
+
+#: src/pyams_content/shared/common/zmi/workflow.py:793
+msgid "Previewed content?"
+msgstr "Prévisualisé ce contenu ?"
+
+#: src/pyams_content/shared/common/zmi/workflow.py:797
+msgid "Verified content?"
+msgstr "Audité ce contenu ?"
+
+#: src/pyams_content/shared/common/zmi/workflow.py:181
+#: src/pyams_content/shared/common/zmi/workflow.py:363
+msgid "Publication start date is required"
+msgstr "La date de début de publication est obligatoire"
+
+#: src/pyams_content/shared/common/zmi/workflow.py:274
+#: src/pyams_content/shared/common/zmi/workflow.py:420
+msgid "A comment is required"
+msgstr "Le commentaire est obligatoire"
+
+#: src/pyams_content/shared/common/zmi/workflow.py:732
+msgid "Delete content"
+msgstr "Supprimer définitivement ce contenu"
+
+#: src/pyams_content/shared/common/zmi/workflow.py:741
+msgid "Delete definitively"
+msgstr "Supprimer définitivement"
+
+#: src/pyams_content/shared/common/zmi/workflow.py:870
+msgid ""
+"You must confirm that you previewed and checked this content before "
+"requesting publication!!"
+msgstr ""
+"Vous devez avoir prévisualisé et audité ce contenu avant de pouvoir le "
+"publier !!"
+
+#: src/pyams_content/shared/common/zmi/workflow.py:88
+#, python-format
+msgid "{state} | by {principal}"
+msgstr "{state} | par {principal}"
+
+#: src/pyams_content/shared/common/zmi/workflow.py:873
+msgid ""
+"You must confirm that you checked this content before requesting "
+"publication!!"
+msgstr "Vous devez avoir audité ce contenu avant de pouvoir le publier !!"
+
+#: src/pyams_content/shared/common/zmi/workflow.py:84
+#: src/pyams_content/workflow/__init__.py:649
+#: src/pyams_content/workflow/__init__.py:620
+#: src/pyams_content/workflow/basic.py:316
+#: src/pyams_content/workflow/basic.py:287
+#, python-format
+msgid "{state} {date}"
+msgstr "{state} {date}"
+
+#: src/pyams_content/shared/common/zmi/reverse.py:57
+msgid "Reverse links"
+msgstr "Liens amont"
+
+#: src/pyams_content/shared/common/zmi/reverse.py:66
+msgid "Content's internal links"
+msgstr "Autres contenus qui pointent vers ce contenu"
+
+#: src/pyams_content/shared/common/zmi/summary.py:51
+msgid "Display content summary"
+msgstr "Récapitulatif pour ce contenu"
+
+#: src/pyams_content/shared/common/zmi/summary.py:75
+msgid "Identity card"
+msgstr "Carte d'identité"
+
+#: src/pyams_content/shared/common/zmi/summary.py:93
+msgid "Requested action"
+msgstr "Évolution demandée"
+
+#: src/pyams_content/shared/common/zmi/summary.py:134
+msgid "Publication and retire dates"
+msgstr "Dates de publication et de retrait planifiées"
+
+#: src/pyams_content/shared/common/zmi/summary.py:153
+msgid "Current version"
+msgstr "À propos de cette version"
+
+#: src/pyams_content/shared/common/zmi/summary.py:183
+msgid "Content history"
+msgstr "Pour mémoire"
+
+#: src/pyams_content/shared/common/zmi/summary.py:124
+msgid "Associated comment"
+msgstr "Commentaire associé"
+
+#: src/pyams_content/shared/common/zmi/summary.py:114
+#, python-format
+msgid "{state} {date} by {principal}"
+msgstr "{state} {date} par {principal}"
+
+#: src/pyams_content/shared/common/zmi/summary.py:171
+#, python-format
+msgid "{state} since {date}, by {principal}"
+msgstr "{state} depuis {date} par {principal}"
+
+#: src/pyams_content/shared/common/zmi/templates/wf-owner-warning.pt:1
+msgid ""
+"RECALL: you are not the owner of the content on which you are intervening."
+msgstr ""
+"ATTENTION : vous intervenez sur un contenu dont vous n'êtes pas le "
+"propriétaire."
+
+#: src/pyams_content/shared/common/zmi/templates/wf-duplicate-message.pt:2
+msgid "You are going to duplicate a whole content."
+msgstr ""
+"Vous vous apprêtez à dupliquer une version de ce contenu pour en créer un "
+"nouveau."
+
+#: src/pyams_content/shared/common/zmi/templates/wf-duplicate-message.pt:3
+msgid ""
+"The new copy is going to be created in 'draft' mode, so that you can modify "
+"it before publication."
+msgstr ""
+"Cette copie va être créée en statut 'Brouillon' pour vous permettre de la "
+"préparer."
+
+#: src/pyams_content/shared/common/zmi/templates/wf-duplicate-message.pt:5
+msgid ""
+"A new unique number is also going to be assigned to it. This number will be "
+"shared by all content's versions."
+msgstr ""
+"Un numéro unique lui sera également attribué ; ce numéro sera conservé "
+"pendant toute la vie du contenu, quelle que soit la version."
+
+#: src/pyams_content/shared/common/zmi/templates/header.pt:6
+msgid "Back to previous page"
+msgstr "Revenir à la page précédente"
+
+#: src/pyams_content/shared/common/zmi/templates/header.pt:20
+msgid "by ${owner}"
+msgstr "de ${owner}"
+
+#: src/pyams_content/shared/common/zmi/templates/wf-operator-warning.pt:1
+msgid ""
+"WARNING: this request was made by a contributor which is not the owner of "
+"this content."
+msgstr ""
+"ATTENTION : cette demande est formulée par un contributeur habilité qui "
+"n'est pas le propriétaire."
+
+#: src/pyams_content/shared/common/zmi/templates/wf-propose-message.pt:1
+msgid ""
+"This publication request is going to be transmitted to a content manager."
+msgstr "Cette demande de publication va être soumise à un responsable."
+
+#: src/pyams_content/shared/common/zmi/templates/wf-create-message.pt:2
+msgid ""
+"This new content is going to be created in 'draft' mode, so that you can "
+"complete it before publication."
+msgstr ""
+"Ce nouveau contenu va être créé en statut 'Brouillon' pour vous permettre de "
+"le préparer."
+
+#: src/pyams_content/shared/common/zmi/templates/wf-create-message.pt:4
+msgid ""
+"A unique number is also going to be assigned to it. This number will be "
+"shared by all content's versions."
+msgstr ""
+"Un numéro unique va lui être attribué ; il sera permanent, quelle que soit "
+"la version."
+
+#: src/pyams_content/shared/common/zmi/templates/wf-cancel-propose-message.pt:1
+msgid ""
+"After canceling the request, you will be able to update the content again."
+msgstr "En annulant cette demande, ce contenu pourra à nouveau être modifié."
+
+#: src/pyams_content/shared/common/zmi/templates/wf-clone-message.pt:2
+msgid "You considerate that the currently published must evolve."
+msgstr "Vous considérez que la version actuelle de ce contenu doit évoluer."
+
+#: src/pyams_content/shared/common/zmi/templates/wf-clone-message.pt:3
+msgid ""
+"By creating a new version, you can update it's content without impacting the "
+"currently published one."
+msgstr ""
+"En créant une nouvelle version, vous pourrez apporter des modifications sans "
+"impacter la version actuelle."
+
+#: src/pyams_content/shared/common/zmi/templates/wf-clone-message.pt:5
+msgid ""
+"When the new version will be complete, you will be able to make a new "
+"publication request to replace the currently published version (which will "
+"be archived automatically)."
+msgstr ""
+"Lorsque la nouvelle version sera prête, vous demanderez sa publication (et "
+"la version actuelle sera automatiquement archivée)."
+
+#: src/pyams_content/shared/common/zmi/templates/wf-retiring-message.pt:2
+msgid ""
+"You considerate that the currently published version should no more be "
+"publicly visible."
+msgstr ""
+"Vous considérez que la version actuellement en ligne ne doit plus être "
+"consultable."
+
+#: src/pyams_content/shared/common/zmi/templates/wf-retiring-message.pt:3
+msgid ""
+"WARNING: the content will remain visible until a manager validate the "
+"request."
+msgstr ""
+"ATTENTION : ce contenu restera visible jusqu'à ce qu'un responsable prenne "
+"en charge votre demande."
+
+#: src/pyams_content/shared/common/zmi/templates/wf-archiving-message.pt:2
+msgid "This content is already retired and not visible."
+msgstr "Ce contenu est déjà retiré et n'est plus visible des internautes."
+
+#: src/pyams_content/shared/common/zmi/templates/wf-archiving-message.pt:3
+#: src/pyams_content/shared/common/zmi/templates/wf-archive-message.pt:3
+msgid ""
+"After archiving, it will be backed up but you will not be able to publish it "
+"again except by creating a new version."
+msgstr ""
+"L'archivage permet de conserver une version d'un contenu dans son état "
+"actuel ; il pourra ensuite à nouveau être publié, en créant une nouvelle "
+"version."
+
+#: src/pyams_content/shared/common/zmi/templates/wf-publish-message.pt:2
+msgid ""
+"As a manager, you considerate that this content is complete and can be "
+"published 'as is'."
+msgstr ""
+"En tant que responsable, vous considérez que ce contenu peut être publié en "
+"l'état."
+
+#: src/pyams_content/shared/common/zmi/templates/wf-publish-message.pt:4
+msgid ""
+"This operation will make the content publicly available (except if "
+"restricted access has been set)."
+msgstr ""
+"Cette opération va rendre le contenu visible de tous, sauf si des "
+"restrictions d'accès lui ont été appliquées."
+
+#: src/pyams_content/shared/common/zmi/templates/wf-refuse-propose-message.pt:2
+msgid ""
+"As a content manager, you considerate that this content can't be published "
+"'as is'."
+msgstr ""
+"En tant que responsable, vous considérez que ce contenu ne peut pas être "
+"publié en l'état."
+
+#: src/pyams_content/shared/common/zmi/templates/wf-refuse-propose-message.pt:4
+msgid ""
+"The contributor will be notified of this and will be able to update the "
+"content before doing a new publication request."
+msgstr ""
+"Le contributeur qui vous a sollicité va être notifié de votre refus ; il "
+"pourra modifier ce contenu et effectuer une nouvelle demande de publication."
+
+#: src/pyams_content/shared/common/zmi/templates/wf-archive-message.pt:2
+msgid "As a manager, you considerate that this content must be archived."
+msgstr ""
+"En tant que responsable, vous considérez que ce contenu doit être archivé."
+
+#: src/pyams_content/shared/common/zmi/templates/wf-cancel-archiving-message.pt:1
+msgid ""
+"After cancelling this request, the content will return to it's previous "
+"retired state."
+msgstr "En annulant cette demande, ce contenu va retourner en statut 'Retiré'."
+
+#: src/pyams_content/shared/common/zmi/templates/wf-retire-message.pt:2
+msgid ""
+"As a content manager, you considerate that this content should no longer be "
+"published."
+msgstr ""
+"En tant que responsable, vous considérez que ce contenu ne doit plus être "
+"publié."
+
+#: src/pyams_content/shared/common/zmi/templates/wf-retire-message.pt:4
+msgid ""
+"Retired content won't be visible anymore, but it can be updated and "
+"published again, or archived."
+msgstr ""
+"Après ce retrait, il ne sera plus visible des internautes. Il pourra par "
+"contre être publié à nouveau, archivé, ou modifié en créant une nouvelle "
+"version."
+
+#: src/pyams_content/shared/common/zmi/templates/wf-cancel-retiring-message.pt:1
+msgid ""
+"After cancelling this request, the content will return to it's normal "
+"published state."
+msgstr "En annulant cette demande, ce contenu va retourner en statut 'Publié'."
+
+#: src/pyams_content/shared/common/zmi/templates/wf-transition-info.pt:2
+msgid "FOR YOUR INFORMATION"
+msgstr "POUR VOTRE INFORMATION"
+
+#: src/pyams_content/shared/common/zmi/templates/wf-transition-info.pt:5
+msgid "Next step"
+msgstr "Étape suivante"
+
+#: src/pyams_content/shared/common/zmi/templates/wf-transition-info.pt:7
+msgid "Previous step"
+msgstr "Étape précédente"
+
+#: src/pyams_content/shared/common/zmi/templates/wf-transition-info.pt:10
+msgid "With this comment:"
+msgstr "Avec ce commentaire :"
+
+#: src/pyams_content/shared/common/zmi/templates/wf-delete-message.pt:2
+msgid ""
+"This content was never published. If you confirm deletion, it won't be "
+"possible to restore it."
+msgstr ""
+"Ce contenu n'a jamais été publié. Une fois supprimé, il ne pourra pas être "
+"récupéré."
+
+#: src/pyams_content/shared/common/zmi/templates/wf-delete-message.pt:6
+msgid ""
+"The content version is going to be definitely deleted. Will only remain the "
+"currently published version."
+msgstr ""
+"Cette version va être définitivement supprimée, pour revenir à la version "
+"précédente."
+
+#: src/pyams_content/shared/news/interfaces/__init__.py:29
+msgid "News topic"
+msgstr "Actualité"
+
+#: src/pyams_content/shared/news/zmi/__init__.py:44
+msgid "This news topic"
+msgstr "Cette actualité"
+
+#: src/pyams_content/shared/news/zmi/__init__.py:63
+#: src/pyams_content/shared/news/zmi/__init__.py:74
+msgid "Add news topic"
+msgstr "Ajouter une actualité"
+
+#: src/pyams_content/shared/news/zmi/__init__.py:54
+#, python-format
+msgid "News topic « {title} »"
+msgstr "Actualité « {title} »"
+
+#: src/pyams_content/shared/site/manager.py:66
+#: src/pyams_content/shared/site/zmi/manager.py:121
+msgid "Site manager"
+msgstr "Site"
+
+#: src/pyams_content/shared/site/folder.py:56
+msgid "Site folder"
+msgstr "Rubrique"
+
+#: src/pyams_content/shared/site/link.py:43
+msgid "Content link"
+msgstr "Contenu lié"
+
+#: src/pyams_content/shared/site/interfaces/__init__.py:133
+msgid "Site topic"
+msgstr "Article (dans un site)"
+
+#: src/pyams_content/shared/site/interfaces/__init__.py:38
+msgid "Redirect to first visible sub-folder or content"
+msgstr "Re-diriger vers le premier contenu publié"
+
+#: src/pyams_content/shared/site/interfaces/__init__.py:39
+msgid "Use presentation template"
+msgstr "Afficher le modèle de présentation de la rubrique"
+
+#: src/pyams_content/shared/site/interfaces/__init__.py:68
+msgid "Heading"
+msgstr "Chapô"
+
+#: src/pyams_content/shared/site/interfaces/__init__.py:69
+msgid "Heading displayed according to presentation template"
+msgstr ""
+"Ce chapô pourra être affiché ou non en fonction du modèle de présentation "
+"retenu"
+
+#: src/pyams_content/shared/site/interfaces/__init__.py:73
+msgid ""
+"The folder'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; "
+"if description is empty, content's header will be used."
+msgstr ""
+"La méta-description de la rubrique 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 ; si la description n'est pas renseignée, le chapô "
+"(s'il existe pour ce contenu) sera utilisé."
+
+#: src/pyams_content/shared/site/interfaces/__init__.py:82
+msgid "Visible in folders list"
+msgstr "Visible dans la liste des rubriques ?"
+
+#: src/pyams_content/shared/site/interfaces/__init__.py:83
+msgid "If 'no', folder will not be displayed into folders list"
+msgstr ""
+"Si 'non', cette rubrique ne sera pas affichée dans la liste des rubriques "
+"affichée par un composant de navigation"
+
+#: src/pyams_content/shared/site/interfaces/__init__.py:87
+#: src/pyams_content/shared/site/interfaces/__init__.py:151
+msgid "Navigation title"
+msgstr "Titre de navigation"
+
+#: src/pyams_content/shared/site/interfaces/__init__.py:88
+msgid ""
+"Folder's title displayed in navigation pages; original title will be used if "
+"none is specified"
+msgstr ""
+"Titre de substitution affiché dans les composants de navigation ; si rien "
+"n'est indiqué, le titre original de la rubrique sera utilisé"
+
+#: src/pyams_content/shared/site/interfaces/__init__.py:92
+msgid "Navigation mode"
+msgstr "Mode de navigation"
+
+#: src/pyams_content/shared/site/interfaces/__init__.py:93
+msgid "Folder behaviour when navigating to folder URL"
+msgstr "Comportement à adopter lorsqu'un internaute accède à cette rubrique"
+
+#: src/pyams_content/shared/site/interfaces/__init__.py:118
+msgid ""
+"The site'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; "
+"if description is empty, content's header will be used."
+msgstr ""
+"La méta-description du site 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 ; si la description n'est pas renseignée, le chapô "
+"(s'il existe pour ce contenu) sera utilisé."
+
+#: src/pyams_content/shared/site/interfaces/__init__.py:152
+msgid ""
+"Alternate content's title displayed in navigation pages; original title will "
+"be used if none is specified"
+msgstr ""
+"Libellé utilisé en lieu et place du titre dans les composants de navigation "
+"(notamment dans les pages carrefour) ; si rien n'est indiqué, le titre "
+"original du contenu référencé sera utilisé"
+
+#: src/pyams_content/shared/site/interfaces/__init__.py:157
+msgid "If 'no', link is not visible"
+msgstr ""
+"Si 'non', le lien ne sera pas visible même si le contenu référencé est publié"
+
+#: src/pyams_content/shared/site/zmi/container.py:308
+#: src/pyams_content/shared/site/zmi/container.py:154
+msgid "Visible element?"
+msgstr "Élément visible ?"
+
+#: src/pyams_content/shared/site/zmi/container.py:309
+msgid "Switch element visibility"
+msgstr "Cliquez pour rendre l'élément visible ou non"
+
+#: src/pyams_content/shared/site/zmi/container.py:371
+msgid "Folders and topics"
+msgstr "Rubriquage"
+
+#: src/pyams_content/shared/site/zmi/container.py:503
+msgid "Delete site item"
+msgstr "Supprimer ce contenu"
+
+#: src/pyams_content/shared/site/zmi/container.py:380
+msgid "Click to open/close all folders"
+msgstr "Afficher/masquer toutes les rubriques"
+
+#: src/pyams_content/shared/site/zmi/container.py:396
+msgid "Click to show/hide inner folders"
+msgstr "Cliquer pour afficher ou cache les sous-niveaux"
+
+#: src/pyams_content/shared/site/zmi/container.py:265
+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 "
+"contenus ! Rechargement de la page..."
+
+#: src/pyams_content/shared/site/zmi/manager.py:53
+msgid "Site management"
+msgstr "Gérer ce site"
+
+#: src/pyams_content/shared/site/zmi/manager.py:108
+#: src/pyams_content/shared/site/zmi/manager.py:122
+msgid "Add site manager"
+msgstr "Ajouter un site"
+
+#: src/pyams_content/shared/site/zmi/manager.py:150
+#: src/pyams_content/shared/site/zmi/folder.py:185
+msgid "Site folder properties"
+msgstr "Propriétés de la rubrique"
+
+#: src/pyams_content/shared/site/zmi/manager.py:167
+msgid "Specified site manager name is already used!"
+msgstr "Le nom indiqué pour ce site existe déjà !"
+
+#: src/pyams_content/shared/site/zmi/manager.py:171
+msgid "A site manager is already registered with this name!!"
+msgstr "Un site est déjà inscrit dans le registre avec ce nom !"
+
+#: src/pyams_content/shared/site/zmi/folder.py:57
+msgid "Add site folder..."
+msgstr "Ajouter une rubrique"
+
+#: src/pyams_content/shared/site/zmi/folder.py:89
+msgid "Add site folder"
+msgstr "Ajout d'une rubrique"
+
+#: src/pyams_content/shared/site/zmi/folder.py:156
+msgid "Site folder management"
+msgstr "Gérer cette rubrique"
+
+#: src/pyams_content/shared/site/zmi/folder.py:203
+msgid "Navigation properties"
+msgstr "Propriétés de navigation"
+
+#: src/pyams_content/shared/site/zmi/folder.py:70
+#: src/pyams_content/shared/site/zmi/link.py:65
+#: src/pyams_content/shared/site/zmi/__init__.py:60
+msgid "Parent"
+msgstr "Niveau parent"
+
+#: src/pyams_content/shared/site/zmi/folder.py:71
+#: src/pyams_content/shared/site/zmi/link.py:66
+msgid "Folder's parent"
+msgstr "Niveau de rattachement de cette rubrique"
+
+#: src/pyams_content/shared/site/zmi/folder.py:149
+msgid "You must provide a folder name for default server language!"
+msgstr ""
+"Vous devez fournir un nom pour ce dossier pour la langue par défaut du "
+"serveur !"
+
+#: src/pyams_content/shared/site/zmi/link.py:56
+msgid "Rent content..."
+msgstr "Lier un contenu"
+
+#: src/pyams_content/shared/site/zmi/link.py:76
+msgid "Rent existing content"
+msgstr "Lier un contenu existant"
+
+#: src/pyams_content/shared/site/zmi/link.py:134
+msgid "Edit content link properties"
+msgstr "Propriétés du lien"
+
+#: src/pyams_content/shared/site/zmi/__init__.py:51
+msgid "Add topic..."
+msgstr "Ajouter un article"
+
+#: src/pyams_content/shared/site/zmi/__init__.py:74
+#: src/pyams_content/shared/topic/zmi/__init__.py:57
+#: src/pyams_content/shared/topic/zmi/__init__.py:68
+msgid "Add topic"
+msgstr "Ajout d'un article"
+
+#: src/pyams_content/shared/site/zmi/__init__.py:61
+msgid "Topic's parent"
+msgstr "Niveau parent"
+
+#: src/pyams_content/shared/topic/interfaces/__init__.py:23
+msgid "Topic"
+msgstr "Article"
+
+#: src/pyams_content/shared/topic/zmi/__init__.py:38
+msgid "This topic"
+msgstr "Cet article"
+
+#: src/pyams_content/shared/topic/zmi/__init__.py:48
+#, python-format
+msgid "Topic « {title} »"
+msgstr "Article « {title} »"
+
+#: src/pyams_content/shared/imagemap/__init__.py:152
+msgid "no area defined"
+msgstr "aucune zone définie"
+
#: src/pyams_content/shared/imagemap/paragraph.py:88
msgid "no selected image map"
msgstr "aucune image cliquable sélectionnée"
@@ -4031,96 +5441,16 @@
msgid "image map '{0}' is not published"
msgstr "l'image cliquable '{0}' n'est pas publiée"
-#: src/pyams_content/shared/imagemap/__init__.py:154
-msgid "no area defined"
-msgstr "aucune zone définie"
-
-#: src/pyams_content/shared/imagemap/zmi/paragraph.py:55
-msgid "Image map..."
-msgstr "Image cliquable"
-
-#: src/pyams_content/shared/imagemap/zmi/paragraph.py:68
-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:94
-msgid "Edit paragraph properties"
-msgstr "Propriétés de l'image cliquable"
-
-#: src/pyams_content/shared/imagemap/zmi/properties.py:40
-msgid "Background image"
-msgstr "Image de fond"
-
-#: src/pyams_content/shared/imagemap/zmi/__init__.py:44
-msgid "This image map"
-msgstr "Cette image"
-
-#: src/pyams_content/shared/imagemap/zmi/__init__.py:63
-msgid "Add image map"
-msgstr "Ajouter une image"
-
-#: src/pyams_content/shared/imagemap/zmi/__init__.py:73
-msgid "Adding image map"
-msgstr "Ajout d'une image"
-
-#: src/pyams_content/shared/imagemap/zmi/__init__.py:54
-#, python-format
-msgid "Image map « {title} »"
-msgstr "Article de blog « {title} »"
-
-#: src/pyams_content/shared/imagemap/zmi/container.py:54
-msgid "Image areas"
-msgstr "Zones de l'image"
-
-#: src/pyams_content/shared/imagemap/zmi/container.py:65
-#: src/pyams_content/shared/imagemap/interfaces/__init__.py:71
-msgid "Image map areas"
-msgstr "Zones cliquables de l'image"
-
-#: src/pyams_content/shared/imagemap/zmi/container.py:140
-#: src/pyams_content/shared/imagemap/interfaces/__init__.py:50
-msgid "Link target"
-msgstr "Cible du lien"
-
-#: 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:115
-msgid "No currently defined area."
-msgstr "Aucune zone cliquable n'est actuellement définie."
-
-#: src/pyams_content/shared/imagemap/zmi/container.py:175
-#: src/pyams_content/root/zmi/sites.py:170
-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:186
-msgid "Bad query object_name parameter value!"
-msgstr "Valeur incorrecte du paramètre object_name !"
-
-#: src/pyams_content/shared/imagemap/zmi/area.py:47
-msgid "Add image area"
-msgstr "Ajouter une zone"
-
-#: src/pyams_content/shared/imagemap/zmi/area.py:66
-msgid "Add new image area"
-msgstr "Ajout d'une zone cliquable"
-
-#: src/pyams_content/shared/imagemap/zmi/area.py:107
-msgid "Edit image map properties"
-msgstr "Propriétés de l'image"
-
#: src/pyams_content/shared/imagemap/interfaces/__init__.py:36
#: src/pyams_content/shared/imagemap/interfaces/__init__.py:89
msgid "Image map"
msgstr "Image cliquable"
+#: src/pyams_content/shared/imagemap/interfaces/__init__.py:50
+#: src/pyams_content/shared/imagemap/zmi/container.py:140
+msgid "Link target"
+msgstr "Cible du lien"
+
#: src/pyams_content/shared/imagemap/interfaces/__init__.py:51
msgid "Internal or external link associated with this map area"
msgstr "Lien interne ou externe associé à cette zone"
@@ -4141,16 +5471,15 @@
msgid "Image supporting map areas"
msgstr "Sélection de l'image qui supportera les zones cliquables"
+#: src/pyams_content/shared/imagemap/interfaces/__init__.py:71
+#: src/pyams_content/shared/imagemap/zmi/container.py:65
+msgid "Image map areas"
+msgstr "Zones cliquables de l'image"
+
#: src/pyams_content/shared/imagemap/interfaces/__init__.py:72
msgid "List of defined map areas"
msgstr "Liste des zones cliquables définies sur l'image"
-#: src/pyams_content/shared/imagemap/interfaces/__init__.py:96
-#: src/pyams_content/features/alert/interfaces.py:69
-#: src/pyams_content/features/menu/interfaces/__init__.py:68
-msgid "Internal reference"
-msgstr "Référence interne"
-
#: src/pyams_content/shared/imagemap/interfaces/__init__.py:97
msgid "Reference to image map object"
msgstr ""
@@ -4161,230 +5490,79 @@
msgid "Image map template"
msgstr "Mode de rendu"
-#: src/pyams_content/shared/site/folder.py:62
-msgid "Site folder"
-msgstr "Rubrique"
-
-#: src/pyams_content/shared/site/link.py:49
-msgid "Content link"
-msgstr "Contenu lié"
-
-#: src/pyams_content/shared/site/manager.py:68
-#: src/pyams_content/shared/site/zmi/manager.py:125
-msgid "Site manager"
-msgstr "Site"
-
-#: src/pyams_content/shared/site/zmi/folder.py:62
-msgid "Add site folder..."
-msgstr "Ajouter une rubrique"
-
-#: src/pyams_content/shared/site/zmi/folder.py:94
-msgid "Add site folder"
-msgstr "Ajout d'une rubrique"
-
-#: src/pyams_content/shared/site/zmi/folder.py:161
-msgid "Site folder management"
-msgstr "Gérer cette rubrique"
-
-#: src/pyams_content/shared/site/zmi/folder.py:190
-msgid "Site folder properties"
-msgstr "Propriétés de la rubrique"
-
-#: src/pyams_content/shared/site/zmi/folder.py:208
-msgid "Navigation properties"
-msgstr "Propriétés de navigation"
-
-#: src/pyams_content/shared/site/zmi/folder.py:72
-#: src/pyams_content/interfaces/__init__.py:102
-msgid "Visible label used to display content"
-msgstr "Le titre présenté aux internautes"
-
-#: src/pyams_content/shared/site/zmi/folder.py:75
-#: src/pyams_content/shared/site/zmi/__init__.py:72
-#: src/pyams_content/shared/site/zmi/link.py:65
-msgid "Parent"
-msgstr "Niveau parent"
-
-#: src/pyams_content/shared/site/zmi/folder.py:76
-#: src/pyams_content/shared/site/zmi/link.py:66
-msgid "Folder's parent"
-msgstr "Niveau de rattachement de cette rubrique"
-
-#: src/pyams_content/shared/site/zmi/folder.py:154
-msgid "You must provide a folder name for default server language!"
-msgstr ""
-"Vous devez fournir un nom pour ce dossier pour la langue par défaut du "
-"serveur !"
-
-#: src/pyams_content/shared/site/zmi/__init__.py:55
-msgid "This topic"
-msgstr "Cet article"
-
-#: src/pyams_content/shared/site/zmi/__init__.py:63
-msgid "Add topic..."
-msgstr "Ajouter un article"
-
-#: src/pyams_content/shared/site/zmi/__init__.py:86
-msgid "Add topic"
-msgstr "Ajout d'un article"
-
-#: src/pyams_content/shared/site/zmi/__init__.py:73
-msgid "Topic's parent"
-msgstr "Niveau parent"
-
-#: src/pyams_content/shared/site/zmi/link.py:56
-msgid "Rent content..."
-msgstr "Lier un contenu"
-
-#: src/pyams_content/shared/site/zmi/link.py:76
-msgid "Rent existing content"
-msgstr "Lier un contenu existant"
-
-#: src/pyams_content/shared/site/zmi/link.py:134
-msgid "Edit content link properties"
-msgstr "Propriétés du lien"
-
-#: src/pyams_content/shared/site/zmi/container.py:106
-#: src/pyams_content/shared/site/zmi/container.py:118
-#: src/pyams_content/shared/blog/zmi/manager.py:155
-#: src/pyams_content/shared/blog/zmi/manager.py:167
-msgid "Publication dates..."
-msgstr "Dates de publication"
-
-#: src/pyams_content/shared/site/zmi/container.py:132
-#: src/pyams_content/shared/blog/zmi/manager.py:181
-msgid "Update publication dates"
-msgstr "Dates de publication"
-
-#: src/pyams_content/shared/site/zmi/container.py:178
-#: src/pyams_content/shared/site/zmi/container.py:188
-#: src/pyams_content/root/zmi/sites.py:68
-msgid "Site tree"
-msgstr "Arborescence du site"
-
-#: src/pyams_content/shared/site/zmi/container.py:310
-#: src/pyams_content/shared/site/zmi/container.py:156
-msgid "Visible element?"
-msgstr "Élément visible ?"
-
-#: src/pyams_content/shared/site/zmi/container.py:311
-msgid "Switch element visibility"
-msgstr "Cliquez pour rendre l'élément visible ou non"
-
-#: src/pyams_content/shared/site/zmi/container.py:372
-msgid "Folders and topics"
-msgstr "Rubriquage"
-
-#: src/pyams_content/shared/site/zmi/container.py:408
-#: src/pyams_content/root/zmi/__init__.py:825
-msgid "Content"
-msgstr "Contenu"
-
-#: src/pyams_content/shared/site/zmi/container.py:504
-msgid "Delete site item"
-msgstr "Supprimer ce contenu"
-
-#: src/pyams_content/shared/site/zmi/container.py:381
-msgid "Click to open/close all folders"
-msgstr "Afficher/masquer toutes les rubriques"
-
-#: src/pyams_content/shared/site/zmi/container.py:397
-msgid "Click to show/hide inner folders"
-msgstr "Cliquer pour afficher ou cache les sous-niveaux"
-
-#: src/pyams_content/shared/site/zmi/container.py:267
-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 "
-"contenus ! Rechargement de la page..."
-
-#: src/pyams_content/shared/site/zmi/manager.py:57
-msgid "Site management"
-msgstr "Gérer ce site"
-
-#: src/pyams_content/shared/site/zmi/manager.py:112
-#: src/pyams_content/shared/site/zmi/manager.py:126
-msgid "Add site manager"
-msgstr "Ajouter un site"
-
-#: src/pyams_content/shared/site/zmi/manager.py:156
-#: src/pyams_content/shared/blog/zmi/manager.py:127
-msgid "You must provide a short name for default server language!"
-msgstr "Vous devez fournir un nom court pour la langue par défaut du serveur !"
-
-#: src/pyams_content/shared/site/zmi/manager.py:160
-msgid "Specified site manager name is already used!"
-msgstr "Le nom indiqué pour ce site existe déjà !"
-
-#: src/pyams_content/shared/site/zmi/manager.py:164
-msgid "A site manager is already registered with this name!!"
-msgstr "Un site est déjà inscrit dans le registre avec ce nom !"
-
-#: src/pyams_content/shared/site/interfaces/__init__.py:121
-msgid "Topic"
-msgstr "Article"
-
-#: src/pyams_content/shared/site/interfaces/__init__.py:42
-msgid "Redirect to first visible sub-folder or content"
-msgstr "Re-diriger vers le premier contenu publié"
-
-#: src/pyams_content/shared/site/interfaces/__init__.py:43
-msgid "Use presentation template"
-msgstr "Afficher le modèle de présentation de la rubrique"
-
-#: src/pyams_content/shared/site/interfaces/__init__.py:72
-msgid "Heading"
-msgstr "Chapô"
-
-#: src/pyams_content/shared/site/interfaces/__init__.py:73
-msgid "Heading displayed according to presentation template"
-msgstr ""
-"Ce chapô pourra être affiché ou non en fonction du modèle de présentation "
-"retenu"
-
-#: src/pyams_content/shared/site/interfaces/__init__.py:80
-msgid "Visible in folders list"
-msgstr "Visible dans la liste des rubriques ?"
-
-#: src/pyams_content/shared/site/interfaces/__init__.py:81
-msgid "If 'no', folder will not be displayed into folders list"
-msgstr ""
-"Si 'non', cette rubrique ne sera pas affichée dans la liste des rubriques "
-"affichée par un composant de navigation"
-
-#: src/pyams_content/shared/site/interfaces/__init__.py:85
-#: src/pyams_content/shared/site/interfaces/__init__.py:139
-msgid "Navigation title"
-msgstr "Titre de navigation"
-
-#: src/pyams_content/shared/site/interfaces/__init__.py:86
-msgid ""
-"Folder's title displayed in navigation pages; original title will be used if "
-"none is specified"
-msgstr ""
-"Titre de substitution affiché dans les composants de navigation ; si rien "
-"n'est indiqué, le titre original de la rubrique sera utilisé"
-
-#: src/pyams_content/shared/site/interfaces/__init__.py:90
-msgid "Navigation mode"
-msgstr "Mode de navigation"
-
-#: src/pyams_content/shared/site/interfaces/__init__.py:91
-msgid "Folder behaviour when navigating to folder URL"
-msgstr "Comportement à adopter lorsqu'un internaute accède à cette rubrique"
-
-#: src/pyams_content/shared/site/interfaces/__init__.py:140
-msgid ""
-"Alternate content's title displayed in navigation pages; original title will "
-"be used if none is specified"
-msgstr ""
-"Titre de substitution affiché dans les composants de navigation ; si rien "
-"n'est indiqué, le titre original du contenu référencé sera utilisé"
-
-#: src/pyams_content/shared/site/interfaces/__init__.py:145
-msgid "If 'no', link is not visible"
-msgstr ""
-"Si 'non', le lien ne sera pas visible même si le contenu référencé est publié"
+#: src/pyams_content/shared/imagemap/zmi/properties.py:40
+msgid "Background image"
+msgstr "Image de fond"
+
+#: src/pyams_content/shared/imagemap/zmi/container.py:54
+msgid "Image areas"
+msgstr "Zones de l'image"
+
+#: 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:115
+msgid "No currently defined area."
+msgstr "Aucune zone cliquable n'est actuellement définie."
+
+#: 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:186
+msgid "Bad query object_name parameter value!"
+msgstr "Valeur incorrecte du paramètre object_name !"
+
+#: src/pyams_content/shared/imagemap/zmi/area.py:47
+msgid "Add image area"
+msgstr "Ajouter une zone"
+
+#: src/pyams_content/shared/imagemap/zmi/area.py:66
+msgid "Add new image area"
+msgstr "Ajout d'une zone cliquable"
+
+#: src/pyams_content/shared/imagemap/zmi/area.py:107
+msgid "Edit image map properties"
+msgstr "Propriétés de l'image"
+
+#: src/pyams_content/shared/imagemap/zmi/__init__.py:44
+msgid "This image map"
+msgstr "Cette image"
+
+#: src/pyams_content/shared/imagemap/zmi/__init__.py:63
+msgid "Add image map"
+msgstr "Ajouter une image"
+
+#: src/pyams_content/shared/imagemap/zmi/__init__.py:73
+msgid "Adding image map"
+msgstr "Ajout d'une image"
+
+#: src/pyams_content/shared/imagemap/zmi/__init__.py:54
+#, python-format
+msgid "Image map « {title} »"
+msgstr "Article de blog « {title} »"
+
+#: src/pyams_content/shared/imagemap/zmi/paragraph.py:55
+msgid "Image map..."
+msgstr "Image cliquable"
+
+#: src/pyams_content/shared/imagemap/zmi/paragraph.py:68
+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:94
+msgid "Edit paragraph properties"
+msgstr "Propriétés de l'image cliquable"
+
+#: src/pyams_content/shared/logo/__init__.py:73
+msgid "no image defined"
+msgstr "aucune image définie"
+
+#: src/pyams_content/shared/logo/__init__.py:76
+msgid "no URL defined"
+msgstr "aucune URL définie"
#: src/pyams_content/shared/logo/paragraph.py:95
msgid "no selected logo"
@@ -4400,25 +5578,55 @@
msgid "logo '{0}' is not published"
msgstr "le logo '{0}' n'est pas publié"
-#: src/pyams_content/shared/logo/__init__.py:69
-msgid "no image defined"
-msgstr "aucune image définie"
-
-#: src/pyams_content/shared/logo/__init__.py:72
-msgid "no URL defined"
-msgstr "aucune URL définie"
-
-#: src/pyams_content/shared/logo/zmi/paragraph.py:55
-msgid "Logos..."
+#: src/pyams_content/shared/logo/interfaces/__init__.py:32
+msgid "Logo"
+msgstr "Logo"
+
+#: src/pyams_content/shared/logo/interfaces/__init__.py:77
+msgid "Logos"
msgstr "Logos"
-#: src/pyams_content/shared/logo/zmi/paragraph.py:68
-msgid "Add new logos paragraph"
-msgstr "Ajout d'une sélection de logos"
-
-#: src/pyams_content/shared/logo/zmi/properties.py:40
+#: src/pyams_content/shared/logo/interfaces/__init__.py:47
+msgid "Full name of logo organization"
+msgstr "Nom complet de l'organisme associé au logo"
+
+#: src/pyams_content/shared/logo/interfaces/__init__.py:50
+msgid "Acronym"
+msgstr "Acronyme"
+
+#: src/pyams_content/shared/logo/interfaces/__init__.py:51
+msgid "Matching logo acronym, without spaces or separators"
+msgstr "Acronyme de l'organisme, sans espace ni séparateur entre les lettres"
+
+#: src/pyams_content/shared/logo/interfaces/__init__.py:58
+msgid "Image (colored)"
+msgstr "Image (version couleur)"
+
+#: src/pyams_content/shared/logo/interfaces/__init__.py:62
+msgid "Image (monochrome)"
+msgstr "Image (version noir et blanc)"
+
+#: src/pyams_content/shared/logo/interfaces/__init__.py:63
+msgid "An alternate image which can be used by some presentation templates"
+msgstr ""
+"Image de substitution monochrome pouvant être utilisée par certains modes de "
+"rendu"
+
+#: src/pyams_content/shared/logo/interfaces/__init__.py:84
+msgid "Logos references"
+msgstr "Logos sélectionnés"
+
+#: src/pyams_content/shared/logo/interfaces/__init__.py:85
+msgid "List of internal logos references"
+msgstr "Liste de références internes vers les logos à afficher"
+
+#: src/pyams_content/shared/logo/interfaces/__init__.py:88
+msgid "Logos template"
+msgstr "Mode de rendu"
+
+#: src/pyams_content/shared/logo/zmi/properties.py:65
msgid "Main logo settings"
-msgstr "Propriétés du logo"
+msgstr "Autres propriétés"
#: src/pyams_content/shared/logo/zmi/__init__.py:45
msgid "This logo"
@@ -4434,156 +5642,18 @@
msgid "Logo « {title} »"
msgstr "Logo « {title} »"
-#: src/pyams_content/shared/logo/interfaces/__init__.py:33
-msgid "Logo"
-msgstr "Logo"
-
-#: src/pyams_content/shared/logo/interfaces/__init__.py:70
-msgid "Logos"
+#: src/pyams_content/shared/logo/zmi/paragraph.py:55
+msgid "Logos..."
msgstr "Logos"
-#: src/pyams_content/shared/logo/interfaces/__init__.py:47
-msgid "Image (colored)"
-msgstr "Image (version couleur)"
-
-#: src/pyams_content/shared/logo/interfaces/__init__.py:51
-msgid "Image (monochrome)"
-msgstr "Image (version noir et blanc)"
-
-#: src/pyams_content/shared/logo/interfaces/__init__.py:52
-msgid "An alternate image which can be used by some presentation templates"
-msgstr ""
-"Image de substitution monochrome pouvant être utilisée par certains modes de "
-"rendu"
-
-#: src/pyams_content/shared/logo/interfaces/__init__.py:77
-msgid "Logos references"
-msgstr "Logos sélectionnés"
-
-#: src/pyams_content/shared/logo/interfaces/__init__.py:78
-msgid "List of internal logos references"
-msgstr "Liste de références internes vers les logos à afficher"
-
-#: src/pyams_content/shared/logo/interfaces/__init__.py:81
-msgid "Logos template"
-msgstr "Mode de rendu"
-
-#: src/pyams_content/shared/blog/zmi/__init__.py:53
-msgid "This blog post"
-msgstr "Cet article"
-
-#: src/pyams_content/shared/blog/zmi/__init__.py:72
-#: src/pyams_content/shared/blog/zmi/__init__.py:82
-msgid "Add blog post"
-msgstr "Ajouter un article"
-
-#: src/pyams_content/shared/blog/zmi/__init__.py:63
-#, python-format
-msgid "Blog post « {title} »"
-msgstr "Article de blog « {title} »"
-
-#: src/pyams_content/shared/blog/zmi/manager.py:60
-msgid "Blog management"
-msgstr "Gérer ce blog"
-
-#: src/pyams_content/shared/blog/zmi/manager.py:83
-#: src/pyams_content/shared/blog/zmi/manager.py:97
-msgid "Add blog manager"
-msgstr "Ajouter un blog"
-
-#: src/pyams_content/shared/blog/zmi/manager.py:96
-msgid "Blog manager"
-msgstr "Blog"
-
-#: src/pyams_content/shared/blog/zmi/manager.py:131
-msgid "Specified blog manager name is already used!"
-msgstr "Le nom indiqué pour ce blog existe déjà !"
-
-#: src/pyams_content/shared/blog/zmi/manager.py:135
-msgid "A blog manager is already registered with this name!!"
-msgstr "Un blog est déjà inscrit dans le registre avec ce nom !"
-
-#: src/pyams_content/shared/blog/interfaces/__init__.py:33
-msgid "Blog post"
-msgstr "Article de blog"
-
-#: src/pyams_content/profile/zmi/__init__.py:42
-msgid "Admin. profile"
-msgstr "Profil intervenant"
-
-#: src/pyams_content/profile/interfaces/__init__.py:33
-msgid "User favorites"
-msgstr "Favoris de l'utilisateur"
-
-#: src/pyams_content/profile/interfaces/__init__.py:34
-msgid "List of internal numbers of shared contents stored for quick access"
-msgstr "Liste des numéros internes des contenus mémorisés pour un accès rapide"
-
-#: src/pyams_content/profile/interfaces/__init__.py:37
-msgid "Default table length"
-msgstr "Longueur des tableaux"
-
-#: src/pyams_content/profile/interfaces/__init__.py:38
-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/__init__.py:69
-msgid "Site root"
-msgstr "Racine du site"
-
-#: src/pyams_content/root/zmi/sites.py:78
-msgid "Blogs and shared sites"
-msgstr "Blogs et sites partagés"
-
-#: src/pyams_content/root/zmi/sites.py:108
-msgid "Visible site?"
-msgstr "Site visible ?"
-
-#: src/pyams_content/root/zmi/sites.py:133
-msgid "OID"
-msgstr "N° IN"
-
-#: src/pyams_content/root/zmi/sites.py:151
-msgid "Delete shared site"
-msgstr "Supprimer ce site"
-
-#: src/pyams_content/root/zmi/sites.py:179
-msgid "Given element name doesn't exist!"
-msgstr "Le nom de l'élément indiqué n'existe pas !"
-
-#: src/pyams_content/root/zmi/search.py:160
-msgid "Content types"
-msgstr "Types de contenus"
-
-#: src/pyams_content/root/zmi/__init__.py:78
-msgid "Home"
-msgstr "Accueil"
-
-#: src/pyams_content/root/zmi/templates/dashboard.pt:7
-msgid "Your contents dashboard"
-msgstr "Les contenus qui me concernent"
-
-#: src/pyams_content/root/zmi/templates/dashboard.pt:18
-msgid "SEARCH - Between all contents"
-msgstr "RECHERCHE - Tous contenus confondus"
-
-#: src/pyams_content/root/interfaces/__init__.py:39
-msgid "Site managers"
-msgstr "Administrateurs"
-
-#: src/pyams_content/root/interfaces/__init__.py:47
-msgid "Templates managers"
-msgstr "Designers"
-
-#: src/pyams_content/root/interfaces/__init__.py:51
-msgid "Operators group"
-msgstr "Groupe des opérateurs"
-
-#: src/pyams_content/root/interfaces/__init__.py:52
-msgid "Name of group containing all roles owners"
-msgstr ""
-"Tous les utilisateurs auxquels sera attribué un rôle seront placés dans ce "
-"groupe"
+#: src/pyams_content/shared/logo/zmi/paragraph.py:68
+msgid "Add new logos paragraph"
+msgstr "Ajout d'une sélection de logos"
+
+#: src/pyams_content/workflow/task.py:62
+msgid "Automatic contents withdrawal:\n"
+msgstr ""
+"Retrait automatique des contenus après la date de fin de publication :\n"
#: src/pyams_content/workflow/__init__.py:70
#: src/pyams_content/workflow/basic.py:53
@@ -4660,30 +5730,30 @@
msgid "archived"
msgstr "archivé"
-#: src/pyams_content/workflow/__init__.py:279
-#: src/pyams_content/workflow/basic.py:190
+#: src/pyams_content/workflow/__init__.py:280
+#: src/pyams_content/workflow/basic.py:191
msgid "Initialize"
msgstr "Création"
-#: src/pyams_content/workflow/__init__.py:282
-#: src/pyams_content/workflow/basic.py:193
+#: src/pyams_content/workflow/__init__.py:283
+#: src/pyams_content/workflow/basic.py:194
msgid "Draft creation"
msgstr "Création du brouillon"
-#: src/pyams_content/workflow/__init__.py:285
-#: src/pyams_content/workflow/__init__.py:300
+#: src/pyams_content/workflow/__init__.py:286
+#: src/pyams_content/workflow/__init__.py:301
msgid "Propose publication"
msgstr "Demander la publication"
-#: src/pyams_content/workflow/__init__.py:292
-#: src/pyams_content/workflow/__init__.py:307
-msgid "Publication request"
-msgstr "Demande de publication"
-
#: src/pyams_content/workflow/__init__.py:293
#: src/pyams_content/workflow/__init__.py:308
-#: src/pyams_content/workflow/__init__.py:396
-#: src/pyams_content/workflow/__init__.py:443
+msgid "Publication request"
+msgstr "Demande de publication"
+
+#: src/pyams_content/workflow/__init__.py:294
+#: src/pyams_content/workflow/__init__.py:309
+#: src/pyams_content/workflow/__init__.py:397
+#: src/pyams_content/workflow/__init__.py:444
msgid ""
"content managers authorized to take charge of your content are going to be "
"notified of your request."
@@ -4691,206 +5761,206 @@
"les responsables habilités à prendre en charge votre demande vont être "
"sollicités."
-#: src/pyams_content/workflow/__init__.py:296
-#: src/pyams_content/workflow/__init__.py:311
+#: src/pyams_content/workflow/__init__.py:297
+#: src/pyams_content/workflow/__init__.py:312
#, python-format
msgid "submitted a publication request for content « {0} »"
msgstr "a demandé la publication du contenu « {0} »"
-#: src/pyams_content/workflow/__init__.py:323
+#: src/pyams_content/workflow/__init__.py:324
msgid "Publication request canceled"
msgstr "Annulation de la demande de publication"
-#: src/pyams_content/workflow/__init__.py:325
+#: src/pyams_content/workflow/__init__.py:326
#, python-format
msgid "cancelled the publication request for content « {0} »"
msgstr "a annulé la demande de publication du contenu « {0} »"
-#: src/pyams_content/workflow/__init__.py:329
+#: src/pyams_content/workflow/__init__.py:330
msgid "Reset canceled publication to draft"
msgstr "Retour automatique en statut 'brouillon'"
-#: src/pyams_content/workflow/__init__.py:333
-#: src/pyams_content/workflow/__init__.py:363
+#: src/pyams_content/workflow/__init__.py:334
+#: src/pyams_content/workflow/__init__.py:364
msgid "State reset to 'draft' (automatic)"
msgstr "Retour automatique en statut 'brouillon'"
-#: src/pyams_content/workflow/__init__.py:337
+#: src/pyams_content/workflow/__init__.py:338
msgid "Reset canceled publication to retired"
msgstr "Retour automatique en statut 'retiré'"
-#: src/pyams_content/workflow/__init__.py:341
+#: src/pyams_content/workflow/__init__.py:342
msgid "State reset to 'retired' (automatic)"
msgstr "Retour automatique en statut 'retiré'"
-#: src/pyams_content/workflow/__init__.py:345
+#: src/pyams_content/workflow/__init__.py:346
msgid "Refuse publication"
msgstr "Refuser la publication"
-#: src/pyams_content/workflow/__init__.py:353
+#: src/pyams_content/workflow/__init__.py:354
msgid "Publication refused"
msgstr "Refus de publication"
-#: src/pyams_content/workflow/__init__.py:355
+#: src/pyams_content/workflow/__init__.py:356
#, python-format
msgid "refused the publication request for content « {0} »"
msgstr "a refusé la publication du contenu « {0} »"
-#: src/pyams_content/workflow/__init__.py:359
+#: src/pyams_content/workflow/__init__.py:360
msgid "Reset refused publication to draft"
msgstr "Publication refusée"
-#: src/pyams_content/workflow/__init__.py:367
+#: src/pyams_content/workflow/__init__.py:368
msgid "Reset refused publication to retired"
msgstr "Publication refusée"
-#: src/pyams_content/workflow/__init__.py:371
+#: src/pyams_content/workflow/__init__.py:372
msgid "State reset to 'refused' (automatic)"
msgstr "Retour automatique en status 'refusé'"
-#: src/pyams_content/workflow/__init__.py:383
-#: src/pyams_content/workflow/basic.py:204
+#: src/pyams_content/workflow/__init__.py:384
+#: src/pyams_content/workflow/basic.py:205
msgid "Content published"
msgstr "Publication"
-#: src/pyams_content/workflow/__init__.py:385
-#: src/pyams_content/workflow/basic.py:206
+#: src/pyams_content/workflow/__init__.py:386
+#: src/pyams_content/workflow/basic.py:207
#, python-format
msgid "published the content « {0} »"
msgstr "a publié le contenu « {0} »"
-#: src/pyams_content/workflow/__init__.py:389
+#: src/pyams_content/workflow/__init__.py:390
msgid "Request retiring"
msgstr "Demander le retrait"
-#: src/pyams_content/workflow/__init__.py:395
+#: src/pyams_content/workflow/__init__.py:396
msgid "Retire request"
msgstr "Demande de retrait"
-#: src/pyams_content/workflow/__init__.py:399
+#: src/pyams_content/workflow/__init__.py:400
#, python-format
msgid "submitted a retire request for content « {0} »"
msgstr "a demandé le retrait du contenu « {0} »"
-#: src/pyams_content/workflow/__init__.py:403
+#: src/pyams_content/workflow/__init__.py:404
msgid "Retired content"
msgstr "Contenu retiré"
-#: src/pyams_content/workflow/__init__.py:407
+#: src/pyams_content/workflow/__init__.py:408
msgid "Content retired after passed expiration date"
msgstr "Retrait automatique après la date de fin de publication"
-#: src/pyams_content/workflow/__init__.py:410
+#: src/pyams_content/workflow/__init__.py:411
msgid "Cancel retiring request"
msgstr "Annuler la demande de retrait"
-#: src/pyams_content/workflow/__init__.py:417
+#: src/pyams_content/workflow/__init__.py:418
msgid "Retire request canceled"
msgstr "Annulation de la demande de retrait"
-#: src/pyams_content/workflow/__init__.py:419
+#: src/pyams_content/workflow/__init__.py:420
#, python-format
msgid "cancelled the retiring request for content « {0} »"
msgstr "a annulé la demande de retrait du contenu « {0} »"
-#: src/pyams_content/workflow/__init__.py:423
+#: src/pyams_content/workflow/__init__.py:424
msgid "Retire content"
msgstr "Retirer"
-#: src/pyams_content/workflow/__init__.py:430
+#: src/pyams_content/workflow/__init__.py:431
msgid "Content retired"
msgstr "Retrait"
-#: src/pyams_content/workflow/__init__.py:432
+#: src/pyams_content/workflow/__init__.py:433
#, python-format
msgid "retired content « {0} »"
msgstr "a retiré le contenu « {0} »"
-#: src/pyams_content/workflow/__init__.py:442
+#: src/pyams_content/workflow/__init__.py:443
msgid "Archive request"
msgstr "Demande d'archivage"
-#: src/pyams_content/workflow/__init__.py:446
+#: src/pyams_content/workflow/__init__.py:447
#, python-format
msgid "submitted an archive request for content « {0} »"
msgstr "a demandé l'archivage du contenu « {0} »"
-#: src/pyams_content/workflow/__init__.py:450
+#: src/pyams_content/workflow/__init__.py:451
msgid "Cancel archiving request"
msgstr "Annuler la demande d'archivage"
-#: src/pyams_content/workflow/__init__.py:457
+#: src/pyams_content/workflow/__init__.py:458
msgid "Archive request canceled"
msgstr "Annulation de la demande d'archivage"
-#: src/pyams_content/workflow/__init__.py:459
+#: src/pyams_content/workflow/__init__.py:460
#, python-format
msgid "cancelled the archive request for content « {0} »"
msgstr "a annulé la demande d'archivage du contenu « {0} »"
-#: src/pyams_content/workflow/__init__.py:463
-#: src/pyams_content/workflow/basic.py:210
+#: src/pyams_content/workflow/__init__.py:464
+#: src/pyams_content/workflow/basic.py:211
msgid "Archive content"
msgstr "Archiver"
-#: src/pyams_content/workflow/__init__.py:471
-#: src/pyams_content/workflow/basic.py:218
+#: src/pyams_content/workflow/__init__.py:472
+#: src/pyams_content/workflow/basic.py:219
msgid "Content archived"
msgstr "Archivage"
-#: src/pyams_content/workflow/__init__.py:473
-#: src/pyams_content/workflow/basic.py:220
+#: src/pyams_content/workflow/__init__.py:474
+#: src/pyams_content/workflow/basic.py:221
#, python-format
msgid "archived content « {0} »"
msgstr "a archivé le contenu « {0} »"
-#: src/pyams_content/workflow/__init__.py:477
+#: src/pyams_content/workflow/__init__.py:478
msgid "Archive published content"
msgstr "Archivage automatique d'un contenu publié"
-#: src/pyams_content/workflow/__init__.py:481
-#: src/pyams_content/workflow/__init__.py:489
-#: src/pyams_content/workflow/__init__.py:497
+#: src/pyams_content/workflow/__init__.py:482
+#: src/pyams_content/workflow/__init__.py:490
+#: src/pyams_content/workflow/__init__.py:498
msgid "Content archived after version publication"
msgstr "Archivage automatique après publication"
-#: src/pyams_content/workflow/__init__.py:485
+#: src/pyams_content/workflow/__init__.py:486
msgid "Archive retiring content"
msgstr "Archivage automatique d'un contenu en attente de retrait"
-#: src/pyams_content/workflow/__init__.py:493
+#: src/pyams_content/workflow/__init__.py:494
msgid "Archive retired content"
msgstr "Archivage automatique d'un contenu retiré"
-#: src/pyams_content/workflow/__init__.py:509
-#: src/pyams_content/workflow/__init__.py:521
-#: src/pyams_content/workflow/__init__.py:533
-#: src/pyams_content/workflow/__init__.py:545
-#: src/pyams_content/workflow/__init__.py:557
-#: src/pyams_content/workflow/basic.py:232
-#: src/pyams_content/workflow/basic.py:244
+#: src/pyams_content/workflow/__init__.py:510
+#: src/pyams_content/workflow/__init__.py:522
+#: src/pyams_content/workflow/__init__.py:534
+#: src/pyams_content/workflow/__init__.py:546
+#: src/pyams_content/workflow/__init__.py:558
+#: src/pyams_content/workflow/basic.py:233
+#: src/pyams_content/workflow/basic.py:245
msgid "New version created"
msgstr "Création d'une nouvelle version"
-#: src/pyams_content/workflow/__init__.py:569
-#: src/pyams_content/workflow/basic.py:256
+#: src/pyams_content/workflow/__init__.py:570
+#: src/pyams_content/workflow/basic.py:257
msgid "Version deleted"
msgstr "Version supprimée"
-#: src/pyams_content/workflow/__init__.py:622
-#: src/pyams_content/workflow/__init__.py:644
-#: src/pyams_content/workflow/basic.py:289
-#: src/pyams_content/workflow/basic.py:311
+#: src/pyams_content/workflow/__init__.py:623
+#: src/pyams_content/workflow/__init__.py:645
+#: src/pyams_content/workflow/basic.py:290
+#: src/pyams_content/workflow/basic.py:312
msgid "Unknown state"
msgstr "(statut inconnu)"
-#: src/pyams_content/workflow/__init__.py:646
-#: src/pyams_content/workflow/basic.py:313
+#: src/pyams_content/workflow/__init__.py:647
+#: src/pyams_content/workflow/basic.py:314
msgid "publication refused"
msgstr "publication refusée"
-#: src/pyams_content/workflow/__init__.py:642
-#: src/pyams_content/workflow/basic.py:309
+#: src/pyams_content/workflow/__init__.py:643
+#: src/pyams_content/workflow/basic.py:310
msgid "new version created"
msgstr "nouvelle version en préparation"
@@ -4900,11 +5970,6 @@
msgid "Published version {0}"
msgstr "Version {0} publiée"
-#: src/pyams_content/workflow/task.py:62
-msgid "Automatic contents withdrawal:\n"
-msgstr ""
-"Retrait automatique des contenus après la date de fin de publication :\n"
-
#: src/pyams_content/workflow/zmi/task.py:42
msgid "Add content archiver task..."
msgstr "Ajouter une tâche d'archivage automatique"
@@ -4913,849 +5978,39 @@
msgid "Add automatic content archiver"
msgstr "Ajout d'une tâche d'archivage automatique"
-#: src/pyams_content/skin/zmi/viewlet/toplinks/__init__.py:46
-msgid "Shared sites"
-msgstr "Sites et blogs"
-
-#: src/pyams_content/skin/zmi/viewlet/toplinks/__init__.py:67
-msgid "Shared contents"
-msgstr "Gabarits"
-
-#: src/pyams_content/skin/zmi/viewlet/toplinks/__init__.py:90
-msgid "Shared tools"
-msgstr "Outils"
-
-#: src/pyams_content/skin/zmi/viewlet/toplinks/__init__.py:113
-msgid "My roles"
-msgstr "Mes rôles"
-
-#: src/pyams_content/skin/zmi/viewlet/toplinks/templates/user-addings.pt:7
-msgid "Create new content"
-msgstr "Créer un nouveau contenu"
-
-#: src/pyams_content/interfaces/__init__.py:95
-msgid "Unique key"
-msgstr "Clé unique"
-
-#: src/pyams_content/interfaces/__init__.py:96
-msgid ""
-"WARNING: this key can't be modified after creation!!! Spaces, uppercase "
-"letters ou accentuated characters will be replaced automatically."
-msgstr ""
-"ATTENTION : cette clé ne pourra plus être modifiée après sa création. Les "
-"espaces, les majuscules, les lettres accentuées et les caractères spéciaux "
-"seront remplacées automatiquement."
-
-#: src/pyams_content/interfaces/__init__.py:105
-msgid "Short name"
-msgstr "Fil d'Ariane"
-
-#: src/pyams_content/interfaces/__init__.py:106
-msgid "Short name used in breadcrumbs"
-msgstr "Libellé utilisé dans le fil d'Ariane"
-
-#: src/pyams_content/interfaces/__init__.py:117
-msgid "Modification date"
-msgstr "Dernière modification apportée"
-
-#: src/pyams_content/reference/zmi/table.py:73
-msgid "Contents"
-msgstr "Contenu"
-
-#: src/pyams_content/reference/zmi/table.py:83
-msgid "Table contents"
-msgstr "Contenu de la table"
-
-#: 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:143
-msgid "Properties..."
-msgstr "Propriétés"
-
-#: src/pyams_content/reference/zmi/table.py:157
-msgid "Edit table properties"
-msgstr "Propriétés de la table"
-
-#: src/pyams_content/reference/zmi/table.py:167
-msgid "Table management"
-msgstr "Gérer cette table"
-
-#: src/pyams_content/reference/zmi/__init__.py:51
-msgid "References"
-msgstr "Tables de réf."
-
-#: src/pyams_content/reference/pictograms/zmi/__init__.py:169
-#: src/pyams_content/reference/pictograms/zmi/widget.py:55
-msgid "Default header: --"
-msgstr "En-tête par défaut : --"
-
-#: src/pyams_content/reference/pictograms/zmi/manager.py:51
-msgid "Pictograms selection..."
-msgstr "Sélection de pictogrammes"
-
-#: src/pyams_content/reference/pictograms/zmi/manager.py:63
-#: src/pyams_content/reference/pictograms/zmi/templates/manager-selection.pt:34
-#: src/pyams_content/reference/pictograms/interfaces/__init__.py:73
-msgid "Selected pictograms"
-msgstr "Pictogrammes sélectionnés"
-
-#: src/pyams_content/reference/pictograms/zmi/templates/manager-selection.pt:7
-msgid "Available pictograms"
-msgstr "Pictogrammes disponibles"
-
-#: src/pyams_content/reference/pictograms/zmi/templates/manager-selection.pt:21
-#: src/pyams_content/reference/pictograms/zmi/templates/manager-selection.pt:48
-msgid "Display pictogram properties"
-msgstr "Propriétés du pictogramme"
-
-#: src/pyams_content/reference/pictograms/zmi/templates/pictogram-header.pt:6
-msgid "Default header: ${header}"
-msgstr "En-tête par défaut : ${header}"
-
-#: src/pyams_content/reference/pictograms/interfaces/__init__.py:45
-msgid "Pictogram content"
-msgstr "Utilisez le bouton \"Parcourir\" pour modifier le contenu de l'image"
-
-#. Default: Header
-#: src/pyams_content/reference/pictograms/interfaces/__init__.py:52
-msgid "pictogram-header"
-msgstr "En-tête par défaut"
-
-#: src/pyams_content/reference/pictograms/interfaces/__init__.py:53
-msgid "Default header associated with this pictogram"
-msgstr "En-tête par défaut associé à ce pictogramme"
-
-#: src/pyams_content/reference/pictograms/interfaces/__init__.py:74
-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:71
-#: src/pyams_content/features/renderer/zmi/templates/renderer-input.pt:4
-msgid "Edit renderer properties"
-msgstr "Propriétés de ce mode de rendu"
-
-#: src/pyams_content/features/renderer/skin/__init__.py:71
-msgid "Hidden content"
-msgstr "NON affiché"
-
-#: src/pyams_content/features/checker/interfaces.py:27
-#, python-format
-msgid " - {field}: <span class=\"text-danger\">no value</span>"
-msgstr " - {field} : <span class=\"text-danger\">non renseigné</span>"
-
-#: src/pyams_content/features/checker/interfaces.py:28
-#, python-format
-msgid " - {field} ({lang}): <span class=\"text-danger\">no value</span>"
-msgstr " - {field} ({lang}) : <span class=\"text-danger\">non renseigné</span>"
-
-#: src/pyams_content/features/checker/interfaces.py:29
-#, python-format
-msgid " - {field}: <span class=\"text-danger\">{message}</span>"
-msgstr " - {field} : <span class=\"text-danger\">{message}</span>"
-
-#: src/pyams_content/features/checker/zmi/__init__.py:58
-msgid "Content check"
-msgstr "Audit du contenu"
-
-#: src/pyams_content/features/checker/zmi/__init__.py:82
-msgid "No checker available. This content is clean!"
-msgstr "Pas de vérificateur disponible pour ce contenu."
-
-#: src/pyams_content/features/checker/zmi/__init__.py:78
-#, python-format
-msgid "{0}:"
-msgstr "{0} :"
-
-#: src/pyams_content/features/preview/zmi/__init__.py:62
-msgid "Content preview"
-msgstr "Aperçu du contenu"
-
-#: src/pyams_content/features/preview/zmi/__init__.py:67
-#, python-format
-msgid "{title} ({preview})"
-msgstr "{title} ({preview})"
-
-#: src/pyams_content/features/preview/zmi/__init__.py:68
-msgid "preview"
-msgstr "aperçu"
-
-#: src/pyams_content/features/alert/interfaces.py:39
-msgid "Alert"
-msgstr "Alerte"
-
-#: src/pyams_content/features/alert/interfaces.py:40
-msgid "End of alert"
-msgstr "Levée d'alerte"
-
-#: src/pyams_content/features/alert/interfaces.py:41
-msgid "Information"
-msgstr "Information"
-
-#: src/pyams_content/features/alert/interfaces.py:42
-msgid "Warning"
-msgstr "Avertissement"
-
-#: src/pyams_content/features/alert/interfaces.py:43
-msgid "Recommendation"
-msgstr "Recommandation"
-
-#: src/pyams_content/features/alert/interfaces.py:55
-msgid "Is this alert visible in front-office?"
-msgstr "Si 'non', cette alerte ne sera pas présentée aux internautes"
-
-#: src/pyams_content/features/alert/interfaces.py:59
-msgid "Alert gravity"
-msgstr "Niveau de gravité"
-
-#: src/pyams_content/features/alert/interfaces.py:60
-msgid "Alert gravity will affect rendered alert style"
-msgstr "Le niveau de gravité choisi affectera le style de rendu de l'alerte"
-
-#: src/pyams_content/features/alert/interfaces.py:65
-#: src/pyams_content/features/alert/zmi/container.py:145
-msgid "Message"
-msgstr "Message"
-
-#: src/pyams_content/features/alert/interfaces.py:66
-msgid "Alert message"
-msgstr "Le message d'alerte doit être assez court et explicite"
-
-#: src/pyams_content/features/alert/interfaces.py:70
-msgid ""
-"Internal link target reference. You can search a reference using '+' "
-"followed by internal number, of by entering text matching content title."
-msgstr ""
-"Référence interne vers la cible du lien. Vous pouvez la rechercher par des "
-"mots de son titre, ou par son numéro interne (précédé d'un '+') ; le titre "
-"d'origine peut être modifié en utilisant le titre de substitution."
-
-#: src/pyams_content/features/alert/interfaces.py:75
-msgid "Display start date"
-msgstr "Date d'affichage"
-
-#: src/pyams_content/features/alert/interfaces.py:76
-msgid "First date at which alert should be displayed"
-msgstr ""
-"Première date à laquelle l'alerte sera affichée. Laissez la zone vide pour "
-"qu'elle soit affichée immédiatement."
-
-#: src/pyams_content/features/alert/interfaces.py:79
-msgid "Display end date"
-msgstr "Date de retrait"
-
-#: src/pyams_content/features/alert/interfaces.py:80
-msgid "Last date at which alert should be displayed"
-msgstr ""
-"Dernière date à laquelle l'alerte sera affichée. Laissez la zone vide pour "
-"qu'elle ne soit pas retirée."
-
-#: src/pyams_content/features/alert/interfaces.py:83
-msgid "Maximum interval"
-msgstr "Intervalle d'affichage"
-
-#: src/pyams_content/features/alert/interfaces.py:84
-msgid ""
-"Maximum interval between alert displays on a given device, given in hours; "
-"set to 0 to always display the alert"
-msgstr ""
-"Cet intervalle est donné en heures ; passé ce délai, pour un internaute "
-"donné, l'alerte apparaîtra à nouveau. Si aucun intervalle n'est indiqué, "
-"l'alerte s'affichera en permanence."
-
-#: src/pyams_content/features/alert/zmi/__init__.py:45
-msgid "Add alert"
-msgstr "Ajouter une alerte"
-
-#: 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:79
-msgid "Edit alert properties"
-msgstr "Propriétés de l'alerte"
-
-#: src/pyams_content/features/alert/zmi/container.py:55
-msgid "Alerts"
-msgstr "Alertes"
-
-#: src/pyams_content/features/alert/zmi/container.py:167
-msgid "Alert list"
-msgstr "Liste des alertes"
-
-#: src/pyams_content/features/alert/zmi/container.py:97
-msgid "No currently defined alert."
-msgstr "Aucune alerte n'est définie actuellement."
-
-#: src/pyams_content/features/redirect/container.py:81
-msgid "not matching"
-msgstr "pas de correspondance"
-
-#: src/pyams_content/features/redirect/zmi/__init__.py:50
-msgid "Add rule"
-msgstr "Ajouter une règle"
-
-#: src/pyams_content/features/redirect/zmi/__init__.py:63
-msgid "Add new redirection rule"
-msgstr "Ajout d'une règle de redirection"
-
-#: src/pyams_content/features/redirect/zmi/__init__.py:88
-msgid "Edit redirection rule properties"
-msgstr "Propriétés de la règle de redirection"
-
-#: src/pyams_content/features/redirect/zmi/__init__.py:109
-msgid ""
-"URL pattern and target URL are defined by *regular expressions* (see |"
-"regexp|).\n"
-" \n"
-"In URL pattern, you can use any valid regular expression element, notably:\n"
-"\n"
-"- « .* » to match any list of characters \n"
-"\n"
-"- « ( ) » to \"memorize\" parts of the URL which can be replaced into target "
-"URL\n"
-"\n"
-"- special characters (like \"+\") must be escaped with an « \\\\ ».\n"
-"\n"
-"In target URL, memorized parts can be reused using « \\\\1 », « \\\\2 » and "
-"so on, where given number is\n"
-"the order of the matching pattern element.\n"
-"\n"
-".. |regexp| raw:: html\n"
-"\n"
-" <a href=\"https://docs.python.org/3/library/re.html\" target=\"_blank"
-"\">Python Regular Expressions</a>\n"
-msgstr ""
-"Le schéma d'URL et l'URL cible sont définis en tant que « expressions "
-"rationelles » (voir |regexp|).\n"
-"\n"
-"Dans le schéma d'URL utilisé pour identifier les requêtes en entrée, vous "
-"pouvez utiliser tout élément d'une expression rationnelle valide, "
-"notamment :\n"
-"\n"
-"- « .* » pour rechercher n'importe quelle suite de caractères\n"
-"\n"
-"- « ^ » et « $ » pour identifier le début ou la fin de l'URL\n"
-"\n"
-"- « ( ) » pour \"mémoriser\" certains éléments de l'URL qui pourront être "
-"repris dans l'URL cible\n"
-"\n"
-"- les caractères spéciaux (comme les \"+\") doivent être protégés par un "
-"caractère « \\\\ ».\n"
-"\n"
-"For exemple : dans le schéma « ^/.*?oid=([a-z0-9]+)$ », toute URL contenant "
-"un paramètre \"oid\" composé de minuscules et/ou de chiffres sera mémorisé "
-"pour pouvoir être réutilisé dans l'URL cible.\n"
-"\n"
-"Dans l'URL cible, les éléments mémorisés peuvent être réutilisés en "
-"utilisant une expression comme « \\\\1 », « \\\\2 » (et ainsi de suite), le "
-"chiffre indiquant la position de l'élément dans la liste des éléments "
-"mémorisés.\n"
-"\n"
-".. |regexp| raw:: html\n"
-"\n"
-" <a href=\"https://docs.python.org/fr/3/library/re.html\" target=\"_blank"
-"\">Expressions rationnelles en Python</a>\n"
-
-#: src/pyams_content/features/redirect/zmi/container.py:67
-msgid "Redirections"
-msgstr "Redirections"
-
-#: src/pyams_content/features/redirect/zmi/container.py:161
-msgid "Enable/disable rule"
-msgstr "Activer/désactiver la règle"
-
-#: src/pyams_content/features/redirect/zmi/container.py:188
-msgid "Chain/unchain rule"
-msgstr "Enchaîner la règle avec la suivante"
-
-#: src/pyams_content/features/redirect/zmi/container.py:210
-#: src/pyams_content/features/redirect/zmi/container.py:366
-#: src/pyams_content/features/redirect/interfaces/__init__.py:56
-msgid "URL pattern"
-msgstr "Schéma d'URL"
-
-#: src/pyams_content/features/redirect/zmi/container.py:220
-msgid "Target"
-msgstr "Cible"
-
-#: src/pyams_content/features/redirect/zmi/container.py:246
-msgid "Redirections list"
-msgstr "Liste des règles de redirection"
-
-#: src/pyams_content/features/redirect/zmi/container.py:261
-msgid "Redirection rules"
-msgstr "Règles de redirection"
-
-#: src/pyams_content/features/redirect/zmi/container.py:262
-msgid ""
-"Redirection rules are use to handle redirections responses when a request "
-"generates \n"
-"a famous « 404 NotFound » error.\n"
-"\n"
-"Redirections are particularly useful when you are migrating from a previous "
-"site and don't want to lose \n"
-"your SEO.\n"
-"\n"
-"You can define a set of rules which will be applied to every \"NotFound\" "
-"request; rules are based on \n"
-"regular expressions which are applied to input URL: if the rule is \"matching"
-"\", the target URL is rewritten\n"
-"and a \"Redirect\" response is send.\n"
-"\n"
-"You can chain rules together: when a rule is chained, it's rewritten URL is "
-"passed as input URL to the \n"
-"next rule, until a matching rule is found.\n"
-msgstr ""
-"Les règles de redirection sont utilisées pour transmettre des réponses de "
-"redirection au lieu de la fameuse erreur « 404 - Page non trouvée ».\n"
-"\n"
-"La gestion des redirections est particulièrement importante en phase de "
-"migration d'un site web, pour éviter les liens cassés, ne pas perdre votre "
-"référencement et faciliter la mise à jour des moteurs de recherche.\n"
-"\n"
-"Vous pouvez définir un ensemble de règles qui seront appliquées dès lors "
-"qu'une requête adressée au serveur génère une erreur de page non trouvée ; "
-"les règles sont basées sur des expressions rationnelles que l'on applique à "
-"l'URL de la requête reçue : si la règle correspond, l'URL est réécrite et "
-"une réponse de redirection vers cette nouvelle URL est renvoyée.\n"
-"\n"
-"Vous pouvez également enchaîner les règles : lorsqu'une règle est \"chaînée"
-"\", la nouvelle URL qu'elle génère est passée aux règles suivantes, jusqu'à "
-"ce qu'une règle s'applique à cette nouvelle URL.\n"
-
-#: src/pyams_content/features/redirect/zmi/container.py:288
-msgid "Test"
-msgstr "Tester !"
-
-#: src/pyams_content/features/redirect/zmi/container.py:323
-msgid "Test redirection rules"
-msgstr "Test des règles de redirection"
-
-#: src/pyams_content/features/redirect/zmi/container.py:301
-msgid "Test URL"
-msgstr "URL à tester"
-
-#: src/pyams_content/features/redirect/zmi/container.py:304
-msgid "Check inactive rules?"
-msgstr "Tester les règles inactive ?"
-
-#: src/pyams_content/features/redirect/zmi/container.py:305
-msgid "If 'yes', inactive rules will also be tested"
-msgstr "Si 'oui', les règles inactives seront également testées"
-
-#: src/pyams_content/features/redirect/zmi/container.py:313
-msgid "Close"
-msgstr "Fermer"
-
-#: src/pyams_content/features/redirect/zmi/container.py:314
-msgid "Test rules"
-msgstr "Tester cette URL"
-
-#: src/pyams_content/features/redirect/zmi/container.py:123
-msgid "No currently defined redirection rule."
-msgstr "Aucune règle de redirection n'est définie actuellement."
-
-#: src/pyams_content/features/redirect/zmi/container.py:371
-msgid "No matching rule!"
-msgstr "Aucune règle ne correspond !"
-
-#: src/pyams_content/features/redirect/zmi/container.py:365
-msgid "Input URL"
-msgstr "URL en entrée"
-
-#: src/pyams_content/features/redirect/zmi/container.py:367
-msgid "Output URL"
-msgstr "URL générée"
-
-#: src/pyams_content/features/redirect/interfaces/__init__.py:39
-msgid "Active rule?"
-msgstr "Règle active ?"
-
-#: src/pyams_content/features/redirect/interfaces/__init__.py:40
-msgid "If 'no', selected rule is inactive"
-msgstr "Si 'non', la règle est inactive"
-
-#: src/pyams_content/features/redirect/interfaces/__init__.py:44
-msgid "Chained rule?"
-msgstr "Règle chaînée ?"
-
-#: src/pyams_content/features/redirect/interfaces/__init__.py:45
-msgid ""
-"If 'no', and if this rule is matching received request URL, the rule returns "
-"a redirection response; otherwise, the rule just rewrites the input URL "
-"which is forwarded to the next rule"
-msgstr ""
-"Si 'non', et si cette règle correspond à l'URL reçue en entrée, une réponde "
-"de redirection est renvoyée directement ; dans le cas contraire, l'URL "
-"générée par cette règle est passée en entrée de la règle suivante"
-
-#: src/pyams_content/features/redirect/interfaces/__init__.py:51
-msgid "Permanent redirect?"
-msgstr "Redirection permanente ?"
-
-#: src/pyams_content/features/redirect/interfaces/__init__.py:52
-msgid "Define if this redirection should be permanent or temporary"
-msgstr ""
-"Indique si cette redirection doit être considérée comme permanente ou "
-"temporaire"
-
-#: src/pyams_content/features/redirect/interfaces/__init__.py:57
-msgid "Regexp pattern of matching URLs for this redirection rule"
-msgstr "Modèle de l'URL d'origine de cette règle de redirection"
-
-#: src/pyams_content/features/redirect/interfaces/__init__.py:62
-msgid "Internal redirection target"
-msgstr "Redirection interne"
-
-#: src/pyams_content/features/redirect/interfaces/__init__.py:63
-msgid ""
-"Internal redirection reference. You can search a reference using '+' "
-"followed by internal number, of by entering text matching content title."
-msgstr ""
-"Référence interne vers une cible de redirection. Vous pouvez la rechercher "
-"par des mots de son titre, ou par son numéro interne (précédé d'un '+')"
-
-#: src/pyams_content/features/redirect/interfaces/__init__.py:69
-msgid "URL to which source URL should be redirected"
-msgstr "URL vers laquelle l'URL d'origine doit être redirigée"
-
-#: src/pyams_content/features/redirect/interfaces/__init__.py:75
-msgid "You can only provide an internal reference OR a target URL"
-msgstr ""
-"Vous ne pouvez fournir qu'une référence interne OU une URL de redirection !"
-
-#: src/pyams_content/features/redirect/interfaces/__init__.py:77
-msgid "You must provide an internal reference OR a target URL"
-msgstr "Vous devez fournir une référence interne OU une URL de redirection !"
-
-#: src/pyams_content/features/menu/zmi/__init__.py:81
-msgid "Add menu..."
-msgstr "Ajouter un menu"
-
-#: src/pyams_content/features/menu/zmi/__init__.py:92
-msgid "Add new menu"
-msgstr "Ajout d'un menu"
-
-#: src/pyams_content/features/menu/zmi/__init__.py:123
-msgid "Edit menu properties"
-msgstr "Propriétés du menu"
-
-#: src/pyams_content/features/menu/zmi/__init__.py:110
-msgid "Menu was correctly added."
-msgstr "Le menu a été ajouté."
-
-#: src/pyams_content/features/menu/zmi/__init__.py:395
-msgid "Link was correctly added."
-msgstr "Le lien a été ajouté."
-
-#: src/pyams_content/features/menu/zmi/templates/menu-name-cell.pt:7
-msgid "Click to see menu items"
-msgstr "Montrer ou cacher les éléments du menu"
-
-#: src/pyams_content/features/menu/portlet/navigation/simple.py:67
-msgid "Simple navigation"
-msgstr "Navigation à un niveau"
-
-#: src/pyams_content/features/menu/portlet/navigation/double.py:67
-msgid "Double navigation"
-msgstr "Navigation à deux niveaux"
-
-#: src/pyams_content/features/menu/portlet/navigation/zmi/simple.py:69
-msgid "Navigation links"
-msgstr "Liens de navigation"
-
-#: src/pyams_content/features/menu/portlet/navigation/zmi/double.py:69
-msgid "Navigation menus"
-msgstr "Menus de navigation"
-
-#: src/pyams_content/features/menu/portlet/navigation/zmi/templates/double-preview.pt:14
-#: src/pyams_content/features/menu/portlet/navigation/zmi/templates/simple-preview.pt:11
-msgid "Link has no illustration"
-msgstr "Le lien n'a pas d'illustration"
-
-#: src/pyams_content/features/menu/portlet/navigation/interfaces/simple.py:32
-#: src/pyams_content/features/menu/portlet/navigation/interfaces/double.py:32
-msgid "Portlet main title"
-msgstr "Titre du composant"
-
-#: src/pyams_content/features/menu/interfaces/__init__.py:64
-msgid "Menu title"
-msgstr "Libellé"
-
-#: src/pyams_content/features/menu/interfaces/__init__.py:65
-msgid "Displayed menu label"
-msgstr "Libellé du menu"
-
-#: src/pyams_content/features/menu/interfaces/__init__.py:69
-msgid "Direct reference to menu target"
-msgstr ""
-"Lorsque le menu est utilisé dans l'en-tête de page, référence interne vers "
-"la cible du menu (site ou rubrique) permettant de mettre en évidence le menu "
-"actif ; un lien sera également créé vers cette référence si le menu ne "
-"contient aucun lien."
-
-#: src/pyams_content/features/footer/zmi/__init__.py:60
-msgid "Page footer"
-msgstr "Pied de pages"
-
-#: src/pyams_content/features/footer/zmi/__init__.py:78
-msgid "Edit footer settings"
-msgstr "Paramétrage des pieds de pages"
-
-#: src/pyams_content/features/footer/zmi/__init__.py:152
-msgid ""
-"WARNING: Footer properties are saved automatically when changing inherit "
-"mode!!"
-msgstr ""
-"ATTENTION : les propriétés du pied de page sont enregistrées automatiquement "
-"lorsque vous modifiez le mode d'héritage !!"
-
-#: src/pyams_content/features/footer/zmi/__init__.py:220
-msgid "Footer renderer settings"
-msgstr "Propriétés de ce mode de rendu"
-
-#: src/pyams_content/features/footer/zmi/__init__.py:107
-msgid "Don't inherit parent footer"
-msgstr "Ne pas hériter du pied de pages du parent"
-
-#: src/pyams_content/features/footer/skin/__init__.py:94
-msgid "Hidden footer"
-msgstr "Ne pas afficher de pied de pages"
-
-#: src/pyams_content/features/footer/interfaces/__init__.py:39
-msgid "Footer template"
-msgstr "Mode de rendu"
-
-#: src/pyams_content/features/footer/interfaces/__init__.py:40
-msgid "Presentation template used for this footer"
-msgstr "Mode de rendu utilisé par ce pied de page"
-
-#: src/pyams_content/features/review/__init__.py:181
-#, python-format
-msgid "Request comment: {comment}"
-msgstr "Commentaire joint : {comment}"
-
-#: src/pyams_content/features/review/__init__.py:211
-#, python-format
-msgid "A new comment was added on content « {0} »"
-msgstr "Un nouveau commentaire a été ajouté pour le contenu « {0} »"
-
-#: src/pyams_content/features/review/__init__.py:168
-#, python-format
-msgid "[{service_name}] A content review is requested"
-msgstr "[{service_name}] Demande de relecture"
-
-#: src/pyams_content/features/review/interfaces.py:32
-msgid "Review request"
-msgstr "Demande de relecture"
-
-#: src/pyams_content/features/review/interfaces.py:33
-msgid "Reviewer comment"
-msgstr "Commentaire"
-
-#: src/pyams_content/features/review/interfaces.py:56
-msgid "Comment writer"
-msgstr "Rédacteur"
-
-#: src/pyams_content/features/review/interfaces.py:59
-msgid "Content reviewers"
-msgstr "Relecteurs sollicités"
-
-#: src/pyams_content/features/review/interfaces.py:62
-msgid "Comment type"
-msgstr "Type de commentaire"
-
-#: src/pyams_content/features/review/interfaces.py:67
-msgid "Comment body"
-msgstr "Commentaire"
-
-#: src/pyams_content/features/review/interfaces.py:70
-msgid "Reviewer comment?"
-msgstr "Commentaire d'un relecteur ?"
-
-#: src/pyams_content/features/review/interfaces.py:86
-msgid "Reviewers list"
-msgstr "Liste des relecteurs"
-
-#: src/pyams_content/features/review/interfaces.py:87
-msgid "List of principals which reviewed the comment"
-msgstr "Liste des utilisateurs qui ont apporté des commentaires sur ce contenu"
-
-#: src/pyams_content/features/review/zmi/__init__.py:61
-msgid "Ask for review..."
-msgstr "Demander une relecture"
-
-#: src/pyams_content/features/review/zmi/__init__.py:100
-msgid "Content review request"
-msgstr "Demande de relecture"
-
-#: src/pyams_content/features/review/zmi/__init__.py:165
-msgid "Comments"
-msgstr "Commentaires"
-
-#: src/pyams_content/features/review/zmi/__init__.py:185
-msgid "Review comments"
-msgstr "Commentaires associés à cette version"
-
-#: src/pyams_content/features/review/zmi/__init__.py:71
-msgid "Sought principals"
-msgstr "Relecteurs sollicités"
-
-#: src/pyams_content/features/review/zmi/__init__.py:72
-msgid "List of principals from which a review is requested"
-msgstr ""
-"Liste des utilisateurs que vous souhaitez solliciter par mail pour relire ce "
-"contenu"
-
-#: src/pyams_content/features/review/zmi/__init__.py:75
-msgid "Comment"
-msgstr "Commentaire"
-
-#: src/pyams_content/features/review/zmi/__init__.py:76
-msgid "Comment associated with this request"
-msgstr ""
-"Ce commentaire associé à cette demande sera également transmis par mail"
-
-#: src/pyams_content/features/review/zmi/__init__.py:79
-msgid "Notify all reviewers"
-msgstr "Notifier tous les relecteurs"
-
-#: src/pyams_content/features/review/zmi/__init__.py:80
-msgid ""
-"If 'yes', selected reviewers will be notified by mail of your request, even "
-"if they were already members of the reviewers group. Otherwise, only new "
-"reviewers will be notified"
-msgstr ""
-"Si 'oui', tous les relecteurs sollicités seront notifiés par mail de votre "
-"demande, même s'ils avaient déjà été sollicités auparavant. Dans le cas "
-"contraire, seuls les nouveaux relecteurs seront notifiés."
-
-#: src/pyams_content/features/review/zmi/__init__.py:91
-msgid "Ask for content review"
-msgstr "Demander la relecture"
-
-#: src/pyams_content/features/review/zmi/__init__.py:146
-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:259
-msgid "Message is mandatory!"
-msgstr "Un commentaire est obligatoire !"
-
-#: src/pyams_content/features/review/zmi/__init__.py:134
-#, python-format
-msgid "Request successful. {count} new notification(s) have been sent"
-msgstr "Votre demande a été transmise. {count} notification(s) envoyée(s)."
-
-#: src/pyams_content/features/review/zmi/templates/review-comments.pt:32
-#: src/pyams_content/features/review/zmi/templates/review-comments-json.pt:15
-#: src/pyams_content/features/review/zmi/templates/review-add-comment.pt:14
-msgid "Review query from"
-msgstr "Demande de relecture de "
-
-#: src/pyams_content/features/review/zmi/templates/review-comments.pt:38
-#: src/pyams_content/features/review/zmi/templates/review-comments-json.pt:21
-#: src/pyams_content/features/review/zmi/templates/review-add-comment.pt:20
-msgid "(as reviewer)"
-msgstr "(relecteur)"
-
-#: src/pyams_content/features/review/zmi/templates/review-comments.pt:47
-#: src/pyams_content/features/review/zmi/templates/review-comments-json.pt:30
-msgid "Selected reviewers:"
-msgstr "Auprès de :"
-
-#: src/pyams_content/features/review/zmi/templates/review-comments.pt:64
-msgid "Add comment"
-msgstr "Déposer un commentaire"
-
-#: src/pyams_content/features/review/zmi/templates/review-comments.pt:67
-msgid "Add a comment..."
-msgstr "Votre commentaire..."
-
-#: src/pyams_content/features/review/zmi/templates/review-comments.pt:73
-msgid "Add this comment"
-msgstr "Ajouter ce commentaire"
-
-#: src/pyams_content/features/review/zmi/templates/review-add-comment.pt:22
-msgid "just now"
-msgstr "À l'instant !"
-
-#: src/pyams_content/features/review/zmi/templates/review-notification.pt:4
-msgid "[${service_name}] You are requested for a content review"
-msgstr "[${service_name}] Demande de relecture"
-
-#: src/pyams_content/features/review/zmi/templates/review-notification.pt:30
-msgid "Hello,"
-msgstr "Bonjour,"
-
-#: src/pyams_content/features/review/zmi/templates/review-notification.pt:31
-msgid ""
-"You have been requested by ${sender}, contributor of « ${service_name} » "
-"website, to make a review of a content."
-msgstr ""
-"Vous êtes sollicité par ${sender}, contributeur du site internet "
-"${service_name}, qui souhaite recueillir votre commentaire à propos d'un "
-"contenu."
-
-#: src/pyams_content/features/review/zmi/templates/review-notification.pt:36
-msgid "${sender} added the following message to his request:"
-msgstr "${sender} a accompagné sa demande de relecture du message suivant :"
-
-#: src/pyams_content/features/review/zmi/templates/review-notification.pt:41
-msgid ""
-"To review and comment this publication, please use the following link: "
-"${target}."
-msgstr "Pour accéder à cette contribution, cliquer ici : ${target}."
-
-#: src/pyams_content/features/review/zmi/templates/review-notification.pt:44
-msgid "After reading this content, please use the « Comments » menu entry."
-msgstr ""
-"Lorsque vous aurez pris connaissance du contenu, cliquez sur « Commentaires "
-"» dans le menu en colonne de gauche."
-
-#: src/pyams_content/features/review/zmi/templates/review-notification.pt:45
-msgid ""
-"If you don't want to reply to this request, please contact ${sender} "
-"directly by replying to this mail."
-msgstr ""
-"Si vous ne souhaitez pas donner suite à cette demande, vous pouvez répondre "
-"directement à ${sender} en lui adressant un message dans ce sens."
-
-#: src/pyams_content/features/review/zmi/templates/review-notification.pt:47
-msgid "Thank you."
-msgstr "Merci."
-
-#: src/pyams_content/features/header/zmi/__init__.py:66
-msgid "Page header"
-msgstr "En-tête de pages"
-
-#: src/pyams_content/features/header/zmi/__init__.py:84
-msgid "Edit header settings"
-msgstr "Paramétrage des en-têtes de pages"
-
-#: src/pyams_content/features/header/zmi/__init__.py:161
-msgid ""
-"WARNING: Header properties are saved automatically when changing inherit "
-"mode!!"
-msgstr ""
-"ATTENTION : les propriétés de l'en-tête sont enregistrées automatiquement "
-"lorsque vous modifiez le mode d'héritage !!"
-
-#: src/pyams_content/features/header/zmi/__init__.py:229
-msgid "Header renderer settings"
-msgstr "Propriétés de ce mode de rendu"
-
-#: src/pyams_content/features/header/zmi/__init__.py:113
-msgid "Don't inherit parent header"
-msgstr "Ne pas hériter de l'en-tête de pages du parent"
-
-#: src/pyams_content/features/header/skin/__init__.py:100
-msgid "Hidden header"
-msgstr "Ne pas afficher d'en-tête de pages"
+#~ msgid "Display content title"
+#~ msgstr "Afficher le titre"
+
+#~ msgid "Display content title?"
+#~ msgstr "Afficher le titre ?"
+
+#~ msgid ""
+#~ "If 'no', content's title will not be repeated into navigation portlet"
+#~ msgstr ""
+#~ "Si 'non', le titre du gabarit ne sera pas répété dans le composant de "
+#~ "navigation"
+
+#~ msgid "({0} medias)"
+#~ msgstr "({0} médias dans la galerie)"
+
+#~ msgid "Author comments"
+#~ msgstr "À propos de l'auteur"
+
+#~ msgid "Comments relatives to author's rights management"
+#~ msgstr ""
+#~ "Commentaires (non publiés mais à conserver) relatifs à l'auteur et à la "
+#~ "gestion de ses droits"
+
+#~ msgid "Author's comments"
+#~ msgstr "À propos de l'auteur"
+
+#~ msgid "Source ID"
+#~ msgstr "ID source"
+
+#~ msgid "Number used to identify media into it's original source"
+#~ msgstr ""
+#~ "Identifiant ou référence de ce média dans la base de données dont elle "
+#~ "est issue ; au besoin, préciser le nom de cette base"
#~ msgid "Context content"
#~ msgstr "Contenu partagé"
@@ -6009,9 +6264,6 @@
#~ msgid "Images data"
#~ msgstr "Image(s) à ajouter"
-#~ msgid "Content type"
-#~ msgstr "Type de contenu"
-
#~ msgid "A publication request has been submitted for content « {0} »"
#~ msgstr "Une demande de publication a été soumise pour le contenu « {0} »"
--- a/src/pyams_content/locales/pyams_content.pot Thu Sep 06 18:10:04 2018 +0200
+++ b/src/pyams_content/locales/pyams_content.pot Fri Oct 05 10:44:32 2018 +0200
@@ -6,7 +6,7 @@
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE 1.0\n"
-"POT-Creation-Date: 2018-09-06 16:56+0200\n"
+"POT-Creation-Date: 2018-10-03 10:57+0200\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
@@ -41,7 +41,7 @@
msgstr ""
#: ./src/pyams_content/__init__.py:49
-#: ./src/pyams_content/workflow/__init__.py:375
+#: ./src/pyams_content/workflow/__init__.py:376
msgid "Publish content"
msgstr ""
@@ -81,425 +81,240 @@
msgid "Guest user (role)"
msgstr ""
-#: ./src/pyams_content/component/gallery/__init__.py:154
-msgid "Gallery"
-msgstr ""
-
-#: ./src/pyams_content/component/gallery/zmi/file.py:60
-#: ./src/pyams_content/component/gallery/zmi/file.py:72
-#: ./src/pyams_content/component/gallery/zmi/paragraph.py:155
-msgid "Add media(s)"
-msgstr ""
-
-#: ./src/pyams_content/component/gallery/zmi/file.py:182
-msgid "Update media properties"
-msgstr ""
-
-#: ./src/pyams_content/component/gallery/zmi/file.py:236
-msgid "Remove media..."
-msgstr ""
-
-#: ./src/pyams_content/component/gallery/zmi/file.py:146
-msgid "Show/hide media"
-msgstr ""
-
-#: ./src/pyams_content/component/gallery/zmi/file.py:203
-msgid "Audio content"
-msgstr ""
-
-#: ./src/pyams_content/component/gallery/zmi/paragraph.py:57
-msgid "Medias gallery..."
-msgstr ""
-
-#: ./src/pyams_content/component/gallery/zmi/paragraph.py:70
-msgid "Add new gallery"
-msgstr ""
-
-#: ./src/pyams_content/component/gallery/zmi/paragraph.py:92
-msgid "Edit gallery properties"
-msgstr ""
-
-#: ./src/pyams_content/component/gallery/zmi/__init__.py:63
-msgid "Update gallery properties"
-msgstr ""
-
-#: ./src/pyams_content/component/gallery/zmi/__init__.py:90
-msgid "Update gallery contents"
-msgstr ""
-
-#: ./src/pyams_content/component/gallery/zmi/interfaces.py:36
-msgid "Images or videos data"
-msgstr ""
-
-#: ./src/pyams_content/component/gallery/zmi/interfaces.py:37
-msgid "You can upload a single file or choose to upload a whole ZIP archive"
-msgstr ""
-
-#: ./src/pyams_content/component/gallery/zmi/interfaces.py:40
-#: ./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:68
-#: ./src/pyams_content/component/paragraph/interfaces/video.py:52
-#: ./src/pyams_content/component/paragraph/interfaces/audio.py:52
-#: ./src/pyams_content/component/paragraph/interfaces/verbatim.py:44
-#: ./src/pyams_content/component/video/interfaces/__init__.py:52
-msgid "Author"
-msgstr ""
-
-#: ./src/pyams_content/component/gallery/zmi/interfaces.py:41
-#: ./src/pyams_content/component/gallery/interfaces/__init__.py:62
-#: ./src/pyams_content/component/extfile/interfaces/__init__.py:45
-#: ./src/pyams_content/component/paragraph/interfaces/video.py:53
-#: ./src/pyams_content/component/paragraph/interfaces/audio.py:53
-#: ./src/pyams_content/component/video/interfaces/__init__.py:53
-msgid "Name of document's author"
-msgstr ""
-
-#: ./src/pyams_content/component/gallery/zmi/interfaces.py:44
-msgid "Author comments"
-msgstr ""
-
-#: ./src/pyams_content/component/gallery/zmi/interfaces.py:45
-#: ./src/pyams_content/component/gallery/interfaces/__init__.py:66
-msgid "Comments relatives to author's rights management"
-msgstr ""
-
-#: ./src/pyams_content/component/gallery/zmi/templates/gallery-medias.pt:12
-msgid "Gallery medias"
-msgstr ""
-
-#: ./src/pyams_content/component/gallery/zmi/templates/gallery-medias.pt:18
-msgid "Download medias"
-msgstr ""
-
-#: ./src/pyams_content/component/gallery/zmi/templates/gallery-medias.pt:42
-msgid "Zoom image"
-msgstr ""
-
-#: ./src/pyams_content/component/gallery/interfaces/__init__.py:133
-msgid "Medias gallery"
-msgstr ""
-
-#: ./src/pyams_content/component/gallery/interfaces/__init__.py:47
-#: ./src/pyams_content/component/illustration/interfaces/__init__.py:46
-#: ./src/pyams_content/component/illustration/interfaces/__init__.py:105
-msgid "Image or video data"
-msgstr ""
-
-#: ./src/pyams_content/component/gallery/interfaces/__init__.py:48
-#: ./src/pyams_content/component/illustration/interfaces/__init__.py:47
-#: ./src/pyams_content/component/illustration/interfaces/__init__.py:106
-msgid "Image or video content"
-msgstr ""
-
-#: ./src/pyams_content/component/gallery/interfaces/__init__.py:51
-#: ./src/pyams_content/component/illustration/interfaces/__init__.py:53
-#: ./src/pyams_content/component/paragraph/interfaces/video.py:45
-#: ./src/pyams_content/component/paragraph/interfaces/audio.py:45
-#: ./src/pyams_content/component/video/interfaces/__init__.py:75
-msgid "Legend"
-msgstr ""
-
-#: ./src/pyams_content/component/gallery/interfaces/__init__.py:54
-#: ./src/pyams_content/component/illustration/interfaces/__init__.py:56
-#: ./src/pyams_content/reference/pictograms/interfaces/__init__.py:48
-msgid "Accessibility title"
-msgstr ""
-
-#: ./src/pyams_content/component/gallery/interfaces/__init__.py:55
-msgid "Alternate title used to describe media content"
-msgstr ""
-
-#: ./src/pyams_content/component/gallery/interfaces/__init__.py:58
-#: ./src/pyams_content/component/gallery/interfaces/__init__.py:101
-#: ./src/pyams_content/component/extfile/interfaces/__init__.py:40
-#: ./src/pyams_content/component/paragraph/interfaces/audio.py:48
-#: ./src/pyams_content/component/links/interfaces/__init__.py:39
-#: ./src/pyams_content/shared/form/interfaces/__init__.py:64
-msgid "Description"
-msgstr ""
-
-#: ./src/pyams_content/component/gallery/interfaces/__init__.py:65
-msgid "Author's comments"
-msgstr ""
-
-#: ./src/pyams_content/component/gallery/interfaces/__init__.py:69
-msgid "Source ID"
-msgstr ""
-
-#: ./src/pyams_content/component/gallery/interfaces/__init__.py:70
-msgid "Number used to identify media into it's original source"
-msgstr ""
-
-#: ./src/pyams_content/component/gallery/interfaces/__init__.py:73
-#: ./src/pyams_content/component/extfile/interfaces/__init__.py:89
-#: ./src/pyams_content/component/paragraph/interfaces/audio.py:41
-msgid "Audio data"
-msgstr ""
-
-#: ./src/pyams_content/component/gallery/interfaces/__init__.py:74
-msgid "Sound file associated with the current media"
-msgstr ""
-
-#: ./src/pyams_content/component/gallery/interfaces/__init__.py:77
-msgid "Sound title"
-msgstr ""
-
-#: ./src/pyams_content/component/gallery/interfaces/__init__.py:78
-msgid "Title of associated sound file"
-msgstr ""
-
-#: ./src/pyams_content/component/gallery/interfaces/__init__.py:81
-msgid "Sound description"
-msgstr ""
-
-#: ./src/pyams_content/component/gallery/interfaces/__init__.py:82
-msgid "Short description of associated sound file"
-msgstr ""
-
-#: ./src/pyams_content/component/gallery/interfaces/__init__.py:85
-msgid "Visible media?"
-msgstr ""
-
-#: ./src/pyams_content/component/gallery/interfaces/__init__.py:86
-msgid "If 'no', this media won't be displayed in front office"
-msgstr ""
-
-#: ./src/pyams_content/component/gallery/interfaces/__init__.py:97
-#: ./src/pyams_content/component/keynumber/portlet/interfaces/__init__.py:31
-#: ./src/pyams_content/component/paragraph/zmi/milestone.py:239
-#: ./src/pyams_content/component/paragraph/zmi/container.py:270
-#: ./src/pyams_content/component/paragraph/interfaces/milestone.py:45
-#: ./src/pyams_content/shared/common/zmi/reverse.py:73
-#: ./src/pyams_content/shared/common/zmi/dashboard.py:109
-#: ./src/pyams_content/shared/common/zmi/templates/advanced-search.pt:200
-#: ./src/pyams_content/shared/view/portlet/interfaces.py:56
-#: ./src/pyams_content/shared/imagemap/zmi/container.py:123
-#: ./src/pyams_content/shared/site/zmi/folder.py:71
-#: ./src/pyams_content/root/zmi/templates/advanced-search.pt:197
-#: ./src/pyams_content/interfaces/__init__.py:101
-#: ./src/pyams_content/reference/pictograms/zmi/__init__.py:150
-#: ./src/pyams_content/features/menu/portlet/navigation/interfaces/simple.py:31
-#: ./src/pyams_content/features/menu/portlet/navigation/interfaces/double.py:31
-msgid "Title"
-msgstr ""
-
-#: ./src/pyams_content/component/gallery/interfaces/__init__.py:98
-msgid "Gallery title, as shown in front-office"
-msgstr ""
-
-#: ./src/pyams_content/component/gallery/interfaces/__init__.py:102
-msgid "Gallery description displayed by front-office template"
-msgstr ""
-
-#: ./src/pyams_content/component/gallery/interfaces/__init__.py:105
-msgid "Gallery template"
-msgstr ""
-
-#: ./src/pyams_content/component/gallery/interfaces/__init__.py:106
-msgid "Presentation template used for this gallery"
-msgstr ""
-
-#: ./src/pyams_content/component/extfile/__init__.py:172
-#: ./src/pyams_content/component/extfile/__init__.py:176
-msgid "Standard file"
-msgstr ""
-
+#: ./src/pyams_content/reference/zmi/__init__.py:50
+msgid "References"
+msgstr ""
+
+#: ./src/pyams_content/reference/zmi/__init__.py:68
+#: ./src/pyams_content/reference/zmi/table.py:129
+msgid "References tables"
+msgstr ""
+
+#: ./src/pyams_content/reference/zmi/table.py:73
+msgid "Contents"
+msgstr ""
+
+#: ./src/pyams_content/reference/zmi/table.py:83
+msgid "Table contents"
+msgstr ""
+
+#: ./src/pyams_content/reference/zmi/table.py:143
+msgid "Properties..."
+msgstr ""
+
+#: ./src/pyams_content/reference/zmi/table.py:157
+msgid "Edit table properties"
+msgstr ""
+
+#: ./src/pyams_content/reference/zmi/table.py:167
+msgid "Table management"
+msgstr ""
+
+#: ./src/pyams_content/reference/pictograms/interfaces/__init__.py:44
#: ./src/pyams_content/component/extfile/__init__.py:223
#: ./src/pyams_content/component/extfile/__init__.py:238
#: ./src/pyams_content/shared/imagemap/interfaces/__init__.py:67
-#: ./src/pyams_content/reference/pictograms/interfaces/__init__.py:44
msgid "Image"
msgstr ""
-#: ./src/pyams_content/component/extfile/__init__.py:253
-#: ./src/pyams_content/component/extfile/__init__.py:257
-#: ./src/pyams_content/component/paragraph/interfaces/video.py:34
-msgid "Video"
-msgstr ""
-
-#: ./src/pyams_content/component/extfile/__init__.py:272
-#: ./src/pyams_content/component/extfile/__init__.py:276
-msgid "Audio file"
-msgstr ""
-
-#: ./src/pyams_content/component/extfile/zmi/__init__.py:74
-msgid "External files"
-msgstr ""
-
-#: ./src/pyams_content/component/extfile/zmi/__init__.py:89
-msgid "Add external file"
-msgstr ""
-
-#: ./src/pyams_content/component/extfile/zmi/__init__.py:103
-msgid "Add new external file"
-msgstr ""
-
-#: ./src/pyams_content/component/extfile/zmi/__init__.py:133
-msgid "Update file properties"
-msgstr ""
-
-#: ./src/pyams_content/component/extfile/zmi/__init__.py:161
-msgid "Images"
-msgstr ""
-
-#: ./src/pyams_content/component/extfile/zmi/__init__.py:176
-msgid "Add image"
-msgstr ""
-
-#: ./src/pyams_content/component/extfile/zmi/__init__.py:190
-msgid "Add new image"
-msgstr ""
-
-#: ./src/pyams_content/component/extfile/zmi/__init__.py:221
-msgid "Update image properties"
-msgstr ""
-
-#: ./src/pyams_content/component/extfile/zmi/__init__.py:254
-msgid "Videos"
-msgstr ""
-
-#: ./src/pyams_content/component/extfile/zmi/__init__.py:269
-msgid "Add video"
-msgstr ""
-
-#: ./src/pyams_content/component/extfile/zmi/__init__.py:283
-msgid "Add new video"
-msgstr ""
-
-#: ./src/pyams_content/component/extfile/zmi/__init__.py:307
-msgid "Update video properties"
-msgstr ""
-
-#: ./src/pyams_content/component/extfile/zmi/__init__.py:333
-msgid "Audios files"
-msgstr ""
-
-#: ./src/pyams_content/component/extfile/zmi/__init__.py:348
-msgid "Add audio file"
-msgstr ""
-
-#: ./src/pyams_content/component/extfile/zmi/__init__.py:362
-msgid "Add new audio file"
-msgstr ""
-
-#: ./src/pyams_content/component/extfile/zmi/__init__.py:386
-msgid "Update audio file properties"
-msgstr ""
-
-#: ./src/pyams_content/component/extfile/zmi/__init__.py:50
-msgid "External file type"
-msgstr ""
-
-#: ./src/pyams_content/component/extfile/interfaces/__init__.py:36
-#: ./src/pyams_content/component/links/interfaces/__init__.py:35
-#: ./src/pyams_content/shared/imagemap/interfaces/__init__.py:55
-msgid "Alternate title"
-msgstr ""
-
-#: ./src/pyams_content/component/extfile/interfaces/__init__.py:37
-msgid "File title, as shown in front-office"
-msgstr ""
-
-#: ./src/pyams_content/component/extfile/interfaces/__init__.py:41
-#: ./src/pyams_content/component/paragraph/interfaces/audio.py:49
-msgid "File description displayed by front-office template"
-msgstr ""
-
-#: ./src/pyams_content/component/extfile/interfaces/__init__.py:48
-#: ./src/pyams_content/component/links/interfaces/__init__.py:65
-msgid "Language"
-msgstr ""
-
-#: ./src/pyams_content/component/extfile/interfaces/__init__.py:49
-msgid "File's content language"
-msgstr ""
-
-#: ./src/pyams_content/component/extfile/interfaces/__init__.py:53
-msgid "Save file as..."
-msgstr ""
-
-#: ./src/pyams_content/component/extfile/interfaces/__init__.py:54
-msgid "Name under which the file will be saved"
-msgstr ""
-
-#: ./src/pyams_content/component/extfile/interfaces/__init__.py:61
-msgid "File data"
-msgstr ""
-
-#: ./src/pyams_content/component/extfile/interfaces/__init__.py:62
-msgid "File content"
-msgstr ""
-
-#: ./src/pyams_content/component/extfile/interfaces/__init__.py:73
-#: ./src/pyams_content/shared/logo/interfaces/__init__.py:48
-msgid "Image data"
-msgstr ""
-
-#: ./src/pyams_content/component/extfile/interfaces/__init__.py:74
-msgid "Image content"
-msgstr ""
-
-#: ./src/pyams_content/component/extfile/interfaces/__init__.py:81
-#: ./src/pyams_content/component/paragraph/interfaces/video.py:41
-msgid "Video data"
-msgstr ""
-
-#: ./src/pyams_content/component/extfile/interfaces/__init__.py:82
-msgid "Video content"
-msgstr ""
-
-#: ./src/pyams_content/component/extfile/interfaces/__init__.py:90
-#: ./src/pyams_content/component/paragraph/interfaces/audio.py:42
-msgid "Audio file content"
+#: ./src/pyams_content/reference/pictograms/interfaces/__init__.py:45
+msgid "Pictogram content"
+msgstr ""
+
+#: ./src/pyams_content/reference/pictograms/interfaces/__init__.py:48
+#: ./src/pyams_content/component/gallery/interfaces/__init__.py:49
+#: ./src/pyams_content/component/illustration/interfaces/__init__.py:50
+msgid "Accessibility title"
+msgstr ""
+
+#: ./src/pyams_content/reference/pictograms/interfaces/__init__.py:49
+#: ./src/pyams_content/component/illustration/interfaces/__init__.py:51
+msgid "Alternate title used to describe image content"
+msgstr ""
+
+#. Default: Header
+#: ./src/pyams_content/reference/pictograms/interfaces/__init__.py:52
+msgid "pictogram-header"
+msgstr ""
+
+#: ./src/pyams_content/reference/pictograms/interfaces/__init__.py:53
+msgid "Default header associated with this pictogram"
+msgstr ""
+
+#: ./src/pyams_content/reference/pictograms/interfaces/__init__.py:73
+#: ./src/pyams_content/reference/pictograms/zmi/manager.py:62
+#: ./src/pyams_content/reference/pictograms/zmi/templates/manager-selection.pt:34
+msgid "Selected pictograms"
+msgstr ""
+
+#: ./src/pyams_content/reference/pictograms/interfaces/__init__.py:74
+msgid "List of selected pictograms which will be available to shared contents"
+msgstr ""
+
+#: ./src/pyams_content/reference/pictograms/zmi/widget.py:36
+msgid "No selected pictogram"
+msgstr ""
+
+#: ./src/pyams_content/reference/pictograms/zmi/widget.py:55
+#: ./src/pyams_content/reference/pictograms/zmi/__init__.py:169
+msgid "Default header: --"
+msgstr ""
+
+#: ./src/pyams_content/reference/pictograms/zmi/manager.py:50
+msgid "Pictograms selection..."
+msgstr ""
+
+#: ./src/pyams_content/reference/pictograms/zmi/__init__.py:59
+#: ./src/pyams_content/component/paragraph/zmi/pictogram.py:313
+msgid "Add pictogram"
+msgstr ""
+
+#: ./src/pyams_content/reference/pictograms/zmi/__init__.py:71
+#: ./src/pyams_content/component/paragraph/zmi/pictogram.py:326
+msgid "Add new pictogram"
+msgstr ""
+
+#: ./src/pyams_content/reference/pictograms/zmi/__init__.py:95
+#: ./src/pyams_content/component/paragraph/zmi/pictogram.py:368
+msgid "Edit pictogram properties"
+msgstr ""
+
+#: ./src/pyams_content/reference/pictograms/zmi/__init__.py:150
+#: ./src/pyams_content/component/keynumber/portlet/interfaces/__init__.py:31
+#: ./src/pyams_content/component/gallery/interfaces/__init__.py:106
+#: ./src/pyams_content/component/paragraph/interfaces/milestone.py:43
+#: ./src/pyams_content/component/paragraph/zmi/container.py:270
+#: ./src/pyams_content/component/paragraph/zmi/milestone.py:238
+#: ./src/pyams_content/interfaces/__init__.py:101
+#: ./src/pyams_content/features/menu/portlet/navigation/interfaces/simple.py:31
+#: ./src/pyams_content/features/menu/portlet/navigation/interfaces/double.py:31
+#: ./src/pyams_content/root/zmi/templates/advanced-search.pt:197
+#: ./src/pyams_content/shared/view/portlet/interfaces.py:56
+#: ./src/pyams_content/shared/common/zmi/dashboard.py:103
+#: ./src/pyams_content/shared/common/zmi/reverse.py:73
+#: ./src/pyams_content/shared/common/zmi/templates/advanced-search.pt:200
+#: ./src/pyams_content/shared/site/zmi/folder.py:66
+#: ./src/pyams_content/shared/imagemap/zmi/container.py:123
+#: ./src/pyams_content/shared/logo/interfaces/__init__.py:46
+msgid "Title"
+msgstr ""
+
+#: ./src/pyams_content/reference/pictograms/zmi/templates/manager-selection.pt:7
+msgid "Available pictograms"
+msgstr ""
+
+#: ./src/pyams_content/reference/pictograms/zmi/templates/manager-selection.pt:21
+#: ./src/pyams_content/reference/pictograms/zmi/templates/manager-selection.pt:48
+msgid "Display pictogram properties"
+msgstr ""
+
+#: ./src/pyams_content/reference/pictograms/zmi/templates/pictogram-header.pt:6
+msgid "Default header: ${header}"
msgstr ""
#: ./src/pyams_content/component/keynumber/__init__.py:189
-#: ./src/pyams_content/component/keynumber/zmi/__init__.py:212
+#: ./src/pyams_content/component/keynumber/interfaces/__init__.py:83
#: ./src/pyams_content/component/keynumber/portlet/zmi/__init__.py:74
-#: ./src/pyams_content/component/keynumber/interfaces/__init__.py:83
+#: ./src/pyams_content/component/keynumber/zmi/__init__.py:212
msgid "Key numbers"
msgstr ""
-#: ./src/pyams_content/component/keynumber/zmi/paragraph.py:53
-msgid "Key numbers..."
-msgstr ""
-
-#: ./src/pyams_content/component/keynumber/zmi/paragraph.py:66
-msgid "Add new key number paragraph"
-msgstr ""
-
-#: ./src/pyams_content/component/keynumber/zmi/paragraph.py:94
-msgid "Edit key number paragraph properties"
+#: ./src/pyams_content/component/keynumber/interfaces/__init__.py:40
+#: ./src/pyams_content/component/paragraph/interfaces/pictogram.py:41
+#: ./src/pyams_content/component/paragraph/interfaces/milestone.py:38
+#: ./src/pyams_content/component/paragraph/interfaces/__init__.py:42
+#: ./src/pyams_content/component/association/interfaces/__init__.py:42
+#: ./src/pyams_content/features/alert/interfaces.py:54
+#: ./src/pyams_content/features/menu/interfaces/__init__.py:59
+#: ./src/pyams_content/shared/form/interfaces/__init__.py:85
+#: ./src/pyams_content/shared/site/interfaces/__init__.py:156
+msgid "Visible?"
+msgstr ""
+
+#: ./src/pyams_content/component/keynumber/interfaces/__init__.py:41
+msgid "Is this key number visible in front-office?"
msgstr ""
#. Default: Header
+#: ./src/pyams_content/component/keynumber/interfaces/__init__.py:45
#: ./src/pyams_content/component/keynumber/zmi/__init__.py:160
-#: ./src/pyams_content/component/keynumber/interfaces/__init__.py:45
msgid "key-number-label"
msgstr ""
-#: ./src/pyams_content/component/keynumber/zmi/__init__.py:172
+#: ./src/pyams_content/component/keynumber/interfaces/__init__.py:46
+msgid ""
+"Small text to be displayed above number (according to selected renderer)"
+msgstr ""
+
#: ./src/pyams_content/component/keynumber/interfaces/__init__.py:50
+#: ./src/pyams_content/component/keynumber/zmi/__init__.py:172
msgid "Number"
msgstr ""
+#: ./src/pyams_content/component/keynumber/interfaces/__init__.py:51
+msgid "Key number value"
+msgstr ""
+
#. Default: Unit
+#: ./src/pyams_content/component/keynumber/interfaces/__init__.py:54
#: ./src/pyams_content/component/keynumber/zmi/__init__.py:181
-#: ./src/pyams_content/component/keynumber/interfaces/__init__.py:54
msgid "key-number-unit"
msgstr ""
-#: ./src/pyams_content/component/keynumber/zmi/__init__.py:193
+#: ./src/pyams_content/component/keynumber/interfaces/__init__.py:55
+msgid "Displayed unit"
+msgstr ""
+
#: ./src/pyams_content/component/keynumber/interfaces/__init__.py:58
-#: ./src/pyams_content/component/illustration/interfaces/__init__.py:64
-#: ./src/pyams_content/component/paragraph/zmi/pictogram.py:277
-#: ./src/pyams_content/component/paragraph/interfaces/video.py:48
+#: ./src/pyams_content/component/keynumber/zmi/__init__.py:193
+#: ./src/pyams_content/component/video/interfaces/__init__.py:46
+#: ./src/pyams_content/component/paragraph/interfaces/video.py:50
#: ./src/pyams_content/component/paragraph/interfaces/pictogram.py:58
-#: ./src/pyams_content/component/video/interfaces/__init__.py:48
+#: ./src/pyams_content/component/paragraph/interfaces/milestone.py:81
+#: ./src/pyams_content/component/paragraph/zmi/pictogram.py:276
+#: ./src/pyams_content/component/illustration/interfaces/__init__.py:62
msgid "Associated text"
msgstr ""
+#: ./src/pyams_content/component/keynumber/interfaces/__init__.py:59
+msgid "The way this text will be rendered depends on presentation template"
+msgstr ""
+
+#: ./src/pyams_content/component/keynumber/interfaces/__init__.py:94
+msgid "Key numbers template"
+msgstr ""
+
+#: ./src/pyams_content/component/keynumber/interfaces/__init__.py:95
+msgid "Presentation template used for key numbers"
+msgstr ""
+
+#: ./src/pyams_content/component/keynumber/portlet/__init__.py:71
+msgid "Key Numbers"
+msgstr ""
+
+#: ./src/pyams_content/component/keynumber/portlet/interfaces/__init__.py:32
+msgid "Portlet title"
+msgstr ""
+
+#: ./src/pyams_content/component/keynumber/portlet/interfaces/__init__.py:35
+msgid "Teaser"
+msgstr ""
+
+#: ./src/pyams_content/component/keynumber/portlet/interfaces/__init__.py:36
+msgid "Short text displayed above key numbers"
+msgstr ""
+
+#: ./src/pyams_content/component/keynumber/portlet/zmi/__init__.py:97
+#: ./src/pyams_content/component/keynumber/portlet/zmi/templates/keynumber-preview.pt:26
+msgid "Associated links"
+msgstr ""
+
+#: ./src/pyams_content/component/keynumber/portlet/zmi/templates/keynumber-preview.pt:31
+#: ./src/pyams_content/features/menu/portlet/navigation/zmi/templates/double-preview.pt:10
+#: ./src/pyams_content/features/menu/portlet/navigation/zmi/templates/simple-preview.pt:7
+msgid "Link target is not published!"
+msgstr ""
+
#: ./src/pyams_content/component/keynumber/zmi/__init__.py:231
msgid "Add keynumber"
msgstr ""
@@ -516,1100 +331,253 @@
msgid "Key number was correctly added"
msgstr ""
-#: ./src/pyams_content/component/keynumber/portlet/__init__.py:71
-msgid "Key Numbers"
-msgstr ""
-
-#: ./src/pyams_content/component/keynumber/portlet/zmi/__init__.py:97
-#: ./src/pyams_content/component/keynumber/portlet/zmi/templates/keynumber-preview.pt:26
-msgid "Associated links"
-msgstr ""
-
-#: ./src/pyams_content/component/keynumber/portlet/zmi/templates/keynumber-preview.pt:31
-#: ./src/pyams_content/features/menu/portlet/navigation/zmi/templates/double-preview.pt:10
-#: ./src/pyams_content/features/menu/portlet/navigation/zmi/templates/simple-preview.pt:7
-msgid "Link target is not published!"
-msgstr ""
-
-#: ./src/pyams_content/component/keynumber/portlet/interfaces/__init__.py:32
-msgid "Portlet title"
-msgstr ""
-
-#: ./src/pyams_content/component/keynumber/portlet/interfaces/__init__.py:35
-msgid "Teaser"
-msgstr ""
-
-#: ./src/pyams_content/component/keynumber/portlet/interfaces/__init__.py:36
-msgid "Short text displayed above key numbers"
-msgstr ""
-
-#: ./src/pyams_content/component/keynumber/interfaces/__init__.py:40
-#: ./src/pyams_content/component/paragraph/interfaces/milestone.py:40
-#: ./src/pyams_content/component/paragraph/interfaces/__init__.py:44
-#: ./src/pyams_content/component/paragraph/interfaces/pictogram.py:41
-#: ./src/pyams_content/component/association/interfaces/__init__.py:42
-#: ./src/pyams_content/shared/form/interfaces/__init__.py:85
-#: ./src/pyams_content/shared/site/interfaces/__init__.py:144
-#: ./src/pyams_content/features/alert/interfaces.py:54
-#: ./src/pyams_content/features/menu/interfaces/__init__.py:59
-msgid "Visible?"
-msgstr ""
-
-#: ./src/pyams_content/component/keynumber/interfaces/__init__.py:41
-msgid "Is this key number visible in front-office?"
-msgstr ""
-
-#: ./src/pyams_content/component/keynumber/interfaces/__init__.py:46
-msgid ""
-"Small text to be displayed above number (according to selected renderer)"
-msgstr ""
-
-#: ./src/pyams_content/component/keynumber/interfaces/__init__.py:51
-msgid "Key number value"
-msgstr ""
-
-#: ./src/pyams_content/component/keynumber/interfaces/__init__.py:55
-msgid "Displayed unit"
-msgstr ""
-
-#: ./src/pyams_content/component/keynumber/interfaces/__init__.py:59
-msgid "The way this text will be rendered depends on presentation template"
-msgstr ""
-
-#: ./src/pyams_content/component/keynumber/interfaces/__init__.py:94
-msgid "Key numbers template"
-msgstr ""
-
-#: ./src/pyams_content/component/keynumber/interfaces/__init__.py:95
-msgid "Presentation template used for key numbers"
-msgstr ""
-
-#: ./src/pyams_content/component/illustration/__init__.py:177
-#: ./src/pyams_content/component/illustration/thesaurus.py:32
-#: ./src/pyams_content/component/illustration/zmi/paragraph.py:158
-#: ./src/pyams_content/component/illustration/zmi/__init__.py:56
-#: ./src/pyams_content/component/illustration/zmi/__init__.py:117
-#: ./src/pyams_content/component/illustration/interfaces/__init__.py:99
-msgid "Illustration"
-msgstr ""
-
-#: ./src/pyams_content/component/illustration/zmi/paragraph.py:60
-msgid "Illustration..."
-msgstr ""
-
-#: ./src/pyams_content/component/illustration/zmi/paragraph.py:73
-msgid "Add new illustration"
-msgstr ""
-
-#: ./src/pyams_content/component/illustration/zmi/paragraph.py:98
-#: ./src/pyams_content/component/illustration/zmi/thesaurus.py:42
-msgid "Edit illustration properties"
-msgstr ""
-
-#: ./src/pyams_content/component/illustration/zmi/__init__.py:151
-msgid "Navigation link illustration"
-msgstr ""
-
-#: ./src/pyams_content/component/illustration/zmi/__init__.py:119
-msgid "Header illustration"
-msgstr ""
-
-#: ./src/pyams_content/component/illustration/interfaces/__init__.py:57
-#: ./src/pyams_content/reference/pictograms/interfaces/__init__.py:49
-msgid "Alternate title used to describe image content"
-msgstr ""
-
-#: ./src/pyams_content/component/illustration/interfaces/__init__.py:65
-msgid "Illustration description displayed in front-office templates"
-msgstr ""
-
-#: ./src/pyams_content/component/illustration/interfaces/__init__.py:69
-msgid "Name of picture's author"
-msgstr ""
-
-#: ./src/pyams_content/component/illustration/interfaces/__init__.py:72
-msgid "Illustration template"
-msgstr ""
-
-#: ./src/pyams_content/component/illustration/interfaces/__init__.py:73
-msgid "Presentation template used for illustration"
-msgstr ""
-
-#: ./src/pyams_content/component/paragraph/milestone.py:140
-msgid "Selected paragraph is missing"
-msgstr ""
-
-#: ./src/pyams_content/component/paragraph/milestone.py:143
-msgid "Selected paragraph is not visible"
-msgstr ""
-
-#: ./src/pyams_content/component/paragraph/container.py:97
-msgid "Paragraphs"
-msgstr ""
-
-#: ./src/pyams_content/component/paragraph/container.py:119
-msgid "no visible paragraph"
-msgstr ""
-
-#: ./src/pyams_content/component/paragraph/pictogram.py:135
-msgid "Selected pictogram is missing"
-msgstr ""
-
-#: ./src/pyams_content/component/paragraph/header.py:62
-msgid "This paragraph type is deprecated and should be removed!"
-msgstr ""
-
-#: ./src/pyams_content/component/paragraph/zmi/milestone.py:78
-msgid "Milestones..."
-msgstr ""
-
-#: ./src/pyams_content/component/paragraph/zmi/milestone.py:91
-msgid "Add new milestone paragraph"
-msgstr ""
-
-#: ./src/pyams_content/component/paragraph/zmi/milestone.py:118
-msgid "Edit milestone paragraph properties"
-msgstr ""
-
-#: ./src/pyams_content/component/paragraph/zmi/milestone.py:251
-#: ./src/pyams_content/component/paragraph/interfaces/milestone.py:49
-msgid "Associated label"
-msgstr ""
-
-#: ./src/pyams_content/component/paragraph/zmi/milestone.py:263
-#: ./src/pyams_content/component/paragraph/interfaces/milestone.py:53
-msgid "Anchor"
-msgstr ""
-
-#: ./src/pyams_content/component/paragraph/zmi/milestone.py:292
-#: ./src/pyams_content/component/paragraph/interfaces/milestone.py:76
-msgid "Milestones"
-msgstr ""
-
-#: ./src/pyams_content/component/paragraph/zmi/milestone.py:307
-msgid "Add milestone"
-msgstr ""
-
-#: ./src/pyams_content/component/paragraph/zmi/milestone.py:320
-msgid "Add new milestone"
-msgstr ""
-
-#: ./src/pyams_content/component/paragraph/zmi/milestone.py:347
-msgid "Edit milestone properties"
-msgstr ""
-
-#: ./src/pyams_content/component/paragraph/zmi/milestone.py:335
-msgid "Milestone was correctly added"
-msgstr ""
-
-#: ./src/pyams_content/component/paragraph/zmi/milestone.py:278
-msgid "(missing paragraph)"
-msgstr ""
-
-#: ./src/pyams_content/component/paragraph/zmi/keypoint.py:52
-msgid "Key points..."
-msgstr ""
-
-#: ./src/pyams_content/component/paragraph/zmi/keypoint.py:65
-msgid "Add new key points paragraph"
-msgstr ""
-
-#: ./src/pyams_content/component/paragraph/zmi/keypoint.py:92
-msgid "Edit key points paragraph properties"
-msgstr ""
-
-#: ./src/pyams_content/component/paragraph/zmi/__init__.py:64
-msgid "Content block types..."
-msgstr ""
-
-#: ./src/pyams_content/component/paragraph/zmi/__init__.py:78
-msgid "Content block types"
-msgstr ""
-
-#: ./src/pyams_content/component/paragraph/zmi/__init__.py:88
-msgid ""
-"You can define which types of paragraphs are allowed in this container.\n"
-"\n"
-"Default paragraphs will be added automatically (in selected order) to any new created content.\n"
-"\n"
-"NOTICE: removing types from allowed types list will have no effect on already created contents!"
-msgstr ""
-
-#: ./src/pyams_content/component/paragraph/zmi/__init__.py:206
-#: ./src/pyams_content/shared/common/zmi/templates/preview-input.pt:39
-#: ./src/pyams_content/features/preview/zmi/__init__.py:45
-msgid "Preview"
-msgstr ""
-
-#: ./src/pyams_content/component/paragraph/zmi/__init__.py:211
-#: ./src/pyams_content/shared/common/zmi/workflow.py:123
-#: ./src/pyams_content/shared/common/zmi/workflow.py:210
-#: ./src/pyams_content/shared/common/zmi/workflow.py:250
-#: ./src/pyams_content/shared/common/zmi/workflow.py:304
-#: ./src/pyams_content/shared/common/zmi/workflow.py:393
-#: ./src/pyams_content/shared/common/zmi/workflow.py:449
-#: ./src/pyams_content/shared/common/zmi/workflow.py:489
-#: ./src/pyams_content/shared/common/zmi/workflow.py:530
-#: ./src/pyams_content/shared/common/zmi/workflow.py:573
-#: ./src/pyams_content/shared/common/zmi/workflow.py:613
-#: ./src/pyams_content/shared/common/zmi/workflow.py:654
-#: ./src/pyams_content/shared/common/zmi/workflow.py:705
-#: ./src/pyams_content/shared/common/zmi/__init__.py:273
-#: ./src/pyams_content/shared/common/zmi/owner.py:73
-#: ./src/pyams_content/features/review/zmi/__init__.py:90
-msgid "Cancel"
-msgstr ""
-
-#: ./src/pyams_content/component/paragraph/zmi/__init__.py:213
-msgid "Submit"
-msgstr ""
-
-#: ./src/pyams_content/component/paragraph/zmi/__init__.py:194
-msgid "Paragraph was correctly added."
-msgstr ""
-
-#: ./src/pyams_content/component/paragraph/zmi/__init__.py:253
-msgid ""
-"You changed renderer selection. Don't omit to update new renderer "
-"properties..."
-msgstr ""
-
-#: ./src/pyams_content/component/paragraph/zmi/map.py:55
-msgid "Location map..."
-msgstr ""
-
-#: ./src/pyams_content/component/paragraph/zmi/map.py:68
-msgid "Add new location map"
-msgstr ""
-
-#: ./src/pyams_content/component/paragraph/zmi/map.py:91
-msgid "Edit location map properties"
-msgstr ""
-
-#: ./src/pyams_content/component/paragraph/zmi/video.py:54
-msgid "Video paragraph..."
-msgstr ""
-
-#: ./src/pyams_content/component/paragraph/zmi/video.py:67
-msgid "Add new video paragraph"
-msgstr ""
-
-#: ./src/pyams_content/component/paragraph/zmi/video.py:90
-#: ./src/pyams_content/component/video/zmi/paragraph.py:189
-msgid "Edit video properties"
-msgstr ""
-
-#: ./src/pyams_content/component/paragraph/zmi/container.py:74
-msgid "Contents..."
-msgstr ""
-
-#: ./src/pyams_content/component/paragraph/zmi/container.py:215
-msgid "Set navigation anchor"
-msgstr ""
-
-#: ./src/pyams_content/component/paragraph/zmi/container.py:286
-msgid "Show/hide all paragraphs"
-msgstr ""
-
-#: ./src/pyams_content/component/paragraph/zmi/container.py:334
-#: ./src/pyams_content/component/paragraph/zmi/container.py:343
-#: ./src/pyams_content/component/paragraph/zmi/container.py:356
-msgid "Content blocks"
-msgstr ""
-
-#: ./src/pyams_content/component/paragraph/zmi/container.py:413
-msgid "Links and attachments..."
-msgstr ""
-
-#: ./src/pyams_content/component/paragraph/zmi/container.py:425
-msgid "Content blocks links and attachments"
-msgstr ""
-
-#: ./src/pyams_content/component/paragraph/zmi/container.py:145
-msgid "No currently defined paragraph."
-msgstr ""
-
-#: ./src/pyams_content/component/paragraph/zmi/container.py:295
-msgid "Click to open/close all paragraphs editors"
-msgstr ""
-
-#: ./src/pyams_content/component/paragraph/zmi/container.py:308
-msgid "Click to open/close paragraph editor"
-msgstr ""
-
-#: ./src/pyams_content/component/paragraph/zmi/container.py:151
-msgid "Check allowed paragraph types to be able to create new paragraphs."
-msgstr ""
-
-#: ./src/pyams_content/component/paragraph/zmi/pictogram.py:83
-msgid "Pictograms..."
-msgstr ""
-
-#: ./src/pyams_content/component/paragraph/zmi/pictogram.py:96
-msgid "Add new pictogram paragraph"
-msgstr ""
-
-#: ./src/pyams_content/component/paragraph/zmi/pictogram.py:123
-msgid "Edit pictogram paragraph properties"
-msgstr ""
-
-#. Default: Header
-#: ./src/pyams_content/component/paragraph/zmi/pictogram.py:260
-msgid "pictogram-item-header"
-msgstr ""
-
-#: ./src/pyams_content/component/paragraph/zmi/pictogram.py:299
-#: ./src/pyams_content/component/paragraph/interfaces/pictogram.py:80
-msgid "Pictograms"
-msgstr ""
-
-#: ./src/pyams_content/component/paragraph/zmi/pictogram.py:314
-#: ./src/pyams_content/reference/pictograms/zmi/__init__.py:59
-msgid "Add pictogram"
-msgstr ""
-
-#: ./src/pyams_content/component/paragraph/zmi/pictogram.py:327
-#: ./src/pyams_content/reference/pictograms/zmi/__init__.py:71
-msgid "Add new pictogram"
-msgstr ""
-
-#: ./src/pyams_content/component/paragraph/zmi/pictogram.py:369
-#: ./src/pyams_content/reference/pictograms/zmi/__init__.py:95
-msgid "Edit pictogram properties"
-msgstr ""
-
-#: ./src/pyams_content/component/paragraph/zmi/pictogram.py:349
-msgid "Pictogram was correctly added"
-msgstr ""
-
-#: ./src/pyams_content/component/paragraph/zmi/pictogram.py:359
-#: ./src/pyams_content/component/paragraph/zmi/pictogram.py:397
-msgid "You must select a pictogram!"
-msgstr ""
-
-#: ./src/pyams_content/component/paragraph/zmi/audio.py:54
-msgid "Audio paragraph..."
-msgstr ""
-
-#: ./src/pyams_content/component/paragraph/zmi/audio.py:67
-msgid "Add new audio paragraph"
-msgstr ""
-
-#: ./src/pyams_content/component/paragraph/zmi/audio.py:89
-msgid "Edit audio properties"
-msgstr ""
-
-#: ./src/pyams_content/component/paragraph/zmi/frame.py:86
-msgid "Framed text..."
-msgstr ""
-
-#: ./src/pyams_content/component/paragraph/zmi/frame.py:100
-msgid "Add new framed text paragraph"
-msgstr ""
-
-#: ./src/pyams_content/component/paragraph/zmi/frame.py:126
-msgid "Edit framed text paragraph properties"
-msgstr ""
-
-#: ./src/pyams_content/component/paragraph/zmi/verbatim.py:57
-msgid "Verbatim..."
-msgstr ""
-
-#: ./src/pyams_content/component/paragraph/zmi/verbatim.py:70
-msgid "Add new verbatim paragraph"
-msgstr ""
-
-#: ./src/pyams_content/component/paragraph/zmi/verbatim.py:92
-msgid "Edit verbatim paragraph properties"
-msgstr ""
-
-#: ./src/pyams_content/component/paragraph/zmi/html.py:76
-msgid "Raw HTML..."
-msgstr ""
-
-#: ./src/pyams_content/component/paragraph/zmi/html.py:89
-msgid "Add new raw HTML paragraph"
-msgstr ""
-
-#: ./src/pyams_content/component/paragraph/zmi/html.py:119
-msgid "Edit raw HTML paragraph properties"
-msgstr ""
-
-#: ./src/pyams_content/component/paragraph/zmi/html.py:159
-msgid "Rich text..."
-msgstr ""
-
-#: ./src/pyams_content/component/paragraph/zmi/html.py:172
-msgid "Add new rich text paragraph"
-msgstr ""
-
-#: ./src/pyams_content/component/paragraph/zmi/html.py:197
-msgid "Edit rich text paragraph properties"
-msgstr ""
-
-#: ./src/pyams_content/component/paragraph/zmi/contact.py:53
-msgid "Contact card..."
-msgstr ""
-
-#: ./src/pyams_content/component/paragraph/zmi/contact.py:66
-msgid "Add new contact card"
-msgstr ""
-
-#: ./src/pyams_content/component/paragraph/zmi/contact.py:89
-msgid "Edit contact card properties"
-msgstr ""
-
-#: ./src/pyams_content/component/paragraph/zmi/header.py:49
-msgid "Edit header paragraph properties"
-msgstr ""
-
-#: ./src/pyams_content/component/paragraph/portlet/__init__.py:79
-msgid "Content paragraphs"
-msgstr ""
-
-#: ./src/pyams_content/component/paragraph/portlet/zmi/__init__.py:68
-msgid "No filter, all paragraphs selected"
-msgstr ""
-
-#: ./src/pyams_content/component/paragraph/portlet/zmi/__init__.py:75
-msgid "No filter, all paragraph types selected"
-msgstr ""
-
-#: ./src/pyams_content/component/paragraph/portlet/zmi/templates/preview.pt:4
-msgid "Selected paragraphs:"
-msgstr ""
-
-#: ./src/pyams_content/component/paragraph/portlet/zmi/templates/preview.pt:10
-msgid "Paragraphs filters:"
-msgstr ""
-
-#: ./src/pyams_content/component/paragraph/portlet/zmi/templates/preview.pt:13
-msgid "Selected paragraph types:"
-msgstr ""
-
-#: ./src/pyams_content/component/paragraph/portlet/zmi/templates/preview.pt:18
-msgid "Only display anchors"
-msgstr ""
-
-#: ./src/pyams_content/component/paragraph/portlet/interfaces/__init__.py:31
-msgid "Selected paragraphs"
-msgstr ""
-
-#: ./src/pyams_content/component/paragraph/portlet/interfaces/__init__.py:32
-msgid ""
-"List of selected paragraphs; an empty selection means that all paragraphs "
-"will be selectable by following filters; otherwise, this selection will have "
-"priority"
-msgstr ""
-
-#: ./src/pyams_content/component/paragraph/portlet/interfaces/__init__.py:38
-msgid "Paragraph types"
-msgstr ""
-
-#: ./src/pyams_content/component/paragraph/portlet/interfaces/__init__.py:39
-msgid ""
-"Select list of paragraph types you want to include; an empty selection means "
-"that all paragraphs types will be selected"
-msgstr ""
-
-#: ./src/pyams_content/component/paragraph/portlet/interfaces/__init__.py:44
-msgid "Anchors only?"
-msgstr ""
-
-#: ./src/pyams_content/component/paragraph/portlet/interfaces/__init__.py:45
-msgid "If 'yes', only paragraphs set as 'anchors' will be selected"
-msgstr ""
-
-#: ./src/pyams_content/component/paragraph/interfaces/milestone.py:41
-msgid "Is this milestone visible in front-office?"
-msgstr ""
-
-#: ./src/pyams_content/component/paragraph/interfaces/milestone.py:46
-msgid "Milestone title"
-msgstr ""
-
-#: ./src/pyams_content/component/paragraph/interfaces/milestone.py:50
-msgid "The way this label will be rendered depends on presentation template"
-msgstr ""
-
-#: ./src/pyams_content/component/paragraph/interfaces/milestone.py:54
-msgid "Paragraph to which this milestone should lead"
-msgstr ""
-
-#: ./src/pyams_content/component/paragraph/interfaces/milestone.py:83
-msgid "Milestones template"
-msgstr ""
-
-#: ./src/pyams_content/component/paragraph/interfaces/milestone.py:84
-msgid "Presentation template used for milestones"
-msgstr ""
-
-#: ./src/pyams_content/component/paragraph/interfaces/keypoint.py:33
-#: ./src/pyams_content/component/paragraph/interfaces/keypoint.py:40
-msgid "Key points"
-msgstr ""
-
-#: ./src/pyams_content/component/paragraph/interfaces/keypoint.py:41
-msgid "Enter one key point by line, without hyphen or prefix"
-msgstr ""
-
-#: ./src/pyams_content/component/paragraph/interfaces/keypoint.py:44
-msgid "Presentation template"
-msgstr ""
-
-#: ./src/pyams_content/component/paragraph/interfaces/keypoint.py:45
-#: ./src/pyams_content/component/paragraph/interfaces/frame.py:44
-#: ./src/pyams_content/component/paragraph/interfaces/verbatim.py:53
-#: ./src/pyams_content/component/paragraph/interfaces/html.py:46
-#: ./src/pyams_content/component/paragraph/interfaces/html.py:67
-#: ./src/pyams_content/shared/imagemap/interfaces/__init__.py:101
-#: ./src/pyams_content/shared/logo/interfaces/__init__.py:82
-msgid "Presentation template used for this paragraph"
-msgstr ""
-
-#: ./src/pyams_content/component/paragraph/interfaces/__init__.py:45
-msgid "Is this paragraph visible in front-office?"
-msgstr ""
-
-#: ./src/pyams_content/component/paragraph/interfaces/__init__.py:49
-msgid "Anchor?"
-msgstr ""
-
-#: ./src/pyams_content/component/paragraph/interfaces/__init__.py:50
-msgid "Is this paragraph a navigation anchor?"
-msgstr ""
-
-#: ./src/pyams_content/component/paragraph/interfaces/__init__.py:54
-msgid "§ Title"
-msgstr ""
-
-#: ./src/pyams_content/component/paragraph/interfaces/__init__.py:94
-msgid "Allowed paragraphs"
-msgstr ""
-
-#: ./src/pyams_content/component/paragraph/interfaces/__init__.py:95
-msgid "List of paragraphs allowed for this content type"
-msgstr ""
-
-#: ./src/pyams_content/component/paragraph/interfaces/__init__.py:99
-#: ./src/pyams_content/shared/common/zmi/types.py:172
-#: ./src/pyams_content/shared/common/zmi/types.py:412
-msgid "Default paragraphs"
-msgstr ""
-
-#: ./src/pyams_content/component/paragraph/interfaces/__init__.py:100
-msgid "List of paragraphs automatically added to a new content"
-msgstr ""
-
-#: ./src/pyams_content/component/paragraph/interfaces/map.py:41
-msgid "Location map"
-msgstr ""
-
-#: ./src/pyams_content/component/paragraph/interfaces/map.py:48
-#: ./src/pyams_content/component/paragraph/interfaces/contact.py:72
-msgid "GPS location"
-msgstr ""
-
-#: ./src/pyams_content/component/paragraph/interfaces/map.py:49
-msgid "GPS coordinates used to locate map"
-msgstr ""
-
-#: ./src/pyams_content/component/paragraph/interfaces/map.py:52
-msgid "Display location mark?"
-msgstr ""
-
-#: ./src/pyams_content/component/paragraph/interfaces/map.py:53
-msgid "If 'yes', a location marker will be displayed on map"
-msgstr ""
-
-#: ./src/pyams_content/component/paragraph/interfaces/map.py:57
-msgid "Map template"
-msgstr ""
-
-#: ./src/pyams_content/component/paragraph/interfaces/map.py:58
-msgid "Presentation template used for this map"
-msgstr ""
-
-#: ./src/pyams_content/component/paragraph/interfaces/video.py:42
-msgid "Video file content"
-msgstr ""
-
-#: ./src/pyams_content/component/paragraph/interfaces/video.py:49
-#: ./src/pyams_content/component/video/interfaces/__init__.py:49
+#: ./src/pyams_content/component/keynumber/zmi/paragraph.py:53
+msgid "Key numbers..."
+msgstr ""
+
+#: ./src/pyams_content/component/keynumber/zmi/paragraph.py:66
+msgid "Add new key number paragraph"
+msgstr ""
+
+#: ./src/pyams_content/component/keynumber/zmi/paragraph.py:94
+msgid "Edit key number paragraph properties"
+msgstr ""
+
+#: ./src/pyams_content/component/gallery/__init__.py:155
+msgid "Gallery"
+msgstr ""
+
+#: ./src/pyams_content/component/gallery/paragraph.py:45
+msgid "(gallery contains 1 media)"
+msgstr ""
+
+#: ./src/pyams_content/component/gallery/paragraph.py:47
+msgid "(empty gallery)"
+msgstr ""
+
+#: ./src/pyams_content/component/gallery/paragraph.py:43
+#, python-format
+msgid "(gallery contains {0} medias)"
+msgstr ""
+
+#: ./src/pyams_content/component/gallery/interfaces/__init__.py:120
+msgid "Medias gallery"
+msgstr ""
+
+#: ./src/pyams_content/component/gallery/interfaces/__init__.py:42
+#: ./src/pyams_content/component/illustration/interfaces/__init__.py:40
+#: ./src/pyams_content/component/illustration/interfaces/__init__.py:103
+msgid "Image or video data"
+msgstr ""
+
+#: ./src/pyams_content/component/gallery/interfaces/__init__.py:43
+#: ./src/pyams_content/component/illustration/interfaces/__init__.py:41
+#: ./src/pyams_content/component/illustration/interfaces/__init__.py:104
+msgid "Image or video content"
+msgstr ""
+
+#: ./src/pyams_content/component/gallery/interfaces/__init__.py:46
+#: ./src/pyams_content/component/video/interfaces/__init__.py:69
+#: ./src/pyams_content/component/paragraph/interfaces/video.py:43
+#: ./src/pyams_content/component/paragraph/interfaces/audio.py:43
+#: ./src/pyams_content/component/illustration/interfaces/__init__.py:47
+msgid "Legend"
+msgstr ""
+
+#: ./src/pyams_content/component/gallery/interfaces/__init__.py:50
+msgid "Alternate title used to describe media content"
+msgstr ""
+
+#: ./src/pyams_content/component/gallery/interfaces/__init__.py:53
+#: ./src/pyams_content/component/gallery/interfaces/__init__.py:110
+#: ./src/pyams_content/component/links/interfaces/__init__.py:39
+#: ./src/pyams_content/component/paragraph/interfaces/audio.py:50
+#: ./src/pyams_content/component/extfile/interfaces/__init__.py:40
+#: ./src/pyams_content/shared/form/interfaces/__init__.py:64
+msgid "Description"
+msgstr ""
+
+#: ./src/pyams_content/component/gallery/interfaces/__init__.py:56
+#: ./src/pyams_content/component/gallery/zmi/interfaces.py:39
+#: ./src/pyams_content/component/video/interfaces/__init__.py:42
+#: ./src/pyams_content/component/paragraph/interfaces/video.py:46
+#: ./src/pyams_content/component/paragraph/interfaces/verbatim.py:44
+#: ./src/pyams_content/component/paragraph/interfaces/audio.py:46
+#: ./src/pyams_content/component/extfile/interfaces/__init__.py:44
+#: ./src/pyams_content/component/illustration/interfaces/__init__.py:54
+msgid "Author"
+msgstr ""
+
+#: ./src/pyams_content/component/gallery/interfaces/__init__.py:57
+#: ./src/pyams_content/component/gallery/zmi/interfaces.py:40
+#: ./src/pyams_content/component/video/interfaces/__init__.py:43
+#: ./src/pyams_content/component/paragraph/interfaces/video.py:47
+#: ./src/pyams_content/component/paragraph/interfaces/audio.py:47
+#: ./src/pyams_content/component/extfile/interfaces/__init__.py:45
+msgid "Name of document's author"
+msgstr ""
+
+#: ./src/pyams_content/component/gallery/interfaces/__init__.py:60
+#: ./src/pyams_content/component/paragraph/interfaces/audio.py:39
+#: ./src/pyams_content/component/extfile/interfaces/__init__.py:89
+msgid "Audio data"
+msgstr ""
+
+#: ./src/pyams_content/component/gallery/interfaces/__init__.py:61
+msgid "Sound file associated with the current media"
+msgstr ""
+
+#: ./src/pyams_content/component/gallery/interfaces/__init__.py:64
+msgid "Sound title"
+msgstr ""
+
+#: ./src/pyams_content/component/gallery/interfaces/__init__.py:65
+msgid "Title of associated sound file"
+msgstr ""
+
+#: ./src/pyams_content/component/gallery/interfaces/__init__.py:68
+msgid "Sound description"
+msgstr ""
+
+#: ./src/pyams_content/component/gallery/interfaces/__init__.py:69
+msgid "Short description of associated sound file"
+msgstr ""
+
+#: ./src/pyams_content/component/gallery/interfaces/__init__.py:72
+msgid "Visible media?"
+msgstr ""
+
+#: ./src/pyams_content/component/gallery/interfaces/__init__.py:73
+msgid "If 'no', this media won't be displayed in front office"
+msgstr ""
+
+#: ./src/pyams_content/component/gallery/interfaces/__init__.py:84
+msgid "Gallery template"
+msgstr ""
+
+#: ./src/pyams_content/component/gallery/interfaces/__init__.py:85
+msgid "Presentation template used for this gallery"
+msgstr ""
+
+#: ./src/pyams_content/component/gallery/interfaces/__init__.py:107
+msgid "Gallery title, as shown in front-office"
+msgstr ""
+
+#: ./src/pyams_content/component/gallery/interfaces/__init__.py:111
+msgid "Gallery description displayed by front-office template"
+msgstr ""
+
+#: ./src/pyams_content/component/gallery/zmi/file.py:57
+#: ./src/pyams_content/component/gallery/zmi/file.py:69
+#: ./src/pyams_content/component/gallery/zmi/paragraph.py:148
+msgid "Add media(s)"
+msgstr ""
+
+#: ./src/pyams_content/component/gallery/zmi/file.py:178
+msgid "Update media properties"
+msgstr ""
+
+#: ./src/pyams_content/component/gallery/zmi/file.py:227
+msgid "Remove media..."
+msgstr ""
+
+#: ./src/pyams_content/component/gallery/zmi/file.py:142
+msgid "Show/hide media"
+msgstr ""
+
+#: ./src/pyams_content/component/gallery/zmi/file.py:194
+msgid "Audio content"
+msgstr ""
+
+#: ./src/pyams_content/component/gallery/zmi/__init__.py:57
+msgid "Update gallery properties"
+msgstr ""
+
+#: ./src/pyams_content/component/gallery/zmi/__init__.py:84
+msgid "Update gallery contents"
+msgstr ""
+
+#: ./src/pyams_content/component/gallery/zmi/interfaces.py:35
+msgid "Images or videos data"
+msgstr ""
+
+#: ./src/pyams_content/component/gallery/zmi/interfaces.py:36
+msgid "You can upload a single file or choose to upload a whole ZIP archive"
+msgstr ""
+
+#: ./src/pyams_content/component/gallery/zmi/paragraph.py:60
+msgid "Medias gallery..."
+msgstr ""
+
+#: ./src/pyams_content/component/gallery/zmi/paragraph.py:73
+msgid "Add new gallery"
+msgstr ""
+
+#: ./src/pyams_content/component/gallery/zmi/paragraph.py:95
+msgid "Edit gallery properties"
+msgstr ""
+
+#: ./src/pyams_content/component/gallery/zmi/paragraph.py:169
+msgid "Media(s) successfully added"
+msgstr ""
+
+#: ./src/pyams_content/component/gallery/zmi/templates/gallery-medias.pt:12
+msgid "Gallery medias"
+msgstr ""
+
+#: ./src/pyams_content/component/gallery/zmi/templates/gallery-medias.pt:18
+msgid "Download medias"
+msgstr ""
+
+#: ./src/pyams_content/component/gallery/zmi/templates/gallery-medias.pt:42
+#: ./src/pyams_content/component/gallery/zmi/templates/gallery-media.pt:9
+msgid "Zoom image"
+msgstr ""
+
+#: ./src/pyams_content/component/video/__init__.py:67
+#: ./src/pyams_content/component/video/interfaces/__init__.py:62
+msgid "External video"
+msgstr ""
+
+#: ./src/pyams_content/component/video/interfaces/__init__.py:47
+#: ./src/pyams_content/component/paragraph/interfaces/video.py:51
msgid "Video description displayed by front-office template"
msgstr ""
-#: ./src/pyams_content/component/paragraph/interfaces/video.py:56
-#: ./src/pyams_content/component/video/interfaces/__init__.py:78
+#: ./src/pyams_content/component/video/interfaces/__init__.py:50
+msgid "Video provider"
+msgstr ""
+
+#: ./src/pyams_content/component/video/interfaces/__init__.py:51
+msgid "Name of external platform providing selected video"
+msgstr ""
+
+#: ./src/pyams_content/component/video/interfaces/__init__.py:72
+#: ./src/pyams_content/component/paragraph/interfaces/video.py:54
msgid "Video template"
msgstr ""
-#: ./src/pyams_content/component/paragraph/interfaces/video.py:57
-#: ./src/pyams_content/component/video/interfaces/__init__.py:79
+#: ./src/pyams_content/component/video/interfaces/__init__.py:73
+#: ./src/pyams_content/component/paragraph/interfaces/video.py:55
msgid "Presentation template used for this video"
msgstr ""
-#: ./src/pyams_content/component/paragraph/interfaces/pictogram.py:42
-msgid "Is this pictogram visible in front-office?"
-msgstr ""
-
-#: ./src/pyams_content/component/paragraph/interfaces/pictogram.py:46
-#: ./src/pyams_content/component/links/interfaces/__init__.py:43
-#: ./src/pyams_content/shared/common/interfaces/types.py:75
-msgid "Pictogram"
-msgstr ""
-
-#: ./src/pyams_content/component/paragraph/interfaces/pictogram.py:47
-msgid "Name of the pictogram to select"
-msgstr ""
-
-#: ./src/pyams_content/component/paragraph/interfaces/pictogram.py:53
-msgid "Alternate header"
-msgstr ""
-
-#: ./src/pyams_content/component/paragraph/interfaces/pictogram.py:54
-msgid ""
-"Alternate pictogram label; if not specified, the pictogram header will be "
-"used"
-msgstr ""
-
-#: ./src/pyams_content/component/paragraph/interfaces/pictogram.py:59
-msgid "Additional text associated to this pictogram"
-msgstr ""
-
-#: ./src/pyams_content/component/paragraph/interfaces/pictogram.py:87
-msgid "Pictograms template"
-msgstr ""
-
-#: ./src/pyams_content/component/paragraph/interfaces/pictogram.py:88
-msgid "Presentation template used for pictograms"
-msgstr ""
-
-#: ./src/pyams_content/component/paragraph/interfaces/audio.py:34
-msgid "Audio"
-msgstr ""
-
-#: ./src/pyams_content/component/paragraph/interfaces/audio.py:56
-msgid "Audio template"
-msgstr ""
-
-#: ./src/pyams_content/component/paragraph/interfaces/audio.py:57
-msgid "Presentation template used for this audio file"
-msgstr ""
-
-#: ./src/pyams_content/component/paragraph/interfaces/frame.py:33
-msgid "Framed text"
-msgstr ""
-
-#: ./src/pyams_content/component/paragraph/interfaces/frame.py:40
-msgid "Frame body"
-msgstr ""
-
-#: ./src/pyams_content/component/paragraph/interfaces/frame.py:43
-msgid "Text template"
-msgstr ""
-
-#: ./src/pyams_content/component/paragraph/interfaces/verbatim.py:33
-msgid "Verbatim"
-msgstr ""
-
-#: ./src/pyams_content/component/paragraph/interfaces/verbatim.py:40
-msgid "Quoted text"
-msgstr ""
-
-#: ./src/pyams_content/component/paragraph/interfaces/verbatim.py:41
-msgid "Quotation marks will be added automatically by presentation template"
-msgstr ""
-
-#: ./src/pyams_content/component/paragraph/interfaces/verbatim.py:45
-msgid "Name of the quote author"
-msgstr ""
-
-#: ./src/pyams_content/component/paragraph/interfaces/verbatim.py:48
-#: ./src/pyams_content/component/paragraph/interfaces/contact.py:54
-msgid "In charge of"
-msgstr ""
-
-#: ./src/pyams_content/component/paragraph/interfaces/verbatim.py:49
-msgid "Label of author function"
-msgstr ""
-
-#: ./src/pyams_content/component/paragraph/interfaces/verbatim.py:52
-msgid "Verbatim template"
-msgstr ""
-
-#: ./src/pyams_content/component/paragraph/interfaces/html.py:33
-msgid "Raw HTML "
-msgstr ""
-
-#: ./src/pyams_content/component/paragraph/interfaces/html.py:56
-msgid "Rich text"
-msgstr ""
-
-#: ./src/pyams_content/component/paragraph/interfaces/html.py:40
-msgid "Raw HTML code"
-msgstr ""
-
-#: ./src/pyams_content/component/paragraph/interfaces/html.py:41
-msgid ""
-"This HTML code will be used 'as is', without any transformation. Use with "
-"care!!"
-msgstr ""
-
-#: ./src/pyams_content/component/paragraph/interfaces/html.py:45
-msgid "Raw HTML code template"
-msgstr ""
-
-#: ./src/pyams_content/component/paragraph/interfaces/html.py:63
-msgid "Body"
-msgstr ""
-
-#: ./src/pyams_content/component/paragraph/interfaces/html.py:66
-msgid "Body template"
-msgstr ""
-
-#: ./src/pyams_content/component/paragraph/interfaces/contact.py:43
-msgid "Contact card"
-msgstr ""
-
-#: ./src/pyams_content/component/paragraph/interfaces/contact.py:50
-msgid "Contact identity"
-msgstr ""
-
-#: ./src/pyams_content/component/paragraph/interfaces/contact.py:51
-msgid "Name of the contact"
-msgstr ""
-
-#: ./src/pyams_content/component/paragraph/interfaces/contact.py:55
-msgid "Label of contact function"
-msgstr ""
-
-#: ./src/pyams_content/component/paragraph/interfaces/contact.py:58
-msgid "Email address"
-msgstr ""
-
-#: ./src/pyams_content/component/paragraph/interfaces/contact.py:59
-msgid "Contact email address"
-msgstr ""
-
-#: ./src/pyams_content/component/paragraph/interfaces/contact.py:62
-msgid "Contact form"
-msgstr ""
-
-#: ./src/pyams_content/component/paragraph/interfaces/contact.py:63
-msgid "Reference of contact form"
-msgstr ""
-
-#: ./src/pyams_content/component/paragraph/interfaces/contact.py:67
-msgid "Photo"
-msgstr ""
-
-#: ./src/pyams_content/component/paragraph/interfaces/contact.py:68
-msgid "Use 'browse' button to select contact picture"
-msgstr ""
-
-#: ./src/pyams_content/component/paragraph/interfaces/contact.py:76
-msgid "Address"
-msgstr ""
-
-#: ./src/pyams_content/component/paragraph/interfaces/contact.py:79
-msgid "Contact template"
-msgstr ""
-
-#: ./src/pyams_content/component/paragraph/interfaces/contact.py:80
-msgid "Presentation template used for this contact"
-msgstr ""
-
-#: ./src/pyams_content/component/paragraph/interfaces/contact.py:73
-msgid "GPS coordinates used to locate contact"
-msgstr ""
-
-#: ./src/pyams_content/component/paragraph/interfaces/header.py:33
-#: ./src/pyams_content/component/paragraph/interfaces/header.py:40
-#: ./src/pyams_content/shared/common/interfaces/__init__.py:153
-msgid "Header"
-msgstr ""
-
-#: ./src/pyams_content/component/paragraph/interfaces/header.py:43
-#: ./src/pyams_content/features/header/interfaces/__init__.py:39
-msgid "Header template"
-msgstr ""
-
-#: ./src/pyams_content/component/paragraph/interfaces/header.py:44
-#: ./src/pyams_content/features/header/interfaces/__init__.py:40
-msgid "Presentation template used for this header"
-msgstr ""
-
-#: ./src/pyams_content/component/theme/__init__.py:71
-#: ./src/pyams_content/component/theme/zmi/portlet.py:40
-#: ./src/pyams_content/component/theme/interfaces/__init__.py:47
-#: ./src/pyams_content/component/theme/interfaces/__init__.py:61
-#: ./src/pyams_content/shared/common/zmi/search.py:189
-#: ./src/pyams_content/root/zmi/search.py:179
-#: ./src/pyams_content/root/zmi/templates/advanced-search.pt:181
-msgid "Tags"
-msgstr ""
-
-#: ./src/pyams_content/component/theme/__init__.py:119
-#: ./src/pyams_content/component/theme/zmi/portlet.py:55
-#: ./src/pyams_content/component/theme/interfaces/__init__.py:88
-#: ./src/pyams_content/component/theme/interfaces/__init__.py:102
-#: ./src/pyams_content/shared/common/zmi/search.py:192
-msgid "Themes"
-msgstr ""
-
-#: ./src/pyams_content/component/theme/__init__.py:167
-#: ./src/pyams_content/component/theme/zmi/portlet.py:70
-#: ./src/pyams_content/component/theme/interfaces/__init__.py:129
-#: ./src/pyams_content/component/theme/interfaces/__init__.py:143
-#: ./src/pyams_content/shared/common/zmi/search.py:195
-msgid "Collections"
-msgstr ""
-
-#: ./src/pyams_content/component/theme/__init__.py:80
-msgid "no defined tag"
-msgstr ""
-
-#: ./src/pyams_content/component/theme/__init__.py:128
-msgid "no defined theme"
-msgstr ""
-
-#: ./src/pyams_content/component/theme/__init__.py:176
-msgid "no defined collection"
-msgstr ""
-
-#: ./src/pyams_content/component/theme/zmi/__init__.py:55
-#: ./src/pyams_content/shared/view/zmi/theme.py:56
-msgid "Tags..."
-msgstr ""
-
-#: ./src/pyams_content/component/theme/zmi/__init__.py:66
-msgid "Content tags"
-msgstr ""
-
-#: ./src/pyams_content/component/theme/zmi/__init__.py:99
-#: ./src/pyams_content/shared/view/zmi/theme.py:102
-msgid "Themes..."
-msgstr ""
-
-#: ./src/pyams_content/component/theme/zmi/__init__.py:107
-msgid "Content themes"
-msgstr ""
-
-#: ./src/pyams_content/component/theme/zmi/__init__.py:159
-#: ./src/pyams_content/shared/view/zmi/theme.py:148
-msgid "Collections..."
-msgstr ""
-
-#: ./src/pyams_content/component/theme/zmi/__init__.py:172
-msgid "Content collections"
-msgstr ""
-
-#: ./src/pyams_content/component/theme/zmi/manager.py:58
-msgid "Tags settings..."
-msgstr ""
-
-#: ./src/pyams_content/component/theme/zmi/manager.py:72
-msgid "Selected tags"
-msgstr ""
-
-#: ./src/pyams_content/component/theme/zmi/manager.py:108
-msgid "Themes settings..."
-msgstr ""
-
-#: ./src/pyams_content/component/theme/zmi/manager.py:122
-msgid "Selected themes"
-msgstr ""
-
-#: ./src/pyams_content/component/theme/zmi/manager.py:158
-msgid "Collections settings..."
-msgstr ""
-
-#: ./src/pyams_content/component/theme/zmi/manager.py:172
-msgid "Selected collections"
-msgstr ""
-
-#: ./src/pyams_content/component/association/container.py:91
-#: ./src/pyams_content/component/association/zmi/__init__.py:303
-#: ./src/pyams_content/component/association/interfaces/__init__.py:93
-msgid "Associations"
-msgstr ""
-
-#: ./src/pyams_content/component/association/zmi/paragraph.py:54
-#: ./src/pyams_content/component/association/zmi/__init__.py:96
-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:93
-msgid "Edit association paragraph properties"
-msgstr ""
-
-#: ./src/pyams_content/component/association/zmi/__init__.py:205
-msgid "Public title"
-msgstr ""
-
-#: ./src/pyams_content/component/association/zmi/__init__.py:223
-msgid "Inner title"
-msgstr ""
-
-#: ./src/pyams_content/component/association/zmi/__init__.py:239
-msgid "Size"
-msgstr ""
-
-#: ./src/pyams_content/component/association/zmi/__init__.py:280
-#: ./src/pyams_content/component/association/zmi/__init__.py:290
-msgid "Associations list"
-msgstr ""
-
-#: ./src/pyams_content/component/association/zmi/__init__.py:66
-msgid "Association was correctly added."
-msgstr ""
-
-#: ./src/pyams_content/component/association/interfaces/__init__.py:43
-#: ./src/pyams_content/features/menu/interfaces/__init__.py:60
-msgid "Is this item visible in front-office?"
-msgstr ""
-
-#: ./src/pyams_content/component/association/interfaces/__init__.py:100
-msgid "Associations template"
-msgstr ""
-
-#: ./src/pyams_content/component/association/interfaces/__init__.py:101
-msgid "Presentation template used for associations"
-msgstr ""
-
-#: ./src/pyams_content/component/links/__init__.py:144
-msgid "Internal link"
-msgstr ""
-
-#: ./src/pyams_content/component/links/__init__.py:230
-msgid "External link"
-msgstr ""
-
-#: ./src/pyams_content/component/links/__init__.py:283
-msgid "Mailto link"
-msgstr ""
-
-#: ./src/pyams_content/component/links/__init__.py:217
-msgid "target is not published"
-msgstr ""
-
-#: ./src/pyams_content/component/links/zmi/__init__.py:60
-msgid "Internal links"
-msgstr ""
-
-#: ./src/pyams_content/component/links/zmi/__init__.py:75
-msgid "Add internal link"
-msgstr ""
-
-#: ./src/pyams_content/component/links/zmi/__init__.py:89
-msgid "Add new internal link"
-msgstr ""
-
-#: ./src/pyams_content/component/links/zmi/__init__.py:120
-msgid "Edit internal link properties"
-msgstr ""
-
-#: ./src/pyams_content/component/links/zmi/__init__.py:149
-msgid "External links"
-msgstr ""
-
-#: ./src/pyams_content/component/links/zmi/__init__.py:164
-msgid "Add external link"
-msgstr ""
-
-#: ./src/pyams_content/component/links/zmi/__init__.py:178
-msgid "Add new external link"
-msgstr ""
-
-#: ./src/pyams_content/component/links/zmi/__init__.py:209
-msgid "Edit external link properties"
-msgstr ""
-
-#: ./src/pyams_content/component/links/zmi/__init__.py:238
-msgid "Mailto links"
-msgstr ""
-
-#: ./src/pyams_content/component/links/zmi/__init__.py:253
-msgid "Add mailto link"
-msgstr ""
-
-#: ./src/pyams_content/component/links/zmi/__init__.py:267
-msgid "Add new mailto link"
-msgstr ""
-
-#: ./src/pyams_content/component/links/zmi/__init__.py:298
-msgid "Edit mailto link properties"
-msgstr ""
-
-#: ./src/pyams_content/component/links/interfaces/__init__.py:36
-msgid "Link title, as shown in front-office"
-msgstr ""
-
-#: ./src/pyams_content/component/links/interfaces/__init__.py:40
-msgid "Link description displayed by front-office template"
-msgstr ""
-
-#: ./src/pyams_content/component/links/interfaces/__init__.py:44
-msgid "Name of the pictogram associated with this link"
-msgstr ""
-
-#: ./src/pyams_content/component/links/interfaces/__init__.py:61
-#: ./src/pyams_content/shared/logo/interfaces/__init__.py:56
-#: ./src/pyams_content/features/redirect/interfaces/__init__.py:68
-msgid "Target URL"
-msgstr ""
-
-#: ./src/pyams_content/component/links/interfaces/__init__.py:62
-#: ./src/pyams_content/shared/logo/interfaces/__init__.py:57
-msgid "URL used to access external resource"
-msgstr ""
-
-#: ./src/pyams_content/component/links/interfaces/__init__.py:66
-msgid "Language used in this remote resource"
-msgstr ""
-
-#: ./src/pyams_content/component/links/interfaces/__init__.py:74
-msgid "Target address"
-msgstr ""
-
-#: ./src/pyams_content/component/links/interfaces/__init__.py:75
-msgid "Target email address"
-msgstr ""
-
-#: ./src/pyams_content/component/links/interfaces/__init__.py:78
-msgid "Address name"
-msgstr ""
-
-#: ./src/pyams_content/component/links/interfaces/__init__.py:79
-msgid "Address as displayed in address book"
-msgstr ""
-
-#: ./src/pyams_content/component/video/__init__.py:73
-#: ./src/pyams_content/component/video/interfaces/__init__.py:68
-msgid "External video"
-msgstr ""
-
#: ./src/pyams_content/component/video/provider/dailymotion.py:94
msgid "Dailymotion settings"
msgstr ""
-#: ./src/pyams_content/component/video/provider/__init__.py:70
-msgid "Other provider"
-msgstr ""
-
-#: ./src/pyams_content/component/video/provider/__init__.py:94
-msgid "Custom video settings"
-msgstr ""
-
#: ./src/pyams_content/component/video/provider/vimeo.py:92
msgid "Vimeo settings"
msgstr ""
+#: ./src/pyams_content/component/video/provider/__init__.py:63
+msgid "Other provider"
+msgstr ""
+
+#: ./src/pyams_content/component/video/provider/__init__.py:87
+msgid "Custom video settings"
+msgstr ""
+
#: ./src/pyams_content/component/video/provider/interfaces.py:31
msgid "Integration code"
msgstr ""
@@ -1830,1401 +798,2325 @@
msgid "Youtube settings"
msgstr ""
-#: ./src/pyams_content/component/video/zmi/paragraph.py:62
+#: ./src/pyams_content/component/video/zmi/paragraph.py:55
msgid "External video..."
msgstr ""
-#: ./src/pyams_content/component/video/zmi/paragraph.py:75
+#: ./src/pyams_content/component/video/zmi/paragraph.py:68
msgid "Add new external video..."
msgstr ""
-#: ./src/pyams_content/component/video/zmi/paragraph.py:124
+#: ./src/pyams_content/component/video/zmi/paragraph.py:182
+#: ./src/pyams_content/component/paragraph/zmi/video.py:90
+msgid "Edit video properties"
+msgstr ""
+
+#: ./src/pyams_content/component/video/zmi/paragraph.py:117
msgid "Video provider is required"
msgstr ""
-#: ./src/pyams_content/component/video/zmi/paragraph.py:172
-#: ./src/pyams_content/component/video/zmi/paragraph.py:223
+#: ./src/pyams_content/component/video/zmi/paragraph.py:165
+#: ./src/pyams_content/component/video/zmi/paragraph.py:216
msgid "Video provider settings"
msgstr ""
-#: ./src/pyams_content/component/video/zmi/paragraph.py:152
+#: ./src/pyams_content/component/video/zmi/paragraph.py:145
msgid "Other settings"
msgstr ""
-#: ./src/pyams_content/component/video/interfaces/__init__.py:56
-msgid "Video provider"
-msgstr ""
-
-#: ./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:242
-#: ./src/pyams_content/shared/common/zmi/properties.py:69
-#: ./src/pyams_content/shared/common/zmi/manager.py:96
-msgid "Properties"
-msgstr ""
-
-#: ./src/pyams_content/shared/common/__init__.py:152
-#: ./src/pyams_content/shared/common/__init__.py:160
-#, python-format
-msgid "{date} by {principal}"
-msgstr ""
-
-#: ./src/pyams_content/shared/common/__init__.py:265
+#: ./src/pyams_content/component/links/__init__.py:144
+msgid "Internal link"
+msgstr ""
+
+#: ./src/pyams_content/component/links/__init__.py:230
+msgid "External link"
+msgstr ""
+
+#: ./src/pyams_content/component/links/__init__.py:283
+msgid "Mailto link"
+msgstr ""
+
+#: ./src/pyams_content/component/links/__init__.py:217
+msgid "target is not published"
+msgstr ""
+
+#: ./src/pyams_content/component/links/interfaces/__init__.py:35
+#: ./src/pyams_content/component/extfile/interfaces/__init__.py:36
+#: ./src/pyams_content/shared/imagemap/interfaces/__init__.py:55
+msgid "Alternate title"
+msgstr ""
+
+#: ./src/pyams_content/component/links/interfaces/__init__.py:36
+msgid "Link title, as shown in front-office"
+msgstr ""
+
+#: ./src/pyams_content/component/links/interfaces/__init__.py:40
+msgid "Link description displayed by front-office template"
+msgstr ""
+
+#: ./src/pyams_content/component/links/interfaces/__init__.py:43
+#: ./src/pyams_content/component/paragraph/interfaces/pictogram.py:46
+#: ./src/pyams_content/shared/common/interfaces/types.py:75
+msgid "Pictogram"
+msgstr ""
+
+#: ./src/pyams_content/component/links/interfaces/__init__.py:44
+msgid "Name of the pictogram associated with this link"
+msgstr ""
+
+#: ./src/pyams_content/component/links/interfaces/__init__.py:61
+#: ./src/pyams_content/features/redirect/interfaces/__init__.py:68
+#: ./src/pyams_content/shared/logo/interfaces/__init__.py:54
+msgid "Target URL"
+msgstr ""
+
+#: ./src/pyams_content/component/links/interfaces/__init__.py:62
+#: ./src/pyams_content/shared/logo/interfaces/__init__.py:55
+msgid "URL used to access external resource"
+msgstr ""
+
+#: ./src/pyams_content/component/links/interfaces/__init__.py:65
+#: ./src/pyams_content/component/extfile/interfaces/__init__.py:48
+msgid "Language"
+msgstr ""
+
+#: ./src/pyams_content/component/links/interfaces/__init__.py:66
+msgid "Language used in this remote resource"
+msgstr ""
+
+#: ./src/pyams_content/component/links/interfaces/__init__.py:74
+msgid "Target address"
+msgstr ""
+
+#: ./src/pyams_content/component/links/interfaces/__init__.py:75
+msgid "Target email address"
+msgstr ""
+
+#: ./src/pyams_content/component/links/interfaces/__init__.py:78
+msgid "Address name"
+msgstr ""
+
+#: ./src/pyams_content/component/links/interfaces/__init__.py:79
+msgid "Address as displayed in address book"
+msgstr ""
+
+#: ./src/pyams_content/component/links/zmi/__init__.py:60
+msgid "Internal links"
+msgstr ""
+
+#: ./src/pyams_content/component/links/zmi/__init__.py:75
+msgid "Add internal link"
+msgstr ""
+
+#: ./src/pyams_content/component/links/zmi/__init__.py:89
+msgid "Add new internal link"
+msgstr ""
+
+#: ./src/pyams_content/component/links/zmi/__init__.py:120
+msgid "Edit internal link properties"
+msgstr ""
+
+#: ./src/pyams_content/component/links/zmi/__init__.py:149
+msgid "External links"
+msgstr ""
+
+#: ./src/pyams_content/component/links/zmi/__init__.py:164
+msgid "Add external link"
+msgstr ""
+
+#: ./src/pyams_content/component/links/zmi/__init__.py:178
+msgid "Add new external link"
+msgstr ""
+
+#: ./src/pyams_content/component/links/zmi/__init__.py:209
+msgid "Edit external link properties"
+msgstr ""
+
+#: ./src/pyams_content/component/links/zmi/__init__.py:238
+msgid "Mailto links"
+msgstr ""
+
+#: ./src/pyams_content/component/links/zmi/__init__.py:253
+msgid "Add mailto link"
+msgstr ""
+
+#: ./src/pyams_content/component/links/zmi/__init__.py:267
+msgid "Add new mailto link"
+msgstr ""
+
+#: ./src/pyams_content/component/links/zmi/__init__.py:298
+msgid "Edit mailto link properties"
+msgstr ""
+
+#: ./src/pyams_content/component/paragraph/header.py:62
+msgid "This paragraph type is deprecated and should be removed!"
+msgstr ""
+
+#: ./src/pyams_content/component/paragraph/container.py:94
+msgid "Paragraphs"
+msgstr ""
+
+#: ./src/pyams_content/component/paragraph/container.py:116
+msgid "no visible paragraph"
+msgstr ""
+
+#: ./src/pyams_content/component/paragraph/pictogram.py:135
+msgid "Selected pictogram is missing"
+msgstr ""
+
+#: ./src/pyams_content/component/paragraph/milestone.py:138
+msgid "Selected paragraph is missing"
+msgstr ""
+
+#: ./src/pyams_content/component/paragraph/milestone.py:141
+msgid "Selected paragraph is not visible"
+msgstr ""
+
+#: ./src/pyams_content/component/paragraph/interfaces/header.py:33
+#: ./src/pyams_content/component/paragraph/interfaces/header.py:40
+#: ./src/pyams_content/shared/common/interfaces/__init__.py:151
+msgid "Header"
+msgstr ""
+
+#: ./src/pyams_content/component/paragraph/interfaces/header.py:43
+#: ./src/pyams_content/features/header/interfaces/__init__.py:39
+msgid "Header template"
+msgstr ""
+
+#: ./src/pyams_content/component/paragraph/interfaces/header.py:44
+#: ./src/pyams_content/features/header/interfaces/__init__.py:40
+msgid "Presentation template used for this header"
+msgstr ""
+
+#: ./src/pyams_content/component/paragraph/interfaces/contact.py:44
+msgid "Contact card"
+msgstr ""
+
+#: ./src/pyams_content/component/paragraph/interfaces/contact.py:51
+msgid "Contact identity"
+msgstr ""
+
+#: ./src/pyams_content/component/paragraph/interfaces/contact.py:52
+msgid "Name of the contact"
+msgstr ""
+
+#: ./src/pyams_content/component/paragraph/interfaces/contact.py:55
+#: ./src/pyams_content/component/paragraph/interfaces/verbatim.py:48
+msgid "In charge of"
+msgstr ""
+
+#: ./src/pyams_content/component/paragraph/interfaces/contact.py:56
+msgid "Label of contact function"
+msgstr ""
+
+#: ./src/pyams_content/component/paragraph/interfaces/contact.py:59
+msgid "Email address"
+msgstr ""
+
+#: ./src/pyams_content/component/paragraph/interfaces/contact.py:60
+msgid "Contact email address"
+msgstr ""
+
+#: ./src/pyams_content/component/paragraph/interfaces/contact.py:63
+msgid "Contact form"
+msgstr ""
+
+#: ./src/pyams_content/component/paragraph/interfaces/contact.py:64
+msgid "Reference of contact form"
+msgstr ""
+
+#: ./src/pyams_content/component/paragraph/interfaces/contact.py:68
+msgid "Photo"
+msgstr ""
+
+#: ./src/pyams_content/component/paragraph/interfaces/contact.py:69
+msgid "Use 'browse' button to select contact picture"
+msgstr ""
+
+#: ./src/pyams_content/component/paragraph/interfaces/contact.py:77
+msgid "Address"
+msgstr ""
+
+#: ./src/pyams_content/component/paragraph/interfaces/contact.py:80
+msgid "Contact template"
+msgstr ""
+
+#: ./src/pyams_content/component/paragraph/interfaces/contact.py:81
+msgid "Presentation template used for this contact"
+msgstr ""
+
+#: ./src/pyams_content/component/paragraph/interfaces/contact.py:73
+#: ./src/pyams_content/component/paragraph/interfaces/map.py:48
+msgid "GPS location"
+msgstr ""
+
+#: ./src/pyams_content/component/paragraph/interfaces/contact.py:74
+msgid "GPS coordinates used to locate contact"
+msgstr ""
+
+#: ./src/pyams_content/component/paragraph/interfaces/video.py:32
+#: ./src/pyams_content/component/extfile/__init__.py:253
+#: ./src/pyams_content/component/extfile/__init__.py:257
+msgid "Video"
+msgstr ""
+
+#: ./src/pyams_content/component/paragraph/interfaces/video.py:39
+#: ./src/pyams_content/component/extfile/interfaces/__init__.py:81
+msgid "Video data"
+msgstr ""
+
+#: ./src/pyams_content/component/paragraph/interfaces/video.py:40
+msgid "Video file content"
+msgstr ""
+
+#: ./src/pyams_content/component/paragraph/interfaces/pictogram.py:80
+#: ./src/pyams_content/component/paragraph/zmi/pictogram.py:298
+msgid "Pictograms"
+msgstr ""
+
+#: ./src/pyams_content/component/paragraph/interfaces/pictogram.py:42
+msgid "Is this pictogram visible in front-office?"
+msgstr ""
+
+#: ./src/pyams_content/component/paragraph/interfaces/pictogram.py:47
+msgid "Name of the pictogram to select"
+msgstr ""
+
+#: ./src/pyams_content/component/paragraph/interfaces/pictogram.py:53
+msgid "Alternate header"
+msgstr ""
+
+#: ./src/pyams_content/component/paragraph/interfaces/pictogram.py:54
+msgid ""
+"Alternate pictogram label; if not specified, the pictogram header will be "
+"used"
+msgstr ""
+
+#: ./src/pyams_content/component/paragraph/interfaces/pictogram.py:59
+msgid "Additional text associated to this pictogram"
+msgstr ""
+
+#: ./src/pyams_content/component/paragraph/interfaces/pictogram.py:87
+msgid "Pictograms template"
+msgstr ""
+
+#: ./src/pyams_content/component/paragraph/interfaces/pictogram.py:88
+msgid "Presentation template used for pictograms"
+msgstr ""
+
+#: ./src/pyams_content/component/paragraph/interfaces/milestone.py:74
+#: ./src/pyams_content/component/paragraph/zmi/milestone.py:291
+msgid "Milestones"
+msgstr ""
+
+#: ./src/pyams_content/component/paragraph/interfaces/milestone.py:39
+msgid "Is this milestone visible in front-office?"
+msgstr ""
+
+#: ./src/pyams_content/component/paragraph/interfaces/milestone.py:44
+msgid "Milestone title"
+msgstr ""
+
+#: ./src/pyams_content/component/paragraph/interfaces/milestone.py:47
+#: ./src/pyams_content/component/paragraph/zmi/milestone.py:250
+msgid "Associated label"
+msgstr ""
+
+#: ./src/pyams_content/component/paragraph/interfaces/milestone.py:48
+msgid "The way this label will be rendered depends on presentation template"
+msgstr ""
+
+#: ./src/pyams_content/component/paragraph/interfaces/milestone.py:51
+#: ./src/pyams_content/component/paragraph/zmi/milestone.py:262
+msgid "Anchor"
+msgstr ""
+
+#: ./src/pyams_content/component/paragraph/interfaces/milestone.py:52
+msgid "Paragraph to which this milestone should lead"
+msgstr ""
+
+#: ./src/pyams_content/component/paragraph/interfaces/milestone.py:82
+msgid "Additional text associated to this milestone paragraph"
+msgstr ""
+
+#: ./src/pyams_content/component/paragraph/interfaces/milestone.py:85
+msgid "Milestones template"
+msgstr ""
+
+#: ./src/pyams_content/component/paragraph/interfaces/milestone.py:86
+msgid "Presentation template used for milestones"
+msgstr ""
+
+#: ./src/pyams_content/component/paragraph/interfaces/html.py:33
+msgid "Raw HTML "
+msgstr ""
+
+#: ./src/pyams_content/component/paragraph/interfaces/html.py:56
+msgid "Rich text"
+msgstr ""
+
+#: ./src/pyams_content/component/paragraph/interfaces/html.py:40
+msgid "Raw HTML code"
+msgstr ""
+
+#: ./src/pyams_content/component/paragraph/interfaces/html.py:41
+msgid ""
+"This HTML code will be used 'as is', without any transformation. Use with "
+"care!!"
+msgstr ""
+
+#: ./src/pyams_content/component/paragraph/interfaces/html.py:45
+msgid "Raw HTML code template"
+msgstr ""
+
+#: ./src/pyams_content/component/paragraph/interfaces/html.py:46
+#: ./src/pyams_content/component/paragraph/interfaces/html.py:67
+#: ./src/pyams_content/component/paragraph/interfaces/verbatim.py:53
+#: ./src/pyams_content/component/paragraph/interfaces/keypoint.py:45
+#: ./src/pyams_content/component/paragraph/interfaces/frame.py:44
+#: ./src/pyams_content/shared/imagemap/interfaces/__init__.py:101
+#: ./src/pyams_content/shared/logo/interfaces/__init__.py:89
+msgid "Presentation template used for this paragraph"
+msgstr ""
+
+#: ./src/pyams_content/component/paragraph/interfaces/html.py:63
+msgid "Body"
+msgstr ""
+
+#: ./src/pyams_content/component/paragraph/interfaces/html.py:66
+msgid "Body template"
+msgstr ""
+
+#: ./src/pyams_content/component/paragraph/interfaces/verbatim.py:33
+msgid "Verbatim"
+msgstr ""
+
+#: ./src/pyams_content/component/paragraph/interfaces/verbatim.py:40
+msgid "Quoted text"
+msgstr ""
+
+#: ./src/pyams_content/component/paragraph/interfaces/verbatim.py:41
+msgid "Quotation marks will be added automatically by presentation template"
+msgstr ""
+
+#: ./src/pyams_content/component/paragraph/interfaces/verbatim.py:45
+msgid "Name of the quote author"
+msgstr ""
+
+#: ./src/pyams_content/component/paragraph/interfaces/verbatim.py:49
+msgid "Label of author function"
+msgstr ""
+
+#: ./src/pyams_content/component/paragraph/interfaces/verbatim.py:52
+msgid "Verbatim template"
+msgstr ""
+
+#: ./src/pyams_content/component/paragraph/interfaces/__init__.py:43
+msgid "Is this paragraph visible in front-office?"
+msgstr ""
+
+#: ./src/pyams_content/component/paragraph/interfaces/__init__.py:47
+msgid "Anchor?"
+msgstr ""
+
+#: ./src/pyams_content/component/paragraph/interfaces/__init__.py:48
+msgid "Is this paragraph a navigation anchor?"
+msgstr ""
+
+#: ./src/pyams_content/component/paragraph/interfaces/__init__.py:52
+msgid "§ Title"
+msgstr ""
+
+#: ./src/pyams_content/component/paragraph/interfaces/__init__.py:92
+msgid "Allowed paragraphs"
+msgstr ""
+
+#: ./src/pyams_content/component/paragraph/interfaces/__init__.py:93
+msgid "List of paragraphs allowed for this content type"
+msgstr ""
+
+#: ./src/pyams_content/component/paragraph/interfaces/__init__.py:97
+#: ./src/pyams_content/shared/common/zmi/types.py:171
+#: ./src/pyams_content/shared/common/zmi/types.py:411
+msgid "Default paragraphs"
+msgstr ""
+
+#: ./src/pyams_content/component/paragraph/interfaces/__init__.py:98
+msgid "List of paragraphs automatically added to a new content"
+msgstr ""
+
+#: ./src/pyams_content/component/paragraph/interfaces/map.py:41
+msgid "Location map"
+msgstr ""
+
+#: ./src/pyams_content/component/paragraph/interfaces/map.py:49
+msgid "GPS coordinates used to locate map"
+msgstr ""
+
+#: ./src/pyams_content/component/paragraph/interfaces/map.py:52
+msgid "Display location mark?"
+msgstr ""
+
+#: ./src/pyams_content/component/paragraph/interfaces/map.py:53
+msgid "If 'yes', a location marker will be displayed on map"
+msgstr ""
+
+#: ./src/pyams_content/component/paragraph/interfaces/map.py:57
+msgid "Map template"
+msgstr ""
+
+#: ./src/pyams_content/component/paragraph/interfaces/map.py:58
+msgid "Presentation template used for this map"
+msgstr ""
+
+#: ./src/pyams_content/component/paragraph/interfaces/keypoint.py:33
+#: ./src/pyams_content/component/paragraph/interfaces/keypoint.py:40
+msgid "Key points"
+msgstr ""
+
+#: ./src/pyams_content/component/paragraph/interfaces/keypoint.py:41
+msgid "Enter one key point by line, without hyphen or prefix"
+msgstr ""
+
+#: ./src/pyams_content/component/paragraph/interfaces/keypoint.py:44
+msgid "Presentation template"
+msgstr ""
+
+#: ./src/pyams_content/component/paragraph/interfaces/frame.py:33
+msgid "Framed text"
+msgstr ""
+
+#: ./src/pyams_content/component/paragraph/interfaces/frame.py:40
+msgid "Frame body"
+msgstr ""
+
+#: ./src/pyams_content/component/paragraph/interfaces/frame.py:43
+msgid "Text template"
+msgstr ""
+
+#: ./src/pyams_content/component/paragraph/interfaces/audio.py:32
+msgid "Audio"
+msgstr ""
+
+#: ./src/pyams_content/component/paragraph/interfaces/audio.py:40
+#: ./src/pyams_content/component/extfile/interfaces/__init__.py:90
+msgid "Audio file content"
+msgstr ""
+
+#: ./src/pyams_content/component/paragraph/interfaces/audio.py:51
+#: ./src/pyams_content/component/extfile/interfaces/__init__.py:41
+msgid "File description displayed by front-office template"
+msgstr ""
+
+#: ./src/pyams_content/component/paragraph/interfaces/audio.py:54
+msgid "Audio template"
+msgstr ""
+
+#: ./src/pyams_content/component/paragraph/interfaces/audio.py:55
+msgid "Presentation template used for this audio file"
+msgstr ""
+
+#: ./src/pyams_content/component/paragraph/portlet/__init__.py:83
+msgid "Content paragraphs"
+msgstr ""
+
+#: ./src/pyams_content/component/paragraph/portlet/__init__.py:135
+msgid "Paragraphs navigation anchors"
+msgstr ""
+
+#: ./src/pyams_content/component/paragraph/portlet/interfaces/__init__.py:30
+#: ./src/pyams_content/component/paragraph/portlet/interfaces/__init__.py:52
+msgid "Selected paragraphs"
+msgstr ""
+
+#: ./src/pyams_content/component/paragraph/portlet/interfaces/__init__.py:31
+msgid ""
+"List of selected paragraphs; an empty selection means that all paragraphs "
+"will be selectable by following filters; otherwise, this selection will have "
+"priority"
+msgstr ""
+
+#: ./src/pyams_content/component/paragraph/portlet/interfaces/__init__.py:37
+#: ./src/pyams_content/component/paragraph/portlet/interfaces/__init__.py:59
+msgid "Paragraph types"
+msgstr ""
+
+#: ./src/pyams_content/component/paragraph/portlet/interfaces/__init__.py:38
+msgid ""
+"Select list of paragraph types you want to include; an empty selection means "
+"that all paragraphs types will be selected"
+msgstr ""
+
+#: ./src/pyams_content/component/paragraph/portlet/interfaces/__init__.py:43
+#: ./src/pyams_content/component/paragraph/portlet/interfaces/__init__.py:65
+msgid "Anchors only?"
+msgstr ""
+
+#: ./src/pyams_content/component/paragraph/portlet/interfaces/__init__.py:44
+msgid "If 'yes', only paragraphs set as 'anchors' will be selected"
+msgstr ""
+
+#: ./src/pyams_content/component/paragraph/portlet/interfaces/__init__.py:53
+msgid ""
+"List of paragraphs selected for navigation; an empty selection means that all"
+" paragraphs will be selectable by following filters; otherwise, this "
+"selection will have priority"
+msgstr ""
+
+#: ./src/pyams_content/component/paragraph/portlet/interfaces/__init__.py:60
+msgid ""
+"Select list of paragraph types you want to use for navigation; an empty "
+"selection means that all paragraphs types will be selected"
+msgstr ""
+
+#: ./src/pyams_content/component/paragraph/portlet/interfaces/__init__.py:66
+msgid "If 'no', all paragraphs will be used as navigation anchors"
+msgstr ""
+
+#: ./src/pyams_content/component/paragraph/portlet/zmi/__init__.py:67
+#: ./src/pyams_content/component/paragraph/portlet/zmi/__init__.py:122
+msgid "No filter, all paragraphs selected"
+msgstr ""
+
+#: ./src/pyams_content/component/paragraph/portlet/zmi/__init__.py:74
+#: ./src/pyams_content/component/paragraph/portlet/zmi/__init__.py:129
+msgid "No filter, all paragraph types selected"
+msgstr ""
+
+#: ./src/pyams_content/component/paragraph/portlet/zmi/templates/navigation-preview.pt:4
+#: ./src/pyams_content/component/paragraph/portlet/zmi/templates/container-preview.pt:4
+msgid "Selected paragraphs:"
+msgstr ""
+
+#: ./src/pyams_content/component/paragraph/portlet/zmi/templates/navigation-preview.pt:10
+#: ./src/pyams_content/component/paragraph/portlet/zmi/templates/container-preview.pt:10
+msgid "Paragraphs filters:"
+msgstr ""
+
+#: ./src/pyams_content/component/paragraph/portlet/zmi/templates/navigation-preview.pt:13
+#: ./src/pyams_content/component/paragraph/portlet/zmi/templates/container-preview.pt:13
+msgid "Selected paragraph types:"
+msgstr ""
+
+#: ./src/pyams_content/component/paragraph/portlet/zmi/templates/navigation-preview.pt:18
+#: ./src/pyams_content/component/paragraph/portlet/zmi/templates/container-preview.pt:18
+msgid "Only display anchors"
+msgstr ""
+
+#: ./src/pyams_content/component/paragraph/zmi/header.py:49
+msgid "Edit header paragraph properties"
+msgstr ""
+
+#: ./src/pyams_content/component/paragraph/zmi/container.py:74
+msgid "Contents..."
+msgstr ""
+
+#: ./src/pyams_content/component/paragraph/zmi/container.py:215
+msgid "Set navigation anchor"
+msgstr ""
+
+#: ./src/pyams_content/component/paragraph/zmi/container.py:286
+msgid "Show/hide all paragraphs"
+msgstr ""
+
+#: ./src/pyams_content/component/paragraph/zmi/container.py:334
+#: ./src/pyams_content/component/paragraph/zmi/container.py:343
+#: ./src/pyams_content/component/paragraph/zmi/container.py:356
+msgid "Content blocks"
+msgstr ""
+
+#: ./src/pyams_content/component/paragraph/zmi/container.py:413
+msgid "Links and attachments..."
+msgstr ""
+
+#: ./src/pyams_content/component/paragraph/zmi/container.py:425
+msgid "Content blocks links and attachments"
+msgstr ""
+
+#: ./src/pyams_content/component/paragraph/zmi/container.py:145
+msgid "No currently defined paragraph."
+msgstr ""
+
+#: ./src/pyams_content/component/paragraph/zmi/container.py:295
+msgid "Click to open/close all paragraphs editors"
+msgstr ""
+
+#: ./src/pyams_content/component/paragraph/zmi/container.py:308
+msgid "Click to open/close paragraph editor"
+msgstr ""
+
+#: ./src/pyams_content/component/paragraph/zmi/container.py:151
+msgid "Check allowed paragraph types to be able to create new paragraphs."
+msgstr ""
+
+#: ./src/pyams_content/component/paragraph/zmi/contact.py:53
+msgid "Contact card..."
+msgstr ""
+
+#: ./src/pyams_content/component/paragraph/zmi/contact.py:66
+msgid "Add new contact card"
+msgstr ""
+
+#: ./src/pyams_content/component/paragraph/zmi/contact.py:89
+msgid "Edit contact card properties"
+msgstr ""
+
+#: ./src/pyams_content/component/paragraph/zmi/video.py:54
+msgid "Video paragraph..."
+msgstr ""
+
+#: ./src/pyams_content/component/paragraph/zmi/video.py:67
+msgid "Add new video paragraph"
+msgstr ""
+
+#: ./src/pyams_content/component/paragraph/zmi/pictogram.py:82
+msgid "Pictograms..."
+msgstr ""
+
+#: ./src/pyams_content/component/paragraph/zmi/pictogram.py:95
+msgid "Add new pictogram paragraph"
+msgstr ""
+
+#: ./src/pyams_content/component/paragraph/zmi/pictogram.py:122
+msgid "Edit pictogram paragraph properties"
+msgstr ""
+
+#. Default: Header
+#: ./src/pyams_content/component/paragraph/zmi/pictogram.py:259
+msgid "pictogram-item-header"
+msgstr ""
+
+#: ./src/pyams_content/component/paragraph/zmi/pictogram.py:348
+msgid "Pictogram was correctly added"
+msgstr ""
+
+#: ./src/pyams_content/component/paragraph/zmi/pictogram.py:358
+#: ./src/pyams_content/component/paragraph/zmi/pictogram.py:396
+msgid "You must select a pictogram!"
+msgstr ""
+
+#: ./src/pyams_content/component/paragraph/zmi/milestone.py:77
+msgid "Milestones..."
+msgstr ""
+
+#: ./src/pyams_content/component/paragraph/zmi/milestone.py:90
+msgid "Add new milestone paragraph"
+msgstr ""
+
+#: ./src/pyams_content/component/paragraph/zmi/milestone.py:117
+msgid "Edit milestone paragraph properties"
+msgstr ""
+
+#: ./src/pyams_content/component/paragraph/zmi/milestone.py:306
+msgid "Add milestone"
+msgstr ""
+
+#: ./src/pyams_content/component/paragraph/zmi/milestone.py:319
+msgid "Add new milestone"
+msgstr ""
+
+#: ./src/pyams_content/component/paragraph/zmi/milestone.py:346
+msgid "Edit milestone properties"
+msgstr ""
+
+#: ./src/pyams_content/component/paragraph/zmi/milestone.py:334
+msgid "Milestone was correctly added"
+msgstr ""
+
+#: ./src/pyams_content/component/paragraph/zmi/milestone.py:277
+msgid "(missing paragraph)"
+msgstr ""
+
+#: ./src/pyams_content/component/paragraph/zmi/html.py:76
+msgid "Raw HTML..."
+msgstr ""
+
+#: ./src/pyams_content/component/paragraph/zmi/html.py:89
+msgid "Add new raw HTML paragraph"
+msgstr ""
+
+#: ./src/pyams_content/component/paragraph/zmi/html.py:119
+msgid "Edit raw HTML paragraph properties"
+msgstr ""
+
+#: ./src/pyams_content/component/paragraph/zmi/html.py:159
+msgid "Rich text..."
+msgstr ""
+
+#: ./src/pyams_content/component/paragraph/zmi/html.py:172
+msgid "Add new rich text paragraph"
+msgstr ""
+
+#: ./src/pyams_content/component/paragraph/zmi/html.py:197
+msgid "Edit rich text paragraph properties"
+msgstr ""
+
+#: ./src/pyams_content/component/paragraph/zmi/verbatim.py:57
+msgid "Verbatim..."
+msgstr ""
+
+#: ./src/pyams_content/component/paragraph/zmi/verbatim.py:70
+msgid "Add new verbatim paragraph"
+msgstr ""
+
+#: ./src/pyams_content/component/paragraph/zmi/verbatim.py:92
+msgid "Edit verbatim paragraph properties"
+msgstr ""
+
+#: ./src/pyams_content/component/paragraph/zmi/__init__.py:64
+msgid "Content block types..."
+msgstr ""
+
+#: ./src/pyams_content/component/paragraph/zmi/__init__.py:78
+msgid "Content block types"
+msgstr ""
+
+#: ./src/pyams_content/component/paragraph/zmi/__init__.py:88
+msgid ""
+"You can define which types of paragraphs are allowed in this container.\n"
+"\n"
+"Default paragraphs will be added automatically (in selected order) to any new created content.\n"
+"\n"
+"NOTICE: removing types from allowed types list will have no effect on already created contents!"
+msgstr ""
+
+#: ./src/pyams_content/component/paragraph/zmi/__init__.py:208
+#: ./src/pyams_content/features/preview/zmi/__init__.py:45
+#: ./src/pyams_content/shared/common/zmi/templates/preview-input.pt:39
+msgid "Preview"
+msgstr ""
+
+#: ./src/pyams_content/component/paragraph/zmi/__init__.py:213
+#: ./src/pyams_content/features/review/zmi/__init__.py:84
+#: ./src/pyams_content/shared/common/zmi/__init__.py:275
+#: ./src/pyams_content/shared/common/zmi/owner.py:73
+#: ./src/pyams_content/shared/common/zmi/workflow.py:123
+#: ./src/pyams_content/shared/common/zmi/workflow.py:210
+#: ./src/pyams_content/shared/common/zmi/workflow.py:250
+#: ./src/pyams_content/shared/common/zmi/workflow.py:304
+#: ./src/pyams_content/shared/common/zmi/workflow.py:393
+#: ./src/pyams_content/shared/common/zmi/workflow.py:449
+#: ./src/pyams_content/shared/common/zmi/workflow.py:489
+#: ./src/pyams_content/shared/common/zmi/workflow.py:530
+#: ./src/pyams_content/shared/common/zmi/workflow.py:573
+#: ./src/pyams_content/shared/common/zmi/workflow.py:613
+#: ./src/pyams_content/shared/common/zmi/workflow.py:654
+#: ./src/pyams_content/shared/common/zmi/workflow.py:705
+msgid "Cancel"
+msgstr ""
+
+#: ./src/pyams_content/component/paragraph/zmi/__init__.py:215
+msgid "Submit"
+msgstr ""
+
+#: ./src/pyams_content/component/paragraph/zmi/__init__.py:196
+msgid "Paragraph was correctly added."
+msgstr ""
+
+#: ./src/pyams_content/component/paragraph/zmi/__init__.py:255
+msgid ""
+"You changed renderer selection. Don't omit to update new renderer "
+"properties..."
+msgstr ""
+
+#: ./src/pyams_content/component/paragraph/zmi/map.py:55
+msgid "Location map..."
+msgstr ""
+
+#: ./src/pyams_content/component/paragraph/zmi/map.py:68
+msgid "Add new location map"
+msgstr ""
+
+#: ./src/pyams_content/component/paragraph/zmi/map.py:91
+msgid "Edit location map properties"
+msgstr ""
+
+#: ./src/pyams_content/component/paragraph/zmi/keypoint.py:51
+msgid "Key points..."
+msgstr ""
+
+#: ./src/pyams_content/component/paragraph/zmi/keypoint.py:64
+msgid "Add new key points paragraph"
+msgstr ""
+
+#: ./src/pyams_content/component/paragraph/zmi/keypoint.py:91
+msgid "Edit key points paragraph properties"
+msgstr ""
+
+#: ./src/pyams_content/component/paragraph/zmi/frame.py:86
+msgid "Framed text..."
+msgstr ""
+
+#: ./src/pyams_content/component/paragraph/zmi/frame.py:100
+msgid "Add new framed text paragraph"
+msgstr ""
+
+#: ./src/pyams_content/component/paragraph/zmi/frame.py:126
+msgid "Edit framed text paragraph properties"
+msgstr ""
+
+#: ./src/pyams_content/component/paragraph/zmi/audio.py:54
+msgid "Audio paragraph..."
+msgstr ""
+
+#: ./src/pyams_content/component/paragraph/zmi/audio.py:67
+msgid "Add new audio paragraph"
+msgstr ""
+
+#: ./src/pyams_content/component/paragraph/zmi/audio.py:89
+msgid "Edit audio properties"
+msgstr ""
+
+#: ./src/pyams_content/component/association/container.py:91
+#: ./src/pyams_content/component/association/interfaces/__init__.py:93
+#: ./src/pyams_content/component/association/zmi/__init__.py:313
+msgid "Associations"
+msgstr ""
+
+#: ./src/pyams_content/component/association/interfaces/__init__.py:43
+#: ./src/pyams_content/features/menu/interfaces/__init__.py:60
+msgid "Is this item visible in front-office?"
+msgstr ""
+
+#: ./src/pyams_content/component/association/interfaces/__init__.py:100
+msgid "Associations template"
+msgstr ""
+
+#: ./src/pyams_content/component/association/interfaces/__init__.py:101
+msgid "Presentation template used for associations"
+msgstr ""
+
+#: ./src/pyams_content/component/association/zmi/__init__.py:96
+#: ./src/pyams_content/component/association/zmi/paragraph.py:54
+msgid "Associations..."
+msgstr ""
+
+#: ./src/pyams_content/component/association/zmi/__init__.py:209
+msgid "Public title"
+msgstr ""
+
+#: ./src/pyams_content/component/association/zmi/__init__.py:229
+msgid "Inner title"
+msgstr ""
+
+#: ./src/pyams_content/component/association/zmi/__init__.py:247
+msgid "Size"
+msgstr ""
+
+#: ./src/pyams_content/component/association/zmi/__init__.py:290
+#: ./src/pyams_content/component/association/zmi/__init__.py:300
+msgid "Associations list"
+msgstr ""
+
+#: ./src/pyams_content/component/association/zmi/__init__.py:66
+msgid "Association was correctly added."
+msgstr ""
+
+#: ./src/pyams_content/component/association/zmi/paragraph.py:67
+msgid "Add new association paragraph"
+msgstr ""
+
+#: ./src/pyams_content/component/association/zmi/paragraph.py:93
+msgid "Edit association paragraph properties"
+msgstr ""
+
+#: ./src/pyams_content/component/extfile/__init__.py:172
+#: ./src/pyams_content/component/extfile/__init__.py:176
+msgid "Standard file"
+msgstr ""
+
+#: ./src/pyams_content/component/extfile/__init__.py:272
+#: ./src/pyams_content/component/extfile/__init__.py:276
+msgid "Audio file"
+msgstr ""
+
+#: ./src/pyams_content/component/extfile/interfaces/__init__.py:37
+msgid "File title, as shown in front-office"
+msgstr ""
+
+#: ./src/pyams_content/component/extfile/interfaces/__init__.py:49
+msgid "File's content language"
+msgstr ""
+
+#: ./src/pyams_content/component/extfile/interfaces/__init__.py:53
+msgid "Save file as..."
+msgstr ""
+
+#: ./src/pyams_content/component/extfile/interfaces/__init__.py:54
+msgid "Name under which the file will be saved"
+msgstr ""
+
+#: ./src/pyams_content/component/extfile/interfaces/__init__.py:61
+msgid "File data"
+msgstr ""
+
+#: ./src/pyams_content/component/extfile/interfaces/__init__.py:62
+msgid "File content"
+msgstr ""
+
+#: ./src/pyams_content/component/extfile/interfaces/__init__.py:73
+#: ./src/pyams_content/shared/logo/interfaces/__init__.py:59
+msgid "Image data"
+msgstr ""
+
+#: ./src/pyams_content/component/extfile/interfaces/__init__.py:74
+msgid "Image content"
+msgstr ""
+
+#: ./src/pyams_content/component/extfile/interfaces/__init__.py:82
+msgid "Video content"
+msgstr ""
+
+#: ./src/pyams_content/component/extfile/zmi/__init__.py:74
+msgid "External files"
+msgstr ""
+
+#: ./src/pyams_content/component/extfile/zmi/__init__.py:89
+msgid "Add external file"
+msgstr ""
+
+#: ./src/pyams_content/component/extfile/zmi/__init__.py:103
+msgid "Add new external file"
+msgstr ""
+
+#: ./src/pyams_content/component/extfile/zmi/__init__.py:133
+msgid "Update file properties"
+msgstr ""
+
+#: ./src/pyams_content/component/extfile/zmi/__init__.py:161
+msgid "Images"
+msgstr ""
+
+#: ./src/pyams_content/component/extfile/zmi/__init__.py:176
+msgid "Add image"
+msgstr ""
+
+#: ./src/pyams_content/component/extfile/zmi/__init__.py:190
+msgid "Add new image"
+msgstr ""
+
+#: ./src/pyams_content/component/extfile/zmi/__init__.py:221
+msgid "Update image properties"
+msgstr ""
+
+#: ./src/pyams_content/component/extfile/zmi/__init__.py:254
+msgid "Videos"
+msgstr ""
+
+#: ./src/pyams_content/component/extfile/zmi/__init__.py:269
+msgid "Add video"
+msgstr ""
+
+#: ./src/pyams_content/component/extfile/zmi/__init__.py:283
+msgid "Add new video"
+msgstr ""
+
+#: ./src/pyams_content/component/extfile/zmi/__init__.py:307
+msgid "Update video properties"
+msgstr ""
+
+#: ./src/pyams_content/component/extfile/zmi/__init__.py:333
+msgid "Audios files"
+msgstr ""
+
+#: ./src/pyams_content/component/extfile/zmi/__init__.py:348
+msgid "Add audio file"
+msgstr ""
+
+#: ./src/pyams_content/component/extfile/zmi/__init__.py:362
+msgid "Add new audio file"
+msgstr ""
+
+#: ./src/pyams_content/component/extfile/zmi/__init__.py:386
+msgid "Update audio file properties"
+msgstr ""
+
+#: ./src/pyams_content/component/extfile/zmi/__init__.py:50
+msgid "External file type"
+msgstr ""
+
+#: ./src/pyams_content/component/illustration/__init__.py:171
+#: ./src/pyams_content/component/illustration/thesaurus.py:32
+#: ./src/pyams_content/component/illustration/interfaces/__init__.py:97
+#: ./src/pyams_content/component/illustration/zmi/__init__.py:51
+#: ./src/pyams_content/component/illustration/zmi/__init__.py:112
+#: ./src/pyams_content/component/illustration/zmi/paragraph.py:153
+msgid "Illustration"
+msgstr ""
+
+#: ./src/pyams_content/component/illustration/interfaces/__init__.py:55
+msgid "Name of picture's author"
+msgstr ""
+
+#: ./src/pyams_content/component/illustration/interfaces/__init__.py:63
+msgid "Illustration description displayed in front-office templates"
+msgstr ""
+
+#: ./src/pyams_content/component/illustration/interfaces/__init__.py:66
+msgid "Illustration template"
+msgstr ""
+
+#: ./src/pyams_content/component/illustration/interfaces/__init__.py:67
+msgid "Presentation template used for illustration"
+msgstr ""
+
+#: ./src/pyams_content/component/illustration/zmi/__init__.py:146
+msgid "Navigation link illustration"
+msgstr ""
+
+#: ./src/pyams_content/component/illustration/zmi/__init__.py:114
+msgid "Header illustration"
+msgstr ""
+
+#: ./src/pyams_content/component/illustration/zmi/thesaurus.py:42
+#: ./src/pyams_content/component/illustration/zmi/paragraph.py:93
+msgid "Edit illustration properties"
+msgstr ""
+
+#: ./src/pyams_content/component/illustration/zmi/paragraph.py:55
+msgid "Illustration..."
+msgstr ""
+
+#: ./src/pyams_content/component/illustration/zmi/paragraph.py:68
+msgid "Add new illustration"
+msgstr ""
+
+#: ./src/pyams_content/component/theme/__init__.py:74
+#: ./src/pyams_content/component/theme/interfaces/__init__.py:64
+#: ./src/pyams_content/component/theme/interfaces/__init__.py:78
+#: ./src/pyams_content/component/theme/zmi/portlet.py:40
+#: ./src/pyams_content/root/zmi/search.py:179
+#: ./src/pyams_content/root/zmi/templates/advanced-search.pt:181
+#: ./src/pyams_content/shared/common/zmi/search.py:189
+msgid "Tags"
+msgstr ""
+
+#: ./src/pyams_content/component/theme/__init__.py:122
+#: ./src/pyams_content/component/theme/interfaces/__init__.py:105
+#: ./src/pyams_content/component/theme/interfaces/__init__.py:119
+#: ./src/pyams_content/component/theme/zmi/portlet.py:55
+#: ./src/pyams_content/shared/common/zmi/search.py:192
+msgid "Themes"
+msgstr ""
+
+#: ./src/pyams_content/component/theme/__init__.py:170
+#: ./src/pyams_content/component/theme/interfaces/__init__.py:146
+#: ./src/pyams_content/component/theme/interfaces/__init__.py:160
+#: ./src/pyams_content/component/theme/zmi/portlet.py:70
+#: ./src/pyams_content/shared/common/zmi/search.py:195
+msgid "Collections"
+msgstr ""
+
+#: ./src/pyams_content/component/theme/__init__.py:83
+msgid "no defined tag"
+msgstr ""
+
+#: ./src/pyams_content/component/theme/__init__.py:131
+msgid "no defined theme"
+msgstr ""
+
+#: ./src/pyams_content/component/theme/__init__.py:179
+msgid "no defined collection"
+msgstr ""
+
+#: ./src/pyams_content/component/theme/interfaces/__init__.py:41
+msgid "Enable search by tag?"
+msgstr ""
+
+#: ./src/pyams_content/component/theme/interfaces/__init__.py:42
+msgid ""
+"If 'yes', displayed tags will lead to a search engine displaying contents "
+"matching given tag"
+msgstr ""
+
+#: ./src/pyams_content/component/theme/interfaces/__init__.py:47
+msgid "Tags search target"
+msgstr ""
+
+#: ./src/pyams_content/component/theme/interfaces/__init__.py:48
+msgid "Site or folder where tags search is displayed"
+msgstr ""
+
+#: ./src/pyams_content/component/theme/interfaces/__init__.py:54
+msgid "You must specify search target when activating search by tags!"
+msgstr ""
+
+#: ./src/pyams_content/component/theme/zmi/manager.py:58
+msgid "Tags settings..."
+msgstr ""
+
+#: ./src/pyams_content/component/theme/zmi/manager.py:72
+msgid "Selected tags"
+msgstr ""
+
+#: ./src/pyams_content/component/theme/zmi/manager.py:109
+msgid "Themes settings..."
+msgstr ""
+
+#: ./src/pyams_content/component/theme/zmi/manager.py:123
+msgid "Selected themes"
+msgstr ""
+
+#: ./src/pyams_content/component/theme/zmi/manager.py:159
+msgid "Collections settings..."
+msgstr ""
+
+#: ./src/pyams_content/component/theme/zmi/manager.py:173
+msgid "Selected collections"
+msgstr ""
+
+#: ./src/pyams_content/component/theme/zmi/__init__.py:55
+#: ./src/pyams_content/shared/view/zmi/theme.py:56
+msgid "Tags..."
+msgstr ""
+
+#: ./src/pyams_content/component/theme/zmi/__init__.py:66
+msgid "Content tags"
+msgstr ""
+
+#: ./src/pyams_content/component/theme/zmi/__init__.py:99
+#: ./src/pyams_content/shared/view/zmi/theme.py:102
+msgid "Themes..."
+msgstr ""
+
+#: ./src/pyams_content/component/theme/zmi/__init__.py:107
+msgid "Content themes"
+msgstr ""
+
+#: ./src/pyams_content/component/theme/zmi/__init__.py:159
+#: ./src/pyams_content/shared/view/zmi/theme.py:148
+msgid "Collections..."
+msgstr ""
+
+#: ./src/pyams_content/component/theme/zmi/__init__.py:172
+msgid "Content collections"
+msgstr ""
+
+#: ./src/pyams_content/interfaces/__init__.py:95
+msgid "Unique key"
+msgstr ""
+
+#: ./src/pyams_content/interfaces/__init__.py:96
+msgid ""
+"WARNING: this key can't be modified after creation!!! Spaces, uppercase "
+"letters ou accentuated characters will be replaced automatically."
+msgstr ""
+
+#: ./src/pyams_content/interfaces/__init__.py:102
+#: ./src/pyams_content/shared/site/zmi/folder.py:67
+msgid "Visible label used to display content"
+msgstr ""
+
+#: ./src/pyams_content/interfaces/__init__.py:105
+msgid "Short name"
+msgstr ""
+
+#: ./src/pyams_content/interfaces/__init__.py:106
+msgid "Short name used in breadcrumbs"
+msgstr ""
+
+#: ./src/pyams_content/interfaces/__init__.py:113
+#: ./src/pyams_content/features/review/interfaces.py:74
+#: ./src/pyams_content/shared/view/interfaces/__init__.py:43
+msgid "Creation date"
+msgstr ""
+
+#: ./src/pyams_content/interfaces/__init__.py:117
+msgid "Modification date"
+msgstr ""
+
+#: ./src/pyams_content/features/alert/interfaces.py:39
+msgid "Alert"
+msgstr ""
+
+#: ./src/pyams_content/features/alert/interfaces.py:40
+msgid "End of alert"
+msgstr ""
+
+#: ./src/pyams_content/features/alert/interfaces.py:41
+msgid "Information"
+msgstr ""
+
+#: ./src/pyams_content/features/alert/interfaces.py:42
+msgid "Warning"
+msgstr ""
+
+#: ./src/pyams_content/features/alert/interfaces.py:43
+msgid "Recommendation"
+msgstr ""
+
+#: ./src/pyams_content/features/alert/interfaces.py:55
+msgid "Is this alert visible in front-office?"
+msgstr ""
+
+#: ./src/pyams_content/features/alert/interfaces.py:59
+msgid "Alert gravity"
+msgstr ""
+
+#: ./src/pyams_content/features/alert/interfaces.py:60
+msgid "Alert gravity will affect rendered alert style"
+msgstr ""
+
+#: ./src/pyams_content/features/alert/interfaces.py:65
+#: ./src/pyams_content/features/alert/zmi/container.py:143
+msgid "Message"
+msgstr ""
+
+#: ./src/pyams_content/features/alert/interfaces.py:66
+msgid "Alert message"
+msgstr ""
+
+#: ./src/pyams_content/features/alert/interfaces.py:69
+#: ./src/pyams_content/features/menu/interfaces/__init__.py:68
+#: ./src/pyams_content/shared/imagemap/interfaces/__init__.py:96
+msgid "Internal reference"
+msgstr ""
+
+#: ./src/pyams_content/features/alert/interfaces.py:70
+msgid ""
+"Internal link target reference. You can search a reference using '+' followed"
+" by internal number, of by entering text matching content title."
+msgstr ""
+
+#: ./src/pyams_content/features/alert/interfaces.py:75
+msgid "Display start date"
+msgstr ""
+
+#: ./src/pyams_content/features/alert/interfaces.py:76
+msgid "First date at which alert should be displayed"
+msgstr ""
+
+#: ./src/pyams_content/features/alert/interfaces.py:79
+msgid "Display end date"
+msgstr ""
+
+#: ./src/pyams_content/features/alert/interfaces.py:80
+msgid "Last date at which alert should be displayed"
+msgstr ""
+
+#: ./src/pyams_content/features/alert/interfaces.py:83
+msgid "Maximum interval"
+msgstr ""
+
+#: ./src/pyams_content/features/alert/interfaces.py:84
+msgid ""
+"Maximum interval between alert displays on a given device, given in hours; "
+"set to 0 to always display the alert"
+msgstr ""
+
+#: ./src/pyams_content/features/alert/zmi/container.py:53
+msgid "Alerts"
+msgstr ""
+
+#: ./src/pyams_content/features/alert/zmi/container.py:165
+msgid "Alert list"
+msgstr ""
+
+#: ./src/pyams_content/features/alert/zmi/container.py:95
+msgid "No currently defined alert."
+msgstr ""
+
+#: ./src/pyams_content/features/alert/zmi/__init__.py:45
+msgid "Add alert"
+msgstr ""
+
+#: ./src/pyams_content/features/alert/zmi/__init__.py:56
+msgid "Add new alert"
+msgstr ""
+
+#: ./src/pyams_content/features/alert/zmi/__init__.py:79
+msgid "Edit alert properties"
+msgstr ""
+
+#: ./src/pyams_content/features/redirect/container.py:81
+msgid "not matching"
+msgstr ""
+
+#: ./src/pyams_content/features/redirect/interfaces/__init__.py:39
+msgid "Active rule?"
+msgstr ""
+
+#: ./src/pyams_content/features/redirect/interfaces/__init__.py:40
+msgid "If 'no', selected rule is inactive"
+msgstr ""
+
+#: ./src/pyams_content/features/redirect/interfaces/__init__.py:44
+msgid "Chained rule?"
+msgstr ""
+
+#: ./src/pyams_content/features/redirect/interfaces/__init__.py:45
+msgid ""
+"If 'no', and if this rule is matching received request URL, the rule returns "
+"a redirection response; otherwise, the rule just rewrites the input URL which"
+" is forwarded to the next rule"
+msgstr ""
+
+#: ./src/pyams_content/features/redirect/interfaces/__init__.py:51
+msgid "Permanent redirect?"
+msgstr ""
+
+#: ./src/pyams_content/features/redirect/interfaces/__init__.py:52
+msgid "Define if this redirection should be permanent or temporary"
+msgstr ""
+
+#: ./src/pyams_content/features/redirect/interfaces/__init__.py:56
+#: ./src/pyams_content/features/redirect/zmi/container.py:210
+#: ./src/pyams_content/features/redirect/zmi/container.py:366
+msgid "URL pattern"
+msgstr ""
+
+#: ./src/pyams_content/features/redirect/interfaces/__init__.py:57
+msgid "Regexp pattern of matching URLs for this redirection rule"
+msgstr ""
+
+#: ./src/pyams_content/features/redirect/interfaces/__init__.py:62
+msgid "Internal redirection target"
+msgstr ""
+
+#: ./src/pyams_content/features/redirect/interfaces/__init__.py:63
+msgid ""
+"Internal redirection reference. You can search a reference using '+' followed"
+" by internal number, of by entering text matching content title."
+msgstr ""
+
+#: ./src/pyams_content/features/redirect/interfaces/__init__.py:69
+msgid "URL to which source URL should be redirected"
+msgstr ""
+
+#: ./src/pyams_content/features/redirect/interfaces/__init__.py:75
+msgid "You can only provide an internal reference OR a target URL"
+msgstr ""
+
+#: ./src/pyams_content/features/redirect/interfaces/__init__.py:77
+msgid "You must provide an internal reference OR a target URL"
+msgstr ""
+
+#: ./src/pyams_content/features/redirect/zmi/container.py:67
+msgid "Redirections"
+msgstr ""
+
+#: ./src/pyams_content/features/redirect/zmi/container.py:161
+msgid "Enable/disable rule"
+msgstr ""
+
+#: ./src/pyams_content/features/redirect/zmi/container.py:188
+msgid "Chain/unchain rule"
+msgstr ""
+
+#: ./src/pyams_content/features/redirect/zmi/container.py:220
+msgid "Target"
+msgstr ""
+
+#: ./src/pyams_content/features/redirect/zmi/container.py:246
+msgid "Redirections list"
+msgstr ""
+
+#: ./src/pyams_content/features/redirect/zmi/container.py:261
+msgid "Redirection rules"
+msgstr ""
+
+#: ./src/pyams_content/features/redirect/zmi/container.py:262
+msgid ""
+"Redirection rules are use to handle redirections responses when a request generates \n"
+"a famous « 404 NotFound » error.\n"
+"\n"
+"Redirections are particularly useful when you are migrating from a previous site and don't want to lose \n"
+"your SEO.\n"
+"\n"
+"You can define a set of rules which will be applied to every \"NotFound\" request; rules are based on \n"
+"regular expressions which are applied to input URL: if the rule is \"matching\", the target URL is rewritten\n"
+"and a \"Redirect\" response is send.\n"
+"\n"
+"You can chain rules together: when a rule is chained, it's rewritten URL is passed as input URL to the \n"
+"next rule, until a matching rule is found.\n"
+msgstr ""
+
+#: ./src/pyams_content/features/redirect/zmi/container.py:288
+msgid "Test"
+msgstr ""
+
+#: ./src/pyams_content/features/redirect/zmi/container.py:323
+msgid "Test redirection rules"
+msgstr ""
+
+#: ./src/pyams_content/features/redirect/zmi/container.py:301
+msgid "Test URL"
+msgstr ""
+
+#: ./src/pyams_content/features/redirect/zmi/container.py:304
+msgid "Check inactive rules?"
+msgstr ""
+
+#: ./src/pyams_content/features/redirect/zmi/container.py:305
+msgid "If 'yes', inactive rules will also be tested"
+msgstr ""
+
+#: ./src/pyams_content/features/redirect/zmi/container.py:313
+msgid "Close"
+msgstr ""
+
+#: ./src/pyams_content/features/redirect/zmi/container.py:314
+msgid "Test rules"
+msgstr ""
+
+#: ./src/pyams_content/features/redirect/zmi/container.py:123
+msgid "No currently defined redirection rule."
+msgstr ""
+
+#: ./src/pyams_content/features/redirect/zmi/container.py:371
+msgid "No matching rule!"
+msgstr ""
+
+#: ./src/pyams_content/features/redirect/zmi/container.py:365
+msgid "Input URL"
+msgstr ""
+
+#: ./src/pyams_content/features/redirect/zmi/container.py:367
+msgid "Output URL"
+msgstr ""
+
+#: ./src/pyams_content/features/redirect/zmi/__init__.py:50
+msgid "Add rule"
+msgstr ""
+
+#: ./src/pyams_content/features/redirect/zmi/__init__.py:63
+msgid "Add new redirection rule"
+msgstr ""
+
+#: ./src/pyams_content/features/redirect/zmi/__init__.py:88
+msgid "Edit redirection rule properties"
+msgstr ""
+
+#: ./src/pyams_content/features/redirect/zmi/__init__.py:109
+msgid ""
+"URL pattern and target URL are defined by *regular expressions* (see |regexp|).\n"
+" \n"
+"In URL pattern, you can use any valid regular expression element, notably:\n"
+"\n"
+"- « .* » to match any list of characters \n"
+"\n"
+"- « ( ) » to \"memorize\" parts of the URL which can be replaced into target URL\n"
+"\n"
+"- special characters (like \"+\") must be escaped with an « \\\\ ».\n"
+"\n"
+"In target URL, memorized parts can be reused using « \\\\1 », « \\\\2 » and so on, where given number is\n"
+"the order of the matching pattern element.\n"
+"\n"
+".. |regexp| raw:: html\n"
+"\n"
+" <a href=\"https://docs.python.org/3/library/re.html\" target=\"_blank\">Python Regular Expressions</a>\n"
+msgstr ""
+
+#: ./src/pyams_content/features/review/__init__.py:181
#, python-format
-msgid "title length should be between 40 and 66 characters ({length} actually)"
-msgstr ""
-
-#: ./src/pyams_content/shared/common/zmi/search.py:96
-#: ./src/pyams_content/root/zmi/search.py:95
-msgid "Quick search results"
-msgstr ""
-
-#: ./src/pyams_content/shared/common/zmi/search.py:162
-#: ./src/pyams_content/shared/common/zmi/search.py:204
-#: ./src/pyams_content/root/zmi/search.py:152
-#: ./src/pyams_content/root/zmi/search.py:188
-msgid "Advanced search"
-msgstr ""
-
-#: ./src/pyams_content/shared/common/zmi/search.py:332
-#: ./src/pyams_content/root/zmi/search.py:280
-msgid "Advanced search results"
-msgstr ""
-
-#: ./src/pyams_content/shared/common/zmi/search.py:170
-#: ./src/pyams_content/shared/common/zmi/dashboard.py:231
-#: ./src/pyams_content/root/zmi/search.py:164
-msgid "Owner"
-msgstr ""
-
-#: ./src/pyams_content/shared/common/zmi/search.py:173
-#: ./src/pyams_content/shared/common/zmi/dashboard.py:154
-msgid "Status"
-msgstr ""
-
-#: ./src/pyams_content/shared/common/zmi/search.py:177
-#: ./src/pyams_content/root/zmi/search.py:167
-msgid "Created after..."
-msgstr ""
-
-#: ./src/pyams_content/shared/common/zmi/search.py:180
-#: ./src/pyams_content/root/zmi/search.py:170
-msgid "Created before..."
-msgstr ""
-
-#: ./src/pyams_content/shared/common/zmi/search.py:183
-#: ./src/pyams_content/root/zmi/search.py:173
-msgid "Modified after..."
-msgstr ""
-
-#: ./src/pyams_content/shared/common/zmi/search.py:186
-#: ./src/pyams_content/root/zmi/search.py:176
-msgid "Modified before..."
-msgstr ""
-
-#: ./src/pyams_content/shared/common/zmi/properties.py:59
-msgid "Composition"
-msgstr ""
-
-#: ./src/pyams_content/shared/common/zmi/properties.py:82
-msgid "Content properties"
-msgstr ""
-
-#: ./src/pyams_content/shared/common/zmi/types.py:70
-msgid "Data types"
-msgstr ""
-
-#: ./src/pyams_content/shared/common/zmi/types.py:148
-msgid "Data type label"
-msgstr ""
-
-#: ./src/pyams_content/shared/common/zmi/types.py:188
-#: ./src/pyams_content/shared/common/zmi/types.py:428
-msgid "Default associations"
-msgstr ""
-
-#: ./src/pyams_content/shared/common/zmi/types.py:204
-msgid "Default themes"
-msgstr ""
-
-#: ./src/pyams_content/shared/common/zmi/types.py:232
-msgid "Content data types"
-msgstr ""
-
-#: ./src/pyams_content/shared/common/zmi/types.py:255
-msgid "Add data type"
-msgstr ""
-
-#: ./src/pyams_content/shared/common/zmi/types.py:267
-msgid "Add new data type"
-msgstr ""
-
-#: ./src/pyams_content/shared/common/zmi/types.py:310
-msgid "Data type properties"
-msgstr ""
-
-#: ./src/pyams_content/shared/common/zmi/types.py:391
-msgid "Subtype label"
-msgstr ""
-
-#: ./src/pyams_content/shared/common/zmi/types.py:472
-msgid "Add subtype"
-msgstr ""
-
-#: ./src/pyams_content/shared/common/zmi/types.py:484
-msgid "Add new subtype"
-msgstr ""
-
-#: ./src/pyams_content/shared/common/zmi/types.py:531
-msgid "Data subtype properties"
-msgstr ""
-
-#: ./src/pyams_content/shared/common/zmi/types.py:573
-msgid "Select content type..."
-msgstr ""
-
-#: ./src/pyams_content/shared/common/zmi/types.py:115
-msgid "No currently defined data type."
-msgstr ""
-
-#: ./src/pyams_content/shared/common/zmi/types.py:300
-msgid "Specified type name is already used!"
-msgstr ""
-
-#: ./src/pyams_content/shared/common/zmi/types.py:507
-msgid "Subtype was correctly added."
-msgstr ""
-
-#: ./src/pyams_content/shared/common/zmi/types.py:521
-msgid "Specified subtype name is already used!"
-msgstr ""
-
-#: ./src/pyams_content/shared/common/zmi/types.py:160
-msgid "Click to see subtypes"
-msgstr ""
-
-#: ./src/pyams_content/shared/common/zmi/workflow.py:845
-msgid "Prior checks"
-msgstr ""
-
-#: ./src/pyams_content/shared/common/zmi/workflow.py:124
-msgid "Request publication"
-msgstr ""
-
-#: ./src/pyams_content/shared/common/zmi/workflow.py:211
-#: ./src/pyams_content/workflow/__init__.py:315
-msgid "Cancel publication request"
-msgstr ""
-
-#: ./src/pyams_content/shared/common/zmi/workflow.py:251
-msgid "Refuse publication request"
-msgstr ""
-
-#: ./src/pyams_content/shared/common/zmi/workflow.py:305
-#: ./src/pyams_content/workflow/basic.py:196
-msgid "Publish"
-msgstr ""
-
-#: ./src/pyams_content/shared/common/zmi/workflow.py:394
-msgid "Request retire"
-msgstr ""
-
-#: ./src/pyams_content/shared/common/zmi/workflow.py:450
-msgid "Cancel retire request"
-msgstr ""
-
-#: ./src/pyams_content/shared/common/zmi/workflow.py:490
-msgid "Retire"
-msgstr ""
-
-#: ./src/pyams_content/shared/common/zmi/workflow.py:531
-#: ./src/pyams_content/workflow/__init__.py:436
-msgid "Request archive"
-msgstr ""
-
-#: ./src/pyams_content/shared/common/zmi/workflow.py:574
-msgid "Cancel archive request"
-msgstr ""
-
-#: ./src/pyams_content/shared/common/zmi/workflow.py:614
-msgid "Archive"
-msgstr ""
-
-#: ./src/pyams_content/shared/common/zmi/workflow.py:655
-#: ./src/pyams_content/workflow/__init__.py:501
-#: ./src/pyams_content/workflow/__init__.py:513
-#: ./src/pyams_content/workflow/__init__.py:525
-#: ./src/pyams_content/workflow/__init__.py:537
-#: ./src/pyams_content/workflow/__init__.py:549
-#: ./src/pyams_content/workflow/basic.py:224
-#: ./src/pyams_content/workflow/basic.py:236
-msgid "Create new version"
-msgstr ""
-
-#: ./src/pyams_content/shared/common/zmi/workflow.py:706
-#: ./src/pyams_content/workflow/__init__.py:561
-#: ./src/pyams_content/workflow/basic.py:248
-msgid "Delete version"
-msgstr ""
-
-#: ./src/pyams_content/shared/common/zmi/workflow.py:791
-msgid "Previewed content?"
-msgstr ""
-
-#: ./src/pyams_content/shared/common/zmi/workflow.py:795
-msgid "Verified content?"
-msgstr ""
-
-#: ./src/pyams_content/shared/common/zmi/workflow.py:181
-#: ./src/pyams_content/shared/common/zmi/workflow.py:363
-msgid "Publication start date is required"
-msgstr ""
-
-#: ./src/pyams_content/shared/common/zmi/workflow.py:274
-#: ./src/pyams_content/shared/common/zmi/workflow.py:420
-msgid "A comment is required"
-msgstr ""
-
-#: ./src/pyams_content/shared/common/zmi/workflow.py:730
-msgid "Delete content"
-msgstr ""
-
-#: ./src/pyams_content/shared/common/zmi/workflow.py:739
-msgid "Delete definitively"
-msgstr ""
-
-#: ./src/pyams_content/shared/common/zmi/workflow.py:868
+msgid "Request comment: {comment}"
+msgstr ""
+
+#: ./src/pyams_content/features/review/__init__.py:211
+#, python-format
+msgid "A new comment was added on content « {0} »"
+msgstr ""
+
+#: ./src/pyams_content/features/review/__init__.py:168
+#, python-format
+msgid "[{service_name}] A content review is requested"
+msgstr ""
+
+#: ./src/pyams_content/features/review/interfaces.py:32
+msgid "Review request"
+msgstr ""
+
+#: ./src/pyams_content/features/review/interfaces.py:33
+msgid "Reviewer comment"
+msgstr ""
+
+#: ./src/pyams_content/features/review/interfaces.py:56
+msgid "Comment writer"
+msgstr ""
+
+#: ./src/pyams_content/features/review/interfaces.py:59
+msgid "Content reviewers"
+msgstr ""
+
+#: ./src/pyams_content/features/review/interfaces.py:62
+msgid "Comment type"
+msgstr ""
+
+#: ./src/pyams_content/features/review/interfaces.py:67
+msgid "Comment body"
+msgstr ""
+
+#: ./src/pyams_content/features/review/interfaces.py:70
+msgid "Reviewer comment?"
+msgstr ""
+
+#: ./src/pyams_content/features/review/interfaces.py:86
+msgid "Reviewers list"
+msgstr ""
+
+#: ./src/pyams_content/features/review/interfaces.py:87
+msgid "List of principals which reviewed the comment"
+msgstr ""
+
+#: ./src/pyams_content/features/review/zmi/__init__.py:55
+msgid "Ask for review..."
+msgstr ""
+
+#: ./src/pyams_content/features/review/zmi/__init__.py:94
+msgid "Content review request"
+msgstr ""
+
+#: ./src/pyams_content/features/review/zmi/__init__.py:159
+msgid "Comments"
+msgstr ""
+
+#: ./src/pyams_content/features/review/zmi/__init__.py:179
+msgid "Review comments"
+msgstr ""
+
+#: ./src/pyams_content/features/review/zmi/__init__.py:65
+msgid "Sought principals"
+msgstr ""
+
+#: ./src/pyams_content/features/review/zmi/__init__.py:66
+msgid "List of principals from which a review is requested"
+msgstr ""
+
+#: ./src/pyams_content/features/review/zmi/__init__.py:69
+msgid "Comment"
+msgstr ""
+
+#: ./src/pyams_content/features/review/zmi/__init__.py:70
+msgid "Comment associated with this request"
+msgstr ""
+
+#: ./src/pyams_content/features/review/zmi/__init__.py:73
+msgid "Notify all reviewers"
+msgstr ""
+
+#: ./src/pyams_content/features/review/zmi/__init__.py:74
msgid ""
-"You must confirm that you previewed and checked this content before "
-"requesting publication!!"
-msgstr ""
-
-#: ./src/pyams_content/shared/common/zmi/workflow.py:88
+"If 'yes', selected reviewers will be notified by mail of your request, even "
+"if they were already members of the reviewers group. Otherwise, only new "
+"reviewers will be notified"
+msgstr ""
+
+#: ./src/pyams_content/features/review/zmi/__init__.py:85
+msgid "Ask for content review"
+msgstr ""
+
+#: ./src/pyams_content/features/review/zmi/__init__.py:140
+msgid "Request successful. No new notification have been sent"
+msgstr ""
+
+#: ./src/pyams_content/features/review/zmi/__init__.py:256
+msgid "Message is mandatory!"
+msgstr ""
+
+#: ./src/pyams_content/features/review/zmi/__init__.py:128
+#, python-format
+msgid "Request successful. {count} new notification(s) have been sent"
+msgstr ""
+
+#: ./src/pyams_content/features/review/zmi/templates/review-comments-json.pt:15
+#: ./src/pyams_content/features/review/zmi/templates/review-comments.pt:32
+#: ./src/pyams_content/features/review/zmi/templates/review-add-comment.pt:14
+msgid "Review query from"
+msgstr ""
+
+#: ./src/pyams_content/features/review/zmi/templates/review-comments-json.pt:21
+#: ./src/pyams_content/features/review/zmi/templates/review-comments.pt:38
+#: ./src/pyams_content/features/review/zmi/templates/review-add-comment.pt:20
+msgid "(as reviewer)"
+msgstr ""
+
+#: ./src/pyams_content/features/review/zmi/templates/review-comments-json.pt:30
+#: ./src/pyams_content/features/review/zmi/templates/review-comments.pt:47
+msgid "Selected reviewers:"
+msgstr ""
+
+#: ./src/pyams_content/features/review/zmi/templates/review-comments.pt:64
+msgid "Add comment"
+msgstr ""
+
+#: ./src/pyams_content/features/review/zmi/templates/review-comments.pt:67
+msgid "Add a comment..."
+msgstr ""
+
+#: ./src/pyams_content/features/review/zmi/templates/review-comments.pt:73
+msgid "Add this comment"
+msgstr ""
+
+#: ./src/pyams_content/features/review/zmi/templates/review-notification.pt:4
+msgid "[${service_name}] You are requested for a content review"
+msgstr ""
+
+#: ./src/pyams_content/features/review/zmi/templates/review-notification.pt:30
+msgid "Hello,"
+msgstr ""
+
+#: ./src/pyams_content/features/review/zmi/templates/review-notification.pt:31
+msgid ""
+"You have been requested by ${sender}, contributor of « ${service_name} » "
+"website, to make a review of a content."
+msgstr ""
+
+#: ./src/pyams_content/features/review/zmi/templates/review-notification.pt:36
+msgid "${sender} added the following message to his request:"
+msgstr ""
+
+#: ./src/pyams_content/features/review/zmi/templates/review-notification.pt:41
+msgid ""
+"To review and comment this publication, please use the following link: "
+"${target}."
+msgstr ""
+
+#: ./src/pyams_content/features/review/zmi/templates/review-notification.pt:44
+msgid "After reading this content, please use the « Comments » menu entry."
+msgstr ""
+
+#: ./src/pyams_content/features/review/zmi/templates/review-notification.pt:45
+msgid ""
+"If you don't want to reply to this request, please contact ${sender} directly"
+" by replying to this mail."
+msgstr ""
+
+#: ./src/pyams_content/features/review/zmi/templates/review-notification.pt:47
+msgid "Thank you."
+msgstr ""
+
+#: ./src/pyams_content/features/review/zmi/templates/review-add-comment.pt:22
+msgid "just now"
+msgstr ""
+
+#: ./src/pyams_content/features/renderer/zmi/__init__.py:71
+#: ./src/pyams_content/features/renderer/zmi/templates/renderer-input.pt:4
+msgid "Edit renderer properties"
+msgstr ""
+
+#: ./src/pyams_content/features/renderer/skin/__init__.py:65
+msgid "Hidden content"
+msgstr ""
+
+#: ./src/pyams_content/features/preview/zmi/__init__.py:62
+msgid "Content preview"
+msgstr ""
+
+#: ./src/pyams_content/features/preview/zmi/__init__.py:67
#, python-format
-msgid "{state} | by {principal}"
-msgstr ""
-
-#: ./src/pyams_content/shared/common/zmi/workflow.py:871
-msgid ""
-"You must confirm that you checked this content before requesting "
-"publication!!"
-msgstr ""
-
-#: ./src/pyams_content/shared/common/zmi/workflow.py:84
-#: ./src/pyams_content/workflow/__init__.py:648
-#: ./src/pyams_content/workflow/__init__.py:619
-#: ./src/pyams_content/workflow/basic.py:315
-#: ./src/pyams_content/workflow/basic.py:286
-#, python-format
-msgid "{state} {date}"
-msgstr ""
-
-#: ./src/pyams_content/shared/common/zmi/__init__.py:263
-msgid "Duplicate content..."
-msgstr ""
-
-#: ./src/pyams_content/shared/common/zmi/__init__.py:283
-msgid "Duplicate content"
-msgstr ""
-
-#: ./src/pyams_content/shared/common/zmi/__init__.py:84
-msgid "This title can be modified afterwards"
-msgstr ""
-
-#: ./src/pyams_content/shared/common/zmi/__init__.py:274
-msgid "Duplicate this content"
-msgstr ""
-
-#: ./src/pyams_content/shared/common/zmi/__init__.py:330
-#, python-format
-msgid "Clone created from version {source} of {oid} (in « {state} » state)"
-msgstr ""
-
-#: ./src/pyams_content/shared/common/zmi/__init__.py:375
-msgid "Created or modified in this version"
-msgstr ""
-
-#: ./src/pyams_content/shared/common/zmi/summary.py:52
-msgid "Display content summary"
-msgstr ""
-
-#: ./src/pyams_content/shared/common/zmi/summary.py:76
-msgid "Identity card"
-msgstr ""
-
-#: ./src/pyams_content/shared/common/zmi/summary.py:94
-msgid "Requested action"
-msgstr ""
-
-#: ./src/pyams_content/shared/common/zmi/summary.py:135
-msgid "Publication and retire dates"
-msgstr ""
-
-#: ./src/pyams_content/shared/common/zmi/summary.py:154
-msgid "Current version"
-msgstr ""
-
-#: ./src/pyams_content/shared/common/zmi/summary.py:184
-msgid "Content history"
-msgstr ""
-
-#: ./src/pyams_content/shared/common/zmi/summary.py:125
-msgid "Associated comment"
-msgstr ""
-
-#: ./src/pyams_content/shared/common/zmi/summary.py:166
-#: ./src/pyams_content/shared/common/zmi/dashboard.py:198
-msgid "Version"
-msgstr ""
-
-#: ./src/pyams_content/shared/common/zmi/summary.py:115
-#, python-format
-msgid "{state} {date} by {principal}"
-msgstr ""
-
-#: ./src/pyams_content/shared/common/zmi/summary.py:172
-#, python-format
-msgid "{state} since {date}, by {principal}"
-msgstr ""
-
-#: ./src/pyams_content/shared/common/zmi/manager.py:107
-msgid "Shared tool properties"
-msgstr ""
-
-#: ./src/pyams_content/shared/common/zmi/manager.py:125
-msgid "WARNING"
-msgstr ""
-
-#: ./src/pyams_content/shared/common/zmi/manager.py:127
-msgid ""
-"Workflow shouldn't be modified if this tool already contains any shared "
-"content!"
-msgstr ""
-
-#: ./src/pyams_content/shared/common/zmi/manager.py:150
-msgid "Languages"
-msgstr ""
-
-#: ./src/pyams_content/shared/common/zmi/manager.py:162
-msgid "Content languages"
-msgstr ""
-
-#: ./src/pyams_content/shared/common/zmi/manager.py:172
+msgid "{title} ({preview})"
+msgstr ""
+
+#: ./src/pyams_content/features/preview/zmi/__init__.py:68
+msgid "preview"
+msgstr ""
+
+#: ./src/pyams_content/features/footer/interfaces/__init__.py:39
+msgid "Footer template"
+msgstr ""
+
+#: ./src/pyams_content/features/footer/interfaces/__init__.py:40
+msgid "Presentation template used for this footer"
+msgstr ""
+
+#: ./src/pyams_content/features/footer/zmi/__init__.py:60
+msgid "Page footer"
+msgstr ""
+
+#: ./src/pyams_content/features/footer/zmi/__init__.py:78
+msgid "Edit footer settings"
+msgstr ""
+
+#: ./src/pyams_content/features/footer/zmi/__init__.py:152
msgid ""
-"Tool languages are used to translate own tool properties, and newly created "
-"contents will propose these languages by default"
-msgstr ""
-
-#: ./src/pyams_content/shared/common/zmi/manager.py:80
-msgid "Content management"
-msgstr ""
-
-#: ./src/pyams_content/shared/common/zmi/manager.py:82
-msgid "Tool management"
-msgstr ""
-
-#: ./src/pyams_content/shared/common/zmi/owner.py:50
-msgid "Change owner..."
-msgstr ""
-
-#: ./src/pyams_content/shared/common/zmi/owner.py:83
-msgid "Change content's owner"
-msgstr ""
-
-#: ./src/pyams_content/shared/common/zmi/owner.py:125
+"WARNING: Footer properties are saved automatically when changing inherit "
+"mode!!"
+msgstr ""
+
+#: ./src/pyams_content/features/footer/zmi/__init__.py:220
+msgid "Footer renderer settings"
+msgstr ""
+
+#: ./src/pyams_content/features/footer/zmi/__init__.py:107
+msgid "Don't inherit parent footer"
+msgstr ""
+
+#: ./src/pyams_content/features/footer/skin/__init__.py:94
+msgid "Hidden footer"
+msgstr ""
+
+#: ./src/pyams_content/features/menu/interfaces/__init__.py:64
+msgid "Menu title"
+msgstr ""
+
+#: ./src/pyams_content/features/menu/interfaces/__init__.py:65
+msgid "Displayed menu label"
+msgstr ""
+
+#: ./src/pyams_content/features/menu/interfaces/__init__.py:69
+msgid "Direct reference to menu target"
+msgstr ""
+
+#: ./src/pyams_content/features/menu/portlet/navigation/simple.py:67
+msgid "Simple navigation"
+msgstr ""
+
+#: ./src/pyams_content/features/menu/portlet/navigation/double.py:67
+msgid "Double navigation"
+msgstr ""
+
+#: ./src/pyams_content/features/menu/portlet/navigation/interfaces/simple.py:32
+#: ./src/pyams_content/features/menu/portlet/navigation/interfaces/double.py:32
+msgid "Portlet main title"
+msgstr ""
+
+#: ./src/pyams_content/features/menu/portlet/navigation/zmi/simple.py:69
+msgid "Navigation links"
+msgstr ""
+
+#: ./src/pyams_content/features/menu/portlet/navigation/zmi/double.py:69
+msgid "Navigation menus"
+msgstr ""
+
+#: ./src/pyams_content/features/menu/portlet/navigation/zmi/templates/double-preview.pt:14
+#: ./src/pyams_content/features/menu/portlet/navigation/zmi/templates/simple-preview.pt:11
+msgid "Link has no illustration"
+msgstr ""
+
+#: ./src/pyams_content/features/menu/zmi/__init__.py:81
+msgid "Add menu..."
+msgstr ""
+
+#: ./src/pyams_content/features/menu/zmi/__init__.py:92
+msgid "Add new menu"
+msgstr ""
+
+#: ./src/pyams_content/features/menu/zmi/__init__.py:123
+msgid "Edit menu properties"
+msgstr ""
+
+#: ./src/pyams_content/features/menu/zmi/__init__.py:215
+#: ./src/pyams_content/shared/form/interfaces/__init__.py:60
+#: ./src/pyams_content/shared/form/zmi/field.py:167
+#: ./src/pyams_content/shared/common/interfaces/types.py:47
+#: ./src/pyams_content/shared/common/zmi/templates/preview-input.pt:34
+#: ./src/pyams_content/shared/common/zmi/templates/check-input.pt:34
+msgid "Label"
+msgstr ""
+
+#: ./src/pyams_content/features/menu/zmi/__init__.py:110
+msgid "Menu was correctly added."
+msgstr ""
+
+#: ./src/pyams_content/features/menu/zmi/__init__.py:395
+msgid "Link was correctly added."
+msgstr ""
+
+#: ./src/pyams_content/features/menu/zmi/templates/menu-name-cell.pt:7
+msgid "Click to see menu items"
+msgstr ""
+
+#: ./src/pyams_content/features/checker/interfaces.py:27
+#, python-format
+msgid " - {field}: <span class=\"text-danger\">no value</span>"
+msgstr ""
+
+#: ./src/pyams_content/features/checker/interfaces.py:28
+#, python-format
+msgid " - {field} ({lang}): <span class=\"text-danger\">no value</span>"
+msgstr ""
+
+#: ./src/pyams_content/features/checker/interfaces.py:29
+#, python-format
+msgid " - {field}: <span class=\"text-danger\">{message}</span>"
+msgstr ""
+
+#: ./src/pyams_content/features/checker/zmi/__init__.py:43
+#: ./src/pyams_content/shared/common/zmi/templates/check-input.pt:39
+msgid "Audit"
+msgstr ""
+
+#: ./src/pyams_content/features/checker/zmi/__init__.py:58
+msgid "Content check"
+msgstr ""
+
+#: ./src/pyams_content/features/checker/zmi/__init__.py:82
+msgid "No checker available. This content is clean!"
+msgstr ""
+
+#: ./src/pyams_content/features/checker/zmi/__init__.py:78
+#, python-format
+msgid "{0}:"
+msgstr ""
+
+#: ./src/pyams_content/features/header/zmi/__init__.py:66
+msgid "Page header"
+msgstr ""
+
+#: ./src/pyams_content/features/header/zmi/__init__.py:84
+msgid "Edit header settings"
+msgstr ""
+
+#: ./src/pyams_content/features/header/zmi/__init__.py:161
msgid ""
-"All versions of this content which are not archived will be transferred to "
-"newly selected owner"
-msgstr ""
-
-#: ./src/pyams_content/shared/common/zmi/owner.py:60
-msgid "New owner"
-msgstr ""
-
-#: ./src/pyams_content/shared/common/zmi/owner.py:61
-msgid "The selected user will become the new content's owner"
-msgstr ""
-
-#: ./src/pyams_content/shared/common/zmi/owner.py:63
-msgid "Keep previous owner as contributor"
-msgstr ""
-
-#: ./src/pyams_content/shared/common/zmi/owner.py:64
-msgid "If 'yes', the previous owner will still be able to modify this content"
-msgstr ""
-
-#: ./src/pyams_content/shared/common/zmi/owner.py:74
-msgid "Change owner"
-msgstr ""
-
-#: ./src/pyams_content/shared/common/zmi/rename.py:62
-msgid "Change URL..."
-msgstr ""
-
-#: ./src/pyams_content/shared/common/zmi/rename.py:79
-msgid "Change item URL"
-msgstr ""
-
-#: ./src/pyams_content/shared/common/zmi/rename.py:86
-msgid "Item URL part"
-msgstr ""
-
-#: ./src/pyams_content/shared/common/zmi/rename.py:87
-msgid "URL part used to access this content"
-msgstr ""
-
-#: ./src/pyams_content/shared/common/zmi/rename.py:121
-msgid "You must provide an URL for this item!"
-msgstr ""
-
-#: ./src/pyams_content/shared/common/zmi/reverse.py:57
-msgid "Reverse links"
-msgstr ""
-
-#: ./src/pyams_content/shared/common/zmi/reverse.py:66
-msgid "Content's internal links"
-msgstr ""
-
-#: ./src/pyams_content/shared/common/zmi/site.py:38
-#, python-format
-msgid ""
-"SEARCH - Between all contents published into « {site} »"
-msgstr ""
-
-#: ./src/pyams_content/shared/common/zmi/portal.py:44
-msgid "Edit default template properties"
-msgstr ""
-
-#: ./src/pyams_content/shared/common/zmi/portal.py:54
-msgid ""
-"**This form allows you to select shared content default template.**\n"
-"\n"
-"If you choose to use a shared template, you can only adjust settings of each portlet individually but can't change portlets list or page configuration.\n"
-"\n"
-"If you use a local template, you can define a whole custom configuration but the template definition can't be reused anywhere..."
-msgstr ""
-
-#: ./src/pyams_content/shared/common/zmi/portal.py:70
-msgid "Use tool default template"
-msgstr ""
-
-#: ./src/pyams_content/shared/common/zmi/dashboard.py:134
-msgid "Unique ID"
-msgstr ""
-
-#: ./src/pyams_content/shared/common/zmi/dashboard.py:181
-msgid "Status date"
-msgstr ""
-
-#: ./src/pyams_content/shared/common/zmi/dashboard.py:213
-msgid "Status principal"
-msgstr ""
-
-#: ./src/pyams_content/shared/common/zmi/dashboard.py:250
-msgid "Last modification"
-msgstr ""
-
-#: ./src/pyams_content/shared/common/zmi/dashboard.py:273
+"WARNING: Header properties are saved automatically when changing inherit "
+"mode!!"
+msgstr ""
+
+#: ./src/pyams_content/features/header/zmi/__init__.py:229
+msgid "Header renderer settings"
+msgstr ""
+
+#: ./src/pyams_content/features/header/zmi/__init__.py:113
+msgid "Don't inherit parent header"
+msgstr ""
+
+#: ./src/pyams_content/features/header/skin/__init__.py:100
+msgid "Hidden header"
+msgstr ""
+
+#: ./src/pyams_content/profile/interfaces/__init__.py:33
+msgid "User favorites"
+msgstr ""
+
+#: ./src/pyams_content/profile/interfaces/__init__.py:34
+msgid "List of internal numbers of shared contents stored for quick access"
+msgstr ""
+
+#: ./src/pyams_content/profile/interfaces/__init__.py:37
+msgid "Default table length"
+msgstr ""
+
+#: ./src/pyams_content/profile/interfaces/__init__.py:38
+msgid "Default length used for inner tables and dashboards"
+msgstr ""
+
+#: ./src/pyams_content/profile/zmi/__init__.py:42
+msgid "Admin. profile"
+msgstr ""
+
+#: ./src/pyams_content/skin/zmi/viewlet/toplinks/__init__.py:43
+msgid "Shared sites"
+msgstr ""
+
+#: ./src/pyams_content/skin/zmi/viewlet/toplinks/__init__.py:64
+msgid "Shared contents"
+msgstr ""
+
+#: ./src/pyams_content/skin/zmi/viewlet/toplinks/__init__.py:87
+msgid "Shared tools"
+msgstr ""
+
+#: ./src/pyams_content/skin/zmi/viewlet/toplinks/__init__.py:110
+msgid "My roles"
+msgstr ""
+
+#: ./src/pyams_content/skin/zmi/viewlet/toplinks/templates/user-addings.pt:7
+msgid "Create new content"
+msgstr ""
+
+#: ./src/pyams_content/root/__init__.py:63
+msgid "Site root"
+msgstr ""
+
+#: ./src/pyams_content/root/interfaces/__init__.py:33
+msgid "Site managers"
+msgstr ""
+
+#: ./src/pyams_content/root/interfaces/__init__.py:37
+#: ./src/pyams_content/shared/common/interfaces/__init__.py:41
+msgid "Webmasters"
+msgstr ""
+
+#: ./src/pyams_content/root/interfaces/__init__.py:41
+msgid "Templates managers"
+msgstr ""
+
+#: ./src/pyams_content/root/interfaces/__init__.py:45
+msgid "Operators group"
+msgstr ""
+
+#: ./src/pyams_content/root/interfaces/__init__.py:46
+msgid "Name of group containing all roles owners"
+msgstr ""
+
+#: ./src/pyams_content/root/zmi/sites.py:68
+#: ./src/pyams_content/shared/site/zmi/container.py:176
+#: ./src/pyams_content/shared/site/zmi/container.py:186
+msgid "Site tree"
+msgstr ""
+
+#: ./src/pyams_content/root/zmi/sites.py:78
+msgid "Blogs and shared sites"
+msgstr ""
+
+#: ./src/pyams_content/root/zmi/sites.py:108
+msgid "Visible site?"
+msgstr ""
+
+#: ./src/pyams_content/root/zmi/sites.py:134
+msgid "OID"
+msgstr ""
+
+#: ./src/pyams_content/root/zmi/sites.py:152
+msgid "Delete shared site"
+msgstr ""
+
+#: ./src/pyams_content/root/zmi/sites.py:171
+#: ./src/pyams_content/shared/imagemap/zmi/container.py:175
+msgid "No provided object_name argument!"
+msgstr ""
+
+#: ./src/pyams_content/root/zmi/sites.py:180
+msgid "Given element name doesn't exist!"
+msgstr ""
+
+#: ./src/pyams_content/root/zmi/__init__.py:78
+msgid "Home"
+msgstr ""
+
#: ./src/pyams_content/root/zmi/__init__.py:110
+#: ./src/pyams_content/shared/common/zmi/dashboard.py:267
msgid "Dashboard"
msgstr ""
-#: ./src/pyams_content/shared/common/zmi/dashboard.py:283
-msgid "Contents dashboard"
-msgstr ""
-
-#: ./src/pyams_content/shared/common/zmi/dashboard.py:329
#: ./src/pyams_content/root/zmi/__init__.py:159
+#: ./src/pyams_content/shared/common/zmi/dashboard.py:323
#, python-format
msgid "MANAGER - {0} content waiting for your action"
msgstr ""
-#: ./src/pyams_content/shared/common/zmi/dashboard.py:330
#: ./src/pyams_content/root/zmi/__init__.py:160
+#: ./src/pyams_content/shared/common/zmi/dashboard.py:324
#, python-format
msgid "MANAGER - {0} contents waiting for your action"
msgstr ""
-#: ./src/pyams_content/shared/common/zmi/dashboard.py:371
#: ./src/pyams_content/root/zmi/__init__.py:204
+#: ./src/pyams_content/shared/common/zmi/dashboard.py:365
#, python-format
msgid "CONTRIBUTOR - {0} content waiting for action"
msgstr ""
-#: ./src/pyams_content/shared/common/zmi/dashboard.py:372
#: ./src/pyams_content/root/zmi/__init__.py:205
+#: ./src/pyams_content/shared/common/zmi/dashboard.py:366
#, python-format
msgid "CONTRIBUTOR - {0} contents waiting for action"
msgstr ""
-#: ./src/pyams_content/shared/common/zmi/dashboard.py:404
#: ./src/pyams_content/root/zmi/__init__.py:240
+#: ./src/pyams_content/shared/common/zmi/dashboard.py:398
#, python-format
msgid "CONTRIBUTOR - {0} modified content"
msgstr ""
-#: ./src/pyams_content/shared/common/zmi/dashboard.py:445
#: ./src/pyams_content/root/zmi/__init__.py:283
+#: ./src/pyams_content/shared/common/zmi/dashboard.py:439
msgid "My contents"
msgstr ""
-#: ./src/pyams_content/shared/common/zmi/dashboard.py:460
-#: ./src/pyams_content/shared/common/zmi/templates/dashboard.pt:8
#: ./src/pyams_content/root/zmi/__init__.py:298
#: ./src/pyams_content/root/zmi/templates/dashboard.pt:8
+#: ./src/pyams_content/shared/common/zmi/dashboard.py:454
+#: ./src/pyams_content/shared/common/zmi/templates/dashboard.pt:8
msgid "My favorites"
msgstr ""
-#: ./src/pyams_content/shared/common/zmi/dashboard.py:469
#: ./src/pyams_content/root/zmi/__init__.py:307
+#: ./src/pyams_content/shared/common/zmi/dashboard.py:463
#, python-format
msgid "CONTRIBUTOR - {0} favorite"
msgstr ""
-#: ./src/pyams_content/shared/common/zmi/dashboard.py:470
#: ./src/pyams_content/root/zmi/__init__.py:308
+#: ./src/pyams_content/shared/common/zmi/dashboard.py:464
#, python-format
msgid "CONTRIBUTOR - {0} favorites"
msgstr ""
-#: ./src/pyams_content/shared/common/zmi/dashboard.py:482
-#: ./src/pyams_content/shared/common/zmi/templates/header.pt:23
-msgid "Add/remove from favorites"
-msgstr ""
-
-#: ./src/pyams_content/shared/common/zmi/dashboard.py:545
#: ./src/pyams_content/root/zmi/__init__.py:346
+#: ./src/pyams_content/shared/common/zmi/dashboard.py:539
msgid "Your favorite contents"
msgstr ""
-#: ./src/pyams_content/shared/common/zmi/dashboard.py:558
#: ./src/pyams_content/root/zmi/__init__.py:359
+#: ./src/pyams_content/shared/common/zmi/dashboard.py:552
msgid "My preparations"
msgstr ""
-#: ./src/pyams_content/shared/common/zmi/dashboard.py:567
#: ./src/pyams_content/root/zmi/__init__.py:368
+#: ./src/pyams_content/shared/common/zmi/dashboard.py:561
#, python-format
msgid "CONTRIBUTOR - {0} prepared content"
msgstr ""
-#: ./src/pyams_content/shared/common/zmi/dashboard.py:568
#: ./src/pyams_content/root/zmi/__init__.py:369
+#: ./src/pyams_content/shared/common/zmi/dashboard.py:562
#, python-format
msgid "CONTRIBUTOR - {0} prepared contents"
msgstr ""
-#: ./src/pyams_content/shared/common/zmi/dashboard.py:608
#: ./src/pyams_content/root/zmi/__init__.py:408
+#: ./src/pyams_content/shared/common/zmi/dashboard.py:603
msgid "Your prepared contents"
msgstr ""
-#: ./src/pyams_content/shared/common/zmi/dashboard.py:621
#: ./src/pyams_content/root/zmi/__init__.py:421
+#: ./src/pyams_content/shared/common/zmi/dashboard.py:616
msgid "My submissions"
msgstr ""
-#: ./src/pyams_content/shared/common/zmi/dashboard.py:630
#: ./src/pyams_content/root/zmi/__init__.py:430
+#: ./src/pyams_content/shared/common/zmi/dashboard.py:625
#, python-format
msgid "CONTRIBUTOR - {0} submitted content"
msgstr ""
-#: ./src/pyams_content/shared/common/zmi/dashboard.py:631
#: ./src/pyams_content/root/zmi/__init__.py:431
+#: ./src/pyams_content/shared/common/zmi/dashboard.py:626
#, python-format
msgid "CONTRIBUTOR - {0} submitted contents"
msgstr ""
-#: ./src/pyams_content/shared/common/zmi/dashboard.py:671
#: ./src/pyams_content/root/zmi/__init__.py:470
+#: ./src/pyams_content/shared/common/zmi/dashboard.py:667
msgid "Your submitted contents"
msgstr ""
-#: ./src/pyams_content/shared/common/zmi/dashboard.py:684
#: ./src/pyams_content/root/zmi/__init__.py:483
+#: ./src/pyams_content/shared/common/zmi/dashboard.py:680
msgid "My publications"
msgstr ""
-#: ./src/pyams_content/shared/common/zmi/dashboard.py:693
#: ./src/pyams_content/root/zmi/__init__.py:492
+#: ./src/pyams_content/shared/common/zmi/dashboard.py:689
#, python-format
msgid "CONTRIBUTOR - {0} published content"
msgstr ""
-#: ./src/pyams_content/shared/common/zmi/dashboard.py:694
#: ./src/pyams_content/root/zmi/__init__.py:493
+#: ./src/pyams_content/shared/common/zmi/dashboard.py:690
#, python-format
msgid "CONTRIBUTOR - {0} published contents"
msgstr ""
-#: ./src/pyams_content/shared/common/zmi/dashboard.py:734
#: ./src/pyams_content/root/zmi/__init__.py:532
+#: ./src/pyams_content/shared/common/zmi/dashboard.py:731
msgid "Your published contents"
msgstr ""
-#: ./src/pyams_content/shared/common/zmi/dashboard.py:747
#: ./src/pyams_content/root/zmi/__init__.py:545
+#: ./src/pyams_content/shared/common/zmi/dashboard.py:744
msgid "My retired contents"
msgstr ""
-#: ./src/pyams_content/shared/common/zmi/dashboard.py:756
#: ./src/pyams_content/root/zmi/__init__.py:554
+#: ./src/pyams_content/shared/common/zmi/dashboard.py:753
#, python-format
msgid "CONTRIBUTOR - {0} retired content"
msgstr ""
-#: ./src/pyams_content/shared/common/zmi/dashboard.py:757
#: ./src/pyams_content/root/zmi/__init__.py:555
+#: ./src/pyams_content/shared/common/zmi/dashboard.py:754
#, python-format
msgid "CONTRIBUTOR - {0} retired contents"
msgstr ""
-#: ./src/pyams_content/shared/common/zmi/dashboard.py:798
#: ./src/pyams_content/root/zmi/__init__.py:595
+#: ./src/pyams_content/shared/common/zmi/dashboard.py:795
msgid "Your retired contents"
msgstr ""
-#: ./src/pyams_content/shared/common/zmi/dashboard.py:811
#: ./src/pyams_content/root/zmi/__init__.py:608
+#: ./src/pyams_content/shared/common/zmi/dashboard.py:808
msgid "My archived contents"
msgstr ""
-#: ./src/pyams_content/shared/common/zmi/dashboard.py:820
#: ./src/pyams_content/root/zmi/__init__.py:617
+#: ./src/pyams_content/shared/common/zmi/dashboard.py:817
#, python-format
msgid "CONTRIBUTOR - {0} archived content"
msgstr ""
-#: ./src/pyams_content/shared/common/zmi/dashboard.py:821
#: ./src/pyams_content/root/zmi/__init__.py:618
+#: ./src/pyams_content/shared/common/zmi/dashboard.py:818
#, python-format
msgid "CONTRIBUTOR - {0} archived contents"
msgstr ""
-#: ./src/pyams_content/shared/common/zmi/dashboard.py:868
#: ./src/pyams_content/root/zmi/__init__.py:664
+#: ./src/pyams_content/shared/common/zmi/dashboard.py:865
msgid "Your archived contents"
msgstr ""
-#: ./src/pyams_content/shared/common/zmi/dashboard.py:882
#: ./src/pyams_content/root/zmi/__init__.py:678
+#: ./src/pyams_content/shared/common/zmi/dashboard.py:879
msgid "Other interventions"
msgstr ""
-#: ./src/pyams_content/shared/common/zmi/dashboard.py:897
#: ./src/pyams_content/root/zmi/__init__.py:693
+#: ./src/pyams_content/shared/common/zmi/dashboard.py:894
msgid "Last publications"
msgstr ""
-#: ./src/pyams_content/shared/common/zmi/dashboard.py:906
#: ./src/pyams_content/root/zmi/__init__.py:702
+#: ./src/pyams_content/shared/common/zmi/dashboard.py:903
#, python-format
msgid "CONTRIBUTORS - {0} published content"
msgstr ""
-#: ./src/pyams_content/shared/common/zmi/dashboard.py:953
#: ./src/pyams_content/root/zmi/__init__.py:748
+#: ./src/pyams_content/shared/common/zmi/dashboard.py:950
msgid "Last published contents"
msgstr ""
-#: ./src/pyams_content/shared/common/zmi/dashboard.py:966
#: ./src/pyams_content/root/zmi/__init__.py:761
+#: ./src/pyams_content/shared/common/zmi/dashboard.py:963
msgid "Last updates"
msgstr ""
-#: ./src/pyams_content/shared/common/zmi/dashboard.py:975
#: ./src/pyams_content/root/zmi/__init__.py:770
+#: ./src/pyams_content/shared/common/zmi/dashboard.py:972
#, python-format
msgid "CONTRIBUTORS - {0} updated content"
msgstr ""
-#: ./src/pyams_content/shared/common/zmi/dashboard.py:1020
#: ./src/pyams_content/root/zmi/__init__.py:814
+#: ./src/pyams_content/shared/common/zmi/dashboard.py:1017
msgid "Last updated contents"
msgstr ""
-#: ./src/pyams_content/shared/common/zmi/dashboard.py:409
+#: ./src/pyams_content/root/zmi/__init__.py:825
+#: ./src/pyams_content/shared/site/zmi/container.py:407
+msgid "Content"
+msgstr ""
+
#: ./src/pyams_content/root/zmi/__init__.py:245
+#: ./src/pyams_content/shared/common/zmi/dashboard.py:403
#, python-format
msgid "CONTRIBUTOR - {0} modified contents"
msgstr ""
-#: ./src/pyams_content/shared/common/zmi/dashboard.py:411
#: ./src/pyams_content/root/zmi/__init__.py:247
+#: ./src/pyams_content/shared/common/zmi/dashboard.py:405
#, python-format
msgid "CONTRIBUTOR - Last {0} modified contents"
msgstr ""
-#: ./src/pyams_content/shared/common/zmi/dashboard.py:911
#: ./src/pyams_content/root/zmi/__init__.py:707
+#: ./src/pyams_content/shared/common/zmi/dashboard.py:908
#, python-format
msgid "CONTRIBUTORS - Last {0} published contents"
msgstr ""
-#: ./src/pyams_content/shared/common/zmi/dashboard.py:913
#: ./src/pyams_content/root/zmi/__init__.py:709
+#: ./src/pyams_content/shared/common/zmi/dashboard.py:910
msgid "CONTRIBUTORS - Last published contents (in the limit of 50)"
msgstr ""
-#: ./src/pyams_content/shared/common/zmi/dashboard.py:980
#: ./src/pyams_content/root/zmi/__init__.py:775
+#: ./src/pyams_content/shared/common/zmi/dashboard.py:977
#, python-format
msgid "CONTRIBUTORS - Last {0} updated contents"
msgstr ""
-#: ./src/pyams_content/shared/common/zmi/dashboard.py:982
#: ./src/pyams_content/root/zmi/__init__.py:777
+#: ./src/pyams_content/shared/common/zmi/dashboard.py:979
msgid "CONTRIBUTORS - Last updated contents (in the limit of 50)"
msgstr ""
-#: ./src/pyams_content/shared/common/zmi/dashboard.py:306
-#, python-format
-msgid "SEARCH - Between all contents of type « {type} »"
-msgstr ""
-
-#: ./src/pyams_content/shared/common/zmi/dashboard.py:171
-#: ./src/pyams_content/shared/common/zmi/header.py:96
-msgid "Content publication start date is not passed yet"
-msgstr ""
-
-#: ./src/pyams_content/shared/common/zmi/security.py:64
-msgid "Contributors restrictions"
-msgstr ""
-
-#: ./src/pyams_content/shared/common/zmi/security.py:73
-msgid "Content contributors restrictions"
-msgstr ""
-
-#: ./src/pyams_content/shared/common/zmi/security.py:107
-msgid "Contributor name"
-msgstr ""
-
-#: ./src/pyams_content/shared/common/zmi/security.py:118
-#: ./src/pyams_content/shared/common/zmi/security.py:270
-msgid "Activated publication checks?"
-msgstr ""
-
-#: ./src/pyams_content/shared/common/zmi/security.py:218
-msgid "Managers restrictions"
-msgstr ""
-
-#: ./src/pyams_content/shared/common/zmi/security.py:227
-msgid "Content managers restrictions"
-msgstr ""
-
-#: ./src/pyams_content/shared/common/zmi/security.py:259
-msgid "Manager name"
-msgstr ""
-
-#: ./src/pyams_content/shared/common/zmi/security.py:287
-msgid "Restricted"
-msgstr ""
-
-#: ./src/pyams_content/shared/common/zmi/security.py:304
-msgid "Owners"
-msgstr ""
-
-#: ./src/pyams_content/shared/common/zmi/security.py:394
-msgid "Publication workflow"
-msgstr ""
-
-#: ./src/pyams_content/shared/common/zmi/security.py:167
-#, python-format
-msgid "Edit contributor restrictions for « {0} »"
-msgstr ""
-
-#: ./src/pyams_content/shared/common/zmi/security.py:353
-#, python-format
-msgid "Edit manager restrictions for « {0} »"
-msgstr ""
-
-#: ./src/pyams_content/shared/common/zmi/security.py:400
-msgid "Apply contents restrictions"
-msgstr ""
-
-#: ./src/pyams_content/shared/common/zmi/security.py:402
-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 "
-"which at least one criteria is matching."
-msgstr ""
-
-#: ./src/pyams_content/shared/common/zmi/header.py:85
-#, python-format
-msgid "{state} by {principal}"
-msgstr ""
-
-#: ./src/pyams_content/shared/common/zmi/header.py:116
-#, python-format
-msgid "since {date}"
-msgstr ""
-
-#: ./src/pyams_content/shared/common/zmi/header.py:128
-msgid "access published version"
-msgstr ""
-
-#: ./src/pyams_content/shared/common/zmi/header.py:135
-msgid "access new version"
-msgstr ""
-
-#: ./src/pyams_content/shared/common/zmi/header.py:145
-msgid "access waiting version"
-msgstr ""
-
-#: ./src/pyams_content/shared/common/zmi/header.py:156
-msgid "access retired version"
-msgstr ""
-
-#: ./src/pyams_content/shared/common/zmi/header.py:166
-msgid "access archived version"
-msgstr ""
-
-#: ./src/pyams_content/shared/common/zmi/templates/wf-retiring-message.pt:2
-msgid ""
-"You considerate that the currently published version should no more be "
-"publicly visible."
-msgstr ""
-
-#: ./src/pyams_content/shared/common/zmi/templates/wf-retiring-message.pt:3
-msgid ""
-"WARNING: the content will remain visible until a manager validate the "
-"request."
-msgstr ""
-
-#: ./src/pyams_content/shared/common/zmi/templates/header.pt:6
-msgid "Back to previous page"
-msgstr ""
-
-#: ./src/pyams_content/shared/common/zmi/templates/header.pt:20
-msgid "by ${owner}"
-msgstr ""
-
-#: ./src/pyams_content/shared/common/zmi/templates/wf-archive-message.pt:2
-msgid "As a manager, you considerate that this content must be archived."
-msgstr ""
-
-#: ./src/pyams_content/shared/common/zmi/templates/wf-archive-message.pt:3
-#: ./src/pyams_content/shared/common/zmi/templates/wf-archiving-message.pt:3
-msgid ""
-"After archiving, it will be backed up but you will not be able to publish it "
-"again except by creating a new version."
-msgstr ""
-
-#: ./src/pyams_content/shared/common/zmi/templates/check-input.pt:34
-#: ./src/pyams_content/shared/common/zmi/templates/preview-input.pt:34
-#: ./src/pyams_content/shared/common/interfaces/types.py:47
-#: ./src/pyams_content/shared/form/zmi/field.py:167
-#: ./src/pyams_content/shared/form/interfaces/__init__.py:60
-#: ./src/pyams_content/features/menu/zmi/__init__.py:215
-msgid "Label"
-msgstr ""
-
-#: ./src/pyams_content/shared/common/zmi/templates/check-input.pt:39
-#: ./src/pyams_content/features/checker/zmi/__init__.py:43
-msgid "Audit"
-msgstr ""
-
+#: ./src/pyams_content/root/zmi/search.py:95
+#: ./src/pyams_content/shared/common/zmi/search.py:96
+msgid "Quick search results"
+msgstr ""
+
+#: ./src/pyams_content/root/zmi/search.py:152
+#: ./src/pyams_content/root/zmi/search.py:188
+#: ./src/pyams_content/shared/common/zmi/search.py:162
+#: ./src/pyams_content/shared/common/zmi/search.py:204
+msgid "Advanced search"
+msgstr ""
+
+#: ./src/pyams_content/root/zmi/search.py:280
+#: ./src/pyams_content/shared/common/zmi/search.py:332
+msgid "Advanced search results"
+msgstr ""
+
+#: ./src/pyams_content/root/zmi/search.py:160
+msgid "Content types"
+msgstr ""
+
+#: ./src/pyams_content/root/zmi/search.py:164
+#: ./src/pyams_content/shared/common/zmi/dashboard.py:225
+#: ./src/pyams_content/shared/common/zmi/search.py:170
+msgid "Owner"
+msgstr ""
+
+#: ./src/pyams_content/root/zmi/search.py:167
+#: ./src/pyams_content/shared/common/zmi/search.py:177
+msgid "Created after..."
+msgstr ""
+
+#: ./src/pyams_content/root/zmi/search.py:170
+#: ./src/pyams_content/shared/common/zmi/search.py:180
+msgid "Created before..."
+msgstr ""
+
+#: ./src/pyams_content/root/zmi/search.py:173
+#: ./src/pyams_content/shared/common/zmi/search.py:183
+msgid "Modified after..."
+msgstr ""
+
+#: ./src/pyams_content/root/zmi/search.py:176
+#: ./src/pyams_content/shared/common/zmi/search.py:186
+msgid "Modified before..."
+msgstr ""
+
+#: ./src/pyams_content/root/zmi/templates/dashboard.pt:7
+msgid "Your contents dashboard"
+msgstr ""
+
+#: ./src/pyams_content/root/zmi/templates/dashboard.pt:18
+msgid "SEARCH - Between all contents"
+msgstr ""
+
+#: ./src/pyams_content/root/zmi/templates/dashboard.pt:29
#: ./src/pyams_content/shared/common/zmi/templates/dashboard.pt:29
-#: ./src/pyams_content/root/zmi/templates/dashboard.pt:29
msgid "Quick search..."
msgstr ""
-#: ./src/pyams_content/shared/common/zmi/templates/dashboard.pt:35
#: ./src/pyams_content/root/zmi/templates/dashboard.pt:35
+#: ./src/pyams_content/shared/common/zmi/templates/dashboard.pt:35
msgid "Advanced search..."
msgstr ""
+#: ./src/pyams_content/root/zmi/templates/dashboard.pt:49
#: ./src/pyams_content/shared/common/zmi/templates/dashboard.pt:49
-#: ./src/pyams_content/root/zmi/templates/dashboard.pt:49
msgid "You are not actually concerned by any content."
msgstr ""
-#: ./src/pyams_content/shared/common/zmi/templates/wf-publish-message.pt:2
-msgid ""
-"As a manager, you considerate that this content is complete and can be "
-"published 'as is'."
-msgstr ""
-
-#: ./src/pyams_content/shared/common/zmi/templates/wf-publish-message.pt:4
-msgid ""
-"This operation will make the content publicly available (except if restricted"
-" access has been set)."
-msgstr ""
-
-#: ./src/pyams_content/shared/common/zmi/templates/wf-create-message.pt:2
-msgid ""
-"This new content is going to be created in 'draft' mode, so that you can "
-"complete it before publication."
-msgstr ""
-
-#: ./src/pyams_content/shared/common/zmi/templates/wf-create-message.pt:4
-msgid ""
-"A unique number is also going to be assigned to it. This number will be "
-"shared by all content's versions."
-msgstr ""
-
-#: ./src/pyams_content/shared/common/zmi/templates/wf-operator-warning.pt:1
-msgid ""
-"WARNING: this request was made by a contributor which is not the owner of "
-"this content."
-msgstr ""
-
-#: ./src/pyams_content/shared/common/zmi/templates/wf-clone-message.pt:2
-msgid "You considerate that the currently published must evolve."
-msgstr ""
-
-#: ./src/pyams_content/shared/common/zmi/templates/wf-clone-message.pt:3
-msgid ""
-"By creating a new version, you can update it's content without impacting the "
-"currently published one."
-msgstr ""
-
-#: ./src/pyams_content/shared/common/zmi/templates/wf-clone-message.pt:5
-msgid ""
-"When the new version will be complete, you will be able to make a new "
-"publication request to replace the currently published version (which will be"
-" archived automatically)."
-msgstr ""
-
-#: ./src/pyams_content/shared/common/zmi/templates/wf-propose-message.pt:1
-msgid ""
-"This publication request is going to be transmitted to a content manager."
-msgstr ""
-
-#: ./src/pyams_content/shared/common/zmi/templates/wf-duplicate-message.pt:2
-msgid "You are going to duplicate a whole content."
-msgstr ""
-
-#: ./src/pyams_content/shared/common/zmi/templates/wf-duplicate-message.pt:3
-msgid ""
-"The new copy is going to be created in 'draft' mode, so that you can modify "
-"it before publication."
-msgstr ""
-
-#: ./src/pyams_content/shared/common/zmi/templates/wf-duplicate-message.pt:5
-msgid ""
-"A new unique number is also going to be assigned to it. This number will be "
-"shared by all content's versions."
-msgstr ""
-
+#: ./src/pyams_content/root/zmi/templates/advanced-search.pt:130
#: ./src/pyams_content/shared/common/zmi/templates/advanced-search.pt:130
-#: ./src/pyams_content/root/zmi/templates/advanced-search.pt:130
msgid "Created between"
msgstr ""
-#: ./src/pyams_content/shared/common/zmi/templates/advanced-search.pt:142
-#: ./src/pyams_content/shared/common/zmi/templates/advanced-search.pt:168
#: ./src/pyams_content/root/zmi/templates/advanced-search.pt:142
#: ./src/pyams_content/root/zmi/templates/advanced-search.pt:168
+#: ./src/pyams_content/shared/common/zmi/templates/advanced-search.pt:142
+#: ./src/pyams_content/shared/common/zmi/templates/advanced-search.pt:168
msgid "and"
msgstr ""
-#: ./src/pyams_content/shared/common/zmi/templates/advanced-search.pt:156
#: ./src/pyams_content/root/zmi/templates/advanced-search.pt:156
+#: ./src/pyams_content/shared/common/zmi/templates/advanced-search.pt:156
msgid "Modified between"
msgstr ""
+#: ./src/pyams_content/root/zmi/templates/advanced-search.pt:211
#: ./src/pyams_content/shared/common/zmi/templates/advanced-search.pt:214
-#: ./src/pyams_content/root/zmi/templates/advanced-search.pt:211
msgid "Tab label"
msgstr ""
-#: ./src/pyams_content/shared/common/zmi/templates/wf-refuse-propose-message.pt:2
-msgid ""
-"As a content manager, you considerate that this content can't be published "
-"'as is'."
-msgstr ""
-
-#: ./src/pyams_content/shared/common/zmi/templates/wf-refuse-propose-message.pt:4
-msgid ""
-"The contributor will be notified of this and will be able to update the "
-"content before doing a new publication request."
-msgstr ""
-
-#: ./src/pyams_content/shared/common/zmi/templates/wf-cancel-archiving-message.pt:1
-msgid ""
-"After cancelling this request, the content will return to it's previous "
-"retired state."
-msgstr ""
-
-#: ./src/pyams_content/shared/common/zmi/templates/wf-cancel-retiring-message.pt:1
-msgid ""
-"After cancelling this request, the content will return to it's normal "
-"published state."
-msgstr ""
-
-#: ./src/pyams_content/shared/common/zmi/templates/wf-retire-message.pt:2
-msgid ""
-"As a content manager, you considerate that this content should no longer be "
-"published."
-msgstr ""
-
-#: ./src/pyams_content/shared/common/zmi/templates/wf-retire-message.pt:4
-msgid ""
-"Retired content won't be visible anymore, but it can be updated and published"
-" again, or archived."
-msgstr ""
-
-#: ./src/pyams_content/shared/common/zmi/templates/wf-cancel-propose-message.pt:1
-msgid ""
-"After canceling the request, you will be able to update the content again."
-msgstr ""
-
-#: ./src/pyams_content/shared/common/zmi/templates/wf-delete-message.pt:2
-msgid ""
-"This content was never published. If you confirm deletion, it won't be "
-"possible to restore it."
-msgstr ""
-
-#: ./src/pyams_content/shared/common/zmi/templates/wf-delete-message.pt:6
-msgid ""
-"The content version is going to be definitely deleted. Will only remain the "
-"currently published version."
-msgstr ""
-
-#: ./src/pyams_content/shared/common/zmi/templates/wf-owner-warning.pt:1
-msgid ""
-"RECALL: you are not the owner of the content on which you are intervening."
-msgstr ""
-
-#: ./src/pyams_content/shared/common/zmi/templates/wf-transition-info.pt:2
-msgid "FOR YOUR INFORMATION"
-msgstr ""
-
-#: ./src/pyams_content/shared/common/zmi/templates/wf-transition-info.pt:5
-msgid "Next step"
-msgstr ""
-
-#: ./src/pyams_content/shared/common/zmi/templates/wf-transition-info.pt:7
-msgid "Previous step"
-msgstr ""
-
-#: ./src/pyams_content/shared/common/zmi/templates/wf-transition-info.pt:10
-msgid "With this comment:"
-msgstr ""
-
-#: ./src/pyams_content/shared/common/zmi/templates/wf-archiving-message.pt:2
-msgid "This content is already retired and not visible."
-msgstr ""
-
-#: ./src/pyams_content/shared/common/interfaces/types.py:43
-#: ./src/pyams_content/shared/form/zmi/field.py:156
-msgid "Name"
-msgstr ""
-
-#: ./src/pyams_content/shared/common/interfaces/types.py:44
-msgid "Name of this data type; must be unique between all data types"
-msgstr ""
-
-#: ./src/pyams_content/shared/common/interfaces/types.py:50
-msgid "Navigation label"
-msgstr ""
-
-#: ./src/pyams_content/shared/common/interfaces/types.py:51
-msgid "Label used for navigation entries"
-msgstr ""
-
-#: ./src/pyams_content/shared/common/interfaces/types.py:54
-msgid "Tab-folder label"
-msgstr ""
-
-#: ./src/pyams_content/shared/common/interfaces/types.py:55
-msgid "Label used to include into tab folder"
-msgstr ""
-
-#: ./src/pyams_content/shared/common/interfaces/types.py:58
-msgid "'See also' label"
-msgstr ""
-
-#: ./src/pyams_content/shared/common/interfaces/types.py:59
-msgid ""
-"This label can be used when contents of this type will be displayed in a 'See"
-" also' entries block"
-msgstr ""
-
-#: ./src/pyams_content/shared/common/interfaces/types.py:63
-msgid "'Single value' label"
-msgstr ""
-
-#: ./src/pyams_content/shared/common/interfaces/types.py:64
-msgid "Label given to this type when a single value is displayed"
-msgstr ""
-
-#: ./src/pyams_content/shared/common/interfaces/types.py:67
-msgid "'Link to list' label"
-msgstr ""
-
-#: ./src/pyams_content/shared/common/interfaces/types.py:68
-msgid "Label used to display a link to a list of items of this type"
-msgstr ""
-
-#: ./src/pyams_content/shared/common/interfaces/types.py:71
-msgid "Next content label"
-msgstr ""
-
-#: ./src/pyams_content/shared/common/interfaces/types.py:72
-msgid "Label used to announce next date for this type"
-msgstr ""
-
-#: ./src/pyams_content/shared/common/interfaces/types.py:76
-msgid "Pictogram associated with this data type"
-msgstr ""
-
-#: ./src/pyams_content/shared/common/interfaces/types.py:90
-msgid "Field names"
-msgstr ""
-
-#: ./src/pyams_content/shared/common/interfaces/types.py:91
-msgid "List of fields associated with this data type"
-msgstr ""
-
-#: ./src/pyams_content/shared/common/interfaces/types.py:125
-msgid "Data type"
-msgstr ""
-
-#: ./src/pyams_content/shared/common/interfaces/types.py:126
-msgid "Type of content data"
-msgstr ""
-
-#: ./src/pyams_content/shared/common/interfaces/__init__.py:45
-#: ./src/pyams_content/root/interfaces/__init__.py:43
-msgid "Webmasters"
-msgstr ""
-
-#: ./src/pyams_content/shared/common/interfaces/__init__.py:46
-msgid "Webmasters can handle all contents, including published ones"
-msgstr ""
-
-#: ./src/pyams_content/shared/common/interfaces/__init__.py:50
-msgid "Pilots"
-msgstr ""
-
-#: ./src/pyams_content/shared/common/interfaces/__init__.py:51
-msgid ""
-"Pilots can handle tool configuration, manage access rules, grant users roles "
-"and manage managers restrictions"
-msgstr ""
-
-#: ./src/pyams_content/shared/common/interfaces/__init__.py:56
-#: ./src/pyams_content/shared/common/interfaces/__init__.py:196
-msgid "Managers"
-msgstr ""
-
-#: ./src/pyams_content/shared/common/interfaces/__init__.py:57
-#: ./src/pyams_content/shared/common/interfaces/__init__.py:197
-msgid ""
-"Managers can handle main operations in tool's workflow, like publish or "
-"retire contents"
-msgstr ""
-
-#: ./src/pyams_content/shared/common/interfaces/__init__.py:62
-#: ./src/pyams_content/shared/common/interfaces/__init__.py:202
-msgid "Contributors"
-msgstr ""
-
-#: ./src/pyams_content/shared/common/interfaces/__init__.py:63
-msgid "Contributors are users which are allowed to create new contents"
-msgstr ""
-
-#: ./src/pyams_content/shared/common/interfaces/__init__.py:67
-#: ./src/pyams_content/shared/common/interfaces/__init__.py:208
-msgid "Designers"
-msgstr ""
-
-#: ./src/pyams_content/shared/common/interfaces/__init__.py:68
-#: ./src/pyams_content/shared/common/interfaces/__init__.py:209
-msgid "Designers are users which are allowed to manage presentation templates"
-msgstr ""
-
-#: ./src/pyams_content/shared/common/interfaces/__init__.py:94
-msgid "Workflow name"
-msgstr ""
-
-#: ./src/pyams_content/shared/common/interfaces/__init__.py:95
-msgid "Name of workflow utility used to manage tool contents"
-msgstr ""
-
-#: ./src/pyams_content/shared/common/interfaces/__init__.py:123
-msgid "Content URL"
-msgstr ""
-
-#: ./src/pyams_content/shared/common/interfaces/__init__.py:124
-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:129
-msgid "Version creator"
-msgstr ""
-
-#: ./src/pyams_content/shared/common/interfaces/__init__.py:130
-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:134
-msgid "First owner"
-msgstr ""
-
-#: ./src/pyams_content/shared/common/interfaces/__init__.py:135
-msgid "Name of content's first version owner"
-msgstr ""
-
-#: ./src/pyams_content/shared/common/interfaces/__init__.py:139
-msgid "Version creation"
-msgstr ""
-
-#: ./src/pyams_content/shared/common/interfaces/__init__.py:142
-msgid "Version modifiers"
-msgstr ""
-
-#: ./src/pyams_content/shared/common/interfaces/__init__.py:143
-msgid "List of principals who modified this content"
-msgstr ""
-
-#: ./src/pyams_content/shared/common/interfaces/__init__.py:146
-msgid "Last modifier"
-msgstr ""
-
-#: ./src/pyams_content/shared/common/interfaces/__init__.py:147
-msgid "Last principal who modified this content"
-msgstr ""
-
-#: ./src/pyams_content/shared/common/interfaces/__init__.py:150
-msgid "Last update"
-msgstr ""
-
-#: ./src/pyams_content/shared/common/interfaces/__init__.py:154
-msgid "Content's header is generally displayed in page header"
-msgstr ""
-
-#: ./src/pyams_content/shared/common/interfaces/__init__.py:159
-msgid "Meta-description"
-msgstr ""
-
-#: ./src/pyams_content/shared/common/interfaces/__init__.py:160
-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; "
-"if description is empty, content's header will be used."
-msgstr ""
-
-#: ./src/pyams_content/shared/common/interfaces/__init__.py:165
-msgid "Keywords"
-msgstr ""
-
-#: ./src/pyams_content/shared/common/interfaces/__init__.py:166
-msgid "They will be included into HTML pages metadata"
-msgstr ""
-
-#: ./src/pyams_content/shared/common/interfaces/__init__.py:169
-#: ./src/pyams_content/shared/site/zmi/folder.py:79
-#: ./src/pyams_content/shared/site/interfaces/__init__.py:76
-msgid "Notepad"
-msgstr ""
-
-#: ./src/pyams_content/shared/common/interfaces/__init__.py:170
-#: ./src/pyams_content/shared/site/zmi/folder.py:80
-#: ./src/pyams_content/shared/site/interfaces/__init__.py:77
-msgid "Internal information to be known about this content"
-msgstr ""
-
-#: ./src/pyams_content/shared/common/interfaces/__init__.py:189
-msgid "Content owner"
-msgstr ""
-
-#: ./src/pyams_content/shared/common/interfaces/__init__.py:190
-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:203
-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:213
-msgid "Readers"
-msgstr ""
-
-#: ./src/pyams_content/shared/common/interfaces/__init__.py:214
-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:219
-msgid "Guests"
-msgstr ""
-
-#: ./src/pyams_content/shared/common/interfaces/__init__.py:220
-msgid ""
-"Guests are users which are allowed to view contents with restricted access"
-msgstr ""
-
-#: ./src/pyams_content/shared/common/interfaces/__init__.py:243
-msgid "Principal ID"
-msgstr ""
-
-#: ./src/pyams_content/shared/common/interfaces/__init__.py:282
-#: ./src/pyams_content/shared/common/interfaces/__init__.py:307
-msgid "Publication checks"
-msgstr ""
-
-#: ./src/pyams_content/shared/common/interfaces/__init__.py:283
-msgid ""
-"If 'yes', this contributor will have to confirm that contents have been "
-"previewed and checked before asking for publication"
-msgstr ""
-
-#: ./src/pyams_content/shared/common/interfaces/__init__.py:308
-msgid ""
-"If 'yes', this manager will have to confirm that contents have been previewed"
-" and checked before publishing a content"
-msgstr ""
-
-#: ./src/pyams_content/shared/common/interfaces/__init__.py:313
-msgid "Restricted contents"
-msgstr ""
-
-#: ./src/pyams_content/shared/common/interfaces/__init__.py:314
-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:319
-msgid "Selected owners"
-msgstr ""
-
-#: ./src/pyams_content/shared/common/interfaces/__init__.py:320
-msgid "Manager will have access to contents owned by these principals"
-msgstr ""
-
-#: ./src/pyams_content/shared/form/__init__.py:97
-msgid "Form fields"
-msgstr ""
-
-#: ./src/pyams_content/shared/form/__init__.py:98
-msgid "no field defined"
-msgstr ""
-
-#: ./src/pyams_content/shared/form/handler.py:80
-msgid "Mailto form handler"
-msgstr ""
-
-#: ./src/pyams_content/shared/form/handler.py:44
-msgid "No selected handler..."
-msgstr ""
-
#: ./src/pyams_content/shared/form/field.py:146
msgid "Text"
msgstr ""
@@ -3265,60 +3157,20 @@
msgid "List"
msgstr ""
-#: ./src/pyams_content/shared/form/zmi/properties.py:41
-msgid "Main form settings"
-msgstr ""
-
-#: ./src/pyams_content/shared/form/zmi/properties.py:65
-msgid "Form handler settings"
-msgstr ""
-
-#: ./src/pyams_content/shared/form/zmi/__init__.py:44
-msgid "This form"
-msgstr ""
-
-#: ./src/pyams_content/shared/form/zmi/__init__.py:63
-#: ./src/pyams_content/shared/form/zmi/__init__.py:74
-msgid "Add form"
-msgstr ""
-
-#: ./src/pyams_content/shared/form/zmi/__init__.py:54
-#, python-format
-msgid "Form « {title} »"
-msgstr ""
-
-#: ./src/pyams_content/shared/form/zmi/field.py:69
-msgid "Form fields..."
-msgstr ""
-
-#: ./src/pyams_content/shared/form/zmi/field.py:178
-#: ./src/pyams_content/shared/form/interfaces/__init__.py:55
-msgid "Field type"
-msgstr ""
-
-#: ./src/pyams_content/shared/form/zmi/field.py:211
-msgid "Form fields list"
-msgstr ""
-
-#: ./src/pyams_content/shared/form/zmi/field.py:234
-#: ./src/pyams_content/shared/form/zmi/field.py:247
-msgid "Add form field"
-msgstr ""
-
-#: ./src/pyams_content/shared/form/zmi/field.py:285
-msgid "Edit form field properties"
-msgstr ""
-
-#: ./src/pyams_content/shared/form/zmi/field.py:187
-msgid "-- unknown field type --"
-msgstr ""
-
-#: ./src/pyams_content/shared/form/zmi/field.py:122
-msgid "No currently defined form field."
-msgstr ""
-
-#: ./src/pyams_content/shared/form/zmi/field.py:269
-msgid "Specified name is already used!"
+#: ./src/pyams_content/shared/form/handler.py:80
+msgid "Mailto form handler"
+msgstr ""
+
+#: ./src/pyams_content/shared/form/handler.py:44
+msgid "No selected handler..."
+msgstr ""
+
+#: ./src/pyams_content/shared/form/__init__.py:97
+msgid "Form fields"
+msgstr ""
+
+#: ./src/pyams_content/shared/form/__init__.py:98
+msgid "no field defined"
msgstr ""
#: ./src/pyams_content/shared/form/interfaces/__init__.py:33
@@ -3333,6 +3185,11 @@
msgid "Field internal name; must be unique for a given form"
msgstr ""
+#: ./src/pyams_content/shared/form/interfaces/__init__.py:55
+#: ./src/pyams_content/shared/form/zmi/field.py:178
+msgid "Field type"
+msgstr ""
+
#: ./src/pyams_content/shared/form/interfaces/__init__.py:56
msgid "Selected field type"
msgstr ""
@@ -3449,22 +3306,60 @@
msgid "Name of data recipient"
msgstr ""
-#: ./src/pyams_content/shared/news/zmi/__init__.py:44
-msgid "This news topic"
-msgstr ""
-
-#: ./src/pyams_content/shared/news/zmi/__init__.py:63
-#: ./src/pyams_content/shared/news/zmi/__init__.py:74
-msgid "Add news topic"
-msgstr ""
-
-#: ./src/pyams_content/shared/news/zmi/__init__.py:54
+#: ./src/pyams_content/shared/form/zmi/properties.py:41
+msgid "Main form settings"
+msgstr ""
+
+#: ./src/pyams_content/shared/form/zmi/properties.py:65
+msgid "Form handler settings"
+msgstr ""
+
+#: ./src/pyams_content/shared/form/zmi/field.py:69
+msgid "Form fields..."
+msgstr ""
+
+#: ./src/pyams_content/shared/form/zmi/field.py:156
+#: ./src/pyams_content/shared/common/interfaces/types.py:43
+msgid "Name"
+msgstr ""
+
+#: ./src/pyams_content/shared/form/zmi/field.py:211
+msgid "Form fields list"
+msgstr ""
+
+#: ./src/pyams_content/shared/form/zmi/field.py:234
+#: ./src/pyams_content/shared/form/zmi/field.py:247
+msgid "Add form field"
+msgstr ""
+
+#: ./src/pyams_content/shared/form/zmi/field.py:285
+msgid "Edit form field properties"
+msgstr ""
+
+#: ./src/pyams_content/shared/form/zmi/field.py:187
+msgid "-- unknown field type --"
+msgstr ""
+
+#: ./src/pyams_content/shared/form/zmi/field.py:122
+msgid "No currently defined form field."
+msgstr ""
+
+#: ./src/pyams_content/shared/form/zmi/field.py:269
+msgid "Specified name is already used!"
+msgstr ""
+
+#: ./src/pyams_content/shared/form/zmi/__init__.py:44
+msgid "This form"
+msgstr ""
+
+#: ./src/pyams_content/shared/form/zmi/__init__.py:63
+#: ./src/pyams_content/shared/form/zmi/__init__.py:74
+msgid "Add form"
+msgstr ""
+
+#: ./src/pyams_content/shared/form/zmi/__init__.py:54
#, python-format
-msgid "News topic « {title} »"
-msgstr ""
-
-#: ./src/pyams_content/shared/news/interfaces/__init__.py:29
-msgid "News topic"
+msgid "Form « {title} »"
msgstr ""
#: ./src/pyams_content/shared/view/merge.py:59
@@ -3499,109 +3394,6 @@
msgid "Sort all results by first publication date"
msgstr ""
-#: ./src/pyams_content/shared/view/zmi/properties.py:45
-msgid "Main view settings"
-msgstr ""
-
-#: ./src/pyams_content/shared/view/zmi/__init__.py:44
-msgid "This view"
-msgstr ""
-
-#: ./src/pyams_content/shared/view/zmi/__init__.py:63
-#: ./src/pyams_content/shared/view/zmi/__init__.py:73
-msgid "Add view"
-msgstr ""
-
-#: ./src/pyams_content/shared/view/zmi/__init__.py:54
-#, python-format
-msgid "View « {title} »"
-msgstr ""
-
-#: ./src/pyams_content/shared/view/zmi/theme.py:67
-msgid "View tags settings"
-msgstr ""
-
-#: ./src/pyams_content/shared/view/zmi/theme.py:113
-msgid "View themes settings"
-msgstr ""
-
-#: ./src/pyams_content/shared/view/zmi/theme.py:159
-msgid "View collections settings"
-msgstr ""
-
-#: ./src/pyams_content/shared/view/zmi/reference.py:52
-msgid "References..."
-msgstr ""
-
-#: ./src/pyams_content/shared/view/zmi/reference.py:63
-msgid "View internal references settings"
-msgstr ""
-
-#: ./src/pyams_content/shared/view/portlet/__init__.py:89
-msgid "View items"
-msgstr ""
-
-#: ./src/pyams_content/shared/view/portlet/interfaces.py:41
-msgid "Display context"
-msgstr ""
-
-#: ./src/pyams_content/shared/view/portlet/interfaces.py:42
-msgid "Content context"
-msgstr ""
-
-#: ./src/pyams_content/shared/view/portlet/interfaces.py:59
-msgid "Selected views"
-msgstr ""
-
-#: ./src/pyams_content/shared/view/portlet/interfaces.py:60
-msgid ""
-"Reference to the view(s) from which items are extracted; you can combine "
-"several views together and specify in which order they should be mixed"
-msgstr ""
-
-#: ./src/pyams_content/shared/view/portlet/interfaces.py:69
-msgid "Views context"
-msgstr ""
-
-#: ./src/pyams_content/shared/view/portlet/interfaces.py:70
-msgid ""
-"When searching for items, a view receives a \"context\" which is the object "
-"from which settings can be extracted; this context can be the \"display\" "
-"context or the \"content\" context: when the portlet is used to display the "
-"site root, a site manager or a site folder, both are identical; when the "
-"portlet is used to display a shared content, the \"content\" context is the "
-"displayed content, while the \"display\" context is the container (site root,"
-" site manager or site folder) into which content is displayed"
-msgstr ""
-
-#: ./src/pyams_content/shared/view/portlet/interfaces.py:81
-msgid "Views merge mode"
-msgstr ""
-
-#: ./src/pyams_content/shared/view/portlet/interfaces.py:82
-msgid ""
-"If you select several views, you can select \"merge\" mode, which is the way "
-"used to merge items from several views"
-msgstr ""
-
-#: ./src/pyams_content/shared/view/portlet/interfaces.py:91
-#: ./src/pyams_content/shared/view/interfaces/__init__.py:102
-msgid "Results count limit"
-msgstr ""
-
-#: ./src/pyams_content/shared/view/portlet/interfaces.py:92
-msgid ""
-"Maximum number of results that the component may extract from merged views"
-msgstr ""
-
-#: ./src/pyams_content/shared/view/portlet/zmi/templates/view-items-list-preview.pt:14
-msgid "No result found"
-msgstr ""
-
-#: ./src/pyams_content/shared/view/portlet/zmi/templates/view-items-list-preview.pt:15
-msgid "No selected view"
-msgstr ""
-
#: ./src/pyams_content/shared/view/interfaces/__init__.py:34
msgid "View"
msgstr ""
@@ -3614,12 +3406,6 @@
msgid "Include selected internal references only if empty"
msgstr ""
-#: ./src/pyams_content/shared/view/interfaces/__init__.py:43
-#: ./src/pyams_content/interfaces/__init__.py:113
-#: ./src/pyams_content/features/review/interfaces.py:74
-msgid "Creation date"
-msgstr ""
-
#: ./src/pyams_content/shared/view/interfaces/__init__.py:44
msgid "Last update date"
msgstr ""
@@ -3681,6 +3467,11 @@
msgid "If 'yes', items order will be reversed"
msgstr ""
+#: ./src/pyams_content/shared/view/interfaces/__init__.py:102
+#: ./src/pyams_content/shared/view/portlet/interfaces.py:91
+msgid "Results count limit"
+msgstr ""
+
#: ./src/pyams_content/shared/view/interfaces/__init__.py:103
msgid "Maximum number of results that the view may retrieve"
msgstr ""
@@ -3737,6 +3528,1483 @@
msgid "Other collections"
msgstr ""
+#: ./src/pyams_content/shared/view/portlet/__init__.py:87
+msgid "View items"
+msgstr ""
+
+#: ./src/pyams_content/shared/view/portlet/interfaces.py:41
+msgid "Display context"
+msgstr ""
+
+#: ./src/pyams_content/shared/view/portlet/interfaces.py:42
+msgid "Content context"
+msgstr ""
+
+#: ./src/pyams_content/shared/view/portlet/interfaces.py:59
+msgid "Selected views"
+msgstr ""
+
+#: ./src/pyams_content/shared/view/portlet/interfaces.py:60
+msgid ""
+"Reference to the view(s) from which items are extracted; you can combine "
+"several views together and specify in which order they should be mixed"
+msgstr ""
+
+#: ./src/pyams_content/shared/view/portlet/interfaces.py:69
+msgid "Views context"
+msgstr ""
+
+#: ./src/pyams_content/shared/view/portlet/interfaces.py:70
+msgid ""
+"When searching for items, a view receives a \"context\" which is the object "
+"from which settings can be extracted; this context can be the \"display\" "
+"context or the \"content\" context: when the portlet is used to display the "
+"site root, a site manager or a site folder, both are identical; when the "
+"portlet is used to display a shared content, the \"content\" context is the "
+"displayed content, while the \"display\" context is the container (site root,"
+" site manager or site folder) into which content is displayed"
+msgstr ""
+
+#: ./src/pyams_content/shared/view/portlet/interfaces.py:81
+msgid "Views merge mode"
+msgstr ""
+
+#: ./src/pyams_content/shared/view/portlet/interfaces.py:82
+msgid ""
+"If you select several views, you can select \"merge\" mode, which is the way "
+"used to merge items from several views"
+msgstr ""
+
+#: ./src/pyams_content/shared/view/portlet/interfaces.py:92
+msgid ""
+"Maximum number of results that the component may extract from merged views"
+msgstr ""
+
+#: ./src/pyams_content/shared/view/portlet/interfaces.py:95
+msgid "Starting from..."
+msgstr ""
+
+#: ./src/pyams_content/shared/view/portlet/interfaces.py:96
+msgid "You can skip several results if specifying an integer value here..."
+msgstr ""
+
+#: ./src/pyams_content/shared/view/portlet/zmi/templates/view-items-list-preview.pt:8
+msgid "Selected views:"
+msgstr ""
+
+#: ./src/pyams_content/shared/view/portlet/zmi/templates/view-items-list-preview.pt:9
+msgid "none"
+msgstr ""
+
+#: ./src/pyams_content/shared/view/portlet/zmi/templates/view-items-list-preview.pt:15
+msgid "Extracted contents:"
+msgstr ""
+
+#: ./src/pyams_content/shared/view/portlet/zmi/templates/view-items-list-preview.pt:16
+msgid "none (no selected view)"
+msgstr ""
+
+#: ./src/pyams_content/shared/view/portlet/zmi/templates/view-items-list-preview.pt:22
+msgid "No result found"
+msgstr ""
+
+#: ./src/pyams_content/shared/view/zmi/properties.py:45
+msgid "Main view settings"
+msgstr ""
+
+#: ./src/pyams_content/shared/view/zmi/__init__.py:44
+msgid "This view"
+msgstr ""
+
+#: ./src/pyams_content/shared/view/zmi/__init__.py:63
+#: ./src/pyams_content/shared/view/zmi/__init__.py:73
+msgid "Add view"
+msgstr ""
+
+#: ./src/pyams_content/shared/view/zmi/__init__.py:54
+#, python-format
+msgid "View « {title} »"
+msgstr ""
+
+#: ./src/pyams_content/shared/view/zmi/theme.py:67
+msgid "View tags settings"
+msgstr ""
+
+#: ./src/pyams_content/shared/view/zmi/theme.py:113
+msgid "View themes settings"
+msgstr ""
+
+#: ./src/pyams_content/shared/view/zmi/theme.py:159
+msgid "View collections settings"
+msgstr ""
+
+#: ./src/pyams_content/shared/view/zmi/reference.py:52
+msgid "References..."
+msgstr ""
+
+#: ./src/pyams_content/shared/view/zmi/reference.py:63
+msgid "View internal references settings"
+msgstr ""
+
+#: ./src/pyams_content/shared/blog/interfaces/__init__.py:30
+msgid "Blog post"
+msgstr ""
+
+#: ./src/pyams_content/shared/blog/interfaces/__init__.py:68
+#: ./src/pyams_content/shared/common/interfaces/__init__.py:157
+#: ./src/pyams_content/shared/site/interfaces/__init__.py:72
+#: ./src/pyams_content/shared/site/interfaces/__init__.py:117
+msgid "Meta-description"
+msgstr ""
+
+#: ./src/pyams_content/shared/blog/interfaces/__init__.py:69
+msgid ""
+"The blog'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; "
+"if description is empty, content's header will be used."
+msgstr ""
+
+#: ./src/pyams_content/shared/blog/interfaces/__init__.py:74
+#: ./src/pyams_content/shared/common/interfaces/__init__.py:169
+#: ./src/pyams_content/shared/site/interfaces/__init__.py:78
+#: ./src/pyams_content/shared/site/interfaces/__init__.py:123
+#: ./src/pyams_content/shared/site/zmi/folder.py:74
+msgid "Notepad"
+msgstr ""
+
+#: ./src/pyams_content/shared/blog/interfaces/__init__.py:75
+#: ./src/pyams_content/shared/common/interfaces/__init__.py:170
+#: ./src/pyams_content/shared/site/interfaces/__init__.py:79
+#: ./src/pyams_content/shared/site/interfaces/__init__.py:124
+#: ./src/pyams_content/shared/site/zmi/folder.py:75
+msgid "Internal information to be known about this content"
+msgstr ""
+
+#: ./src/pyams_content/shared/blog/zmi/manager.py:57
+msgid "Blog management"
+msgstr ""
+
+#: ./src/pyams_content/shared/blog/zmi/manager.py:80
+#: ./src/pyams_content/shared/blog/zmi/manager.py:94
+msgid "Add blog manager"
+msgstr ""
+
+#: ./src/pyams_content/shared/blog/zmi/manager.py:93
+msgid "Blog manager"
+msgstr ""
+
+#: ./src/pyams_content/shared/blog/zmi/manager.py:148
+msgid "Blog properties"
+msgstr ""
+
+#: ./src/pyams_content/shared/blog/zmi/manager.py:163
+#: ./src/pyams_content/shared/blog/zmi/manager.py:175
+#: ./src/pyams_content/shared/site/zmi/container.py:104
+#: ./src/pyams_content/shared/site/zmi/container.py:116
+msgid "Publication dates..."
+msgstr ""
+
+#: ./src/pyams_content/shared/blog/zmi/manager.py:189
+#: ./src/pyams_content/shared/site/zmi/container.py:130
+msgid "Update publication dates"
+msgstr ""
+
+#: ./src/pyams_content/shared/blog/zmi/manager.py:124
+#: ./src/pyams_content/shared/site/zmi/manager.py:163
+msgid "You must provide a short name for default server language!"
+msgstr ""
+
+#: ./src/pyams_content/shared/blog/zmi/manager.py:128
+msgid "Specified blog manager name is already used!"
+msgstr ""
+
+#: ./src/pyams_content/shared/blog/zmi/manager.py:132
+msgid "A blog manager is already registered with this name!!"
+msgstr ""
+
+#: ./src/pyams_content/shared/blog/zmi/__init__.py:52
+msgid "This blog post"
+msgstr ""
+
+#: ./src/pyams_content/shared/blog/zmi/__init__.py:71
+#: ./src/pyams_content/shared/blog/zmi/__init__.py:81
+msgid "Add blog post"
+msgstr ""
+
+#: ./src/pyams_content/shared/blog/zmi/__init__.py:62
+#, python-format
+msgid "Blog post « {title} »"
+msgstr ""
+
+#: ./src/pyams_content/shared/common/__init__.py:244
+#: ./src/pyams_content/shared/common/zmi/properties.py:69
+#: ./src/pyams_content/shared/common/zmi/manager.py:96
+msgid "Properties"
+msgstr ""
+
+#: ./src/pyams_content/shared/common/__init__.py:154
+#: ./src/pyams_content/shared/common/__init__.py:162
+#, python-format
+msgid "{date} by {principal}"
+msgstr ""
+
+#: ./src/pyams_content/shared/common/__init__.py:267
+#, python-format
+msgid "title length should be between 40 and 66 characters ({length} actually)"
+msgstr ""
+
+#: ./src/pyams_content/shared/common/interfaces/types.py:44
+msgid "Name of this data type; must be unique between all data types"
+msgstr ""
+
+#: ./src/pyams_content/shared/common/interfaces/types.py:50
+msgid "Navigation label"
+msgstr ""
+
+#: ./src/pyams_content/shared/common/interfaces/types.py:51
+msgid "Label used for navigation entries"
+msgstr ""
+
+#: ./src/pyams_content/shared/common/interfaces/types.py:54
+msgid "Tab-folder label"
+msgstr ""
+
+#: ./src/pyams_content/shared/common/interfaces/types.py:55
+msgid "Label used to include into tab folder"
+msgstr ""
+
+#: ./src/pyams_content/shared/common/interfaces/types.py:58
+msgid "'See also' label"
+msgstr ""
+
+#: ./src/pyams_content/shared/common/interfaces/types.py:59
+msgid ""
+"This label can be used when contents of this type will be displayed in a 'See"
+" also' entries block"
+msgstr ""
+
+#: ./src/pyams_content/shared/common/interfaces/types.py:63
+msgid "'Single value' label"
+msgstr ""
+
+#: ./src/pyams_content/shared/common/interfaces/types.py:64
+msgid "Label given to this type when a single value is displayed"
+msgstr ""
+
+#: ./src/pyams_content/shared/common/interfaces/types.py:67
+msgid "'Link to list' label"
+msgstr ""
+
+#: ./src/pyams_content/shared/common/interfaces/types.py:68
+msgid "Label used to display a link to a list of items of this type"
+msgstr ""
+
+#: ./src/pyams_content/shared/common/interfaces/types.py:71
+msgid "Next content label"
+msgstr ""
+
+#: ./src/pyams_content/shared/common/interfaces/types.py:72
+msgid "Label used to announce next date for this type"
+msgstr ""
+
+#: ./src/pyams_content/shared/common/interfaces/types.py:76
+msgid "Pictogram associated with this data type"
+msgstr ""
+
+#: ./src/pyams_content/shared/common/interfaces/types.py:90
+msgid "Field names"
+msgstr ""
+
+#: ./src/pyams_content/shared/common/interfaces/types.py:91
+msgid "List of fields associated with this data type"
+msgstr ""
+
+#: ./src/pyams_content/shared/common/interfaces/types.py:125
+msgid "Data type"
+msgstr ""
+
+#: ./src/pyams_content/shared/common/interfaces/types.py:126
+msgid "Type of content data"
+msgstr ""
+
+#: ./src/pyams_content/shared/common/interfaces/__init__.py:42
+msgid "Webmasters can handle all contents, including published ones"
+msgstr ""
+
+#: ./src/pyams_content/shared/common/interfaces/__init__.py:46
+msgid "Pilots"
+msgstr ""
+
+#: ./src/pyams_content/shared/common/interfaces/__init__.py:47
+msgid ""
+"Pilots can handle tool configuration, manage access rules, grant users roles "
+"and manage managers restrictions"
+msgstr ""
+
+#: ./src/pyams_content/shared/common/interfaces/__init__.py:52
+#: ./src/pyams_content/shared/common/interfaces/__init__.py:196
+msgid "Managers"
+msgstr ""
+
+#: ./src/pyams_content/shared/common/interfaces/__init__.py:53
+#: ./src/pyams_content/shared/common/interfaces/__init__.py:197
+msgid ""
+"Managers can handle main operations in tool's workflow, like publish or "
+"retire contents"
+msgstr ""
+
+#: ./src/pyams_content/shared/common/interfaces/__init__.py:58
+#: ./src/pyams_content/shared/common/interfaces/__init__.py:202
+msgid "Contributors"
+msgstr ""
+
+#: ./src/pyams_content/shared/common/interfaces/__init__.py:59
+msgid "Contributors are users which are allowed to create new contents"
+msgstr ""
+
+#: ./src/pyams_content/shared/common/interfaces/__init__.py:63
+#: ./src/pyams_content/shared/common/interfaces/__init__.py:208
+msgid "Designers"
+msgstr ""
+
+#: ./src/pyams_content/shared/common/interfaces/__init__.py:64
+#: ./src/pyams_content/shared/common/interfaces/__init__.py:209
+msgid "Designers are users which are allowed to manage presentation templates"
+msgstr ""
+
+#: ./src/pyams_content/shared/common/interfaces/__init__.py:90
+msgid "Workflow name"
+msgstr ""
+
+#: ./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:119
+msgid "Content URL"
+msgstr ""
+
+#: ./src/pyams_content/shared/common/interfaces/__init__.py:120
+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:127
+msgid "Version creator"
+msgstr ""
+
+#: ./src/pyams_content/shared/common/interfaces/__init__.py:128
+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:132
+msgid "First owner"
+msgstr ""
+
+#: ./src/pyams_content/shared/common/interfaces/__init__.py:133
+msgid "Name of content's first version owner"
+msgstr ""
+
+#: ./src/pyams_content/shared/common/interfaces/__init__.py:137
+msgid "Version creation"
+msgstr ""
+
+#: ./src/pyams_content/shared/common/interfaces/__init__.py:140
+msgid "Version modifiers"
+msgstr ""
+
+#: ./src/pyams_content/shared/common/interfaces/__init__.py:141
+msgid "List of principals who modified this content"
+msgstr ""
+
+#: ./src/pyams_content/shared/common/interfaces/__init__.py:144
+msgid "Last modifier"
+msgstr ""
+
+#: ./src/pyams_content/shared/common/interfaces/__init__.py:145
+msgid "Last principal who modified this content"
+msgstr ""
+
+#: ./src/pyams_content/shared/common/interfaces/__init__.py:148
+msgid "Last update"
+msgstr ""
+
+#: ./src/pyams_content/shared/common/interfaces/__init__.py:152
+msgid "Content's header is generally displayed in page header"
+msgstr ""
+
+#: ./src/pyams_content/shared/common/interfaces/__init__.py:158
+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; "
+"if description is empty, content's header will be used."
+msgstr ""
+
+#: ./src/pyams_content/shared/common/interfaces/__init__.py:165
+msgid "Keywords"
+msgstr ""
+
+#: ./src/pyams_content/shared/common/interfaces/__init__.py:166
+msgid "They will be included into HTML pages metadata"
+msgstr ""
+
+#: ./src/pyams_content/shared/common/interfaces/__init__.py:189
+msgid "Content owner"
+msgstr ""
+
+#: ./src/pyams_content/shared/common/interfaces/__init__.py:190
+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:203
+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:213
+msgid "Readers"
+msgstr ""
+
+#: ./src/pyams_content/shared/common/interfaces/__init__.py:214
+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:219
+msgid "Guests"
+msgstr ""
+
+#: ./src/pyams_content/shared/common/interfaces/__init__.py:220
+msgid ""
+"Guests are users which are allowed to view contents with restricted access"
+msgstr ""
+
+#: ./src/pyams_content/shared/common/interfaces/__init__.py:243
+msgid "Principal ID"
+msgstr ""
+
+#: ./src/pyams_content/shared/common/interfaces/__init__.py:282
+#: ./src/pyams_content/shared/common/interfaces/__init__.py:307
+msgid "Publication checks"
+msgstr ""
+
+#: ./src/pyams_content/shared/common/interfaces/__init__.py:283
+msgid ""
+"If 'yes', this contributor will have to confirm that contents have been "
+"previewed and checked before asking for publication"
+msgstr ""
+
+#: ./src/pyams_content/shared/common/interfaces/__init__.py:308
+msgid ""
+"If 'yes', this manager will have to confirm that contents have been previewed"
+" and checked before publishing a content"
+msgstr ""
+
+#: ./src/pyams_content/shared/common/interfaces/__init__.py:313
+msgid "Restricted contents"
+msgstr ""
+
+#: ./src/pyams_content/shared/common/interfaces/__init__.py:314
+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:319
+msgid "Selected owners"
+msgstr ""
+
+#: ./src/pyams_content/shared/common/interfaces/__init__.py:320
+msgid "Manager will have access to contents owned by these principals"
+msgstr ""
+
+#: ./src/pyams_content/shared/common/portlet/title.py:38
+msgid "Content title"
+msgstr ""
+
+#: ./src/pyams_content/shared/common/portlet/head.py:46
+msgid "Content header"
+msgstr ""
+
+#: ./src/pyams_content/shared/common/portlet/interfaces/__init__.py:25
+msgid "Display breadcrumbs?"
+msgstr ""
+
+#: ./src/pyams_content/shared/common/portlet/interfaces/__init__.py:29
+msgid "Display title?"
+msgstr ""
+
+#: ./src/pyams_content/shared/common/portlet/interfaces/__init__.py:33
+msgid "Display tags?"
+msgstr ""
+
+#: ./src/pyams_content/shared/common/portlet/interfaces/__init__.py:37
+msgid "Display header?"
+msgstr ""
+
+#: ./src/pyams_content/shared/common/portlet/interfaces/__init__.py:41
+msgid "Display specificities?"
+msgstr ""
+
+#: ./src/pyams_content/shared/common/portlet/interfaces/__init__.py:42
+msgid "If 'no', specific content's informations won't be displayed..."
+msgstr ""
+
+#: ./src/pyams_content/shared/common/portlet/zmi/templates/head-preview.pt:4
+msgid "Display breadcrumbs"
+msgstr ""
+
+#: ./src/pyams_content/shared/common/portlet/zmi/templates/head-preview.pt:8
+msgid "Display title"
+msgstr ""
+
+#: ./src/pyams_content/shared/common/portlet/zmi/templates/head-preview.pt:12
+msgid "Display tags"
+msgstr ""
+
+#: ./src/pyams_content/shared/common/portlet/zmi/templates/head-preview.pt:16
+msgid "Display header"
+msgstr ""
+
+#: ./src/pyams_content/shared/common/portlet/zmi/templates/head-preview.pt:20
+msgid "Display specificities"
+msgstr ""
+
+#: ./src/pyams_content/shared/common/zmi/portal.py:44
+msgid "Edit default template properties"
+msgstr ""
+
+#: ./src/pyams_content/shared/common/zmi/portal.py:54
+msgid ""
+"**This form allows you to select shared content default template.**\n"
+"\n"
+"If you choose to use a shared template, you can only adjust settings of each portlet individually but can't change portlets list or page configuration.\n"
+"\n"
+"If you use a local template, you can define a whole custom configuration but the template definition can't be reused anywhere..."
+msgstr ""
+
+#: ./src/pyams_content/shared/common/zmi/portal.py:70
+msgid "Use tool default template"
+msgstr ""
+
+#: ./src/pyams_content/shared/common/zmi/properties.py:59
+msgid "Composition"
+msgstr ""
+
+#: ./src/pyams_content/shared/common/zmi/properties.py:82
+msgid "Content properties"
+msgstr ""
+
+#: ./src/pyams_content/shared/common/zmi/site.py:38
+#, python-format
+msgid ""
+"SEARCH - Between all contents published into « {site} »"
+msgstr ""
+
+#: ./src/pyams_content/shared/common/zmi/header.py:79
+#, python-format
+msgid "{state} by {principal}"
+msgstr ""
+
+#: ./src/pyams_content/shared/common/zmi/header.py:112
+#, python-format
+msgid "since {date}"
+msgstr ""
+
+#: ./src/pyams_content/shared/common/zmi/header.py:91
+#: ./src/pyams_content/shared/common/zmi/dashboard.py:165
+msgid "Content publication start date is not passed yet"
+msgstr ""
+
+#: ./src/pyams_content/shared/common/zmi/header.py:124
+msgid "access published version"
+msgstr ""
+
+#: ./src/pyams_content/shared/common/zmi/header.py:131
+msgid "access new version"
+msgstr ""
+
+#: ./src/pyams_content/shared/common/zmi/header.py:141
+msgid "access waiting version"
+msgstr ""
+
+#: ./src/pyams_content/shared/common/zmi/header.py:152
+msgid "access retired version"
+msgstr ""
+
+#: ./src/pyams_content/shared/common/zmi/header.py:162
+msgid "access archived version"
+msgstr ""
+
+#: ./src/pyams_content/shared/common/zmi/manager.py:107
+msgid "Shared tool properties"
+msgstr ""
+
+#: ./src/pyams_content/shared/common/zmi/manager.py:125
+msgid "WARNING"
+msgstr ""
+
+#: ./src/pyams_content/shared/common/zmi/manager.py:127
+msgid ""
+"Workflow shouldn't be modified if this tool already contains any shared "
+"content!"
+msgstr ""
+
+#: ./src/pyams_content/shared/common/zmi/manager.py:150
+msgid "Languages"
+msgstr ""
+
+#: ./src/pyams_content/shared/common/zmi/manager.py:162
+msgid "Content languages"
+msgstr ""
+
+#: ./src/pyams_content/shared/common/zmi/manager.py:172
+msgid ""
+"Tool languages are used to translate own tool properties, and newly created "
+"contents will propose these languages by default"
+msgstr ""
+
+#: ./src/pyams_content/shared/common/zmi/manager.py:80
+msgid "Content management"
+msgstr ""
+
+#: ./src/pyams_content/shared/common/zmi/manager.py:82
+msgid "Tool management"
+msgstr ""
+
+#: ./src/pyams_content/shared/common/zmi/types.py:69
+msgid "Data types"
+msgstr ""
+
+#: ./src/pyams_content/shared/common/zmi/types.py:147
+msgid "Data type label"
+msgstr ""
+
+#: ./src/pyams_content/shared/common/zmi/types.py:187
+#: ./src/pyams_content/shared/common/zmi/types.py:427
+msgid "Default associations"
+msgstr ""
+
+#: ./src/pyams_content/shared/common/zmi/types.py:203
+msgid "Default themes"
+msgstr ""
+
+#: ./src/pyams_content/shared/common/zmi/types.py:231
+msgid "Content data types"
+msgstr ""
+
+#: ./src/pyams_content/shared/common/zmi/types.py:254
+msgid "Add data type"
+msgstr ""
+
+#: ./src/pyams_content/shared/common/zmi/types.py:266
+msgid "Add new data type"
+msgstr ""
+
+#: ./src/pyams_content/shared/common/zmi/types.py:309
+msgid "Data type properties"
+msgstr ""
+
+#: ./src/pyams_content/shared/common/zmi/types.py:390
+msgid "Subtype label"
+msgstr ""
+
+#: ./src/pyams_content/shared/common/zmi/types.py:471
+msgid "Add subtype"
+msgstr ""
+
+#: ./src/pyams_content/shared/common/zmi/types.py:483
+msgid "Add new subtype"
+msgstr ""
+
+#: ./src/pyams_content/shared/common/zmi/types.py:530
+msgid "Data subtype properties"
+msgstr ""
+
+#: ./src/pyams_content/shared/common/zmi/types.py:572
+msgid "Select content type..."
+msgstr ""
+
+#: ./src/pyams_content/shared/common/zmi/types.py:114
+msgid "No currently defined data type."
+msgstr ""
+
+#: ./src/pyams_content/shared/common/zmi/types.py:299
+msgid "Specified type name is already used!"
+msgstr ""
+
+#: ./src/pyams_content/shared/common/zmi/types.py:506
+msgid "Subtype was correctly added."
+msgstr ""
+
+#: ./src/pyams_content/shared/common/zmi/types.py:520
+msgid "Specified subtype name is already used!"
+msgstr ""
+
+#: ./src/pyams_content/shared/common/zmi/types.py:159
+msgid "Click to see subtypes"
+msgstr ""
+
+#: ./src/pyams_content/shared/common/zmi/types.py:610
+#, python-format
+msgid "Custom properties for type « {0} »"
+msgstr ""
+
+#: ./src/pyams_content/shared/common/zmi/dashboard.py:128
+msgid "Unique ID"
+msgstr ""
+
+#: ./src/pyams_content/shared/common/zmi/dashboard.py:148
+#: ./src/pyams_content/shared/common/zmi/search.py:173
+msgid "Status"
+msgstr ""
+
+#: ./src/pyams_content/shared/common/zmi/dashboard.py:175
+msgid "Status date"
+msgstr ""
+
+#: ./src/pyams_content/shared/common/zmi/dashboard.py:192
+#: ./src/pyams_content/shared/common/zmi/summary.py:165
+msgid "Version"
+msgstr ""
+
+#: ./src/pyams_content/shared/common/zmi/dashboard.py:207
+msgid "Status principal"
+msgstr ""
+
+#: ./src/pyams_content/shared/common/zmi/dashboard.py:244
+msgid "Last modification"
+msgstr ""
+
+#: ./src/pyams_content/shared/common/zmi/dashboard.py:277
+msgid "Contents dashboard"
+msgstr ""
+
+#: ./src/pyams_content/shared/common/zmi/dashboard.py:476
+#: ./src/pyams_content/shared/common/zmi/templates/header.pt:23
+msgid "Add/remove from favorites"
+msgstr ""
+
+#: ./src/pyams_content/shared/common/zmi/dashboard.py:300
+#, python-format
+msgid "SEARCH - Between all contents of type « {type} »"
+msgstr ""
+
+#: ./src/pyams_content/shared/common/zmi/rename.py:62
+msgid "Change URL..."
+msgstr ""
+
+#: ./src/pyams_content/shared/common/zmi/rename.py:79
+msgid "Change item URL"
+msgstr ""
+
+#: ./src/pyams_content/shared/common/zmi/rename.py:86
+msgid "Item URL part"
+msgstr ""
+
+#: ./src/pyams_content/shared/common/zmi/rename.py:87
+msgid "URL part used to access this content"
+msgstr ""
+
+#: ./src/pyams_content/shared/common/zmi/rename.py:121
+msgid "You must provide an URL for this item!"
+msgstr ""
+
+#: ./src/pyams_content/shared/common/zmi/security.py:64
+msgid "Contributors restrictions"
+msgstr ""
+
+#: ./src/pyams_content/shared/common/zmi/security.py:73
+msgid "Content contributors restrictions"
+msgstr ""
+
+#: ./src/pyams_content/shared/common/zmi/security.py:107
+msgid "Contributor name"
+msgstr ""
+
+#: ./src/pyams_content/shared/common/zmi/security.py:118
+#: ./src/pyams_content/shared/common/zmi/security.py:272
+msgid "Activated publication checks?"
+msgstr ""
+
+#: ./src/pyams_content/shared/common/zmi/security.py:219
+msgid "Managers restrictions"
+msgstr ""
+
+#: ./src/pyams_content/shared/common/zmi/security.py:228
+msgid "Content managers restrictions"
+msgstr ""
+
+#: ./src/pyams_content/shared/common/zmi/security.py:261
+msgid "Manager name"
+msgstr ""
+
+#: ./src/pyams_content/shared/common/zmi/security.py:289
+msgid "Restricted"
+msgstr ""
+
+#: ./src/pyams_content/shared/common/zmi/security.py:306
+msgid "Owners"
+msgstr ""
+
+#: ./src/pyams_content/shared/common/zmi/security.py:396
+msgid "Publication workflow"
+msgstr ""
+
+#: ./src/pyams_content/shared/common/zmi/security.py:167
+#, python-format
+msgid "Edit contributor restrictions for « {0} »"
+msgstr ""
+
+#: ./src/pyams_content/shared/common/zmi/security.py:355
+#, python-format
+msgid "Edit manager restrictions for « {0} »"
+msgstr ""
+
+#: ./src/pyams_content/shared/common/zmi/security.py:402
+msgid "Apply contents restrictions"
+msgstr ""
+
+#: ./src/pyams_content/shared/common/zmi/security.py:404
+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 "
+"which at least one criteria is matching."
+msgstr ""
+
+#: ./src/pyams_content/shared/common/zmi/__init__.py:265
+msgid "Duplicate content..."
+msgstr ""
+
+#: ./src/pyams_content/shared/common/zmi/__init__.py:285
+msgid "Duplicate content"
+msgstr ""
+
+#: ./src/pyams_content/shared/common/zmi/__init__.py:86
+msgid "This title can be modified afterwards"
+msgstr ""
+
+#: ./src/pyams_content/shared/common/zmi/__init__.py:276
+msgid "Duplicate this content"
+msgstr ""
+
+#: ./src/pyams_content/shared/common/zmi/__init__.py:332
+#, python-format
+msgid "Clone created from version {source} of {oid} (in « {state} » state)"
+msgstr ""
+
+#: ./src/pyams_content/shared/common/zmi/__init__.py:377
+msgid "Created or modified in this version"
+msgstr ""
+
+#: ./src/pyams_content/shared/common/zmi/owner.py:50
+msgid "Change owner..."
+msgstr ""
+
+#: ./src/pyams_content/shared/common/zmi/owner.py:83
+msgid "Change content's owner"
+msgstr ""
+
+#: ./src/pyams_content/shared/common/zmi/owner.py:125
+msgid ""
+"All versions of this content which are not archived will be transferred to "
+"newly selected owner"
+msgstr ""
+
+#: ./src/pyams_content/shared/common/zmi/owner.py:60
+msgid "New owner"
+msgstr ""
+
+#: ./src/pyams_content/shared/common/zmi/owner.py:61
+msgid "The selected user will become the new content's owner"
+msgstr ""
+
+#: ./src/pyams_content/shared/common/zmi/owner.py:63
+msgid "Keep previous owner as contributor"
+msgstr ""
+
+#: ./src/pyams_content/shared/common/zmi/owner.py:64
+msgid "If 'yes', the previous owner will still be able to modify this content"
+msgstr ""
+
+#: ./src/pyams_content/shared/common/zmi/owner.py:74
+msgid "Change owner"
+msgstr ""
+
+#: ./src/pyams_content/shared/common/zmi/workflow.py:847
+msgid "Prior checks"
+msgstr ""
+
+#: ./src/pyams_content/shared/common/zmi/workflow.py:124
+msgid "Request publication"
+msgstr ""
+
+#: ./src/pyams_content/shared/common/zmi/workflow.py:211
+#: ./src/pyams_content/workflow/__init__.py:316
+msgid "Cancel publication request"
+msgstr ""
+
+#: ./src/pyams_content/shared/common/zmi/workflow.py:251
+msgid "Refuse publication request"
+msgstr ""
+
+#: ./src/pyams_content/shared/common/zmi/workflow.py:305
+#: ./src/pyams_content/workflow/basic.py:197
+msgid "Publish"
+msgstr ""
+
+#: ./src/pyams_content/shared/common/zmi/workflow.py:394
+msgid "Request retire"
+msgstr ""
+
+#: ./src/pyams_content/shared/common/zmi/workflow.py:450
+msgid "Cancel retire request"
+msgstr ""
+
+#: ./src/pyams_content/shared/common/zmi/workflow.py:490
+msgid "Retire"
+msgstr ""
+
+#: ./src/pyams_content/shared/common/zmi/workflow.py:531
+#: ./src/pyams_content/workflow/__init__.py:437
+msgid "Request archive"
+msgstr ""
+
+#: ./src/pyams_content/shared/common/zmi/workflow.py:574
+msgid "Cancel archive request"
+msgstr ""
+
+#: ./src/pyams_content/shared/common/zmi/workflow.py:614
+msgid "Archive"
+msgstr ""
+
+#: ./src/pyams_content/shared/common/zmi/workflow.py:655
+#: ./src/pyams_content/workflow/__init__.py:502
+#: ./src/pyams_content/workflow/__init__.py:514
+#: ./src/pyams_content/workflow/__init__.py:526
+#: ./src/pyams_content/workflow/__init__.py:538
+#: ./src/pyams_content/workflow/__init__.py:550
+#: ./src/pyams_content/workflow/basic.py:225
+#: ./src/pyams_content/workflow/basic.py:237
+msgid "Create new version"
+msgstr ""
+
+#: ./src/pyams_content/shared/common/zmi/workflow.py:706
+#: ./src/pyams_content/workflow/__init__.py:562
+#: ./src/pyams_content/workflow/basic.py:249
+msgid "Delete version"
+msgstr ""
+
+#: ./src/pyams_content/shared/common/zmi/workflow.py:793
+msgid "Previewed content?"
+msgstr ""
+
+#: ./src/pyams_content/shared/common/zmi/workflow.py:797
+msgid "Verified content?"
+msgstr ""
+
+#: ./src/pyams_content/shared/common/zmi/workflow.py:181
+#: ./src/pyams_content/shared/common/zmi/workflow.py:363
+msgid "Publication start date is required"
+msgstr ""
+
+#: ./src/pyams_content/shared/common/zmi/workflow.py:274
+#: ./src/pyams_content/shared/common/zmi/workflow.py:420
+msgid "A comment is required"
+msgstr ""
+
+#: ./src/pyams_content/shared/common/zmi/workflow.py:732
+msgid "Delete content"
+msgstr ""
+
+#: ./src/pyams_content/shared/common/zmi/workflow.py:741
+msgid "Delete definitively"
+msgstr ""
+
+#: ./src/pyams_content/shared/common/zmi/workflow.py:870
+msgid ""
+"You must confirm that you previewed and checked this content before "
+"requesting publication!!"
+msgstr ""
+
+#: ./src/pyams_content/shared/common/zmi/workflow.py:88
+#, python-format
+msgid "{state} | by {principal}"
+msgstr ""
+
+#: ./src/pyams_content/shared/common/zmi/workflow.py:873
+msgid ""
+"You must confirm that you checked this content before requesting "
+"publication!!"
+msgstr ""
+
+#: ./src/pyams_content/shared/common/zmi/workflow.py:84
+#: ./src/pyams_content/workflow/__init__.py:649
+#: ./src/pyams_content/workflow/__init__.py:620
+#: ./src/pyams_content/workflow/basic.py:316
+#: ./src/pyams_content/workflow/basic.py:287
+#, python-format
+msgid "{state} {date}"
+msgstr ""
+
+#: ./src/pyams_content/shared/common/zmi/reverse.py:57
+msgid "Reverse links"
+msgstr ""
+
+#: ./src/pyams_content/shared/common/zmi/reverse.py:66
+msgid "Content's internal links"
+msgstr ""
+
+#: ./src/pyams_content/shared/common/zmi/summary.py:51
+msgid "Display content summary"
+msgstr ""
+
+#: ./src/pyams_content/shared/common/zmi/summary.py:75
+msgid "Identity card"
+msgstr ""
+
+#: ./src/pyams_content/shared/common/zmi/summary.py:93
+msgid "Requested action"
+msgstr ""
+
+#: ./src/pyams_content/shared/common/zmi/summary.py:134
+msgid "Publication and retire dates"
+msgstr ""
+
+#: ./src/pyams_content/shared/common/zmi/summary.py:153
+msgid "Current version"
+msgstr ""
+
+#: ./src/pyams_content/shared/common/zmi/summary.py:183
+msgid "Content history"
+msgstr ""
+
+#: ./src/pyams_content/shared/common/zmi/summary.py:124
+msgid "Associated comment"
+msgstr ""
+
+#: ./src/pyams_content/shared/common/zmi/summary.py:114
+#, python-format
+msgid "{state} {date} by {principal}"
+msgstr ""
+
+#: ./src/pyams_content/shared/common/zmi/summary.py:171
+#, python-format
+msgid "{state} since {date}, by {principal}"
+msgstr ""
+
+#: ./src/pyams_content/shared/common/zmi/templates/wf-owner-warning.pt:1
+msgid ""
+"RECALL: you are not the owner of the content on which you are intervening."
+msgstr ""
+
+#: ./src/pyams_content/shared/common/zmi/templates/wf-duplicate-message.pt:2
+msgid "You are going to duplicate a whole content."
+msgstr ""
+
+#: ./src/pyams_content/shared/common/zmi/templates/wf-duplicate-message.pt:3
+msgid ""
+"The new copy is going to be created in 'draft' mode, so that you can modify "
+"it before publication."
+msgstr ""
+
+#: ./src/pyams_content/shared/common/zmi/templates/wf-duplicate-message.pt:5
+msgid ""
+"A new unique number is also going to be assigned to it. This number will be "
+"shared by all content's versions."
+msgstr ""
+
+#: ./src/pyams_content/shared/common/zmi/templates/header.pt:6
+msgid "Back to previous page"
+msgstr ""
+
+#: ./src/pyams_content/shared/common/zmi/templates/header.pt:20
+msgid "by ${owner}"
+msgstr ""
+
+#: ./src/pyams_content/shared/common/zmi/templates/wf-operator-warning.pt:1
+msgid ""
+"WARNING: this request was made by a contributor which is not the owner of "
+"this content."
+msgstr ""
+
+#: ./src/pyams_content/shared/common/zmi/templates/wf-propose-message.pt:1
+msgid ""
+"This publication request is going to be transmitted to a content manager."
+msgstr ""
+
+#: ./src/pyams_content/shared/common/zmi/templates/wf-create-message.pt:2
+msgid ""
+"This new content is going to be created in 'draft' mode, so that you can "
+"complete it before publication."
+msgstr ""
+
+#: ./src/pyams_content/shared/common/zmi/templates/wf-create-message.pt:4
+msgid ""
+"A unique number is also going to be assigned to it. This number will be "
+"shared by all content's versions."
+msgstr ""
+
+#: ./src/pyams_content/shared/common/zmi/templates/wf-cancel-propose-message.pt:1
+msgid ""
+"After canceling the request, you will be able to update the content again."
+msgstr ""
+
+#: ./src/pyams_content/shared/common/zmi/templates/wf-clone-message.pt:2
+msgid "You considerate that the currently published must evolve."
+msgstr ""
+
+#: ./src/pyams_content/shared/common/zmi/templates/wf-clone-message.pt:3
+msgid ""
+"By creating a new version, you can update it's content without impacting the "
+"currently published one."
+msgstr ""
+
+#: ./src/pyams_content/shared/common/zmi/templates/wf-clone-message.pt:5
+msgid ""
+"When the new version will be complete, you will be able to make a new "
+"publication request to replace the currently published version (which will be"
+" archived automatically)."
+msgstr ""
+
+#: ./src/pyams_content/shared/common/zmi/templates/wf-retiring-message.pt:2
+msgid ""
+"You considerate that the currently published version should no more be "
+"publicly visible."
+msgstr ""
+
+#: ./src/pyams_content/shared/common/zmi/templates/wf-retiring-message.pt:3
+msgid ""
+"WARNING: the content will remain visible until a manager validate the "
+"request."
+msgstr ""
+
+#: ./src/pyams_content/shared/common/zmi/templates/wf-archiving-message.pt:2
+msgid "This content is already retired and not visible."
+msgstr ""
+
+#: ./src/pyams_content/shared/common/zmi/templates/wf-archiving-message.pt:3
+#: ./src/pyams_content/shared/common/zmi/templates/wf-archive-message.pt:3
+msgid ""
+"After archiving, it will be backed up but you will not be able to publish it "
+"again except by creating a new version."
+msgstr ""
+
+#: ./src/pyams_content/shared/common/zmi/templates/wf-publish-message.pt:2
+msgid ""
+"As a manager, you considerate that this content is complete and can be "
+"published 'as is'."
+msgstr ""
+
+#: ./src/pyams_content/shared/common/zmi/templates/wf-publish-message.pt:4
+msgid ""
+"This operation will make the content publicly available (except if restricted"
+" access has been set)."
+msgstr ""
+
+#: ./src/pyams_content/shared/common/zmi/templates/wf-refuse-propose-message.pt:2
+msgid ""
+"As a content manager, you considerate that this content can't be published "
+"'as is'."
+msgstr ""
+
+#: ./src/pyams_content/shared/common/zmi/templates/wf-refuse-propose-message.pt:4
+msgid ""
+"The contributor will be notified of this and will be able to update the "
+"content before doing a new publication request."
+msgstr ""
+
+#: ./src/pyams_content/shared/common/zmi/templates/wf-archive-message.pt:2
+msgid "As a manager, you considerate that this content must be archived."
+msgstr ""
+
+#: ./src/pyams_content/shared/common/zmi/templates/wf-cancel-archiving-message.pt:1
+msgid ""
+"After cancelling this request, the content will return to it's previous "
+"retired state."
+msgstr ""
+
+#: ./src/pyams_content/shared/common/zmi/templates/wf-retire-message.pt:2
+msgid ""
+"As a content manager, you considerate that this content should no longer be "
+"published."
+msgstr ""
+
+#: ./src/pyams_content/shared/common/zmi/templates/wf-retire-message.pt:4
+msgid ""
+"Retired content won't be visible anymore, but it can be updated and published"
+" again, or archived."
+msgstr ""
+
+#: ./src/pyams_content/shared/common/zmi/templates/wf-cancel-retiring-message.pt:1
+msgid ""
+"After cancelling this request, the content will return to it's normal "
+"published state."
+msgstr ""
+
+#: ./src/pyams_content/shared/common/zmi/templates/wf-transition-info.pt:2
+msgid "FOR YOUR INFORMATION"
+msgstr ""
+
+#: ./src/pyams_content/shared/common/zmi/templates/wf-transition-info.pt:5
+msgid "Next step"
+msgstr ""
+
+#: ./src/pyams_content/shared/common/zmi/templates/wf-transition-info.pt:7
+msgid "Previous step"
+msgstr ""
+
+#: ./src/pyams_content/shared/common/zmi/templates/wf-transition-info.pt:10
+msgid "With this comment:"
+msgstr ""
+
+#: ./src/pyams_content/shared/common/zmi/templates/wf-delete-message.pt:2
+msgid ""
+"This content was never published. If you confirm deletion, it won't be "
+"possible to restore it."
+msgstr ""
+
+#: ./src/pyams_content/shared/common/zmi/templates/wf-delete-message.pt:6
+msgid ""
+"The content version is going to be definitely deleted. Will only remain the "
+"currently published version."
+msgstr ""
+
+#: ./src/pyams_content/shared/news/interfaces/__init__.py:29
+msgid "News topic"
+msgstr ""
+
+#: ./src/pyams_content/shared/news/zmi/__init__.py:44
+msgid "This news topic"
+msgstr ""
+
+#: ./src/pyams_content/shared/news/zmi/__init__.py:63
+#: ./src/pyams_content/shared/news/zmi/__init__.py:74
+msgid "Add news topic"
+msgstr ""
+
+#: ./src/pyams_content/shared/news/zmi/__init__.py:54
+#, python-format
+msgid "News topic « {title} »"
+msgstr ""
+
+#: ./src/pyams_content/shared/site/manager.py:66
+#: ./src/pyams_content/shared/site/zmi/manager.py:121
+msgid "Site manager"
+msgstr ""
+
+#: ./src/pyams_content/shared/site/folder.py:56
+msgid "Site folder"
+msgstr ""
+
+#: ./src/pyams_content/shared/site/link.py:43
+msgid "Content link"
+msgstr ""
+
+#: ./src/pyams_content/shared/site/interfaces/__init__.py:133
+msgid "Site topic"
+msgstr ""
+
+#: ./src/pyams_content/shared/site/interfaces/__init__.py:38
+msgid "Redirect to first visible sub-folder or content"
+msgstr ""
+
+#: ./src/pyams_content/shared/site/interfaces/__init__.py:39
+msgid "Use presentation template"
+msgstr ""
+
+#: ./src/pyams_content/shared/site/interfaces/__init__.py:68
+msgid "Heading"
+msgstr ""
+
+#: ./src/pyams_content/shared/site/interfaces/__init__.py:69
+msgid "Heading displayed according to presentation template"
+msgstr ""
+
+#: ./src/pyams_content/shared/site/interfaces/__init__.py:73
+msgid ""
+"The folder'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; "
+"if description is empty, content's header will be used."
+msgstr ""
+
+#: ./src/pyams_content/shared/site/interfaces/__init__.py:82
+msgid "Visible in folders list"
+msgstr ""
+
+#: ./src/pyams_content/shared/site/interfaces/__init__.py:83
+msgid "If 'no', folder will not be displayed into folders list"
+msgstr ""
+
+#: ./src/pyams_content/shared/site/interfaces/__init__.py:87
+#: ./src/pyams_content/shared/site/interfaces/__init__.py:151
+msgid "Navigation title"
+msgstr ""
+
+#: ./src/pyams_content/shared/site/interfaces/__init__.py:88
+msgid ""
+"Folder's title displayed in navigation pages; original title will be used if "
+"none is specified"
+msgstr ""
+
+#: ./src/pyams_content/shared/site/interfaces/__init__.py:92
+msgid "Navigation mode"
+msgstr ""
+
+#: ./src/pyams_content/shared/site/interfaces/__init__.py:93
+msgid "Folder behaviour when navigating to folder URL"
+msgstr ""
+
+#: ./src/pyams_content/shared/site/interfaces/__init__.py:118
+msgid ""
+"The site'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; "
+"if description is empty, content's header will be used."
+msgstr ""
+
+#: ./src/pyams_content/shared/site/interfaces/__init__.py:152
+msgid ""
+"Alternate content's title displayed in navigation pages; original title will "
+"be used if none is specified"
+msgstr ""
+
+#: ./src/pyams_content/shared/site/interfaces/__init__.py:157
+msgid "If 'no', link is not visible"
+msgstr ""
+
+#: ./src/pyams_content/shared/site/zmi/container.py:308
+#: ./src/pyams_content/shared/site/zmi/container.py:154
+msgid "Visible element?"
+msgstr ""
+
+#: ./src/pyams_content/shared/site/zmi/container.py:309
+msgid "Switch element visibility"
+msgstr ""
+
+#: ./src/pyams_content/shared/site/zmi/container.py:371
+msgid "Folders and topics"
+msgstr ""
+
+#: ./src/pyams_content/shared/site/zmi/container.py:503
+msgid "Delete site item"
+msgstr ""
+
+#: ./src/pyams_content/shared/site/zmi/container.py:380
+msgid "Click to open/close all folders"
+msgstr ""
+
+#: ./src/pyams_content/shared/site/zmi/container.py:396
+msgid "Click to show/hide inner folders"
+msgstr ""
+
+#: ./src/pyams_content/shared/site/zmi/container.py:265
+msgid "Can't reparent object to one of it's children. Reloading..."
+msgstr ""
+
+#: ./src/pyams_content/shared/site/zmi/manager.py:53
+msgid "Site management"
+msgstr ""
+
+#: ./src/pyams_content/shared/site/zmi/manager.py:108
+#: ./src/pyams_content/shared/site/zmi/manager.py:122
+msgid "Add site manager"
+msgstr ""
+
+#: ./src/pyams_content/shared/site/zmi/manager.py:150
+#: ./src/pyams_content/shared/site/zmi/folder.py:185
+msgid "Site folder properties"
+msgstr ""
+
+#: ./src/pyams_content/shared/site/zmi/manager.py:167
+msgid "Specified site manager name is already used!"
+msgstr ""
+
+#: ./src/pyams_content/shared/site/zmi/manager.py:171
+msgid "A site manager is already registered with this name!!"
+msgstr ""
+
+#: ./src/pyams_content/shared/site/zmi/folder.py:57
+msgid "Add site folder..."
+msgstr ""
+
+#: ./src/pyams_content/shared/site/zmi/folder.py:89
+msgid "Add site folder"
+msgstr ""
+
+#: ./src/pyams_content/shared/site/zmi/folder.py:156
+msgid "Site folder management"
+msgstr ""
+
+#: ./src/pyams_content/shared/site/zmi/folder.py:203
+msgid "Navigation properties"
+msgstr ""
+
+#: ./src/pyams_content/shared/site/zmi/folder.py:70
+#: ./src/pyams_content/shared/site/zmi/link.py:65
+#: ./src/pyams_content/shared/site/zmi/__init__.py:60
+msgid "Parent"
+msgstr ""
+
+#: ./src/pyams_content/shared/site/zmi/folder.py:71
+#: ./src/pyams_content/shared/site/zmi/link.py:66
+msgid "Folder's parent"
+msgstr ""
+
+#: ./src/pyams_content/shared/site/zmi/folder.py:149
+msgid "You must provide a folder name for default server language!"
+msgstr ""
+
+#: ./src/pyams_content/shared/site/zmi/link.py:56
+msgid "Rent content..."
+msgstr ""
+
+#: ./src/pyams_content/shared/site/zmi/link.py:76
+msgid "Rent existing content"
+msgstr ""
+
+#: ./src/pyams_content/shared/site/zmi/link.py:134
+msgid "Edit content link properties"
+msgstr ""
+
+#: ./src/pyams_content/shared/site/zmi/__init__.py:51
+msgid "Add topic..."
+msgstr ""
+
+#: ./src/pyams_content/shared/site/zmi/__init__.py:74
+#: ./src/pyams_content/shared/topic/zmi/__init__.py:57
+#: ./src/pyams_content/shared/topic/zmi/__init__.py:68
+msgid "Add topic"
+msgstr ""
+
+#: ./src/pyams_content/shared/site/zmi/__init__.py:61
+msgid "Topic's parent"
+msgstr ""
+
+#: ./src/pyams_content/shared/topic/interfaces/__init__.py:23
+msgid "Topic"
+msgstr ""
+
+#: ./src/pyams_content/shared/topic/zmi/__init__.py:38
+msgid "This topic"
+msgstr ""
+
+#: ./src/pyams_content/shared/topic/zmi/__init__.py:48
+#, python-format
+msgid "Topic « {title} »"
+msgstr ""
+
+#: ./src/pyams_content/shared/imagemap/__init__.py:152
+msgid "no area defined"
+msgstr ""
+
#: ./src/pyams_content/shared/imagemap/paragraph.py:88
msgid "no selected image map"
msgstr ""
@@ -3751,96 +5019,16 @@
msgid "image map '{0}' is not published"
msgstr ""
-#: ./src/pyams_content/shared/imagemap/__init__.py:154
-msgid "no area defined"
-msgstr ""
-
-#: ./src/pyams_content/shared/imagemap/zmi/paragraph.py:55
-msgid "Image map..."
-msgstr ""
-
-#: ./src/pyams_content/shared/imagemap/zmi/paragraph.py:68
-msgid "Add new image map"
-msgstr ""
-
-#: ./src/pyams_content/shared/imagemap/zmi/paragraph.py:95
-#: ./src/pyams_content/shared/logo/zmi/paragraph.py:94
-msgid "Edit paragraph properties"
-msgstr ""
-
-#: ./src/pyams_content/shared/imagemap/zmi/properties.py:40
-msgid "Background image"
-msgstr ""
-
-#: ./src/pyams_content/shared/imagemap/zmi/__init__.py:44
-msgid "This image map"
-msgstr ""
-
-#: ./src/pyams_content/shared/imagemap/zmi/__init__.py:63
-msgid "Add image map"
-msgstr ""
-
-#: ./src/pyams_content/shared/imagemap/zmi/__init__.py:73
-msgid "Adding image map"
-msgstr ""
-
-#: ./src/pyams_content/shared/imagemap/zmi/__init__.py:54
-#, python-format
-msgid "Image map « {title} »"
-msgstr ""
-
-#: ./src/pyams_content/shared/imagemap/zmi/container.py:54
-msgid "Image areas"
-msgstr ""
-
-#: ./src/pyams_content/shared/imagemap/zmi/container.py:65
-#: ./src/pyams_content/shared/imagemap/interfaces/__init__.py:71
-msgid "Image map areas"
-msgstr ""
-
-#: ./src/pyams_content/shared/imagemap/zmi/container.py:140
-#: ./src/pyams_content/shared/imagemap/interfaces/__init__.py:50
-msgid "Link target"
-msgstr ""
-
-#: ./src/pyams_content/shared/imagemap/zmi/container.py:113
-msgid "No currently defined image."
-msgstr ""
-
-#: ./src/pyams_content/shared/imagemap/zmi/container.py:115
-msgid "No currently defined area."
-msgstr ""
-
-#: ./src/pyams_content/shared/imagemap/zmi/container.py:175
-#: ./src/pyams_content/root/zmi/sites.py:170
-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:186
-msgid "Bad query object_name parameter value!"
-msgstr ""
-
-#: ./src/pyams_content/shared/imagemap/zmi/area.py:47
-msgid "Add image area"
-msgstr ""
-
-#: ./src/pyams_content/shared/imagemap/zmi/area.py:66
-msgid "Add new image area"
-msgstr ""
-
-#: ./src/pyams_content/shared/imagemap/zmi/area.py:107
-msgid "Edit image map properties"
-msgstr ""
-
#: ./src/pyams_content/shared/imagemap/interfaces/__init__.py:36
#: ./src/pyams_content/shared/imagemap/interfaces/__init__.py:89
msgid "Image map"
msgstr ""
+#: ./src/pyams_content/shared/imagemap/interfaces/__init__.py:50
+#: ./src/pyams_content/shared/imagemap/zmi/container.py:140
+msgid "Link target"
+msgstr ""
+
#: ./src/pyams_content/shared/imagemap/interfaces/__init__.py:51
msgid "Internal or external link associated with this map area"
msgstr ""
@@ -3861,16 +5049,15 @@
msgid "Image supporting map areas"
msgstr ""
+#: ./src/pyams_content/shared/imagemap/interfaces/__init__.py:71
+#: ./src/pyams_content/shared/imagemap/zmi/container.py:65
+msgid "Image map areas"
+msgstr ""
+
#: ./src/pyams_content/shared/imagemap/interfaces/__init__.py:72
msgid "List of defined map areas"
msgstr ""
-#: ./src/pyams_content/shared/imagemap/interfaces/__init__.py:96
-#: ./src/pyams_content/features/alert/interfaces.py:69
-#: ./src/pyams_content/features/menu/interfaces/__init__.py:68
-msgid "Internal reference"
-msgstr ""
-
#: ./src/pyams_content/shared/imagemap/interfaces/__init__.py:97
msgid "Reference to image map object"
msgstr ""
@@ -3879,216 +5066,78 @@
msgid "Image map template"
msgstr ""
-#: ./src/pyams_content/shared/site/folder.py:62
-msgid "Site folder"
-msgstr ""
-
-#: ./src/pyams_content/shared/site/link.py:49
-msgid "Content link"
-msgstr ""
-
-#: ./src/pyams_content/shared/site/manager.py:68
-#: ./src/pyams_content/shared/site/zmi/manager.py:125
-msgid "Site manager"
-msgstr ""
-
-#: ./src/pyams_content/shared/site/zmi/folder.py:62
-msgid "Add site folder..."
-msgstr ""
-
-#: ./src/pyams_content/shared/site/zmi/folder.py:94
-msgid "Add site folder"
-msgstr ""
-
-#: ./src/pyams_content/shared/site/zmi/folder.py:161
-msgid "Site folder management"
-msgstr ""
-
-#: ./src/pyams_content/shared/site/zmi/folder.py:190
-msgid "Site folder properties"
-msgstr ""
-
-#: ./src/pyams_content/shared/site/zmi/folder.py:208
-msgid "Navigation properties"
-msgstr ""
-
-#: ./src/pyams_content/shared/site/zmi/folder.py:72
-#: ./src/pyams_content/interfaces/__init__.py:102
-msgid "Visible label used to display content"
-msgstr ""
-
-#: ./src/pyams_content/shared/site/zmi/folder.py:75
-#: ./src/pyams_content/shared/site/zmi/__init__.py:72
-#: ./src/pyams_content/shared/site/zmi/link.py:65
-msgid "Parent"
-msgstr ""
-
-#: ./src/pyams_content/shared/site/zmi/folder.py:76
-#: ./src/pyams_content/shared/site/zmi/link.py:66
-msgid "Folder's parent"
-msgstr ""
-
-#: ./src/pyams_content/shared/site/zmi/folder.py:154
-msgid "You must provide a folder name for default server language!"
-msgstr ""
-
-#: ./src/pyams_content/shared/site/zmi/__init__.py:55
-msgid "This topic"
-msgstr ""
-
-#: ./src/pyams_content/shared/site/zmi/__init__.py:63
-msgid "Add topic..."
-msgstr ""
-
-#: ./src/pyams_content/shared/site/zmi/__init__.py:86
-msgid "Add topic"
-msgstr ""
-
-#: ./src/pyams_content/shared/site/zmi/__init__.py:73
-msgid "Topic's parent"
-msgstr ""
-
-#: ./src/pyams_content/shared/site/zmi/link.py:56
-msgid "Rent content..."
-msgstr ""
-
-#: ./src/pyams_content/shared/site/zmi/link.py:76
-msgid "Rent existing content"
-msgstr ""
-
-#: ./src/pyams_content/shared/site/zmi/link.py:134
-msgid "Edit content link properties"
-msgstr ""
-
-#: ./src/pyams_content/shared/site/zmi/container.py:106
-#: ./src/pyams_content/shared/site/zmi/container.py:118
-#: ./src/pyams_content/shared/blog/zmi/manager.py:155
-#: ./src/pyams_content/shared/blog/zmi/manager.py:167
-msgid "Publication dates..."
-msgstr ""
-
-#: ./src/pyams_content/shared/site/zmi/container.py:132
-#: ./src/pyams_content/shared/blog/zmi/manager.py:181
-msgid "Update publication dates"
-msgstr ""
-
-#: ./src/pyams_content/shared/site/zmi/container.py:178
-#: ./src/pyams_content/shared/site/zmi/container.py:188
-#: ./src/pyams_content/root/zmi/sites.py:68
-msgid "Site tree"
-msgstr ""
-
-#: ./src/pyams_content/shared/site/zmi/container.py:310
-#: ./src/pyams_content/shared/site/zmi/container.py:156
-msgid "Visible element?"
-msgstr ""
-
-#: ./src/pyams_content/shared/site/zmi/container.py:311
-msgid "Switch element visibility"
-msgstr ""
-
-#: ./src/pyams_content/shared/site/zmi/container.py:372
-msgid "Folders and topics"
-msgstr ""
-
-#: ./src/pyams_content/shared/site/zmi/container.py:408
-#: ./src/pyams_content/root/zmi/__init__.py:825
-msgid "Content"
-msgstr ""
-
-#: ./src/pyams_content/shared/site/zmi/container.py:504
-msgid "Delete site item"
-msgstr ""
-
-#: ./src/pyams_content/shared/site/zmi/container.py:381
-msgid "Click to open/close all folders"
-msgstr ""
-
-#: ./src/pyams_content/shared/site/zmi/container.py:397
-msgid "Click to show/hide inner folders"
-msgstr ""
-
-#: ./src/pyams_content/shared/site/zmi/container.py:267
-msgid "Can't reparent object to one of it's children. Reloading..."
-msgstr ""
-
-#: ./src/pyams_content/shared/site/zmi/manager.py:57
-msgid "Site management"
-msgstr ""
-
-#: ./src/pyams_content/shared/site/zmi/manager.py:112
-#: ./src/pyams_content/shared/site/zmi/manager.py:126
-msgid "Add site manager"
-msgstr ""
-
-#: ./src/pyams_content/shared/site/zmi/manager.py:156
-#: ./src/pyams_content/shared/blog/zmi/manager.py:127
-msgid "You must provide a short name for default server language!"
-msgstr ""
-
-#: ./src/pyams_content/shared/site/zmi/manager.py:160
-msgid "Specified site manager name is already used!"
-msgstr ""
-
-#: ./src/pyams_content/shared/site/zmi/manager.py:164
-msgid "A site manager is already registered with this name!!"
-msgstr ""
-
-#: ./src/pyams_content/shared/site/interfaces/__init__.py:121
-msgid "Topic"
-msgstr ""
-
-#: ./src/pyams_content/shared/site/interfaces/__init__.py:42
-msgid "Redirect to first visible sub-folder or content"
-msgstr ""
-
-#: ./src/pyams_content/shared/site/interfaces/__init__.py:43
-msgid "Use presentation template"
-msgstr ""
-
-#: ./src/pyams_content/shared/site/interfaces/__init__.py:72
-msgid "Heading"
-msgstr ""
-
-#: ./src/pyams_content/shared/site/interfaces/__init__.py:73
-msgid "Heading displayed according to presentation template"
-msgstr ""
-
-#: ./src/pyams_content/shared/site/interfaces/__init__.py:80
-msgid "Visible in folders list"
-msgstr ""
-
-#: ./src/pyams_content/shared/site/interfaces/__init__.py:81
-msgid "If 'no', folder will not be displayed into folders list"
-msgstr ""
-
-#: ./src/pyams_content/shared/site/interfaces/__init__.py:85
-#: ./src/pyams_content/shared/site/interfaces/__init__.py:139
-msgid "Navigation title"
-msgstr ""
-
-#: ./src/pyams_content/shared/site/interfaces/__init__.py:86
-msgid ""
-"Folder's title displayed in navigation pages; original title will be used if "
-"none is specified"
-msgstr ""
-
-#: ./src/pyams_content/shared/site/interfaces/__init__.py:90
-msgid "Navigation mode"
-msgstr ""
-
-#: ./src/pyams_content/shared/site/interfaces/__init__.py:91
-msgid "Folder behaviour when navigating to folder URL"
-msgstr ""
-
-#: ./src/pyams_content/shared/site/interfaces/__init__.py:140
-msgid ""
-"Alternate content's title displayed in navigation pages; original title will "
-"be used if none is specified"
-msgstr ""
-
-#: ./src/pyams_content/shared/site/interfaces/__init__.py:145
-msgid "If 'no', link is not visible"
+#: ./src/pyams_content/shared/imagemap/zmi/properties.py:40
+msgid "Background image"
+msgstr ""
+
+#: ./src/pyams_content/shared/imagemap/zmi/container.py:54
+msgid "Image areas"
+msgstr ""
+
+#: ./src/pyams_content/shared/imagemap/zmi/container.py:113
+msgid "No currently defined image."
+msgstr ""
+
+#: ./src/pyams_content/shared/imagemap/zmi/container.py:115
+msgid "No currently defined area."
+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:186
+msgid "Bad query object_name parameter value!"
+msgstr ""
+
+#: ./src/pyams_content/shared/imagemap/zmi/area.py:47
+msgid "Add image area"
+msgstr ""
+
+#: ./src/pyams_content/shared/imagemap/zmi/area.py:66
+msgid "Add new image area"
+msgstr ""
+
+#: ./src/pyams_content/shared/imagemap/zmi/area.py:107
+msgid "Edit image map properties"
+msgstr ""
+
+#: ./src/pyams_content/shared/imagemap/zmi/__init__.py:44
+msgid "This image map"
+msgstr ""
+
+#: ./src/pyams_content/shared/imagemap/zmi/__init__.py:63
+msgid "Add image map"
+msgstr ""
+
+#: ./src/pyams_content/shared/imagemap/zmi/__init__.py:73
+msgid "Adding image map"
+msgstr ""
+
+#: ./src/pyams_content/shared/imagemap/zmi/__init__.py:54
+#, python-format
+msgid "Image map « {title} »"
+msgstr ""
+
+#: ./src/pyams_content/shared/imagemap/zmi/paragraph.py:55
+msgid "Image map..."
+msgstr ""
+
+#: ./src/pyams_content/shared/imagemap/zmi/paragraph.py:68
+msgid "Add new image map"
+msgstr ""
+
+#: ./src/pyams_content/shared/imagemap/zmi/paragraph.py:95
+#: ./src/pyams_content/shared/logo/zmi/paragraph.py:94
+msgid "Edit paragraph properties"
+msgstr ""
+
+#: ./src/pyams_content/shared/logo/__init__.py:73
+msgid "no image defined"
+msgstr ""
+
+#: ./src/pyams_content/shared/logo/__init__.py:76
+msgid "no URL defined"
msgstr ""
#: ./src/pyams_content/shared/logo/paragraph.py:95
@@ -4105,23 +5154,51 @@
msgid "logo '{0}' is not published"
msgstr ""
-#: ./src/pyams_content/shared/logo/__init__.py:69
-msgid "no image defined"
-msgstr ""
-
-#: ./src/pyams_content/shared/logo/__init__.py:72
-msgid "no URL defined"
-msgstr ""
-
-#: ./src/pyams_content/shared/logo/zmi/paragraph.py:55
-msgid "Logos..."
-msgstr ""
-
-#: ./src/pyams_content/shared/logo/zmi/paragraph.py:68
-msgid "Add new logos paragraph"
-msgstr ""
-
-#: ./src/pyams_content/shared/logo/zmi/properties.py:40
+#: ./src/pyams_content/shared/logo/interfaces/__init__.py:32
+msgid "Logo"
+msgstr ""
+
+#: ./src/pyams_content/shared/logo/interfaces/__init__.py:77
+msgid "Logos"
+msgstr ""
+
+#: ./src/pyams_content/shared/logo/interfaces/__init__.py:47
+msgid "Full name of logo organization"
+msgstr ""
+
+#: ./src/pyams_content/shared/logo/interfaces/__init__.py:50
+msgid "Acronym"
+msgstr ""
+
+#: ./src/pyams_content/shared/logo/interfaces/__init__.py:51
+msgid "Matching logo acronym, without spaces or separators"
+msgstr ""
+
+#: ./src/pyams_content/shared/logo/interfaces/__init__.py:58
+msgid "Image (colored)"
+msgstr ""
+
+#: ./src/pyams_content/shared/logo/interfaces/__init__.py:62
+msgid "Image (monochrome)"
+msgstr ""
+
+#: ./src/pyams_content/shared/logo/interfaces/__init__.py:63
+msgid "An alternate image which can be used by some presentation templates"
+msgstr ""
+
+#: ./src/pyams_content/shared/logo/interfaces/__init__.py:84
+msgid "Logos references"
+msgstr ""
+
+#: ./src/pyams_content/shared/logo/interfaces/__init__.py:85
+msgid "List of internal logos references"
+msgstr ""
+
+#: ./src/pyams_content/shared/logo/interfaces/__init__.py:88
+msgid "Logos template"
+msgstr ""
+
+#: ./src/pyams_content/shared/logo/zmi/properties.py:65
msgid "Main logo settings"
msgstr ""
@@ -4139,151 +5216,16 @@
msgid "Logo « {title} »"
msgstr ""
-#: ./src/pyams_content/shared/logo/interfaces/__init__.py:33
-msgid "Logo"
-msgstr ""
-
-#: ./src/pyams_content/shared/logo/interfaces/__init__.py:70
-msgid "Logos"
-msgstr ""
-
-#: ./src/pyams_content/shared/logo/interfaces/__init__.py:47
-msgid "Image (colored)"
-msgstr ""
-
-#: ./src/pyams_content/shared/logo/interfaces/__init__.py:51
-msgid "Image (monochrome)"
-msgstr ""
-
-#: ./src/pyams_content/shared/logo/interfaces/__init__.py:52
-msgid "An alternate image which can be used by some presentation templates"
-msgstr ""
-
-#: ./src/pyams_content/shared/logo/interfaces/__init__.py:77
-msgid "Logos references"
-msgstr ""
-
-#: ./src/pyams_content/shared/logo/interfaces/__init__.py:78
-msgid "List of internal logos references"
-msgstr ""
-
-#: ./src/pyams_content/shared/logo/interfaces/__init__.py:81
-msgid "Logos template"
-msgstr ""
-
-#: ./src/pyams_content/shared/blog/zmi/__init__.py:53
-msgid "This blog post"
-msgstr ""
-
-#: ./src/pyams_content/shared/blog/zmi/__init__.py:72
-#: ./src/pyams_content/shared/blog/zmi/__init__.py:82
-msgid "Add blog post"
-msgstr ""
-
-#: ./src/pyams_content/shared/blog/zmi/__init__.py:63
-#, python-format
-msgid "Blog post « {title} »"
-msgstr ""
-
-#: ./src/pyams_content/shared/blog/zmi/manager.py:60
-msgid "Blog management"
-msgstr ""
-
-#: ./src/pyams_content/shared/blog/zmi/manager.py:83
-#: ./src/pyams_content/shared/blog/zmi/manager.py:97
-msgid "Add blog manager"
-msgstr ""
-
-#: ./src/pyams_content/shared/blog/zmi/manager.py:96
-msgid "Blog manager"
-msgstr ""
-
-#: ./src/pyams_content/shared/blog/zmi/manager.py:131
-msgid "Specified blog manager name is already used!"
-msgstr ""
-
-#: ./src/pyams_content/shared/blog/zmi/manager.py:135
-msgid "A blog manager is already registered with this name!!"
-msgstr ""
-
-#: ./src/pyams_content/shared/blog/interfaces/__init__.py:33
-msgid "Blog post"
-msgstr ""
-
-#: ./src/pyams_content/profile/zmi/__init__.py:42
-msgid "Admin. profile"
-msgstr ""
-
-#: ./src/pyams_content/profile/interfaces/__init__.py:33
-msgid "User favorites"
-msgstr ""
-
-#: ./src/pyams_content/profile/interfaces/__init__.py:34
-msgid "List of internal numbers of shared contents stored for quick access"
-msgstr ""
-
-#: ./src/pyams_content/profile/interfaces/__init__.py:37
-msgid "Default table length"
-msgstr ""
-
-#: ./src/pyams_content/profile/interfaces/__init__.py:38
-msgid "Default length used for inner tables and dashboards"
-msgstr ""
-
-#: ./src/pyams_content/root/__init__.py:69
-msgid "Site root"
-msgstr ""
-
-#: ./src/pyams_content/root/zmi/sites.py:78
-msgid "Blogs and shared sites"
-msgstr ""
-
-#: ./src/pyams_content/root/zmi/sites.py:108
-msgid "Visible site?"
-msgstr ""
-
-#: ./src/pyams_content/root/zmi/sites.py:133
-msgid "OID"
-msgstr ""
-
-#: ./src/pyams_content/root/zmi/sites.py:151
-msgid "Delete shared site"
-msgstr ""
-
-#: ./src/pyams_content/root/zmi/sites.py:179
-msgid "Given element name doesn't exist!"
-msgstr ""
-
-#: ./src/pyams_content/root/zmi/search.py:160
-msgid "Content types"
-msgstr ""
-
-#: ./src/pyams_content/root/zmi/__init__.py:78
-msgid "Home"
-msgstr ""
-
-#: ./src/pyams_content/root/zmi/templates/dashboard.pt:7
-msgid "Your contents dashboard"
-msgstr ""
-
-#: ./src/pyams_content/root/zmi/templates/dashboard.pt:18
-msgid "SEARCH - Between all contents"
-msgstr ""
-
-#: ./src/pyams_content/root/interfaces/__init__.py:39
-msgid "Site managers"
-msgstr ""
-
-#: ./src/pyams_content/root/interfaces/__init__.py:47
-msgid "Templates managers"
-msgstr ""
-
-#: ./src/pyams_content/root/interfaces/__init__.py:51
-msgid "Operators group"
-msgstr ""
-
-#: ./src/pyams_content/root/interfaces/__init__.py:52
-msgid "Name of group containing all roles owners"
+#: ./src/pyams_content/shared/logo/zmi/paragraph.py:55
+msgid "Logos..."
+msgstr ""
+
+#: ./src/pyams_content/shared/logo/zmi/paragraph.py:68
+msgid "Add new logos paragraph"
+msgstr ""
+
+#: ./src/pyams_content/workflow/task.py:62
+msgid "Automatic contents withdrawal:\n"
msgstr ""
#: ./src/pyams_content/workflow/__init__.py:70
@@ -4361,235 +5303,235 @@
msgid "archived"
msgstr ""
-#: ./src/pyams_content/workflow/__init__.py:279
-#: ./src/pyams_content/workflow/basic.py:190
+#: ./src/pyams_content/workflow/__init__.py:280
+#: ./src/pyams_content/workflow/basic.py:191
msgid "Initialize"
msgstr ""
-#: ./src/pyams_content/workflow/__init__.py:282
-#: ./src/pyams_content/workflow/basic.py:193
+#: ./src/pyams_content/workflow/__init__.py:283
+#: ./src/pyams_content/workflow/basic.py:194
msgid "Draft creation"
msgstr ""
-#: ./src/pyams_content/workflow/__init__.py:285
-#: ./src/pyams_content/workflow/__init__.py:300
+#: ./src/pyams_content/workflow/__init__.py:286
+#: ./src/pyams_content/workflow/__init__.py:301
msgid "Propose publication"
msgstr ""
-#: ./src/pyams_content/workflow/__init__.py:292
-#: ./src/pyams_content/workflow/__init__.py:307
-msgid "Publication request"
-msgstr ""
-
#: ./src/pyams_content/workflow/__init__.py:293
#: ./src/pyams_content/workflow/__init__.py:308
-#: ./src/pyams_content/workflow/__init__.py:396
-#: ./src/pyams_content/workflow/__init__.py:443
+msgid "Publication request"
+msgstr ""
+
+#: ./src/pyams_content/workflow/__init__.py:294
+#: ./src/pyams_content/workflow/__init__.py:309
+#: ./src/pyams_content/workflow/__init__.py:397
+#: ./src/pyams_content/workflow/__init__.py:444
msgid ""
"content managers authorized to take charge of your content are going to be "
"notified of your request."
msgstr ""
-#: ./src/pyams_content/workflow/__init__.py:296
-#: ./src/pyams_content/workflow/__init__.py:311
+#: ./src/pyams_content/workflow/__init__.py:297
+#: ./src/pyams_content/workflow/__init__.py:312
#, python-format
msgid "submitted a publication request for content « {0} »"
msgstr ""
-#: ./src/pyams_content/workflow/__init__.py:323
+#: ./src/pyams_content/workflow/__init__.py:324
msgid "Publication request canceled"
msgstr ""
-#: ./src/pyams_content/workflow/__init__.py:325
+#: ./src/pyams_content/workflow/__init__.py:326
#, python-format
msgid "cancelled the publication request for content « {0} »"
msgstr ""
-#: ./src/pyams_content/workflow/__init__.py:329
+#: ./src/pyams_content/workflow/__init__.py:330
msgid "Reset canceled publication to draft"
msgstr ""
-#: ./src/pyams_content/workflow/__init__.py:333
-#: ./src/pyams_content/workflow/__init__.py:363
+#: ./src/pyams_content/workflow/__init__.py:334
+#: ./src/pyams_content/workflow/__init__.py:364
msgid "State reset to 'draft' (automatic)"
msgstr ""
-#: ./src/pyams_content/workflow/__init__.py:337
+#: ./src/pyams_content/workflow/__init__.py:338
msgid "Reset canceled publication to retired"
msgstr ""
-#: ./src/pyams_content/workflow/__init__.py:341
+#: ./src/pyams_content/workflow/__init__.py:342
msgid "State reset to 'retired' (automatic)"
msgstr ""
-#: ./src/pyams_content/workflow/__init__.py:345
+#: ./src/pyams_content/workflow/__init__.py:346
msgid "Refuse publication"
msgstr ""
-#: ./src/pyams_content/workflow/__init__.py:353
+#: ./src/pyams_content/workflow/__init__.py:354
msgid "Publication refused"
msgstr ""
-#: ./src/pyams_content/workflow/__init__.py:355
+#: ./src/pyams_content/workflow/__init__.py:356
#, python-format
msgid "refused the publication request for content « {0} »"
msgstr ""
-#: ./src/pyams_content/workflow/__init__.py:359
+#: ./src/pyams_content/workflow/__init__.py:360
msgid "Reset refused publication to draft"
msgstr ""
-#: ./src/pyams_content/workflow/__init__.py:367
+#: ./src/pyams_content/workflow/__init__.py:368
msgid "Reset refused publication to retired"
msgstr ""
-#: ./src/pyams_content/workflow/__init__.py:371
+#: ./src/pyams_content/workflow/__init__.py:372
msgid "State reset to 'refused' (automatic)"
msgstr ""
-#: ./src/pyams_content/workflow/__init__.py:383
-#: ./src/pyams_content/workflow/basic.py:204
+#: ./src/pyams_content/workflow/__init__.py:384
+#: ./src/pyams_content/workflow/basic.py:205
msgid "Content published"
msgstr ""
-#: ./src/pyams_content/workflow/__init__.py:385
-#: ./src/pyams_content/workflow/basic.py:206
+#: ./src/pyams_content/workflow/__init__.py:386
+#: ./src/pyams_content/workflow/basic.py:207
#, python-format
msgid "published the content « {0} »"
msgstr ""
-#: ./src/pyams_content/workflow/__init__.py:389
+#: ./src/pyams_content/workflow/__init__.py:390
msgid "Request retiring"
msgstr ""
-#: ./src/pyams_content/workflow/__init__.py:395
+#: ./src/pyams_content/workflow/__init__.py:396
msgid "Retire request"
msgstr ""
-#: ./src/pyams_content/workflow/__init__.py:399
+#: ./src/pyams_content/workflow/__init__.py:400
#, python-format
msgid "submitted a retire request for content « {0} »"
msgstr ""
-#: ./src/pyams_content/workflow/__init__.py:403
+#: ./src/pyams_content/workflow/__init__.py:404
msgid "Retired content"
msgstr ""
-#: ./src/pyams_content/workflow/__init__.py:407
+#: ./src/pyams_content/workflow/__init__.py:408
msgid "Content retired after passed expiration date"
msgstr ""
-#: ./src/pyams_content/workflow/__init__.py:410
+#: ./src/pyams_content/workflow/__init__.py:411
msgid "Cancel retiring request"
msgstr ""
-#: ./src/pyams_content/workflow/__init__.py:417
+#: ./src/pyams_content/workflow/__init__.py:418
msgid "Retire request canceled"
msgstr ""
-#: ./src/pyams_content/workflow/__init__.py:419
+#: ./src/pyams_content/workflow/__init__.py:420
#, python-format
msgid "cancelled the retiring request for content « {0} »"
msgstr ""
-#: ./src/pyams_content/workflow/__init__.py:423
+#: ./src/pyams_content/workflow/__init__.py:424
msgid "Retire content"
msgstr ""
-#: ./src/pyams_content/workflow/__init__.py:430
+#: ./src/pyams_content/workflow/__init__.py:431
msgid "Content retired"
msgstr ""
-#: ./src/pyams_content/workflow/__init__.py:432
+#: ./src/pyams_content/workflow/__init__.py:433
#, python-format
msgid "retired content « {0} »"
msgstr ""
-#: ./src/pyams_content/workflow/__init__.py:442
+#: ./src/pyams_content/workflow/__init__.py:443
msgid "Archive request"
msgstr ""
-#: ./src/pyams_content/workflow/__init__.py:446
+#: ./src/pyams_content/workflow/__init__.py:447
#, python-format
msgid "submitted an archive request for content « {0} »"
msgstr ""
-#: ./src/pyams_content/workflow/__init__.py:450
+#: ./src/pyams_content/workflow/__init__.py:451
msgid "Cancel archiving request"
msgstr ""
-#: ./src/pyams_content/workflow/__init__.py:457
+#: ./src/pyams_content/workflow/__init__.py:458
msgid "Archive request canceled"
msgstr ""
-#: ./src/pyams_content/workflow/__init__.py:459
+#: ./src/pyams_content/workflow/__init__.py:460
#, python-format
msgid "cancelled the archive request for content « {0} »"
msgstr ""
-#: ./src/pyams_content/workflow/__init__.py:463
-#: ./src/pyams_content/workflow/basic.py:210
+#: ./src/pyams_content/workflow/__init__.py:464
+#: ./src/pyams_content/workflow/basic.py:211
msgid "Archive content"
msgstr ""
-#: ./src/pyams_content/workflow/__init__.py:471
-#: ./src/pyams_content/workflow/basic.py:218
+#: ./src/pyams_content/workflow/__init__.py:472
+#: ./src/pyams_content/workflow/basic.py:219
msgid "Content archived"
msgstr ""
-#: ./src/pyams_content/workflow/__init__.py:473
-#: ./src/pyams_content/workflow/basic.py:220
+#: ./src/pyams_content/workflow/__init__.py:474
+#: ./src/pyams_content/workflow/basic.py:221
#, python-format
msgid "archived content « {0} »"
msgstr ""
-#: ./src/pyams_content/workflow/__init__.py:477
+#: ./src/pyams_content/workflow/__init__.py:478
msgid "Archive published content"
msgstr ""
-#: ./src/pyams_content/workflow/__init__.py:481
-#: ./src/pyams_content/workflow/__init__.py:489
-#: ./src/pyams_content/workflow/__init__.py:497
+#: ./src/pyams_content/workflow/__init__.py:482
+#: ./src/pyams_content/workflow/__init__.py:490
+#: ./src/pyams_content/workflow/__init__.py:498
msgid "Content archived after version publication"
msgstr ""
-#: ./src/pyams_content/workflow/__init__.py:485
+#: ./src/pyams_content/workflow/__init__.py:486
msgid "Archive retiring content"
msgstr ""
-#: ./src/pyams_content/workflow/__init__.py:493
+#: ./src/pyams_content/workflow/__init__.py:494
msgid "Archive retired content"
msgstr ""
-#: ./src/pyams_content/workflow/__init__.py:509
-#: ./src/pyams_content/workflow/__init__.py:521
-#: ./src/pyams_content/workflow/__init__.py:533
-#: ./src/pyams_content/workflow/__init__.py:545
-#: ./src/pyams_content/workflow/__init__.py:557
-#: ./src/pyams_content/workflow/basic.py:232
-#: ./src/pyams_content/workflow/basic.py:244
+#: ./src/pyams_content/workflow/__init__.py:510
+#: ./src/pyams_content/workflow/__init__.py:522
+#: ./src/pyams_content/workflow/__init__.py:534
+#: ./src/pyams_content/workflow/__init__.py:546
+#: ./src/pyams_content/workflow/__init__.py:558
+#: ./src/pyams_content/workflow/basic.py:233
+#: ./src/pyams_content/workflow/basic.py:245
msgid "New version created"
msgstr ""
-#: ./src/pyams_content/workflow/__init__.py:569
-#: ./src/pyams_content/workflow/basic.py:256
+#: ./src/pyams_content/workflow/__init__.py:570
+#: ./src/pyams_content/workflow/basic.py:257
msgid "Version deleted"
msgstr ""
-#: ./src/pyams_content/workflow/__init__.py:622
-#: ./src/pyams_content/workflow/__init__.py:644
-#: ./src/pyams_content/workflow/basic.py:289
-#: ./src/pyams_content/workflow/basic.py:311
+#: ./src/pyams_content/workflow/__init__.py:623
+#: ./src/pyams_content/workflow/__init__.py:645
+#: ./src/pyams_content/workflow/basic.py:290
+#: ./src/pyams_content/workflow/basic.py:312
msgid "Unknown state"
msgstr ""
-#: ./src/pyams_content/workflow/__init__.py:646
-#: ./src/pyams_content/workflow/basic.py:313
+#: ./src/pyams_content/workflow/__init__.py:647
+#: ./src/pyams_content/workflow/basic.py:314
msgid "publication refused"
msgstr ""
-#: ./src/pyams_content/workflow/__init__.py:642
-#: ./src/pyams_content/workflow/basic.py:309
+#: ./src/pyams_content/workflow/__init__.py:643
+#: ./src/pyams_content/workflow/basic.py:310
msgid "new version created"
msgstr ""
@@ -4599,10 +5541,6 @@
msgid "Published version {0}"
msgstr ""
-#: ./src/pyams_content/workflow/task.py:62
-msgid "Automatic contents withdrawal:\n"
-msgstr ""
-
#: ./src/pyams_content/workflow/zmi/task.py:42
msgid "Add content archiver task..."
msgstr ""
@@ -4610,749 +5548,3 @@
#: ./src/pyams_content/workflow/zmi/task.py:55
msgid "Add automatic content archiver"
msgstr ""
-
-#: ./src/pyams_content/skin/zmi/viewlet/toplinks/__init__.py:46
-msgid "Shared sites"
-msgstr ""
-
-#: ./src/pyams_content/skin/zmi/viewlet/toplinks/__init__.py:67
-msgid "Shared contents"
-msgstr ""
-
-#: ./src/pyams_content/skin/zmi/viewlet/toplinks/__init__.py:90
-msgid "Shared tools"
-msgstr ""
-
-#: ./src/pyams_content/skin/zmi/viewlet/toplinks/__init__.py:113
-msgid "My roles"
-msgstr ""
-
-#: ./src/pyams_content/skin/zmi/viewlet/toplinks/templates/user-addings.pt:7
-msgid "Create new content"
-msgstr ""
-
-#: ./src/pyams_content/interfaces/__init__.py:95
-msgid "Unique key"
-msgstr ""
-
-#: ./src/pyams_content/interfaces/__init__.py:96
-msgid ""
-"WARNING: this key can't be modified after creation!!! Spaces, uppercase "
-"letters ou accentuated characters will be replaced automatically."
-msgstr ""
-
-#: ./src/pyams_content/interfaces/__init__.py:105
-msgid "Short name"
-msgstr ""
-
-#: ./src/pyams_content/interfaces/__init__.py:106
-msgid "Short name used in breadcrumbs"
-msgstr ""
-
-#: ./src/pyams_content/interfaces/__init__.py:117
-msgid "Modification date"
-msgstr ""
-
-#: ./src/pyams_content/reference/zmi/table.py:73
-msgid "Contents"
-msgstr ""
-
-#: ./src/pyams_content/reference/zmi/table.py:83
-msgid "Table contents"
-msgstr ""
-
-#: ./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:143
-msgid "Properties..."
-msgstr ""
-
-#: ./src/pyams_content/reference/zmi/table.py:157
-msgid "Edit table properties"
-msgstr ""
-
-#: ./src/pyams_content/reference/zmi/table.py:167
-msgid "Table management"
-msgstr ""
-
-#: ./src/pyams_content/reference/zmi/__init__.py:51
-msgid "References"
-msgstr ""
-
-#: ./src/pyams_content/reference/pictograms/zmi/__init__.py:169
-#: ./src/pyams_content/reference/pictograms/zmi/widget.py:55
-msgid "Default header: --"
-msgstr ""
-
-#: ./src/pyams_content/reference/pictograms/zmi/manager.py:51
-msgid "Pictograms selection..."
-msgstr ""
-
-#: ./src/pyams_content/reference/pictograms/zmi/manager.py:63
-#: ./src/pyams_content/reference/pictograms/zmi/templates/manager-selection.pt:34
-#: ./src/pyams_content/reference/pictograms/interfaces/__init__.py:73
-msgid "Selected pictograms"
-msgstr ""
-
-#: ./src/pyams_content/reference/pictograms/zmi/templates/manager-selection.pt:7
-msgid "Available pictograms"
-msgstr ""
-
-#: ./src/pyams_content/reference/pictograms/zmi/templates/manager-selection.pt:21
-#: ./src/pyams_content/reference/pictograms/zmi/templates/manager-selection.pt:48
-msgid "Display pictogram properties"
-msgstr ""
-
-#: ./src/pyams_content/reference/pictograms/zmi/templates/pictogram-header.pt:6
-msgid "Default header: ${header}"
-msgstr ""
-
-#: ./src/pyams_content/reference/pictograms/interfaces/__init__.py:45
-msgid "Pictogram content"
-msgstr ""
-
-#. Default: Header
-#: ./src/pyams_content/reference/pictograms/interfaces/__init__.py:52
-msgid "pictogram-header"
-msgstr ""
-
-#: ./src/pyams_content/reference/pictograms/interfaces/__init__.py:53
-msgid "Default header associated with this pictogram"
-msgstr ""
-
-#: ./src/pyams_content/reference/pictograms/interfaces/__init__.py:74
-msgid "List of selected pictograms which will be available to shared contents"
-msgstr ""
-
-#: ./src/pyams_content/features/renderer/zmi/__init__.py:71
-#: ./src/pyams_content/features/renderer/zmi/templates/renderer-input.pt:4
-msgid "Edit renderer properties"
-msgstr ""
-
-#: ./src/pyams_content/features/renderer/skin/__init__.py:71
-msgid "Hidden content"
-msgstr ""
-
-#: ./src/pyams_content/features/checker/interfaces.py:27
-#, python-format
-msgid " - {field}: <span class=\"text-danger\">no value</span>"
-msgstr ""
-
-#: ./src/pyams_content/features/checker/interfaces.py:28
-#, python-format
-msgid " - {field} ({lang}): <span class=\"text-danger\">no value</span>"
-msgstr ""
-
-#: ./src/pyams_content/features/checker/interfaces.py:29
-#, python-format
-msgid " - {field}: <span class=\"text-danger\">{message}</span>"
-msgstr ""
-
-#: ./src/pyams_content/features/checker/zmi/__init__.py:58
-msgid "Content check"
-msgstr ""
-
-#: ./src/pyams_content/features/checker/zmi/__init__.py:82
-msgid "No checker available. This content is clean!"
-msgstr ""
-
-#: ./src/pyams_content/features/checker/zmi/__init__.py:78
-#, python-format
-msgid "{0}:"
-msgstr ""
-
-#: ./src/pyams_content/features/preview/zmi/__init__.py:62
-msgid "Content preview"
-msgstr ""
-
-#: ./src/pyams_content/features/preview/zmi/__init__.py:67
-#, python-format
-msgid "{title} ({preview})"
-msgstr ""
-
-#: ./src/pyams_content/features/preview/zmi/__init__.py:68
-msgid "preview"
-msgstr ""
-
-#: ./src/pyams_content/features/alert/interfaces.py:39
-msgid "Alert"
-msgstr ""
-
-#: ./src/pyams_content/features/alert/interfaces.py:40
-msgid "End of alert"
-msgstr ""
-
-#: ./src/pyams_content/features/alert/interfaces.py:41
-msgid "Information"
-msgstr ""
-
-#: ./src/pyams_content/features/alert/interfaces.py:42
-msgid "Warning"
-msgstr ""
-
-#: ./src/pyams_content/features/alert/interfaces.py:43
-msgid "Recommendation"
-msgstr ""
-
-#: ./src/pyams_content/features/alert/interfaces.py:55
-msgid "Is this alert visible in front-office?"
-msgstr ""
-
-#: ./src/pyams_content/features/alert/interfaces.py:59
-msgid "Alert gravity"
-msgstr ""
-
-#: ./src/pyams_content/features/alert/interfaces.py:60
-msgid "Alert gravity will affect rendered alert style"
-msgstr ""
-
-#: ./src/pyams_content/features/alert/interfaces.py:65
-#: ./src/pyams_content/features/alert/zmi/container.py:145
-msgid "Message"
-msgstr ""
-
-#: ./src/pyams_content/features/alert/interfaces.py:66
-msgid "Alert message"
-msgstr ""
-
-#: ./src/pyams_content/features/alert/interfaces.py:70
-msgid ""
-"Internal link target reference. You can search a reference using '+' followed"
-" by internal number, of by entering text matching content title."
-msgstr ""
-
-#: ./src/pyams_content/features/alert/interfaces.py:75
-msgid "Display start date"
-msgstr ""
-
-#: ./src/pyams_content/features/alert/interfaces.py:76
-msgid "First date at which alert should be displayed"
-msgstr ""
-
-#: ./src/pyams_content/features/alert/interfaces.py:79
-msgid "Display end date"
-msgstr ""
-
-#: ./src/pyams_content/features/alert/interfaces.py:80
-msgid "Last date at which alert should be displayed"
-msgstr ""
-
-#: ./src/pyams_content/features/alert/interfaces.py:83
-msgid "Maximum interval"
-msgstr ""
-
-#: ./src/pyams_content/features/alert/interfaces.py:84
-msgid ""
-"Maximum interval between alert displays on a given device, given in hours; "
-"set to 0 to always display the alert"
-msgstr ""
-
-#: ./src/pyams_content/features/alert/zmi/__init__.py:45
-msgid "Add alert"
-msgstr ""
-
-#: ./src/pyams_content/features/alert/zmi/__init__.py:56
-msgid "Add new alert"
-msgstr ""
-
-#: ./src/pyams_content/features/alert/zmi/__init__.py:79
-msgid "Edit alert properties"
-msgstr ""
-
-#: ./src/pyams_content/features/alert/zmi/container.py:55
-msgid "Alerts"
-msgstr ""
-
-#: ./src/pyams_content/features/alert/zmi/container.py:167
-msgid "Alert list"
-msgstr ""
-
-#: ./src/pyams_content/features/alert/zmi/container.py:97
-msgid "No currently defined alert."
-msgstr ""
-
-#: ./src/pyams_content/features/redirect/container.py:81
-msgid "not matching"
-msgstr ""
-
-#: ./src/pyams_content/features/redirect/zmi/__init__.py:50
-msgid "Add rule"
-msgstr ""
-
-#: ./src/pyams_content/features/redirect/zmi/__init__.py:63
-msgid "Add new redirection rule"
-msgstr ""
-
-#: ./src/pyams_content/features/redirect/zmi/__init__.py:88
-msgid "Edit redirection rule properties"
-msgstr ""
-
-#: ./src/pyams_content/features/redirect/zmi/__init__.py:109
-msgid ""
-"URL pattern and target URL are defined by *regular expressions* (see |regexp|).\n"
-" \n"
-"In URL pattern, you can use any valid regular expression element, notably:\n"
-"\n"
-"- « .* » to match any list of characters \n"
-"\n"
-"- « ( ) » to \"memorize\" parts of the URL which can be replaced into target URL\n"
-"\n"
-"- special characters (like \"+\") must be escaped with an « \\\\ ».\n"
-"\n"
-"In target URL, memorized parts can be reused using « \\\\1 », « \\\\2 » and so on, where given number is\n"
-"the order of the matching pattern element.\n"
-"\n"
-".. |regexp| raw:: html\n"
-"\n"
-" <a href=\"https://docs.python.org/3/library/re.html\" target=\"_blank\">Python Regular Expressions</a>\n"
-msgstr ""
-
-#: ./src/pyams_content/features/redirect/zmi/container.py:67
-msgid "Redirections"
-msgstr ""
-
-#: ./src/pyams_content/features/redirect/zmi/container.py:161
-msgid "Enable/disable rule"
-msgstr ""
-
-#: ./src/pyams_content/features/redirect/zmi/container.py:188
-msgid "Chain/unchain rule"
-msgstr ""
-
-#: ./src/pyams_content/features/redirect/zmi/container.py:210
-#: ./src/pyams_content/features/redirect/zmi/container.py:366
-#: ./src/pyams_content/features/redirect/interfaces/__init__.py:56
-msgid "URL pattern"
-msgstr ""
-
-#: ./src/pyams_content/features/redirect/zmi/container.py:220
-msgid "Target"
-msgstr ""
-
-#: ./src/pyams_content/features/redirect/zmi/container.py:246
-msgid "Redirections list"
-msgstr ""
-
-#: ./src/pyams_content/features/redirect/zmi/container.py:261
-msgid "Redirection rules"
-msgstr ""
-
-#: ./src/pyams_content/features/redirect/zmi/container.py:262
-msgid ""
-"Redirection rules are use to handle redirections responses when a request generates \n"
-"a famous « 404 NotFound » error.\n"
-"\n"
-"Redirections are particularly useful when you are migrating from a previous site and don't want to lose \n"
-"your SEO.\n"
-"\n"
-"You can define a set of rules which will be applied to every \"NotFound\" request; rules are based on \n"
-"regular expressions which are applied to input URL: if the rule is \"matching\", the target URL is rewritten\n"
-"and a \"Redirect\" response is send.\n"
-"\n"
-"You can chain rules together: when a rule is chained, it's rewritten URL is passed as input URL to the \n"
-"next rule, until a matching rule is found.\n"
-msgstr ""
-
-#: ./src/pyams_content/features/redirect/zmi/container.py:288
-msgid "Test"
-msgstr ""
-
-#: ./src/pyams_content/features/redirect/zmi/container.py:323
-msgid "Test redirection rules"
-msgstr ""
-
-#: ./src/pyams_content/features/redirect/zmi/container.py:301
-msgid "Test URL"
-msgstr ""
-
-#: ./src/pyams_content/features/redirect/zmi/container.py:304
-msgid "Check inactive rules?"
-msgstr ""
-
-#: ./src/pyams_content/features/redirect/zmi/container.py:305
-msgid "If 'yes', inactive rules will also be tested"
-msgstr ""
-
-#: ./src/pyams_content/features/redirect/zmi/container.py:313
-msgid "Close"
-msgstr ""
-
-#: ./src/pyams_content/features/redirect/zmi/container.py:314
-msgid "Test rules"
-msgstr ""
-
-#: ./src/pyams_content/features/redirect/zmi/container.py:123
-msgid "No currently defined redirection rule."
-msgstr ""
-
-#: ./src/pyams_content/features/redirect/zmi/container.py:371
-msgid "No matching rule!"
-msgstr ""
-
-#: ./src/pyams_content/features/redirect/zmi/container.py:365
-msgid "Input URL"
-msgstr ""
-
-#: ./src/pyams_content/features/redirect/zmi/container.py:367
-msgid "Output URL"
-msgstr ""
-
-#: ./src/pyams_content/features/redirect/interfaces/__init__.py:39
-msgid "Active rule?"
-msgstr ""
-
-#: ./src/pyams_content/features/redirect/interfaces/__init__.py:40
-msgid "If 'no', selected rule is inactive"
-msgstr ""
-
-#: ./src/pyams_content/features/redirect/interfaces/__init__.py:44
-msgid "Chained rule?"
-msgstr ""
-
-#: ./src/pyams_content/features/redirect/interfaces/__init__.py:45
-msgid ""
-"If 'no', and if this rule is matching received request URL, the rule returns "
-"a redirection response; otherwise, the rule just rewrites the input URL which"
-" is forwarded to the next rule"
-msgstr ""
-
-#: ./src/pyams_content/features/redirect/interfaces/__init__.py:51
-msgid "Permanent redirect?"
-msgstr ""
-
-#: ./src/pyams_content/features/redirect/interfaces/__init__.py:52
-msgid "Define if this redirection should be permanent or temporary"
-msgstr ""
-
-#: ./src/pyams_content/features/redirect/interfaces/__init__.py:57
-msgid "Regexp pattern of matching URLs for this redirection rule"
-msgstr ""
-
-#: ./src/pyams_content/features/redirect/interfaces/__init__.py:62
-msgid "Internal redirection target"
-msgstr ""
-
-#: ./src/pyams_content/features/redirect/interfaces/__init__.py:63
-msgid ""
-"Internal redirection reference. You can search a reference using '+' followed"
-" by internal number, of by entering text matching content title."
-msgstr ""
-
-#: ./src/pyams_content/features/redirect/interfaces/__init__.py:69
-msgid "URL to which source URL should be redirected"
-msgstr ""
-
-#: ./src/pyams_content/features/redirect/interfaces/__init__.py:75
-msgid "You can only provide an internal reference OR a target URL"
-msgstr ""
-
-#: ./src/pyams_content/features/redirect/interfaces/__init__.py:77
-msgid "You must provide an internal reference OR a target URL"
-msgstr ""
-
-#: ./src/pyams_content/features/menu/zmi/__init__.py:81
-msgid "Add menu..."
-msgstr ""
-
-#: ./src/pyams_content/features/menu/zmi/__init__.py:92
-msgid "Add new menu"
-msgstr ""
-
-#: ./src/pyams_content/features/menu/zmi/__init__.py:123
-msgid "Edit menu properties"
-msgstr ""
-
-#: ./src/pyams_content/features/menu/zmi/__init__.py:110
-msgid "Menu was correctly added."
-msgstr ""
-
-#: ./src/pyams_content/features/menu/zmi/__init__.py:395
-msgid "Link was correctly added."
-msgstr ""
-
-#: ./src/pyams_content/features/menu/zmi/templates/menu-name-cell.pt:7
-msgid "Click to see menu items"
-msgstr ""
-
-#: ./src/pyams_content/features/menu/portlet/navigation/simple.py:67
-msgid "Simple navigation"
-msgstr ""
-
-#: ./src/pyams_content/features/menu/portlet/navigation/double.py:67
-msgid "Double navigation"
-msgstr ""
-
-#: ./src/pyams_content/features/menu/portlet/navigation/zmi/simple.py:69
-msgid "Navigation links"
-msgstr ""
-
-#: ./src/pyams_content/features/menu/portlet/navigation/zmi/double.py:69
-msgid "Navigation menus"
-msgstr ""
-
-#: ./src/pyams_content/features/menu/portlet/navigation/zmi/templates/double-preview.pt:14
-#: ./src/pyams_content/features/menu/portlet/navigation/zmi/templates/simple-preview.pt:11
-msgid "Link has no illustration"
-msgstr ""
-
-#: ./src/pyams_content/features/menu/portlet/navigation/interfaces/simple.py:32
-#: ./src/pyams_content/features/menu/portlet/navigation/interfaces/double.py:32
-msgid "Portlet main title"
-msgstr ""
-
-#: ./src/pyams_content/features/menu/interfaces/__init__.py:64
-msgid "Menu title"
-msgstr ""
-
-#: ./src/pyams_content/features/menu/interfaces/__init__.py:65
-msgid "Displayed menu label"
-msgstr ""
-
-#: ./src/pyams_content/features/menu/interfaces/__init__.py:69
-msgid "Direct reference to menu target"
-msgstr ""
-
-#: ./src/pyams_content/features/footer/zmi/__init__.py:60
-msgid "Page footer"
-msgstr ""
-
-#: ./src/pyams_content/features/footer/zmi/__init__.py:78
-msgid "Edit footer settings"
-msgstr ""
-
-#: ./src/pyams_content/features/footer/zmi/__init__.py:152
-msgid ""
-"WARNING: Footer properties are saved automatically when changing inherit "
-"mode!!"
-msgstr ""
-
-#: ./src/pyams_content/features/footer/zmi/__init__.py:220
-msgid "Footer renderer settings"
-msgstr ""
-
-#: ./src/pyams_content/features/footer/zmi/__init__.py:107
-msgid "Don't inherit parent footer"
-msgstr ""
-
-#: ./src/pyams_content/features/footer/skin/__init__.py:94
-msgid "Hidden footer"
-msgstr ""
-
-#: ./src/pyams_content/features/footer/interfaces/__init__.py:39
-msgid "Footer template"
-msgstr ""
-
-#: ./src/pyams_content/features/footer/interfaces/__init__.py:40
-msgid "Presentation template used for this footer"
-msgstr ""
-
-#: ./src/pyams_content/features/review/__init__.py:181
-#, python-format
-msgid "Request comment: {comment}"
-msgstr ""
-
-#: ./src/pyams_content/features/review/__init__.py:211
-#, python-format
-msgid "A new comment was added on content « {0} »"
-msgstr ""
-
-#: ./src/pyams_content/features/review/__init__.py:168
-#, python-format
-msgid "[{service_name}] A content review is requested"
-msgstr ""
-
-#: ./src/pyams_content/features/review/interfaces.py:32
-msgid "Review request"
-msgstr ""
-
-#: ./src/pyams_content/features/review/interfaces.py:33
-msgid "Reviewer comment"
-msgstr ""
-
-#: ./src/pyams_content/features/review/interfaces.py:56
-msgid "Comment writer"
-msgstr ""
-
-#: ./src/pyams_content/features/review/interfaces.py:59
-msgid "Content reviewers"
-msgstr ""
-
-#: ./src/pyams_content/features/review/interfaces.py:62
-msgid "Comment type"
-msgstr ""
-
-#: ./src/pyams_content/features/review/interfaces.py:67
-msgid "Comment body"
-msgstr ""
-
-#: ./src/pyams_content/features/review/interfaces.py:70
-msgid "Reviewer comment?"
-msgstr ""
-
-#: ./src/pyams_content/features/review/interfaces.py:86
-msgid "Reviewers list"
-msgstr ""
-
-#: ./src/pyams_content/features/review/interfaces.py:87
-msgid "List of principals which reviewed the comment"
-msgstr ""
-
-#: ./src/pyams_content/features/review/zmi/__init__.py:61
-msgid "Ask for review..."
-msgstr ""
-
-#: ./src/pyams_content/features/review/zmi/__init__.py:100
-msgid "Content review request"
-msgstr ""
-
-#: ./src/pyams_content/features/review/zmi/__init__.py:165
-msgid "Comments"
-msgstr ""
-
-#: ./src/pyams_content/features/review/zmi/__init__.py:185
-msgid "Review comments"
-msgstr ""
-
-#: ./src/pyams_content/features/review/zmi/__init__.py:71
-msgid "Sought principals"
-msgstr ""
-
-#: ./src/pyams_content/features/review/zmi/__init__.py:72
-msgid "List of principals from which a review is requested"
-msgstr ""
-
-#: ./src/pyams_content/features/review/zmi/__init__.py:75
-msgid "Comment"
-msgstr ""
-
-#: ./src/pyams_content/features/review/zmi/__init__.py:76
-msgid "Comment associated with this request"
-msgstr ""
-
-#: ./src/pyams_content/features/review/zmi/__init__.py:79
-msgid "Notify all reviewers"
-msgstr ""
-
-#: ./src/pyams_content/features/review/zmi/__init__.py:80
-msgid ""
-"If 'yes', selected reviewers will be notified by mail of your request, even "
-"if they were already members of the reviewers group. Otherwise, only new "
-"reviewers will be notified"
-msgstr ""
-
-#: ./src/pyams_content/features/review/zmi/__init__.py:91
-msgid "Ask for content review"
-msgstr ""
-
-#: ./src/pyams_content/features/review/zmi/__init__.py:146
-msgid "Request successful. No new notification have been sent"
-msgstr ""
-
-#: ./src/pyams_content/features/review/zmi/__init__.py:259
-msgid "Message is mandatory!"
-msgstr ""
-
-#: ./src/pyams_content/features/review/zmi/__init__.py:134
-#, python-format
-msgid "Request successful. {count} new notification(s) have been sent"
-msgstr ""
-
-#: ./src/pyams_content/features/review/zmi/templates/review-comments.pt:32
-#: ./src/pyams_content/features/review/zmi/templates/review-comments-json.pt:15
-#: ./src/pyams_content/features/review/zmi/templates/review-add-comment.pt:14
-msgid "Review query from"
-msgstr ""
-
-#: ./src/pyams_content/features/review/zmi/templates/review-comments.pt:38
-#: ./src/pyams_content/features/review/zmi/templates/review-comments-json.pt:21
-#: ./src/pyams_content/features/review/zmi/templates/review-add-comment.pt:20
-msgid "(as reviewer)"
-msgstr ""
-
-#: ./src/pyams_content/features/review/zmi/templates/review-comments.pt:47
-#: ./src/pyams_content/features/review/zmi/templates/review-comments-json.pt:30
-msgid "Selected reviewers:"
-msgstr ""
-
-#: ./src/pyams_content/features/review/zmi/templates/review-comments.pt:64
-msgid "Add comment"
-msgstr ""
-
-#: ./src/pyams_content/features/review/zmi/templates/review-comments.pt:67
-msgid "Add a comment..."
-msgstr ""
-
-#: ./src/pyams_content/features/review/zmi/templates/review-comments.pt:73
-msgid "Add this comment"
-msgstr ""
-
-#: ./src/pyams_content/features/review/zmi/templates/review-add-comment.pt:22
-msgid "just now"
-msgstr ""
-
-#: ./src/pyams_content/features/review/zmi/templates/review-notification.pt:4
-msgid "[${service_name}] You are requested for a content review"
-msgstr ""
-
-#: ./src/pyams_content/features/review/zmi/templates/review-notification.pt:30
-msgid "Hello,"
-msgstr ""
-
-#: ./src/pyams_content/features/review/zmi/templates/review-notification.pt:31
-msgid ""
-"You have been requested by ${sender}, contributor of « ${service_name} » "
-"website, to make a review of a content."
-msgstr ""
-
-#: ./src/pyams_content/features/review/zmi/templates/review-notification.pt:36
-msgid "${sender} added the following message to his request:"
-msgstr ""
-
-#: ./src/pyams_content/features/review/zmi/templates/review-notification.pt:41
-msgid ""
-"To review and comment this publication, please use the following link: "
-"${target}."
-msgstr ""
-
-#: ./src/pyams_content/features/review/zmi/templates/review-notification.pt:44
-msgid "After reading this content, please use the « Comments » menu entry."
-msgstr ""
-
-#: ./src/pyams_content/features/review/zmi/templates/review-notification.pt:45
-msgid ""
-"If you don't want to reply to this request, please contact ${sender} directly"
-" by replying to this mail."
-msgstr ""
-
-#: ./src/pyams_content/features/review/zmi/templates/review-notification.pt:47
-msgid "Thank you."
-msgstr ""
-
-#: ./src/pyams_content/features/header/zmi/__init__.py:66
-msgid "Page header"
-msgstr ""
-
-#: ./src/pyams_content/features/header/zmi/__init__.py:84
-msgid "Edit header settings"
-msgstr ""
-
-#: ./src/pyams_content/features/header/zmi/__init__.py:161
-msgid ""
-"WARNING: Header properties are saved automatically when changing inherit "
-"mode!!"
-msgstr ""
-
-#: ./src/pyams_content/features/header/zmi/__init__.py:229
-msgid "Header renderer settings"
-msgstr ""
-
-#: ./src/pyams_content/features/header/zmi/__init__.py:113
-msgid "Don't inherit parent header"
-msgstr ""
-
-#: ./src/pyams_content/features/header/skin/__init__.py:100
-msgid "Hidden header"
-msgstr ""
--- a/src/pyams_content/profile/admin.py Thu Sep 06 18:10:04 2018 +0200
+++ b/src/pyams_content/profile/admin.py Fri Oct 05 10:44:32 2018 +0200
@@ -12,22 +12,17 @@
__docformat__ = 'restructuredtext'
-
-# import standard library
-
-# import interfaces
-from pyams_content.profile.interfaces import IAdminProfile, ADMIN_PROFILE_KEY
-from pyams_security.interfaces import IPrincipalInfo
-from pyams_utils.interfaces import PUBLIC_PERMISSION
-
-# import packages
from persistent import Persistent
-from pyams_utils.adapter import adapter_config, get_annotation_adapter
-from pyams_utils.request import check_request, query_request
from pyramid.security import Allow, ALL_PERMISSIONS, Everyone
from zope.interface import implementer, Interface
from zope.schema.fieldproperty import FieldProperty
+from pyams_content.profile.interfaces import IAdminProfile, ADMIN_PROFILE_KEY
+from pyams_security.interfaces import IPrincipalInfo
+from pyams_utils.adapter import adapter_config, get_annotation_adapter
+from pyams_utils.interfaces import PUBLIC_PERMISSION
+from pyams_utils.request import check_request, query_request
+
@implementer(IAdminProfile)
class AdminProfile(Persistent):
@@ -36,7 +31,8 @@
favorites = FieldProperty(IAdminProfile['favorites'])
table_page_length = FieldProperty(IAdminProfile['table_page_length'])
- def __acl__(self):
+ @staticmethod
+ def __acl__():
result = [(Allow, 'system:admin', ALL_PERMISSIONS)]
request = query_request()
if request is not None:
--- a/src/pyams_content/reference/pictograms/zmi/manager.py Thu Sep 06 18:10:04 2018 +0200
+++ b/src/pyams_content/reference/pictograms/zmi/manager.py Fri Oct 05 10:44:32 2018 +0200
@@ -27,7 +27,7 @@
from pyams_zmi.layer import IAdminLayer
# import packages
-from pyams_form.form import AJAXEditForm, ajax_config
+from pyams_form.form import ajax_config
from pyams_pagelet.pagelet import pagelet_config
from pyams_skin.viewlet.menu import MenuItem
from pyams_template.template import template_config
@@ -35,7 +35,6 @@
from pyams_utils.traversing import get_parent
from pyams_viewlet.viewlet import viewlet_config, Viewlet
from pyams_zmi.form import AdminEditForm
-from pyramid.view import view_config
from z3c.form import field, button
from z3c.form.util import changedField
from zope.interface import implementer, Interface
--- a/src/pyams_content/reference/pictograms/zmi/templates/pictogram-header.pt Thu Sep 06 18:10:04 2018 +0200
+++ b/src/pyams_content/reference/pictograms/zmi/templates/pictogram-header.pt Fri Oct 05 10:44:32 2018 +0200
@@ -4,6 +4,6 @@
content="structure tales:thumbnail(image, 32, 32)" />
<span class="padding-left-5" tal:define="header i18n:context.header"
i18n:translate="">Default header:
- <strong i18n:name="header" tal:content="header or '--'" />
+ <strong i18n:name="header">${header or '--'}</strong>
</span>
</div>
--- a/src/pyams_content/reference/pictograms/zmi/widget.py Thu Sep 06 18:10:04 2018 +0200
+++ b/src/pyams_content/reference/pictograms/zmi/widget.py Fri Oct 05 10:44:32 2018 +0200
@@ -10,31 +10,31 @@
# FOR A PARTICULAR PURPOSE.
#
-
__docformat__ = 'restructuredtext'
# import standard library
-# import interfaces
-from pyams_content.reference.pictograms import IPictogramTable
-from pyams_utils.interfaces.data import IObjectData
-
-# import packages
-from pyams_content.reference.pictograms.zmi import get_pictogram_header
-from pyams_utils.registry import query_utility
-from pyams_utils.url import absolute_url
-from z3c.form.browser.select import SelectWidget
from z3c.form.widget import FieldWidget
from zope.interface import implementer
from pyams_content import _
+# import interfaces
+from pyams_content.reference.pictograms import IPictogramTable
+# import packages
+from pyams_content.reference.pictograms.zmi import get_pictogram_header
+from pyams_form.widget import Select2Widget
+from pyams_utils.interfaces.data import IObjectData
+from pyams_utils.registry import query_utility
+from pyams_utils.url import absolute_url
@implementer(IObjectData)
-class PictogramSelectWidget(SelectWidget):
+class PictogramSelectWidget(Select2Widget):
"""Pictogram selection widget"""
+ noValueMessage = _("No selected pictogram")
+
pictograms = None
label_id = None
after_widget_notice = None
--- a/src/pyams_content/reference/zmi/__init__.py Thu Sep 06 18:10:04 2018 +0200
+++ b/src/pyams_content/reference/zmi/__init__.py Fri Oct 05 10:44:32 2018 +0200
@@ -21,7 +21,6 @@
from pyams_i18n.interfaces import II18n
from pyams_skin.interfaces.container import ITableElementName
from pyams_skin.interfaces.viewlet import ITopLinksViewletManager, IBreadcrumbItem
-from pyams_skin.layer import IPyAMSLayer
from pyams_zmi.layer import IAdminLayer
# import packages
@@ -29,7 +28,7 @@
from pyams_content.reference.zmi.table import ReferenceTableContentsTable
from pyams_form.form import AJAXEditForm
from pyams_skin.event import get_json_table_row_refresh_event
-from pyams_skin.viewlet.breadcrumb import BreadcrumbItem
+from pyams_skin.viewlet.breadcrumb import BreadcrumbAdminLayerItem
from pyams_skin.viewlet.toplinks import TopLinksViewlet, TopLinksMenu
from pyams_utils.adapter import adapter_config, ContextRequestAdapter
from pyams_utils.registry import get_local_registry
@@ -62,8 +61,8 @@
self.viewlets.append(menu)
-@adapter_config(context=(IReferenceManager, IPyAMSLayer), provides=IBreadcrumbItem)
-class ReferenceManagerBreadcrumbAdapter(BreadcrumbItem):
+@adapter_config(context=(IReferenceManager, IAdminLayer), provides=IBreadcrumbItem)
+class ReferenceManagerBreadcrumbAdapter(BreadcrumbAdminLayerItem):
"""References tables manager breadcrumb adapter"""
label = _("References tables")
--- a/src/pyams_content/reference/zmi/table.py Thu Sep 06 18:10:04 2018 +0200
+++ b/src/pyams_content/reference/zmi/table.py Fri Oct 05 10:44:32 2018 +0200
@@ -28,12 +28,12 @@
from z3c.table.interfaces import IValues, IColumn
# import packages
-from pyams_form.form import AJAXEditForm, ajax_config
+from pyams_form.form import ajax_config
from pyams_pagelet.pagelet import pagelet_config
from pyams_skin.container import ContainerView, delete_container_element
from pyams_skin.page import DefaultPageHeaderAdapter
from pyams_skin.table import BaseTable, TrashColumn
-from pyams_skin.viewlet.breadcrumb import BreadcrumbItem
+from pyams_skin.viewlet.breadcrumb import BreadcrumbAdminLayerItem
from pyams_skin.viewlet.menu import MenuItem
from pyams_utils.adapter import adapter_config, ContextRequestViewAdapter, ContextRequestAdapter
from pyams_utils.url import absolute_url
@@ -52,8 +52,8 @@
# Table properties
#
-@adapter_config(context=(IReferenceTable, IPyAMSLayer), provides=IBreadcrumbItem)
-class ReferenceTableBreadcrumbAdapter(BreadcrumbItem):
+@adapter_config(context=(IReferenceTable, IAdminLayer), provides=IBreadcrumbItem)
+class ReferenceTableBreadcrumbAdapter(BreadcrumbAdminLayerItem):
"""References table breadcrumb adapter"""
@property
--- a/src/pyams_content/root/__init__.py Thu Sep 06 18:10:04 2018 +0200
+++ b/src/pyams_content/root/__init__.py Fri Oct 05 10:44:32 2018 +0200
@@ -14,10 +14,11 @@
__docformat__ = 'restructuredtext'
+from persistent import Persistent
+from pyramid.events import subscriber
+from zope.interface import implementer
-# import standard library
-
-# import interfaces
+from pyams_content import _
from pyams_content.component.illustration.interfaces import IIllustrationTarget
from pyams_content.component.theme.interfaces import ITagsManagerTarget
from pyams_content.features.alert.interfaces import IAlertTarget
@@ -25,30 +26,23 @@
from pyams_content.features.header.interfaces import IHeaderTarget
from pyams_content.features.preview.interfaces import IPreviewTarget
from pyams_content.features.redirect.interfaces import IRedirectionManagerTarget
-from pyams_content.interfaces import WEBMASTER_ROLE, OPERATOR_ROLE, MANAGE_SITE_ROOT_PERMISSION
-from pyams_content.root.interfaces import ISiteRootRoles, ISiteRootConfiguration, ISiteRoot, \
- ISiteRootToolsConfiguration, ISiteRootBackOfficeConfiguration
+from pyams_content.interfaces import MANAGE_SITE_ROOT_PERMISSION, OPERATOR_ROLE, WEBMASTER_ROLE
+from pyams_content.root.interfaces import ISiteRoot, ISiteRootBackOfficeConfiguration, ISiteRootConfiguration, \
+ ISiteRootRoles, ISiteRootToolsConfiguration
from pyams_form.interfaces.form import IFormContextPermissionChecker
-from pyams_portal.interfaces import IPortalContext, DESIGNER_ROLE
+from pyams_portal.interfaces import DESIGNER_ROLE, IPortalContext
from pyams_security.interfaces import IDefaultProtectionPolicy, IGrantedRoleEvent, ISecurityManager, SYSTEM_ADMIN_ROLE
-from pyams_skin.interfaces.configuration import IConfiguration, IBackOfficeConfiguration
-from pyams_utils.interfaces.site import ISiteRootFactory
-
-# import packages
-from persistent import Persistent
from pyams_security.property import RolePrincipalsFieldProperty
from pyams_security.security import ProtectedObject
-from pyams_skin.configuration import Configuration, BackOfficeConfiguration
+from pyams_skin.configuration import BackOfficeConfiguration, Configuration
+from pyams_skin.interfaces.configuration import IBackOfficeConfiguration, IConfiguration
from pyams_skin.skin import UserSkinnableContent
-from pyams_utils.adapter import adapter_config, ContextAdapter, get_annotation_adapter
+from pyams_utils.adapter import ContextAdapter, adapter_config, get_annotation_adapter
from pyams_utils.factory import factory_config
+from pyams_utils.interfaces.site import ISiteRootFactory
from pyams_utils.registry import get_utility, utility_config
from pyams_utils.site import BaseSiteRoot
from pyams_utils.traversing import get_parent
-from pyramid.events import subscriber
-from zope.interface import implementer
-
-from pyams_content import _
@implementer(IDefaultProtectionPolicy, ISiteRoot, ISiteRootRoles, IPortalContext, ITagsManagerTarget,
@@ -132,7 +126,9 @@
forms_tool_name = None
imagemaps_tool_name = None
logos_tool_name = None
+
news_tool_name = None
+ topics_tool_name = None
SITEROOT_TOOLS_CONFIGURATION_KEY = 'pyams_config.tools.configuration'
--- a/src/pyams_content/root/interfaces/__init__.py Thu Sep 06 18:10:04 2018 +0200
+++ b/src/pyams_content/root/interfaces/__init__.py Fri Oct 05 10:44:32 2018 +0200
@@ -12,22 +12,16 @@
__docformat__ = 'restructuredtext'
-
-# import standard library
+from zope.interface import Attribute, Interface
-# import interfaces
-from pyams_content.interfaces import WEBMASTER_ROLE, OPERATOR_ROLE
+from pyams_content import _
+from pyams_content.interfaces import OPERATOR_ROLE, WEBMASTER_ROLE
from pyams_portal.interfaces import DESIGNER_ROLE
from pyams_security.interfaces import SYSTEM_ADMIN_ROLE
-from pyams_skin.interfaces.configuration import IConfiguration, IBackOfficeConfiguration
+from pyams_security.schema import Principal, PrincipalsSet
+from pyams_skin.interfaces.configuration import IBackOfficeConfiguration, IConfiguration
from pyams_utils.interfaces.site import ISiteRoot as ISiteRootBase
-# import packages
-from pyams_security.schema import PrincipalsSet, Principal
-from zope.interface import Interface, Attribute
-
-from pyams_content import _
-
class ISiteRoot(ISiteRootBase):
"""Main site root interface"""
@@ -71,7 +65,9 @@
forms_tool_name = Attribute("Forms tool name")
imagemaps_tool_name = Attribute("Image maps tool name")
logos_tool_name = Attribute("Logos tool name")
+
news_tool_name = Attribute("News tool name")
+ topics_tool_name = Attribute("Topics tool name")
class ISiteRootBackOfficeConfiguration(IBackOfficeConfiguration):
--- a/src/pyams_content/root/zmi/__init__.py Thu Sep 06 18:10:04 2018 +0200
+++ b/src/pyams_content/root/zmi/__init__.py Fri Oct 05 10:44:32 2018 +0200
@@ -47,7 +47,7 @@
from pyams_skin.container import ContainerView
from pyams_skin.page import DefaultPageHeaderAdapter
from pyams_skin.table import I18nColumn, DefaultElementEditorAdapter
-from pyams_skin.viewlet.breadcrumb import BreadcrumbItem
+from pyams_skin.viewlet.breadcrumb import BreadcrumbAdminLayerItem
from pyams_skin.viewlet.menu import MenuItem
from pyams_template.template import template_config
from pyams_utils.adapter import adapter_config, ContextRequestViewAdapter, ContextRequestAdapter
@@ -71,8 +71,8 @@
# Site root breadcrumbs
#
-@adapter_config(context=(ISiteRoot, IPyAMSLayer), provides=IBreadcrumbItem)
-class SiteRootBreadcrumbAdapter(BreadcrumbItem):
+@adapter_config(context=(ISiteRoot, IAdminLayer), provides=IBreadcrumbItem)
+class SiteRootBreadcrumbAdapter(BreadcrumbAdminLayerItem):
"""Site root breadcrumb adapter"""
label = _("Home")
@@ -172,8 +172,8 @@
for tool in get_all_utilities_registered_for(IBaseSharedTool):
workflow = IWorkflow(tool)
query = Eq(catalog['parents'], intids.register(tool)) & \
- Any(catalog['content_type'], CONTENT_TYPES.keys()) & \
- Any(catalog['workflow_state'], workflow.waiting_states)
+ Any(catalog['content_type'], CONTENT_TYPES.keys()) & \
+ Any(catalog['workflow_state'], workflow.waiting_states)
params = params | query if params else query
yield from filter(self.check_access,
unique_iter(map(lambda x: sorted(IWorkflowVersions(x).get_versions(IWorkflowState(x).state),
@@ -219,9 +219,9 @@
for tool in get_all_utilities_registered_for(IBaseSharedTool):
workflow = IWorkflow(tool)
query = Eq(catalog['parents'], intids.register(tool)) & \
- Any(catalog['content_type'], CONTENT_TYPES.keys()) & \
- Any(catalog['workflow_state'], workflow.waiting_states) & \
- Eq(catalog['workflow_principal'], self.request.principal.id)
+ Any(catalog['content_type'], CONTENT_TYPES.keys()) & \
+ Any(catalog['workflow_state'], workflow.waiting_states) & \
+ Eq(catalog['workflow_principal'], self.request.principal.id)
params = params | query if params else query
yield from unique_iter(map(lambda x: sorted(IWorkflowVersions(x).get_versions(IWorkflowState(x).state),
key=lambda y: IZopeDublinCore(y).modified, reverse=True)[0],
@@ -381,7 +381,7 @@
for tool in get_all_utilities_registered_for(IBaseSharedTool):
workflow = IWorkflow(tool)
query = And(Eq(catalog['parents'], intids.register(tool)),
- Any(catalog['content_type'], CONTENT_TYPES.keys()) & \
+ Any(catalog['content_type'], CONTENT_TYPES.keys()) &
Or(Eq(catalog['role:owner'], self.request.principal.id),
Eq(catalog['role:contributor'], self.request.principal.id)),
Eq(catalog['workflow_state'], workflow.initial_state))
@@ -443,7 +443,7 @@
for tool in get_all_utilities_registered_for(IBaseSharedTool):
workflow = IWorkflow(tool)
query = And(Eq(catalog['parents'], intids.register(tool)),
- Any(catalog['content_type'], CONTENT_TYPES.keys()) & \
+ Any(catalog['content_type'], CONTENT_TYPES.keys()) &
Or(Eq(catalog['role:owner'], self.request.principal.id),
Eq(catalog['role:contributor'], self.request.principal.id)),
Any(catalog['workflow_state'], workflow.waiting_states))
@@ -505,7 +505,7 @@
for tool in get_all_utilities_registered_for(IBaseSharedTool):
workflow = IWorkflow(tool)
query = And(Eq(catalog['parents'], intids.register(tool)),
- Any(catalog['content_type'], CONTENT_TYPES.keys()) & \
+ Any(catalog['content_type'], CONTENT_TYPES.keys()) &
Or(Eq(catalog['role:owner'], self.request.principal.id),
Eq(catalog['role:contributor'], self.request.principal.id)),
Any(catalog['workflow_state'], workflow.published_states))
@@ -567,7 +567,7 @@
for tool in get_all_utilities_registered_for(IBaseSharedTool):
workflow = IWorkflow(tool)
query = And(Eq(catalog['parents'], intids.register(tool)),
- Any(catalog['content_type'], CONTENT_TYPES.keys()) & \
+ Any(catalog['content_type'], CONTENT_TYPES.keys()) &
Or(Eq(catalog['role:owner'], self.request.principal.id),
Eq(catalog['role:contributor'], self.request.principal.id)),
Any(catalog['workflow_state'], workflow.retired_states))
@@ -631,7 +631,7 @@
for tool in get_all_utilities_registered_for(IBaseSharedTool):
workflow = IWorkflow(tool)
query = And(Eq(catalog['parents'], intids.register(tool)),
- Any(catalog['content_type'], CONTENT_TYPES.keys()) & \
+ Any(catalog['content_type'], CONTENT_TYPES.keys()) &
Or(Eq(catalog['role:owner'], principal_id),
Eq(catalog['role:contributor'], principal_id)),
Any(catalog['workflow_state'], workflow.archived_states))
@@ -721,7 +721,7 @@
for tool in get_all_utilities_registered_for(IBaseSharedTool):
workflow = IWorkflow(tool)
query = And(Eq(catalog['parents'], intids.register(tool)),
- Any(catalog['content_type'], CONTENT_TYPES.keys()) & \
+ Any(catalog['content_type'], CONTENT_TYPES.keys()) &
Any(catalog['workflow_state'], workflow.published_states))
params = params | query if params else query
yield from unique_iter(CatalogResultSet(CatalogQuery(catalog).query(params,
--- a/src/pyams_content/root/zmi/search.py Thu Sep 06 18:10:04 2018 +0200
+++ b/src/pyams_content/root/zmi/search.py Fri Oct 05 10:44:32 2018 +0200
@@ -116,7 +116,7 @@
intids = get_utility(IIntIds)
catalog = get_utility(ICatalog)
params = Eq(catalog['parents'], intids.register(self.context)) & \
- Any(catalog['content_type'], CONTENT_TYPES.keys())
+ Any(catalog['content_type'], CONTENT_TYPES.keys())
query = self.request.params.get('query')
if query:
sequence = get_utility(ISequentialIntIds)
--- a/src/pyams_content/root/zmi/sites.py Thu Sep 06 18:10:04 2018 +0200
+++ b/src/pyams_content/root/zmi/sites.py Fri Oct 05 10:44:32 2018 +0200
@@ -121,9 +121,10 @@
icon_class = 'fa-eye opacity-75'
else:
icon_class = 'fa-eye-slash text-danger opaque'
- return '<i class="fa fa-fw {icon_class} hint align-base" title="{title}" data-ams-hint-gravity="e"></i>'.format(
- icon_class=icon_class,
- title=self.request.localizer.translate(self.icon_hint))
+ return '<i class="fa fa-fw {icon_class} hint align-base" title="{title}" ' \
+ 'data-ams-hint-gravity="e"></i>'.format(
+ icon_class=icon_class,
+ title=self.request.localizer.translate(self.icon_hint))
@adapter_config(name='oid', context=(ISiteRoot, IPyAMSLayer, SiteTreeTable), provides=IColumn)
--- a/src/pyams_content/shared/blog/interfaces/__init__.py Thu Sep 06 18:10:04 2018 +0200
+++ b/src/pyams_content/shared/blog/interfaces/__init__.py Fri Oct 05 10:44:32 2018 +0200
@@ -12,19 +12,16 @@
__docformat__ = 'restructuredtext'
+from zope.container.constraints import containers, contains
+from zope.container.interfaces import IContainer
+from zope.interface import Attribute, Interface
+from zope.schema import Text
-# import standard library
-
-# import interfaces
from pyams_content.shared.common.interfaces import ISharedSite, IBaseSharedTool, ISharedContent, \
IDeletableElement, IWfSharedContentPortalContext
+from pyams_i18n.schema import I18nTextField
from pyams_sequence.interfaces import ISequentialIdTarget
from pyams_workflow.interfaces import IWorkflowPublicationSupport
-from zope.container.interfaces import IContainer
-
-# import packages
-from zope.container.constraints import containers, contains
-from zope.interface import Attribute, Interface
from pyams_content import _
@@ -68,6 +65,16 @@
topic_content_type = Attribute("Topic content type")
topic_content_factory = Attribute("Topic content factory")
+ description = I18nTextField(title=_("Meta-description"),
+ description=_("The blog'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; if description is empty, content's header will be used."),
+ required=False)
+
+ notepad = Text(title=_("Notepad"),
+ description=_("Internal information to be known about this content"),
+ required=False)
+
class IBlogManagerFactory(Interface):
"""Blog manager factory interface"""
--- a/src/pyams_content/shared/blog/manager.py Thu Sep 06 18:10:04 2018 +0200
+++ b/src/pyams_content/shared/blog/manager.py Fri Oct 05 10:44:32 2018 +0200
@@ -12,10 +12,13 @@
__docformat__ = 'restructuredtext'
+from pyramid.events import subscriber
+from zope.component.interfaces import ISite
+from zope.container.folder import Folder
+from zope.interface import implementer
+from zope.lifecycleevent.interfaces import IObjectAddedEvent, IObjectRemovedEvent
+from zope.schema.fieldproperty import FieldProperty
-# import standard library
-
-# import interfaces
from pyams_content.component.illustration import IIllustrationTarget, ILinkIllustrationTarget
from pyams_content.component.paragraph.interfaces import IParagraphFactorySettings
from pyams_content.component.theme.interfaces import IThemesManagerTarget
@@ -24,22 +27,14 @@
from pyams_content.features.preview.interfaces import IPreviewTarget
from pyams_content.reference.pictograms.interfaces import IPictogramManagerTarget
from pyams_content.root.interfaces import ISiteRoot
+from pyams_content.shared.blog import BlogPost
from pyams_content.shared.blog.interfaces import IBlogManager, IBlogFolder, IBlogFolderFactory, IBlogManagerFactory
from pyams_content.shared.common.interfaces import ISharedContentFactory
+from pyams_content.shared.common.manager import BaseSharedTool
from pyams_portal.interfaces import IPortalContext
-from zope.component.interfaces import ISite
-from zope.lifecycleevent.interfaces import IObjectAddedEvent, IObjectRemovedEvent
-
-# import packages
-from pyams_content.shared.blog import BlogPost
-from pyams_content.shared.common.manager import BaseSharedTool
from pyams_skin.skin import UserSkinnableContent
from pyams_utils.adapter import adapter_config
from pyams_utils.traversing import get_parent
-from pyramid.events import subscriber
-from zope.container.folder import Folder
-from zope.interface import implementer
-from zope.schema.fieldproperty import FieldProperty
@implementer(IBlogFolder)
@@ -58,6 +53,9 @@
class BlogManager(Folder, BaseSharedTool, UserSkinnableContent):
"""Nlog manager class"""
+ description = FieldProperty(IBlogManager['description'])
+ notepad = FieldProperty(IBlogManager['notepad'])
+
allowed_paragraphs = FieldProperty(IParagraphFactorySettings['allowed_paragraphs'])
auto_created_paragraphs = FieldProperty(IParagraphFactorySettings['auto_created_paragraphs'])
--- a/src/pyams_content/shared/blog/zmi/__init__.py Thu Sep 06 18:10:04 2018 +0200
+++ b/src/pyams_content/shared/blog/zmi/__init__.py Fri Oct 05 10:44:32 2018 +0200
@@ -16,20 +16,23 @@
# import standard library
from datetime import datetime
+from pyramid.decorator import reify
+from pyramid.path import DottedNameResolver
+from pyramid.view import view_config
+from zope.interface import Interface
+from zope.lifecycleevent import ObjectCreatedEvent
+
+from pyams_content import _
# import interfaces
from pyams_content.interfaces import CREATE_CONTENT_PERMISSION
from pyams_content.shared.blog.interfaces import IWfBlogPost, IBlogManager
+# import packages
+from pyams_content.shared.common.zmi import SharedContentAddForm, SharedContentAJAXAddForm
from pyams_i18n.interfaces import II18n, II18nManager, INegotiator
+from pyams_pagelet.pagelet import pagelet_config
+from pyams_skin.interfaces import IContentTitle
from pyams_skin.interfaces.viewlet import IMenuHeader, IWidgetTitleViewletManager
from pyams_skin.layer import IPyAMSLayer
-from pyams_workflow.interfaces import IWorkflowVersions, IWorkflowInfo
-from pyams_zmi.interfaces.menu import IContentManagementMenu
-from pyams_zmi.layer import IAdminLayer
-
-# import packages
-from pyams_content.shared.common.zmi import SharedContentAddForm, SharedContentAJAXAddForm
-from pyams_pagelet.pagelet import pagelet_config
-from pyams_skin.interfaces import IContentTitle
from pyams_skin.viewlet.toolbar import ToolbarAction
from pyams_utils.adapter import adapter_config, ContextRequestViewAdapter, ContextRequestAdapter
from pyams_utils.registry import get_utility
@@ -37,13 +40,9 @@
from pyams_utils.unicode import translate_string
from pyams_utils.url import absolute_url, generate_url
from pyams_viewlet.viewlet import viewlet_config
-from pyramid.decorator import reify
-from pyramid.path import DottedNameResolver
-from pyramid.view import view_config
-from zope.interface import Interface
-from zope.lifecycleevent import ObjectCreatedEvent
-
-from pyams_content import _
+from pyams_workflow.interfaces import IWorkflowVersions, IWorkflowInfo
+from pyams_zmi.interfaces.menu import IContentManagementMenu
+from pyams_zmi.layer import IAdminLayer
@adapter_config(context=(IWfBlogPost, IContentManagementMenu), provides=IMenuHeader)
@@ -82,6 +81,8 @@
legend = _("Add blog post")
content_url = None
+ __target = None
+
@reify
def content_factory(self):
registry = self.request.registry
--- a/src/pyams_content/shared/blog/zmi/manager.py Thu Sep 06 18:10:04 2018 +0200
+++ b/src/pyams_content/shared/blog/zmi/manager.py Fri Oct 05 10:44:32 2018 +0200
@@ -12,28 +12,27 @@
__docformat__ = 'restructuredtext'
-
-# import standard library
from datetime import datetime
-# import interfaces
-from pyams_content.interfaces import MANAGE_SITE_ROOT_PERMISSION, MANAGE_SITE_PERMISSION
+from pyramid.events import subscriber
+from pyramid.path import DottedNameResolver
+from z3c.form import field
+from z3c.form.interfaces import IDataExtractedEvent
+from zope.interface import Invalid
+
+from pyams_content.interfaces import MANAGE_SITE_ROOT_PERMISSION, MANAGE_SITE_PERMISSION, MANAGE_TOOL_PERMISSION
from pyams_content.root.interfaces import ISiteRoot
from pyams_content.shared.blog.interfaces import IBlogManager, IBlogManagerFactory
+from pyams_content.shared.blog.manager import BlogManager
+from pyams_content.shared.common import IBaseSharedTool
+from pyams_content.shared.common.zmi.manager import SharedToolPropertiesEditForm
from pyams_content.skin.zmi.interfaces import ISiteTreeTable, IUserAddingsMenuLabel
+from pyams_form.form import AJAXAddForm, ajax_config
from pyams_i18n.interfaces import II18n, INegotiator
+from pyams_pagelet.pagelet import pagelet_config
from pyams_skin.interfaces.container import ITableElementEditor
from pyams_skin.interfaces.viewlet import IToolbarAddingMenu, ITableItemColumnActionsMenu, IMenuHeader
from pyams_skin.layer import IPyAMSLayer
-from pyams_workflow.interfaces import IWorkflowPublicationInfo
-from pyams_zmi.interfaces.menu import IPropertiesMenu, ISiteManagementMenu
-from pyams_zmi.layer import IAdminLayer
-from z3c.form.interfaces import IDataExtractedEvent
-
-# import packages
-from pyams_content.shared.blog.manager import BlogManager
-from pyams_form.form import AJAXAddForm, ajax_config
-from pyams_pagelet.pagelet import pagelet_config
from pyams_skin.table import DefaultElementEditorAdapter
from pyams_skin.viewlet.menu import MenuItem
from pyams_skin.viewlet.toolbar import ToolbarMenuItem
@@ -43,12 +42,10 @@
from pyams_utils.unicode import translate_string
from pyams_utils.url import absolute_url
from pyams_viewlet.viewlet import viewlet_config
+from pyams_workflow.interfaces import IWorkflowPublicationInfo
from pyams_zmi.form import AdminDialogAddForm, AdminDialogEditForm
-from pyramid.events import subscriber
-from pyramid.path import DottedNameResolver
-from pyramid.view import view_config
-from z3c.form import field
-from zope.interface import Invalid
+from pyams_zmi.interfaces.menu import IPropertiesMenu, ISiteManagementMenu
+from pyams_zmi.layer import IAdminLayer
from pyams_content import _
@@ -143,6 +140,17 @@
modal_target = False
+@pagelet_config(name='properties.html', context=IBlogManager, layer=IPyAMSLayer, permission=MANAGE_TOOL_PERMISSION)
+@ajax_config(name='properties.json', context=IBlogManager, layer=IPyAMSLayer)
+class BlogManagerPropertiesEditForm(SharedToolPropertiesEditForm):
+ """Site folder properties edit form"""
+
+ legend = _("Blog properties")
+
+ fields = field.Fields(IBlogManager).select('title', 'short_name', 'description', 'notepad') + \
+ field.Fields(IBaseSharedTool).select('shared_content_workflow')
+
+
#
# Blog manager publication views
#
--- a/src/pyams_content/shared/common/__init__.py Thu Sep 06 18:10:04 2018 +0200
+++ b/src/pyams_content/shared/common/__init__.py Fri Oct 05 10:44:32 2018 +0200
@@ -17,7 +17,6 @@
# import interfaces
from hypatia.interfaces import ICatalog
-# import packages
from persistent import Persistent
from pyramid.events import subscriber
from pyramid.interfaces import IWSGIApplicationCreatedEvent
@@ -32,6 +31,7 @@
from zope.schema.vocabulary import SimpleVocabulary, SimpleTerm
from pyams_content import _
+# import packages
from pyams_content.features.checker import BaseContentChecker
from pyams_content.features.checker.interfaces import IContentChecker, MISSING_VALUE, MISSING_LANG_VALUE, ERROR_VALUE
from pyams_content.features.review.interfaces import IReviewComments
@@ -127,7 +127,9 @@
content_type = None
content_name = None
+ handle_content_url = True
handle_header = True
+ handle_description = True
title = FieldProperty(IWfSharedContent['title'])
short_name = FieldProperty(IWfSharedContent['short_name'])
--- a/src/pyams_content/shared/common/interfaces/__init__.py Thu Sep 06 18:10:04 2018 +0200
+++ b/src/pyams_content/shared/common/interfaces/__init__.py Fri Oct 05 10:44:32 2018 +0200
@@ -12,25 +12,21 @@
__docformat__ = 'restructuredtext'
-
-# import standard library
-
from zope.container.constraints import containers, contains
from zope.container.interfaces import IContainer
from zope.interface import Interface, Attribute
from zope.schema import Choice, Bool, Text, TextLine
-from pyams_content import _
-# import interfaces
from pyams_content.interfaces import IBaseContent, MANAGE_CONTENT_PERMISSION, OWNER_ROLE, MANAGER_ROLE, \
READER_ROLE, GUEST_ROLE, WEBMASTER_ROLE, PILOT_ROLE, CONTRIBUTOR_ROLE
-# import packages
from pyams_i18n.schema import I18nTextField
from pyams_portal.interfaces import IPortalContext, DESIGNER_ROLE
from pyams_security.schema import Principal, PrincipalsSet
from pyams_utils.schema import TextLineListField
from pyams_workflow.interfaces import IWorkflowManagedContent
+from pyams_content import _
+
class IDeletableElement(Interface):
"""Deletable element interface"""
@@ -126,6 +122,8 @@
"underscores will be automatically replaced by hyphens"),
required=True)
+ handle_content_url = Attribute("Static boolean value to specify if content URL is supported by this content type")
+
creator = Principal(title=_("Version creator"),
description=_("Name of content's version creator. "
"The creator of the first version is also it's owner."),
@@ -162,6 +160,8 @@
"description; if description is empty, content's header will be used."),
required=False)
+ handle_description = Attribute("Static boolean value to specify if description is supported by this content type")
+
keywords = TextLineListField(title=_("Keywords"),
description=_("They will be included into HTML pages metadata"),
required=False)
--- a/src/pyams_content/shared/common/manager.py Thu Sep 06 18:10:04 2018 +0200
+++ b/src/pyams_content/shared/common/manager.py Fri Oct 05 10:44:32 2018 +0200
@@ -17,8 +17,8 @@
# import interfaces
from pyams_content.interfaces import WEBMASTER_ROLE, PILOT_ROLE, MANAGER_ROLE, CONTRIBUTOR_ROLE
-from pyams_content.shared.common.interfaces import ISharedToolContainer, IBaseSharedTool, ISharedTool, ISharedToolRoles, \
- ISharedContentFactory
+from pyams_content.shared.common.interfaces import ISharedToolContainer, IBaseSharedTool, ISharedTool, \
+ ISharedToolRoles, ISharedContentFactory
from pyams_portal.interfaces import DESIGNER_ROLE
from pyams_security.interfaces import IDefaultProtectionPolicy
from pyams_workflow.interfaces import IWorkflow
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_content/shared/common/portlet/__init__.py Fri Oct 05 10:44:32 2018 +0200
@@ -0,0 +1,19 @@
+#
+# Copyright (c) 2008-2017 Thierry Florac <tflorac AT ulthar.net>
+# All Rights Reserved.
+#
+# This software is subject to the provisions of the Zope Public License,
+# Version 2.1 (ZPL). A copy of the ZPL should accompany this distribution.
+# THIS SOFTWARE IS PROVIDED "AS IS" AND ANY AND ALL EXPRESS OR IMPLIED
+# WARRANTIES ARE DISCLAIMED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+# WARRANTIES OF TITLE, MERCHANTABILITY, AGAINST INFRINGEMENT, AND FITNESS
+# FOR A PARTICULAR PURPOSE.
+#
+
+__docformat__ = 'restructuredtext'
+
+# import standard library
+
+# import interfaces
+
+# import packages
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_content/shared/common/portlet/head.py Fri Oct 05 10:44:32 2018 +0200
@@ -0,0 +1,50 @@
+#
+# Copyright (c) 2008-2018 Thierry Florac <tflorac AT ulthar.net>
+# All Rights Reserved.
+#
+# This software is subject to the provisions of the Zope Public License,
+# Version 2.1 (ZPL). A copy of the ZPL should accompany this distribution.
+# THIS SOFTWARE IS PROVIDED "AS IS" AND ANY AND ALL EXPRESS OR IMPLIED
+# WARRANTIES ARE DISCLAIMED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+# WARRANTIES OF TITLE, MERCHANTABILITY, AGAINST INFRINGEMENT, AND FITNESS
+# FOR A PARTICULAR PURPOSE.
+#
+
+__docformat__ = 'restructuredtext'
+
+from zope.interface import implementer
+from zope.schema.fieldproperty import FieldProperty
+
+from pyams_content.shared.common.portlet.interfaces import ISharedContentHeaderPortletSettings
+from pyams_portal.portlet import PortletSettings, portlet_config, Portlet
+from pyams_utils.factory import factory_config
+from pyams_utils.interfaces import VIEW_PERMISSION
+
+from pyams_content import _
+
+
+SHARED_CONTENT_HEADER_PORTLET_NAME = 'pyams_content.portlet.shared.header'
+
+
+@implementer(ISharedContentHeaderPortletSettings)
+@factory_config(provided=ISharedContentHeaderPortletSettings)
+class SharedContentHeaderPortletSettings(PortletSettings):
+ """Shared content header portlet settings"""
+
+ display_breadcrumbs = FieldProperty(ISharedContentHeaderPortletSettings['display_breadcrumbs'])
+ display_title = FieldProperty(ISharedContentHeaderPortletSettings['display_title'])
+ display_tags = FieldProperty(ISharedContentHeaderPortletSettings['display_tags'])
+ display_header = FieldProperty(ISharedContentHeaderPortletSettings['display_header'])
+ display_specificities = FieldProperty(ISharedContentHeaderPortletSettings['display_specificities'])
+
+
+@portlet_config(permission=VIEW_PERMISSION)
+class SharedContentHeaderPortlet(Portlet):
+ """Shared content header portlet"""
+
+ name = SHARED_CONTENT_HEADER_PORTLET_NAME
+ label = _("Content header")
+
+ toolbar_css_class = 'fa fa-fw fa-2x fa-header'
+
+ settings_factory = ISharedContentHeaderPortletSettings
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_content/shared/common/portlet/interfaces/__init__.py Fri Oct 05 10:44:32 2018 +0200
@@ -0,0 +1,52 @@
+#
+# Copyright (c) 2008-2017 Thierry Florac <tflorac AT ulthar.net>
+# All Rights Reserved.
+#
+# This software is subject to the provisions of the Zope Public License,
+# Version 2.1 (ZPL). A copy of the ZPL should accompany this distribution.
+# THIS SOFTWARE IS PROVIDED "AS IS" AND ANY AND ALL EXPRESS OR IMPLIED
+# WARRANTIES ARE DISCLAIMED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+# WARRANTIES OF TITLE, MERCHANTABILITY, AGAINST INFRINGEMENT, AND FITNESS
+# FOR A PARTICULAR PURPOSE.
+#
+
+__docformat__ = 'restructuredtext'
+
+from zope.interface import Interface
+from zope.schema import Bool
+
+from pyams_content import _
+from pyams_portal.interfaces import IPortletSettings
+
+
+class ISharedContentHeaderPortletSettings(IPortletSettings):
+ """Shared content header portlet settings"""
+
+ display_breadcrumbs = Bool(title=_("Display breadcrumbs?"),
+ required=True,
+ default=True)
+
+ display_title = Bool(title=_("Display title?"),
+ required=True,
+ default=True)
+
+ display_tags = Bool(title=_("Display tags?"),
+ required=True,
+ default=True)
+
+ display_header = Bool(title=_("Display header?"),
+ required=True,
+ default=True)
+
+ display_specificities = Bool(title=_("Display specificities?"),
+ description=_("If 'no', specific content's informations won't be displayed..."),
+ required=True,
+ default=True)
+
+
+class ISharedContentHeadViewletManager(Interface):
+ """Shared content head viewlet manager marker interface"""
+
+
+class ISharedContentTitlePortletSettings(IPortletSettings):
+ """Shared content title portlet settings"""
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_content/shared/common/portlet/skin/__init__.py Fri Oct 05 10:44:32 2018 +0200
@@ -0,0 +1,25 @@
+#
+# Copyright (c) 2008-2018 Thierry Florac <tflorac AT ulthar.net>
+# All Rights Reserved.
+#
+# This software is subject to the provisions of the Zope Public License,
+# Version 2.1 (ZPL). A copy of the ZPL should accompany this distribution.
+# THIS SOFTWARE IS PROVIDED "AS IS" AND ANY AND ALL EXPRESS OR IMPLIED
+# WARRANTIES ARE DISCLAIMED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+# WARRANTIES OF TITLE, MERCHANTABILITY, AGAINST INFRINGEMENT, AND FITNESS
+# FOR A PARTICULAR PURPOSE.
+#
+
+__docformat__ = 'restructuredtext'
+
+from zope.interface import Interface, implementer
+
+from pyams_content.shared.common.portlet.interfaces import ISharedContentHeadViewletManager
+from pyams_skin.layer import IPyAMSUserLayer
+from pyams_viewlet.manager import viewletmanager_config, WeightOrderedViewletManager
+
+
+@viewletmanager_config(name='pyams_content.head', layer=IPyAMSUserLayer, view=Interface)
+@implementer(ISharedContentHeadViewletManager)
+class SharedContentHeadViewletManager(WeightOrderedViewletManager):
+ """Shared content head viewlet manager"""
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_content/shared/common/portlet/title.py Fri Oct 05 10:44:32 2018 +0200
@@ -0,0 +1,42 @@
+#
+# Copyright (c) 2008-2018 Thierry Florac <tflorac AT ulthar.net>
+# All Rights Reserved.
+#
+# This software is subject to the provisions of the Zope Public License,
+# Version 2.1 (ZPL). A copy of the ZPL should accompany this distribution.
+# THIS SOFTWARE IS PROVIDED "AS IS" AND ANY AND ALL EXPRESS OR IMPLIED
+# WARRANTIES ARE DISCLAIMED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+# WARRANTIES OF TITLE, MERCHANTABILITY, AGAINST INFRINGEMENT, AND FITNESS
+# FOR A PARTICULAR PURPOSE.
+#
+
+__docformat__ = 'restructuredtext'
+
+from zope.interface import implementer
+
+from pyams_content import _
+from pyams_content.shared.common.portlet.interfaces import ISharedContentTitlePortletSettings
+from pyams_portal.portlet import Portlet, PortletSettings, portlet_config
+from pyams_utils.factory import factory_config
+from pyams_utils.interfaces import VIEW_PERMISSION
+
+
+SHARED_CONTENT_TITLE_PORTLET_NAME = 'pyams_content.portlet.shared.title'
+
+
+@implementer(ISharedContentTitlePortletSettings)
+@factory_config(provided=ISharedContentTitlePortletSettings)
+class SharedContentTitlePortletSettings(PortletSettings):
+ """Shared content title portlet settings"""
+
+
+@portlet_config(permission=VIEW_PERMISSION)
+class SharedContentTitlePortlet(Portlet):
+ """Shared content title portlet"""
+
+ name = SHARED_CONTENT_TITLE_PORTLET_NAME
+ label = _("Content title")
+
+ toolbar_css_class = 'fa fa-fw fa-2x fa-bold'
+
+ settings_factory = ISharedContentTitlePortletSettings
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_content/shared/common/portlet/zmi/__init__.py Fri Oct 05 10:44:32 2018 +0200
@@ -0,0 +1,20 @@
+#
+# Copyright (c) 2008-2018 Thierry Florac <tflorac AT ulthar.net>
+# All Rights Reserved.
+#
+# This software is subject to the provisions of the Zope Public License,
+# Version 2.1 (ZPL). A copy of the ZPL should accompany this distribution.
+# THIS SOFTWARE IS PROVIDED "AS IS" AND ANY AND ALL EXPRESS OR IMPLIED
+# WARRANTIES ARE DISCLAIMED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+# WARRANTIES OF TITLE, MERCHANTABILITY, AGAINST INFRINGEMENT, AND FITNESS
+# FOR A PARTICULAR PURPOSE.
+#
+
+__docformat__ = 'restructuredtext'
+
+
+# import standard library
+
+# import interfaces
+
+# import packages
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_content/shared/common/portlet/zmi/head.py Fri Oct 05 10:44:32 2018 +0200
@@ -0,0 +1,55 @@
+#
+# Copyright (c) 2008-2018 Thierry Florac <tflorac AT ulthar.net>
+# All Rights Reserved.
+#
+# This software is subject to the provisions of the Zope Public License,
+# Version 2.1 (ZPL). A copy of the ZPL should accompany this distribution.
+# THIS SOFTWARE IS PROVIDED "AS IS" AND ANY AND ALL EXPRESS OR IMPLIED
+# WARRANTIES ARE DISCLAIMED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+# WARRANTIES OF TITLE, MERCHANTABILITY, AGAINST INFRINGEMENT, AND FITNESS
+# FOR A PARTICULAR PURPOSE.
+#
+
+__docformat__ = 'restructuredtext'
+
+from zope.interface import Interface
+
+from pyams_content.shared.common.portlet.interfaces import ISharedContentHeaderPortletSettings
+from pyams_form.form import AJAXEditForm
+from pyams_form.interfaces.form import IInnerTabForm
+from pyams_pagelet.interfaces import IPagelet
+from pyams_pagelet.pagelet import pagelet_config
+from pyams_portal.interfaces import IPortletPreviewer
+from pyams_portal.portlet import PortletPreviewer
+from pyams_portal.zmi.portlet import PortletSettingsEditor, PortletSettingsPropertiesEditor
+from pyams_skin.layer import IPyAMSLayer
+from pyams_template.template import template_config
+from pyams_utils.adapter import adapter_config
+from pyams_utils.interfaces import VIEW_SYSTEM_PERMISSION
+
+
+@pagelet_config(name='properties.html', context=ISharedContentHeaderPortletSettings, layer=IPyAMSLayer,
+ permission=VIEW_SYSTEM_PERMISSION)
+class SharedContentHeaderPortletSettingsEditor(PortletSettingsEditor):
+ """Shared content header portlet settings editor"""
+
+ settings = ISharedContentHeaderPortletSettings
+
+
+@adapter_config(name='properties', context=(Interface, IPyAMSLayer, SharedContentHeaderPortletSettingsEditor),
+ provides=IInnerTabForm)
+class SharedContentHeaderPortletSettingsPropertiesEditor(PortletSettingsPropertiesEditor):
+ """Shared content header portlet settings properties editor"""
+
+
+@adapter_config(name='properties.json', context=(ISharedContentHeaderPortletSettings, IPyAMSLayer),
+ provides=IPagelet)
+class SharedContentHeaderPortletAJAXEditor(AJAXEditForm, SharedContentHeaderPortletSettingsEditor):
+ """Shared content header portlet settings editor, JSON renderer"""
+
+
+@adapter_config(context=(Interface, IPyAMSLayer, Interface, ISharedContentHeaderPortletSettings),
+ provides=IPortletPreviewer)
+@template_config(template='templates/head-preview.pt', layer=IPyAMSLayer)
+class SharedContentHeaderPortletPreviewer(PortletPreviewer):
+ """Shared content header portlet previewer"""
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_content/shared/common/portlet/zmi/templates/head-preview.pt Fri Oct 05 10:44:32 2018 +0200
@@ -0,0 +1,22 @@
+<tal:var define="settings view.settings" i18n:domain="pyams_content">
+ <div class="padding-x-10">
+ <i class="fa fa-fw fa-${'check-' if settings.display_breadcrumbs else ''}square-o"></i>
+ <span i18n:translate="">Display breadcrumbs</span>
+ </div>
+ <div class="padding-x-10">
+ <i class="fa fa-fw fa-${'check-' if settings.display_title else ''}square-o"></i>
+ <span i18n:translate="">Display title</span>
+ </div>
+ <div class="padding-x-10">
+ <i class="fa fa-fw fa-${'check-' if settings.display_tags else ''}square-o"></i>
+ <span i18n:translate="">Display tags</span>
+ </div>
+ <div class="padding-x-10">
+ <i class="fa fa-fw fa-${'check-' if settings.display_header else ''}square-o"></i>
+ <span i18n:translate="">Display header</span>
+ </div>
+ <div class="padding-x-10">
+ <i class="fa fa-fw fa-${'check-' if settings.display_specificities else ''}square-o"></i>
+ <span i18n:translate="">Display specificities</span>
+ </div>
+</tal:var>
\ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_content/shared/common/portlet/zmi/title.py Fri Oct 05 10:44:32 2018 +0200
@@ -0,0 +1,55 @@
+#
+# Copyright (c) 2008-2018 Thierry Florac <tflorac AT ulthar.net>
+# All Rights Reserved.
+#
+# This software is subject to the provisions of the Zope Public License,
+# Version 2.1 (ZPL). A copy of the ZPL should accompany this distribution.
+# THIS SOFTWARE IS PROVIDED "AS IS" AND ANY AND ALL EXPRESS OR IMPLIED
+# WARRANTIES ARE DISCLAIMED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+# WARRANTIES OF TITLE, MERCHANTABILITY, AGAINST INFRINGEMENT, AND FITNESS
+# FOR A PARTICULAR PURPOSE.
+#
+
+__docformat__ = 'restructuredtext'
+
+from zope.interface import Interface
+
+from pyams_content.shared.common.portlet.interfaces import ISharedContentTitlePortletSettings
+from pyams_form.form import AJAXEditForm
+from pyams_form.interfaces.form import IInnerTabForm
+from pyams_pagelet.interfaces import IPagelet
+from pyams_pagelet.pagelet import pagelet_config
+from pyams_portal.interfaces import IPortletPreviewer
+from pyams_portal.portlet import PortletPreviewer
+from pyams_portal.zmi.portlet import PortletSettingsEditor, PortletSettingsPropertiesEditor
+from pyams_skin.layer import IPyAMSLayer
+from pyams_template.template import template_config
+from pyams_utils.adapter import adapter_config
+from pyams_utils.interfaces import VIEW_SYSTEM_PERMISSION
+
+
+@pagelet_config(name='properties.html', context=ISharedContentTitlePortletSettings, layer=IPyAMSLayer,
+ permission=VIEW_SYSTEM_PERMISSION)
+class SharedContentTitlePortletSettingsEditor(PortletSettingsEditor):
+ """Shared content title portlet settings editor"""
+
+ settings = ISharedContentTitlePortletSettings
+
+
+@adapter_config(name='properties', context=(Interface, IPyAMSLayer, SharedContentTitlePortletSettingsEditor),
+ provides=IInnerTabForm)
+class SharedContentTitlePortletSettingsPropertiesEditor(PortletSettingsPropertiesEditor):
+ """Shared content title portlet settings properties editor"""
+
+
+@adapter_config(name='properties.json', context=(ISharedContentTitlePortletSettings, IPyAMSLayer),
+ provides=IPagelet)
+class SharedContentTitlePortletAJAXEditor(AJAXEditForm, SharedContentTitlePortletSettingsEditor):
+ """Shared content title portlet settings editor, JSON renderer"""
+
+
+@adapter_config(context=(Interface, IPyAMSLayer, Interface, ISharedContentTitlePortletSettings),
+ provides=IPortletPreviewer)
+@template_config(template='templates/title-preview.pt', layer=IPyAMSLayer)
+class SharedContentTitlePortletPreviewer(PortletPreviewer):
+ """Shared content title portlet previewer"""
--- a/src/pyams_content/shared/common/skin/opengraph.py Thu Sep 06 18:10:04 2018 +0200
+++ b/src/pyams_content/shared/common/skin/opengraph.py Fri Oct 05 10:44:32 2018 +0200
@@ -90,7 +90,8 @@
image_size = thumbnail.image_size
yield PropertyMeta('og:image:width', image_size[0])
yield PropertyMeta('og:image:height', image_size[1])
- yield PropertyMeta('og:image:alt', II18n(illustration).query_attribute('alt_title', lang=lang, request=request))
+ yield PropertyMeta('og:image:alt', II18n(illustration).query_attribute('alt_title', lang=lang,
+ request=request))
# locales properties
yield PropertyMeta('of:locale', lang)
for lang in II18nManager(context).languages or ():
--- a/src/pyams_content/shared/common/zmi/__init__.py Thu Sep 06 18:10:04 2018 +0200
+++ b/src/pyams_content/shared/common/zmi/__init__.py Fri Oct 05 10:44:32 2018 +0200
@@ -17,51 +17,51 @@
from datetime import datetime
from uuid import uuid4
+from pyramid.location import lineage
+from z3c.form import field, button
+from zope.copy import copy
+from zope.dublincore.interfaces import IZopeDublinCore
+from zope.interface import Interface
+from zope.lifecycleevent import ObjectCreatedEvent
+from zope.location import locate
+
+from pyams_content import _
+from pyams_content.features.review.interfaces import IReviewComments
# import interfaces
-from pyams_content.interfaces import MANAGE_SITE_ROOT_PERMISSION, MANAGE_CONTENT_PERMISSION, CREATE_CONTENT_PERMISSION, \
- PUBLISH_CONTENT_PERMISSION
-from pyams_content.features.review.interfaces import IReviewComments
+from pyams_content.interfaces import MANAGE_SITE_ROOT_PERMISSION, MANAGE_CONTENT_PERMISSION, \
+ CREATE_CONTENT_PERMISSION, PUBLISH_CONTENT_PERMISSION
from pyams_content.shared.common.interfaces import IWfSharedContent, ISharedContent, IBaseSharedTool, \
IManagerRestrictions
+# import packages
+from pyams_form.form import AJAXAddForm, ajax_config
from pyams_form.interfaces.form import IFormContextPermissionChecker, IWidgetsPrefixViewletsManager
+from pyams_form.schema import CloseButton
from pyams_i18n.interfaces import II18n, II18nManager, INegotiator
+from pyams_i18n.widget import I18nSEOTextLineFieldWidget
+from pyams_pagelet.pagelet import pagelet_config
from pyams_sequence.interfaces import ISequentialIdInfo
from pyams_skin.interfaces import IContentTitle
from pyams_skin.interfaces.container import ITable, ITableElementEditor
from pyams_skin.interfaces.viewlet import IContextActions, IMenuHeader, IBreadcrumbItem
from pyams_skin.layer import IPyAMSLayer
-from pyams_utils.interfaces import FORBIDDEN_PERMISSION
-from pyams_workflow.interfaces import IWorkflowVersions, IWorkflowInfo, IWorkflowState, IWorkflowCommentInfo, IWorkflow, \
- IWorkflowPublicationInfo
-from pyams_zmi.interfaces.menu import ISiteManagementMenu
-from zope.dublincore.interfaces import IZopeDublinCore
-
-# import packages
-from pyams_form.form import AJAXAddForm, ajax_config
-from pyams_form.schema import CloseButton
-from pyams_i18n.widget import I18nSEOTextLineFieldWidget
-from pyams_pagelet.pagelet import pagelet_config
from pyams_skin.page import DefaultPageHeaderAdapter
from pyams_skin.table import DefaultElementEditorAdapter
-from pyams_skin.viewlet.breadcrumb import BreadcrumbItem
+from pyams_skin.viewlet.breadcrumb import BreadcrumbAdminLayerItem
from pyams_skin.viewlet.toolbar import ToolbarMenuItem, ToolbarMenuDivider
from pyams_template.template import template_config
from pyams_utils.adapter import adapter_config, ContextRequestViewAdapter, ContextAdapter, ContextRequestAdapter
+from pyams_utils.interfaces import FORBIDDEN_PERMISSION
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, generate_url
from pyams_viewlet.viewlet import viewlet_config, Viewlet
+from pyams_workflow.interfaces import IWorkflowVersions, IWorkflowInfo, IWorkflowState, IWorkflowCommentInfo, \
+ IWorkflow, IWorkflowPublicationInfo
from pyams_workflow.versions import WorkflowHistoryItem
from pyams_zmi.form import AdminDialogAddForm
-from pyramid.location import lineage
-from z3c.form import field, button
-from zope.copy import copy
-from zope.interface import Interface
-from zope.lifecycleevent import ObjectCreatedEvent
-from zope.location import locate
-
-from pyams_content import _
+from pyams_zmi.interfaces.menu import ISiteManagementMenu
+from pyams_zmi.layer import IAdminLayer
class SharedContentAddForm(AdminDialogAddForm):
@@ -78,6 +78,8 @@
ajax_handler = 'add-shared-content.json'
edit_permission = CREATE_CONTENT_PERMISSION
+ __uuid = None
+
def updateWidgets(self, prefix=None):
super(SharedContentAddForm, self).updateWidgets(prefix)
if 'title' in self.widgets:
@@ -133,8 +135,8 @@
# Shared tools common adapters
#
-@adapter_config(context=(IWfSharedContent, IPyAMSLayer), provides=IBreadcrumbItem)
-class WfSharedContentBreadcrumbAdapter(BreadcrumbItem):
+@adapter_config(context=(IWfSharedContent, IAdminLayer), provides=IBreadcrumbItem)
+class WfSharedContentBreadcrumbAdapter(BreadcrumbAdminLayerItem):
"""Shared content breadcrumb adapter"""
@property
--- a/src/pyams_content/shared/common/zmi/dashboard.py Thu Sep 06 18:10:04 2018 +0200
+++ b/src/pyams_content/shared/common/zmi/dashboard.py Fri Oct 05 10:44:32 2018 +0200
@@ -12,39 +12,33 @@
__docformat__ = 'restructuredtext'
-
-# import standard library
+from hypatia.catalog import CatalogQuery
+from hypatia.interfaces import ICatalog
+from hypatia.query import And, Or, Eq, Any
+from z3c.table.column import GetAttrColumn
+from z3c.table.interfaces import IValues, IColumn
+from zope.dublincore.interfaces import IZopeDublinCore
+from zope.interface import implementer, Interface
+from zope.intid.interfaces import IIntIds
-# import interfaces
-from hypatia.interfaces import ICatalog
+from pyams_catalog.query import CatalogResultSet
+from pyams_content import _
from pyams_content.interfaces import MANAGE_SITE_ROOT_PERMISSION, PUBLISH_CONTENT_PERMISSION
from pyams_content.profile.interfaces import IAdminProfile
+from pyams_content.shared.common import CONTENT_TYPES
from pyams_content.shared.common.interfaces import IBaseSharedTool, IWfSharedContent, IManagerRestrictions
from pyams_content.shared.common.interfaces.zmi import IDashboardTable, ISharedToolDashboardTable, \
IDashboardSearchHeader
+from pyams_content.skin import pyams_content
from pyams_content.skin.zmi.interfaces import IDashboardMenu, IMyDashboardMenu, IAllContentsMenu
from pyams_i18n.interfaces import II18n
+from pyams_pagelet.pagelet import pagelet_config
from pyams_security.interfaces import ISecurityManager
from pyams_sequence.interfaces import ISequentialIdInfo, ISequentialIdTarget, ISequentialIntIds
+from pyams_skin.container import ContainerView
from pyams_skin.interfaces import IPageHeader
from pyams_skin.interfaces.container import ITableElementName
from pyams_skin.layer import IPyAMSLayer
-from pyams_utils.interfaces import VIEW_SYSTEM_PERMISSION
-from pyams_workflow.interfaces import IWorkflowState, IWorkflow, IWorkflowVersions, IWorkflowPublicationInfo
-from pyams_zmi.interfaces.menu import IContentManagementMenu
-from pyams_zmi.layer import IAdminLayer
-from z3c.table.interfaces import IValues, IColumn
-from zope.dublincore.interfaces import IZopeDublinCore
-from zope.intid.interfaces import IIntIds
-
-# import packages
-from hypatia.catalog import CatalogQuery
-from hypatia.query import And, Or, Eq, Any
-from pyams_catalog.query import CatalogResultSet
-from pyams_content.shared.common import CONTENT_TYPES
-from pyams_content.skin import pyams_content
-from pyams_pagelet.pagelet import pagelet_config
-from pyams_skin.container import ContainerView
from pyams_skin.page import DefaultPageHeaderAdapter
from pyams_skin.table import BaseTable, I18nColumn, NameColumn, JsActionColumn
from pyams_skin.viewlet.menu import MenuItem
@@ -52,6 +46,7 @@
from pyams_utils.adapter import adapter_config, ContextRequestViewAdapter
from pyams_utils.date import format_datetime, SH_DATETIME_FORMAT
from pyams_utils.fanstatic import get_resource_path
+from pyams_utils.interfaces import VIEW_SYSTEM_PERMISSION
from pyams_utils.list import unique_iter
from pyams_utils.property import cached_property
from pyams_utils.registry import get_utility
@@ -59,11 +54,10 @@
from pyams_utils.traversing import get_parent
from pyams_viewlet.manager import viewletmanager_config
from pyams_viewlet.viewlet import viewlet_config
+from pyams_workflow.interfaces import IWorkflowState, IWorkflow, IWorkflowVersions, IWorkflowPublicationInfo
+from pyams_zmi.interfaces.menu import IContentManagementMenu
+from pyams_zmi.layer import IAdminLayer
from pyams_zmi.view import InnerAdminView
-from z3c.table.column import GetAttrColumn
-from zope.interface import implementer, Interface
-
-from pyams_content import _
#
@@ -445,8 +439,8 @@
label = _("My contents")
icon_class = 'fa-user'
url = '#'
-
-
+
+
#
# My favorites
# Dashboard of favorites contents
@@ -493,14 +487,14 @@
oid = ISequentialIdInfo(item).hex_oid
icon_class = 'fa fa-fw fa-star{0}'.format('' if oid in (self.profile.favorites or ()) else '-o')
return '<i data-ams-plugins="pyams_content" ' \
- 'data-ams-plugin-pyams_content-src="{path}" ' \
- 'data-ams-click-handler="PyAMS_content.profile.switchFavorite" data-ams-stop-propagation="true" ' \
- 'data-sequence-oid="{oid}" ' \
- 'class="{icon_class}"></i>'.format(
- path=get_resource_path(pyams_content),
- oid=oid,
- title=self.request.localizer.translate(self.icon_hint),
- icon_class=icon_class)
+ 'data-ams-plugin-pyams_content-src="{path}" ' \
+ 'data-ams-click-handler="PyAMS_content.profile.switchFavorite" data-ams-stop-propagation="true" ' \
+ 'data-sequence-oid="{oid}" ' \
+ 'class="{icon_class}"></i>'.format(
+ path=get_resource_path(pyams_content),
+ oid=oid,
+ title=self.request.localizer.translate(self.icon_hint),
+ icon_class=icon_class)
def get_url(self, item):
return ''
@@ -578,7 +572,7 @@
catalog = get_utility(ICatalog)
workflow = get_utility(IWorkflow, name=self.context.shared_content_workflow)
params = And(Eq(catalog['parents'], intids.register(self.context)),
- Any(catalog['content_type'], CONTENT_TYPES.keys()) & \
+ Any(catalog['content_type'], CONTENT_TYPES.keys()) &
Or(Eq(catalog['role:owner'], self.request.principal.id),
Eq(catalog['role:contributor'], self.request.principal.id)),
Eq(catalog['workflow_state'], workflow.initial_state))
@@ -587,7 +581,8 @@
reverse=True)))
-@pagelet_config(name='my-preparations.html', context=IBaseSharedTool, layer=IPyAMSLayer, permission=VIEW_SYSTEM_PERMISSION)
+@pagelet_config(name='my-preparations.html', context=IBaseSharedTool, layer=IPyAMSLayer,
+ permission=VIEW_SYSTEM_PERMISSION)
class SharedToolPreparationsView(InnerAdminView, ContainerView):
"""Shared tool preparations view"""
@@ -641,7 +636,7 @@
catalog = get_utility(ICatalog)
workflow = get_utility(IWorkflow, name=self.context.shared_content_workflow)
params = And(Eq(catalog['parents'], intids.register(self.context)),
- Any(catalog['content_type'], CONTENT_TYPES.keys()) & \
+ Any(catalog['content_type'], CONTENT_TYPES.keys()) &
Or(Eq(catalog['role:owner'], self.request.principal.id),
Eq(catalog['role:contributor'], self.request.principal.id)),
Any(catalog['workflow_state'], workflow.waiting_states))
@@ -650,7 +645,8 @@
reverse=True)))
-@pagelet_config(name='my-submissions.html', context=IBaseSharedTool, layer=IPyAMSLayer, permission=VIEW_SYSTEM_PERMISSION)
+@pagelet_config(name='my-submissions.html', context=IBaseSharedTool, layer=IPyAMSLayer,
+ permission=VIEW_SYSTEM_PERMISSION)
class SharedToolSubmissionsView(InnerAdminView, ContainerView):
"""Shared tool submissions view"""
@@ -704,7 +700,7 @@
catalog = get_utility(ICatalog)
workflow = get_utility(IWorkflow, name=self.context.shared_content_workflow)
params = And(Eq(catalog['parents'], intids.register(self.context)),
- Any(catalog['content_type'], CONTENT_TYPES.keys()) & \
+ Any(catalog['content_type'], CONTENT_TYPES.keys()) &
Or(Eq(catalog['role:owner'], self.request.principal.id),
Eq(catalog['role:contributor'], self.request.principal.id)),
Any(catalog['workflow_state'], workflow.published_states))
@@ -713,7 +709,8 @@
reverse=True)))
-@pagelet_config(name='my-publications.html', context=IBaseSharedTool, layer=IPyAMSLayer, permission=VIEW_SYSTEM_PERMISSION)
+@pagelet_config(name='my-publications.html', context=IBaseSharedTool, layer=IPyAMSLayer,
+ permission=VIEW_SYSTEM_PERMISSION)
class SharedToolPublicationsView(InnerAdminView, ContainerView):
"""Shared tool publications view"""
@@ -767,7 +764,7 @@
catalog = get_utility(ICatalog)
workflow = get_utility(IWorkflow, name=self.context.shared_content_workflow)
params = And(Eq(catalog['parents'], intids.register(self.context)),
- Any(catalog['content_type'], CONTENT_TYPES.keys()) & \
+ Any(catalog['content_type'], CONTENT_TYPES.keys()) &
Or(Eq(catalog['role:owner'], self.request.principal.id),
Eq(catalog['role:contributor'], self.request.principal.id)),
Any(catalog['workflow_state'], workflow.retired_states))
@@ -832,7 +829,7 @@
principal_id = self.request.principal.id
workflow = get_utility(IWorkflow, name=self.context.shared_content_workflow)
params = And(Eq(catalog['parents'], intids.register(self.context)),
- Any(catalog['content_type'], CONTENT_TYPES.keys()) & \
+ Any(catalog['content_type'], CONTENT_TYPES.keys()) &
Or(Eq(catalog['role:owner'], principal_id),
Eq(catalog['role:contributor'], principal_id)),
Any(catalog['workflow_state'], workflow.archived_states))
@@ -923,7 +920,7 @@
catalog = get_utility(ICatalog)
workflow = get_utility(IWorkflow, name=self.context.shared_content_workflow)
params = And(Eq(catalog['parents'], intids.register(self.context)),
- Any(catalog['content_type'], CONTENT_TYPES.keys()) & \
+ Any(catalog['content_type'], CONTENT_TYPES.keys()) &
Any(catalog['workflow_state'], workflow.published_states))
yield from unique_iter(CatalogResultSet(CatalogQuery(catalog).query(params,
limit=50,
--- a/src/pyams_content/shared/common/zmi/header.py Thu Sep 06 18:10:04 2018 +0200
+++ b/src/pyams_content/shared/common/zmi/header.py Fri Oct 05 10:44:32 2018 +0200
@@ -12,10 +12,10 @@
__docformat__ = 'restructuredtext'
+from pyramid.decorator import reify
+from zope.interface import Interface
-# import standard library
-
-# import interfaces
+from pyams_content import _
from pyams_content.profile.interfaces import IAdminProfile
from pyams_content.shared.common.interfaces import IWfSharedContent, IBaseSharedTool
from pyams_form.interfaces.form import IInnerTabForm
@@ -24,10 +24,6 @@
from pyams_sequence.interfaces import ISequentialIntIds, ISequentialIdInfo
from pyams_skin.interfaces import IContextTitlePrefix
from pyams_skin.layer import IPyAMSLayer
-from pyams_workflow.interfaces import IWorkflowState, IWorkflow, IWorkflowStateLabel, IWorkflowVersions, \
- IWorkflowPublicationInfo
-
-# import packages
from pyams_skin.site import ContextTitlePrefixAdapter
from pyams_template.template import template_config
from pyams_utils.adapter import adapter_config
@@ -36,10 +32,8 @@
from pyams_utils.traversing import get_parent
from pyams_utils.url import absolute_url
from pyams_viewlet.viewlet import contentprovider_config
-from pyramid.decorator import reify
-from zope.interface import Interface
-
-from pyams_content import _
+from pyams_workflow.interfaces import IWorkflowState, IWorkflow, IWorkflowStateLabel, IWorkflowVersions, \
+ IWorkflowPublicationInfo
@adapter_config(context=(IWfSharedContent, IPyAMSLayer), provides=IContextTitlePrefix)
@@ -85,7 +79,8 @@
state_format = translate(_("{state} by {principal}"))
if state.state_urgency:
state_format = state_format.replace('{state}',
- '{state} <i class="fa fa-fw fa-exclamation-triangle txt-color-red"></i>');
+ '{state} '
+ '<i class="fa fa-fw fa-exclamation-triangle txt-color-red"></i>')
elif state.state in workflow.published_states:
pub_info = IWorkflowPublicationInfo(context, None)
if (pub_info is not None) and not pub_info.is_published():
@@ -93,7 +88,8 @@
'{{state}} <i class="fa fa-fw fa-hourglass-half font-xs '
'text-danger opacity-75 hint align-base" '
'data-ams-hint-offset="5" title="{0}"></i>'.format(
- translate(_("Content publication start date is not passed yet"))))
+ translate(_("Content publication start date is not passed "
+ "yet"))))
state_class = 'text-danger'
state_format = state_format.replace('{state}',
'<span class="{0}">{{state}}</span>'.format(state_class))
@@ -190,5 +186,6 @@
def update(self):
pass
- def render(self):
+ @staticmethod
+ def render():
return ''
--- a/src/pyams_content/shared/common/zmi/manager.py Thu Sep 06 18:10:04 2018 +0200
+++ b/src/pyams_content/shared/common/zmi/manager.py Fri Oct 05 10:44:32 2018 +0200
@@ -34,7 +34,7 @@
from pyams_form.help import FormHelp
from pyams_pagelet.pagelet import pagelet_config
from pyams_skin.page import DefaultPageHeaderAdapter
-from pyams_skin.viewlet.breadcrumb import BreadcrumbItem
+from pyams_skin.viewlet.breadcrumb import BreadcrumbAdminLayerItem
from pyams_skin.viewlet.menu import MenuItem
from pyams_utils.adapter import adapter_config, ContextRequestViewAdapter, ContextRequestAdapter
from pyams_viewlet.manager import viewletmanager_config
@@ -50,8 +50,8 @@
# Shared tools common adapters
#
-@adapter_config(context=(IBaseSharedTool, IPyAMSLayer), provides=IBreadcrumbItem)
-class SharedToolBreadcrumbAdapter(BreadcrumbItem):
+@adapter_config(context=(IBaseSharedTool, IAdminLayer), provides=IBreadcrumbItem)
+class SharedToolBreadcrumbAdapter(BreadcrumbAdminLayerItem):
"""Shared tool breadcrumb adapter"""
@property
--- a/src/pyams_content/shared/common/zmi/properties.py Thu Sep 06 18:10:04 2018 +0200
+++ b/src/pyams_content/shared/common/zmi/properties.py Fri Oct 05 10:44:32 2018 +0200
@@ -86,8 +86,12 @@
fields = field.Fields(IWfSharedContent).select('title', 'short_name', 'content_url',
'header', 'description', 'notepad')
fields['title'].widgetFactory = I18nSEOTextLineFieldWidget
+ if not self.context.handle_content_url:
+ fields = fields.omit('content_url')
if not self.context.handle_header:
fields = fields.omit('header')
+ if not self.context.handle_description:
+ fields = fields.omit('description')
return fields
def updateWidgets(self, prefix=None):
@@ -117,7 +121,8 @@
"""Automatically set short_name as title"""
data = event.data
data['short_name'] = data['title'].copy()
- data['content_url'] = generate_url(data['content_url'])
+ if 'content_url' in data:
+ data['content_url'] = generate_url(data['content_url'])
@adapter_config(context=(IWfSharedContent, IAdminLayer, SharedContentPropertiesEditForm), provides=IPageHeader)
--- a/src/pyams_content/shared/common/zmi/search.py Thu Sep 06 18:10:04 2018 +0200
+++ b/src/pyams_content/shared/common/zmi/search.py Fri Oct 05 10:44:32 2018 +0200
@@ -117,7 +117,7 @@
intids = get_utility(IIntIds)
catalog = get_utility(ICatalog)
params = Eq(catalog['parents'], intids.register(self.context)) & \
- Any(catalog['content_type'], CONTENT_TYPES.keys())
+ Any(catalog['content_type'], CONTENT_TYPES.keys())
query = self.request.params.get('query')
if query:
sequence = get_utility(ISequentialIntIds)
@@ -253,7 +253,7 @@
intids = get_utility(IIntIds)
catalog = get_utility(ICatalog)
params = Eq(catalog['parents'], intids.register(self.context)) & \
- Any(catalog['content_type'], CONTENT_TYPES.keys())
+ Any(catalog['content_type'], CONTENT_TYPES.keys())
query = data.get('query')
if query:
sequence = get_utility(ISequentialIntIds)
--- a/src/pyams_content/shared/common/zmi/security.py Thu Sep 06 18:10:04 2018 +0200
+++ b/src/pyams_content/shared/common/zmi/security.py Fri Oct 05 10:44:32 2018 +0200
@@ -164,7 +164,8 @@
@property
def legend(self):
- return self.request.localizer.translate(_("Edit contributor restrictions for « {0} »")).format(self.principal.title)
+ return self.request.localizer.translate(_("Edit contributor restrictions for « {0} »")).format(
+ self.principal.title)
@cached_property
def interface(self):
@@ -252,7 +253,8 @@
modal_target = True
-@adapter_config(name='name', context=(IBaseSharedTool, IAdminLayer, SharedToolManagersRestrictionsTable), provides=IColumn)
+@adapter_config(name='name', context=(IBaseSharedTool, IAdminLayer, SharedToolManagersRestrictionsTable),
+ provides=IColumn)
class SharedToolManagerRestrictionsNameColumn(I18nColumn, GetAttrColumn):
"""Shared tool manager restrictions name column"""
--- a/src/pyams_content/shared/common/zmi/summary.py Thu Sep 06 18:10:04 2018 +0200
+++ b/src/pyams_content/shared/common/zmi/summary.py Fri Oct 05 10:44:32 2018 +0200
@@ -9,39 +9,38 @@
# WARRANTIES OF TITLE, MERCHANTABILITY, AGAINST INFRINGEMENT, AND FITNESS
# FOR A PARTICULAR PURPOSE.
#
-from pyams_content.shared.common.interfaces.types import IWfTypedSharedContent
-from pyams_sequence.interfaces import ISequentialIdInfo
__docformat__ = 'restructuredtext'
# import standard library
+from z3c.form import field
+from z3c.form.interfaces import DISPLAY_MODE, IDataConverter
+from zope.interface import implementer, Interface
+
+from pyams_content import _
# import interfaces
from pyams_content.shared.common.interfaces import IWfSharedContent, IWfSharedContentRoles, IBaseSharedTool
+from pyams_content.shared.common.interfaces.types import IWfTypedSharedContent
+# import packages
+from pyams_content.shared.common.zmi.header import SharedContentHeaderContentProvider
from pyams_form.interfaces.form import IWidgetForm, IInnerTabForm, IInnerSubForm
+from pyams_pagelet.pagelet import pagelet_config
+from pyams_security.utility import get_principal
+from pyams_sequence.interfaces import ISequentialIdInfo
from pyams_skin.interfaces import IInnerPage
from pyams_skin.layer import IPyAMSLayer
-from pyams_utils.interfaces import VIEW_SYSTEM_PERMISSION
-from pyams_workflow.interfaces import IWorkflowState, IWorkflow, IWorkflowPublicationInfo, IWorkflowStateHistoryItem, \
- IWorkflowVersions
-from z3c.form.interfaces import DISPLAY_MODE, IDataConverter
-
-# import packages
-from pyams_content.shared.common.zmi.header import SharedContentHeaderContentProvider
-from pyams_pagelet.pagelet import pagelet_config
-from pyams_security.utility import get_principal
from pyams_utils.adapter import adapter_config
from pyams_utils.date import format_datetime
+from pyams_utils.interfaces import VIEW_SYSTEM_PERMISSION
from pyams_utils.timezone import tztime
from pyams_utils.traversing import get_parent
from pyams_utils.url import absolute_url
from pyams_viewlet.viewlet import contentprovider_config
+from pyams_workflow.interfaces import IWorkflowState, IWorkflow, IWorkflowPublicationInfo, IWorkflowStateHistoryItem, \
+ IWorkflowVersions
from pyams_zmi.form import AdminDisplayForm, InnerAdminDisplayForm, InnerAdminAddForm
-from z3c.form import field
-from zope.interface import implementer, Interface
-
-from pyams_content import _
@pagelet_config(name='summary.html', context=IWfSharedContent, layer=IPyAMSLayer, permission=VIEW_SYSTEM_PERMISSION)
@@ -104,7 +103,7 @@
return InnerAdminDisplayForm.__new__(cls)
fields = field.Fields(IWorkflowState).select('state', 'state_urgency') + \
- field.Fields(IWorkflowStateHistoryItem).select('comment')
+ field.Fields(IWorkflowStateHistoryItem).select('comment')
def updateWidgets(self, prefix=None):
super(SharedContentWorkflowWaitingState, self).updateWidgets(prefix)
@@ -155,10 +154,10 @@
weight = 30
fields = field.Fields(IWorkflowState).select('version_id', 'state') + \
- field.Fields(IWfSharedContent).select('creation_label') + \
- field.Fields(IWfSharedContentRoles).select('owner') + \
- field.Fields(IWfSharedContent).select('last_update_label') + \
- field.Fields(IWfSharedContent).select('modifiers')
+ field.Fields(IWfSharedContent).select('creation_label') + \
+ field.Fields(IWfSharedContentRoles).select('owner') + \
+ field.Fields(IWfSharedContent).select('last_update_label') + \
+ field.Fields(IWfSharedContent).select('modifiers')
def updateWidgets(self, prefix=None):
super(SharedContentWorkflowVersionSummary, self).updateWidgets(prefix)
@@ -184,7 +183,7 @@
legend = _("Content history")
fields = field.Fields(IWorkflowPublicationInfo).select('first_publication_date') + \
- field.Fields(IWfSharedContent).select('first_owner')
+ field.Fields(IWfSharedContent).select('first_owner')
weight = 40
--- a/src/pyams_content/shared/common/zmi/types.py Thu Sep 06 18:10:04 2018 +0200
+++ b/src/pyams_content/shared/common/zmi/types.py Fri Oct 05 10:44:32 2018 +0200
@@ -10,10 +10,9 @@
# FOR A PARTICULAR PURPOSE.
#
+
__docformat__ = 'restructuredtext'
-
-# import standard library
import json
from pyramid.decorator import reify
@@ -22,41 +21,41 @@
from pyramid.view import view_config
from z3c.form import field
from z3c.form.interfaces import DISPLAY_MODE, IDataExtractedEvent
-from z3c.table.interfaces import IValues, IColumn
-from zope.interface import Invalid
+from z3c.table.interfaces import IColumn, IValues
+from zope.interface import Invalid, implementer
from pyams_content import _
-# import interfaces
-from pyams_content.interfaces import MANAGE_TOOL_PERMISSION, MANAGE_CONTENT_PERMISSION
-# import packages
+from pyams_content.interfaces import MANAGE_CONTENT_PERMISSION, MANAGE_TOOL_PERMISSION
from pyams_content.reference.pictograms.zmi.widget import PictogramSelectFieldWidget
-from pyams_content.shared.common.interfaces.types import ITypedSharedTool, ITypedDataManager, \
- IBaseDataType, IDataType, ISubType, IWfTypedSharedContent
+from pyams_content.shared.common.interfaces.types import IBaseDataType, IDataType, ISubType, ITypedDataManager, \
+ ITypedSharedTool, IWfTypedSharedContent
from pyams_content.shared.common.types import DataType, SubType
from pyams_content.shared.common.zmi import SharedContentAddForm
from pyams_content.shared.common.zmi.properties import SharedContentPropertiesEditForm
from pyams_content.skin import pyams_content
from pyams_form.form import AJAXAddForm, ajax_config
+from pyams_form.interfaces.form import IWidgetForm
from pyams_form.security import ProtectedFormObjectMixin
from pyams_i18n.interfaces import II18n
from pyams_i18n.widget import I18nSEOTextLineFieldWidget
from pyams_pagelet.pagelet import pagelet_config
from pyams_skin.container import delete_container_element
from pyams_skin.event import get_json_table_refresh_event
+from pyams_skin.interfaces import IInnerPage
from pyams_skin.interfaces.container import ITableElementName
from pyams_skin.interfaces.viewlet import IWidgetTitleViewletManager
from pyams_skin.layer import IPyAMSLayer
-from pyams_skin.table import BaseTable, SorterColumn, TrashColumn, NameColumn, ActionColumn
+from pyams_skin.table import ActionColumn, BaseTable, NameColumn, SorterColumn, TrashColumn
from pyams_skin.viewlet.menu import MenuItem
from pyams_skin.viewlet.toolbar import ToolbarAction
-from pyams_utils.adapter import adapter_config, ContextRequestViewAdapter, ContextRequestAdapter
+from pyams_utils.adapter import ContextRequestAdapter, ContextRequestViewAdapter, adapter_config
from pyams_utils.fanstatic import get_resource_path
from pyams_utils.traversing import get_parent
from pyams_utils.unicode import translate_string
from pyams_utils.url import absolute_url
from pyams_viewlet.interfaces import IViewletManager
from pyams_viewlet.viewlet import viewlet_config
-from pyams_zmi.form import AdminDialogAddForm, AdminDialogEditForm
+from pyams_zmi.form import AdminDialogAddForm, AdminDialogEditForm, AdminEditForm
from pyams_zmi.interfaces.menu import IPropertiesMenu
from pyams_zmi.layer import IAdminLayer
from pyams_zmi.view import ContainerAdminView
@@ -577,9 +576,43 @@
permission=MANAGE_CONTENT_PERMISSION)
@ajax_config(name='properties.json', context=IWfTypedSharedContent, layer=IPyAMSLayer,
permission=MANAGE_CONTENT_PERMISSION)
-class TypedSharedContentProperteisEditForm(SharedContentPropertiesEditForm):
+class TypedSharedContentPropertiesEditForm(SharedContentPropertiesEditForm):
"""Typed shared content properties edit form"""
- fields = field.Fields(IWfTypedSharedContent).select('title', 'short_name', 'content_url',
- 'data_type', 'description', 'notepad')
- fields['title'].widgetFactory = I18nSEOTextLineFieldWidget
+ @property
+ def fields(self):
+ fields = field.Fields(IWfTypedSharedContent).select('title', 'short_name', 'content_url',
+ 'data_type', 'header', 'description', 'notepad')
+ fields['title'].widgetFactory = I18nSEOTextLineFieldWidget
+ if not self.context.handle_content_url:
+ fields = fields.omit('content_url')
+ if not self.context.handle_header:
+ fields = fields.omit('header')
+ if not self.context.handle_description:
+ fields = fields.omit('description')
+ return fields
+
+
+#
+# Typed shared content custom fields edit form
+#
+
+@implementer(IWidgetForm, IInnerPage)
+class TypedSharedContentTypeFieldsEditForm(AdminEditForm):
+ """Typed shared content type fields properties edit form"""
+
+ prefix = 'type_properties.'
+
+ @property
+ def legend(self):
+ translate = self.request.localizer.translate
+ data_type = self.context.get_data_type()
+ return translate(_("Custom properties for type « {0} »")).format(
+ II18n(data_type).query_attribute('label', request=self.request))
+
+ @property
+ def fields(self):
+ data_type = self.context.get_data_type()
+ if data_type is not None:
+ manager = get_parent(self.context, ITypedSharedTool)
+ return field.Fields(manager.shared_content_types_fields).select(*data_type.field_names)
--- a/src/pyams_content/shared/common/zmi/workflow.py Thu Sep 06 18:10:04 2018 +0200
+++ b/src/pyams_content/shared/common/zmi/workflow.py Fri Oct 05 10:44:32 2018 +0200
@@ -141,9 +141,9 @@
if state.version_id > 1:
pub_fields += ('displayed_publication_date', )
return field.Fields(IWorkflowTransitionInfo) + \
- field.Fields(IWorkflowPublicationInfo).select(*pub_fields) + \
- field.Fields(IWorkflowRequestUrgencyInfo) + \
- field.Fields(IWorkflowCommentInfo)
+ field.Fields(IWorkflowPublicationInfo).select(*pub_fields) + \
+ field.Fields(IWorkflowRequestUrgencyInfo) + \
+ field.Fields(IWorkflowCommentInfo)
buttons = button.Buttons(IPublicationRequestButtons)
@@ -322,8 +322,8 @@
if state.version_id > 1:
pub_fields += ('displayed_publication_date', )
return field.Fields(IWorkflowTransitionInfo) + \
- field.Fields(IWorkflowPublicationInfo).select(*pub_fields) + \
- field.Fields(IWorkflowCommentInfo)
+ field.Fields(IWorkflowPublicationInfo).select(*pub_fields) + \
+ field.Fields(IWorkflowCommentInfo)
buttons = button.Buttons(IPublicationButtons)
@@ -402,8 +402,8 @@
"""Shared content publication request refuse form"""
fields = field.Fields(IWorkflowTransitionInfo) + \
- field.Fields(IWorkflowRequestUrgencyInfo) + \
- field.Fields(IWorkflowCommentInfo)
+ field.Fields(IWorkflowRequestUrgencyInfo) + \
+ field.Fields(IWorkflowCommentInfo)
buttons = button.Buttons(IPublicationRetireRequestButtons)
def updateWidgets(self, prefix=None):
@@ -539,8 +539,8 @@
"""Shared content publication request archive form"""
fields = field.Fields(IWorkflowTransitionInfo) + \
- field.Fields(IWorkflowRequestUrgencyInfo) + \
- field.Fields(IWorkflowCommentInfo)
+ field.Fields(IWorkflowRequestUrgencyInfo) + \
+ field.Fields(IWorkflowCommentInfo)
buttons = button.Buttons(IPublicationArchiveRequestButtons)
@@ -715,6 +715,8 @@
buttons = button.Buttons(ISharedContentDeleteButtons)
+ __target = None
+
@property
def fields(self):
fields = super(SharedContentDeleteForm, self).fields
--- a/src/pyams_content/shared/form/manager.py Thu Sep 06 18:10:04 2018 +0200
+++ b/src/pyams_content/shared/form/manager.py Fri Oct 05 10:44:32 2018 +0200
@@ -18,7 +18,6 @@
# import interfaces
from pyams_content.shared.common.interfaces import ISharedContentFactory
from pyams_content.shared.form.interfaces import IFormsManager, FORM_CONTENT_TYPE, IFormsManagerFactory
-from pyams_portal.interfaces import IPortalContext
from zope.component.interfaces import ISite
from zope.lifecycleevent.interfaces import IObjectAddedEvent
--- a/src/pyams_content/shared/imagemap/__init__.py Thu Sep 06 18:10:04 2018 +0200
+++ b/src/pyams_content/shared/imagemap/__init__.py Fri Oct 05 10:44:32 2018 +0200
@@ -12,8 +12,6 @@
__docformat__ = 'restructuredtext'
-
-# import standard library
from persistent import Persistent
from persistent.mapping import PersistentMapping
from pyramid.threadlocal import get_current_registry
@@ -27,21 +25,19 @@
from zope.traversing.interfaces import ITraversable
from pyams_content import _
-# import interfaces
from pyams_content.component.association.interfaces import IAssociationContainer
from pyams_content.component.extfile.interfaces import IExtFileContainerTarget
from pyams_content.component.links.interfaces import ILinkContainerTarget
-from pyams_content.features.checker.interfaces import IContentChecker, MISSING_VALUE, MISSING_LANG_VALUE, ERROR_VALUE
+from pyams_content.features.checker.interfaces import ERROR_VALUE, IContentChecker, MISSING_LANG_VALUE, MISSING_VALUE
from pyams_content.features.preview.interfaces import IPreviewTarget
from pyams_content.features.review.interfaces import IReviewTarget
-# import packages
-from pyams_content.shared.common import WfSharedContent, register_content_type, SharedContent, WfSharedContentChecker, \
- IWfSharedContentFactory
-from pyams_content.shared.imagemap.interfaces import IMAGEMAP_CONTENT_TYPE, IMAGEMAP_CONTENT_NAME, \
- IWfImageMap, IImageMap, IImageMapArea, IWfImageMapFactory
+from pyams_content.shared.common import SharedContent, WfSharedContent, WfSharedContentChecker, register_content_type
+from pyams_content.shared.common.interfaces import IWfSharedContentFactory
+from pyams_content.shared.imagemap.interfaces import IImageMap, IImageMapArea, IMAGEMAP_CONTENT_NAME, \
+ IMAGEMAP_CONTENT_TYPE, IWfImageMap, IWfImageMapFactory
from pyams_i18n.interfaces import II18n, II18nManager
from pyams_i18n.property import I18nFileProperty
-from pyams_utils.adapter import adapter_config, ContextAdapter
+from pyams_utils.adapter import ContextAdapter, adapter_config
@implementer(IImageMapArea)
@@ -61,7 +57,9 @@
content_type = IMAGEMAP_CONTENT_TYPE
content_name = IMAGEMAP_CONTENT_NAME
+ handle_content_url = False
handle_header = False
+ handle_description = False
_image = I18nFileProperty(IWfImageMap['image'])
areas = FieldProperty(IWfImageMap['areas'])
--- a/src/pyams_content/shared/logo/__init__.py Thu Sep 06 18:10:04 2018 +0200
+++ b/src/pyams_content/shared/logo/__init__.py Fri Oct 05 10:44:32 2018 +0200
@@ -20,8 +20,9 @@
from pyams_content import _
# import interfaces
+from pyams_content.component.theme.interfaces import IThemesTarget
from pyams_content.features.checker.interfaces import IContentChecker, MISSING_VALUE
-from pyams_content.features.review import IReviewTarget
+from pyams_content.features.review.interfaces import IReviewTarget
# import packages
from pyams_content.shared.common import WfSharedContent, register_content_type, SharedContent, WfSharedContentChecker, \
IWfSharedContentFactory
@@ -30,18 +31,21 @@
from pyams_utils.adapter import adapter_config
-@implementer(IWfLogo, IReviewTarget)
+@implementer(IWfLogo, IThemesTarget, IReviewTarget)
class WfLogo(WfSharedContent):
"""Logo persistent class"""
content_type = LOGO_CONTENT_TYPE
content_name = LOGO_CONTENT_NAME
+ handle_content_url = False
handle_header = False
+ handle_description = False
+ acronym = FieldProperty(IWfLogo['acronym'])
+ url = FieldProperty(IWfLogo['url'])
image = FileProperty(IWfLogo['image'])
monochrome_image = FileProperty(IWfLogo['monochrome_image'])
- url = FieldProperty(IWfLogo['url'])
register_content_type(WfLogo)
--- a/src/pyams_content/shared/logo/interfaces/__init__.py Thu Sep 06 18:10:04 2018 +0200
+++ b/src/pyams_content/shared/logo/interfaces/__init__.py Fri Oct 05 10:44:32 2018 +0200
@@ -15,19 +15,18 @@
# import standard library
+from zope.interface import Interface
+from zope.schema import URI, Choice, TextLine
+
+from pyams_content import _
# import interfaces
from pyams_content.component.paragraph import IBaseParagraph
from pyams_content.shared.common.interfaces import ISharedTool, IWfSharedContent, ISharedContent
-from pyams_sequence.interfaces import IInternalReferencesList
-
# import packages
from pyams_file.schema import ImageField
+from pyams_i18n.schema import I18nTextLineField
+from pyams_sequence.interfaces import IInternalReferencesList
from pyams_sequence.schema import InternalReferencesListField
-from zope.interface import Interface
-from zope.schema import URI, Choice
-
-from pyams_content import _
-
LOGO_CONTENT_TYPE = 'logo'
LOGO_CONTENT_NAME = _("Logo")
@@ -44,6 +43,18 @@
class IWfLogo(IWfSharedContent):
"""Logo interface"""
+ title = I18nTextLineField(title=_("Title"),
+ description=_("Full name of logo organization"),
+ required=True)
+
+ acronym = TextLine(title=_("Acronym"),
+ description=_("Matching logo acronym, without spaces or separators"),
+ required=False)
+
+ url = URI(title=_("Target URL"),
+ description=_("URL used to access external resource"),
+ required=False)
+
image = ImageField(title=_("Image (colored)"),
description=_("Image data"),
required=True)
@@ -53,10 +64,6 @@
"presentation templates"),
required=False)
- url = URI(title=_("Target URL"),
- description=_("URL used to access external resource"),
- required=False)
-
class IWfLogoFactory(Interface):
"""Logo factory interface"""
--- a/src/pyams_content/shared/logo/zmi/properties.py Thu Sep 06 18:10:04 2018 +0200
+++ b/src/pyams_content/shared/logo/zmi/properties.py Fri Oct 05 10:44:32 2018 +0200
@@ -9,6 +9,9 @@
# WARRANTIES OF TITLE, MERCHANTABILITY, AGAINST INFRINGEMENT, AND FITNESS
# FOR A PARTICULAR PURPOSE.
#
+from pyams_content.interfaces import MANAGE_CONTENT_PERMISSION
+from pyams_form.form import ajax_config
+from pyams_pagelet.pagelet import pagelet_config
__docformat__ = 'restructuredtext'
@@ -17,11 +20,13 @@
# import interfaces
from pyams_content.shared.logo import IWfLogo
-from pyams_form.interfaces.form import IInnerSubForm
+from pyams_form.interfaces.form import IInnerSubForm, IInnerTabForm
+from pyams_sequence.interfaces import ISequentialIdInfo
from pyams_skin.layer import IPyAMSLayer
# import packages
from pyams_content.shared.common.zmi.properties import SharedContentPropertiesEditForm
+from pyams_content.shared.common.zmi.summary import SharedContentSummaryForm, SharedContentDublinCoreSummary
from pyams_utils.adapter import adapter_config
from pyams_zmi.form import InnerAdminEditForm
from z3c.form import field
@@ -29,6 +34,26 @@
from pyams_content import _
+@adapter_config(name='dublincore-summary',
+ context=(IWfLogo, IPyAMSLayer, SharedContentSummaryForm),
+ provides=IInnerTabForm)
+class LogoDublinCoreSummary(SharedContentDublinCoreSummary):
+ """Shared content DublinCore summary"""
+
+ fields = field.Fields(IWfLogo).select('title', 'acronym') + \
+ field.Fields(ISequentialIdInfo).select('public_oid')
+
+
+@pagelet_config(name='properties.html', context=IWfLogo, layer=IPyAMSLayer,
+ permission=MANAGE_CONTENT_PERMISSION)
+@ajax_config(name='properties.json', context=IWfLogo, layer=IPyAMSLayer,
+ permission=MANAGE_CONTENT_PERMISSION)
+class LogoMainPropertiesEditForm(SharedContentPropertiesEditForm):
+ """Logo properties edit form"""
+
+ fields = field.Fields(IWfLogo).select('title', 'short_name', 'notepad')
+
+
@adapter_config(name='logo-settings',
context=(IWfLogo, IPyAMSLayer, SharedContentPropertiesEditForm),
provides=IInnerSubForm)
@@ -40,7 +65,7 @@
legend = _("Main logo settings")
fieldset_class = 'bordered no-x-margin margin-y-10'
- fields = field.Fields(IWfLogo).select('image', 'monochrome_image', 'url')
+ fields = field.Fields(IWfLogo).select('acronym', 'url', 'image', 'monochrome_image')
weight = 1
def get_ajax_output(self, changes):
--- a/src/pyams_content/shared/news/__init__.py Thu Sep 06 18:10:04 2018 +0200
+++ b/src/pyams_content/shared/news/__init__.py Fri Oct 05 10:44:32 2018 +0200
@@ -15,20 +15,20 @@
# import standard library
+from zope.interface import implementer, provider
+
# import interfaces
-from pyams_content.component.illustration import IIllustrationTarget, ILinkIllustrationTarget
+from pyams_content.component.illustration.interfaces import IIllustrationTarget, ILinkIllustrationTarget
from pyams_content.component.paragraph.interfaces import IParagraphContainerTarget
from pyams_content.component.theme.interfaces import ITagsTarget, IThemesTarget
from pyams_content.features.preview.interfaces import IPreviewTarget
from pyams_content.features.review.interfaces import IReviewTarget
+# import packages
+from pyams_content.shared.common import SharedContent, WfSharedContent, register_content_type
from pyams_content.shared.common.interfaces import IWfSharedContentFactory
from pyams_content.shared.news.interfaces import INewsEvent, IWfNewsEvent, NEWS_CONTENT_TYPE, NEWS_CONTENT_NAME, \
IWfNewsEventFactory
-
-# import packages
-from pyams_content.shared.common import SharedContent, WfSharedContent, register_content_type
from pyams_utils.adapter import adapter_config
-from zope.interface import implementer, provider
@implementer(IWfNewsEvent, IIllustrationTarget, ILinkIllustrationTarget, IParagraphContainerTarget,
--- a/src/pyams_content/shared/site/__init__.py Thu Sep 06 18:10:04 2018 +0200
+++ b/src/pyams_content/shared/site/__init__.py Fri Oct 05 10:44:32 2018 +0200
@@ -12,42 +12,38 @@
__docformat__ = 'restructuredtext'
+from zope.interface import implementer, provider
-# import standard library
-
-# import interfaces
from pyams_content.component.illustration import IIllustrationTarget, ILinkIllustrationTarget
from pyams_content.component.paragraph.interfaces import IParagraphContainerTarget
from pyams_content.component.theme.interfaces import ITagsTarget, IThemesTarget
from pyams_content.features.preview.interfaces import IPreviewTarget
from pyams_content.features.review.interfaces import IReviewTarget
-from pyams_content.shared.site.interfaces import ITopic, IWfTopic, TOPIC_CONTENT_NAME, \
- TOPIC_CONTENT_TYPE, IWfTopicFactory
-from pyams_workflow.interfaces import IWorkflow, IWorkflowVersions, IWorkflowState
-
-# import packages
-from pyams_content.shared.common import SharedContent, WfSharedContent, register_content_type, IWfSharedContentFactory
+from pyams_content.shared.common import IWfSharedContentFactory, SharedContent, WfSharedContent, register_content_type
+from pyams_content.shared.site.interfaces import ISiteTopic, IWfSiteTopic, IWfSiteTopicFactory, SITE_TOPIC_CONTENT_NAME, \
+ SITE_TOPIC_CONTENT_TYPE
from pyams_utils.adapter import adapter_config
-from zope.interface import implementer, provider
+from pyams_workflow.interfaces import IWorkflow, IWorkflowState, IWorkflowVersions
-@implementer(IWfTopic, IIllustrationTarget, ILinkIllustrationTarget, IParagraphContainerTarget,
+@implementer(IWfSiteTopic, IIllustrationTarget, ILinkIllustrationTarget, IParagraphContainerTarget,
ITagsTarget, IThemesTarget, IPreviewTarget, IReviewTarget)
-class WfTopic(WfSharedContent):
- """Base topic"""
+class WfSiteTopic(WfSharedContent):
+ """Base site topic"""
- content_type = TOPIC_CONTENT_TYPE
- content_name = TOPIC_CONTENT_NAME
-
-register_content_type(WfTopic)
+ content_type = SITE_TOPIC_CONTENT_TYPE
+ content_name = SITE_TOPIC_CONTENT_NAME
-@provider(IWfTopicFactory)
-@implementer(ITopic)
-class Topic(SharedContent):
- """WOrkflow managed topic class"""
+register_content_type(WfSiteTopic)
+
- content_name = TOPIC_CONTENT_NAME
+@provider(IWfSiteTopicFactory)
+@implementer(ISiteTopic)
+class SiteTopic(SharedContent):
+ """Workflow managed topic class"""
+
+ content_name = SITE_TOPIC_CONTENT_NAME
def is_deletable(self):
workflow = IWorkflow(self)
@@ -57,6 +53,6 @@
return True
-@adapter_config(context=IWfTopicFactory, provides=IWfSharedContentFactory)
-def topic_content_factory(context):
- return WfTopic
+@adapter_config(context=IWfSiteTopicFactory, provides=IWfSharedContentFactory)
+def site_topic_content_factory(context):
+ return WfSiteTopic
--- a/src/pyams_content/shared/site/container.py Thu Sep 06 18:10:04 2018 +0200
+++ b/src/pyams_content/shared/site/container.py Fri Oct 05 10:44:32 2018 +0200
@@ -16,19 +16,19 @@
# import standard library
import json
+from pyramid.location import lineage
+from zope.interface import implementer
+from zope.intid.interfaces import IIntIds
+
# import interfaces
from pyams_content.shared.common.interfaces import ISharedContentFactory
+# import packages
+from pyams_content.shared.site import SiteTopic
from pyams_content.shared.site.interfaces import ISiteContainer, ISiteFolder
from pyams_i18n.interfaces import II18n
-from zope.intid.interfaces import IIntIds
-
-# import packages
-from pyams_content.shared.site import Topic
from pyams_utils.adapter import adapter_config
from pyams_utils.registry import get_utility
from pyams_utils.request import query_request
-from pyramid.location import lineage
-from zope.interface import implementer
@implementer(ISiteContainer)
@@ -89,4 +89,4 @@
@adapter_config(context=ISiteContainer, provides=ISharedContentFactory)
def site_container_topic_factory(context):
- return Topic
+ return SiteTopic
--- a/src/pyams_content/shared/site/folder.py Thu Sep 06 18:10:04 2018 +0200
+++ b/src/pyams_content/shared/site/folder.py Fri Oct 05 10:44:32 2018 +0200
@@ -12,35 +12,28 @@
__docformat__ = 'restructuredtext'
+from zope.container.ordered import OrderedContainer
+from zope.interface import implementer
+from zope.intid.interfaces import IIntIds
+from zope.schema.fieldproperty import FieldProperty
+from zope.schema.vocabulary import SimpleVocabulary, SimpleTerm
-# import standard library
-
-# import interfaces
from pyams_content.component.illustration import IIllustrationTarget, ILinkIllustrationTarget
from pyams_content.features.preview.interfaces import IPreviewTarget
from pyams_content.interfaces import MANAGE_SITE_PERMISSION
+from pyams_content.shared.common.manager import BaseSharedTool
+from pyams_content.shared.site.container import SiteContainerMixin
from pyams_content.shared.site.interfaces import ISiteFolder, ISiteManager, ISiteFolderRoles
from pyams_form.interfaces.form import IFormContextPermissionChecker
from pyams_i18n.interfaces import II18n
from pyams_portal.interfaces import IPortalContext
from pyams_security.interfaces import IDefaultProtectionPolicy
-from zope.intid.interfaces import IIntIds
-
-# import packages
-from pyams_content.shared.common.manager import BaseSharedTool
-from pyams_content.shared.site.container import SiteContainerMixin
from pyams_utils.adapter import adapter_config, ContextAdapter
from pyams_utils.container import find_objects_providing
from pyams_utils.registry import get_local_registry
from pyams_utils.request import query_request
from pyams_utils.traversing import get_parent
from pyams_utils.vocabulary import vocabulary_config
-from zope.container.ordered import OrderedContainer
-from zope.interface import implementer
-from zope.schema.fieldproperty import FieldProperty
-from zope.schema.vocabulary import SimpleVocabulary, SimpleTerm
-
-from pyams_content import _
from pyams_content import _
@@ -53,6 +46,7 @@
roles_interface = ISiteFolderRoles
heading = FieldProperty(ISiteFolder['heading'])
+ description = FieldProperty(ISiteFolder['description'])
notepad = FieldProperty(ISiteFolder['notepad'])
visible_in_list = FieldProperty(ISiteFolder['visible_in_list'])
--- a/src/pyams_content/shared/site/interfaces/__init__.py Thu Sep 06 18:10:04 2018 +0200
+++ b/src/pyams_content/shared/site/interfaces/__init__.py Fri Oct 05 10:44:32 2018 +0200
@@ -12,27 +12,23 @@
__docformat__ = 'restructuredtext'
-
-# import standard library
from collections import OrderedDict
-# import interfaces
-from pyams_content.interfaces import IBaseContent
-from pyams_sequence.interfaces import ISequentialIdTarget, IInternalReference
-from pyams_workflow.interfaces import IWorkflowPublicationSupport
from zope.annotation.interfaces import IAttributeAnnotatable
-from zope.container.interfaces import IContainer, IContained
-
-# import packages
-from pyams_content.shared.common.interfaces import ISharedSite, ISharedContent, \
- IBaseContentManagerRoles, IBaseSharedTool, IDeletableElement, IWfSharedContentPortalContext
-from pyams_i18n.schema import I18nTextLineField, I18nTextField
from zope.container.constraints import containers, contains
-from zope.interface import Interface, Attribute
-from zope.schema import Text, Bool, Choice
-from zope.schema.vocabulary import SimpleVocabulary, SimpleTerm
+from zope.container.interfaces import IContained, IContainer
+from zope.interface import Attribute, Interface
+from zope.schema import Bool, Choice, Text
+from zope.schema.vocabulary import SimpleTerm, SimpleVocabulary
from pyams_content import _
+from pyams_content.interfaces import IBaseContent
+from pyams_content.shared.common.interfaces import IBaseContentManagerRoles, IBaseSharedTool, IDeletableElement, \
+ ISharedSite
+from pyams_content.shared.topic.interfaces import ITopic, IWfTopic, IWfTopicFactory
+from pyams_i18n.schema import I18nTextField, I18nTextLineField
+from pyams_sequence.interfaces import IInternalReference, ISequentialIdTarget
+from pyams_workflow.interfaces import IWorkflowPublicationSupport
FOLDER_REDIRECT_DISPLAY_MODE = 'redirect'
@@ -73,6 +69,12 @@
description=_("Heading displayed according to presentation template"),
required=False)
+ description = I18nTextField(title=_("Meta-description"),
+ description=_("The folder'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; if description is empty, content's header will be used."),
+ required=False)
+
notepad = Text(title=_("Notepad"),
description=_("Internal information to be known about this content"),
required=False)
@@ -112,25 +114,35 @@
topic_content_type = Attribute("Topic content type")
topic_content_factory = Attribute("Topic content factory")
+ description = I18nTextField(title=_("Meta-description"),
+ description=_("The site'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; if description is empty, content's header will be used."),
+ required=False)
+
+ notepad = Text(title=_("Notepad"),
+ description=_("Internal information to be known about this content"),
+ required=False)
+
class ISiteManagerFactory(Interface):
"""Site manager factory interface"""
-TOPIC_CONTENT_TYPE = 'topic'
-TOPIC_CONTENT_NAME = _("Topic")
+SITE_TOPIC_CONTENT_TYPE = 'site-topic'
+SITE_TOPIC_CONTENT_NAME = _("Site topic")
-class IWfTopic(IWfSharedContentPortalContext):
- """Topic interface"""
+class IWfSiteTopic(IWfTopic):
+ """Site topic interface"""
-class IWfTopicFactory(Interface):
+class IWfSiteTopicFactory(IWfTopicFactory):
"""Topic factory interface"""
-class ITopic(ISharedContent, ISiteElement):
- """Workflow managed topic interface"""
+class ISiteTopic(ITopic, ISiteElement):
+ """Workflow managed site topic interface"""
class IContentLink(ISiteElement, IInternalReference, IAttributeAnnotatable):
--- a/src/pyams_content/shared/site/link.py Thu Sep 06 18:10:04 2018 +0200
+++ b/src/pyams_content/shared/site/link.py Fri Oct 05 10:44:32 2018 +0200
@@ -12,26 +12,20 @@
__docformat__ = 'restructuredtext'
-
-# import standard library
-
-# import interfaces
-from pyams_content.shared.site.interfaces import IContentLink
-from pyams_utils.interfaces.url import IRelativeURL
-from pyams_workflow.interfaces import IWorkflow, IWorkflowVersion, IWorkflowVersions, IWorkflowPublicationInfo, \
- IWorkflowState
-
-# import packages
from persistent import Persistent
-from pyams_sequence.reference import get_reference_target
-from pyams_skin.layer import IPyAMSUserLayer
-from pyams_utils.adapter import adapter_config
-from pyams_utils.zodb import volatile_property
from zope.container.contained import Contained
from zope.interface import implementer
from zope.schema.fieldproperty import FieldProperty
from pyams_content import _
+from pyams_content.shared.site.interfaces import IContentLink
+from pyams_sequence.reference import get_reference_target
+from pyams_skin.layer import IPyAMSUserLayer
+from pyams_utils.adapter import adapter_config
+from pyams_utils.interfaces.url import IRelativeURL
+from pyams_utils.zodb import volatile_property
+from pyams_workflow.interfaces import IWorkflow, IWorkflowVersion, IWorkflowVersions, IWorkflowPublicationInfo, \
+ IWorkflowState
@implementer(IContentLink)
@@ -48,7 +42,8 @@
content_name = _("Content link")
- def is_deletable(self):
+ @staticmethod
+ def is_deletable():
return True
@volatile_property
--- a/src/pyams_content/shared/site/manager.py Thu Sep 06 18:10:04 2018 +0200
+++ b/src/pyams_content/shared/site/manager.py Fri Oct 05 10:44:32 2018 +0200
@@ -12,10 +12,14 @@
__docformat__ = 'restructuredtext'
+from pyramid.events import subscriber
+from zope.component.interfaces import ISite
+from zope.container.ordered import OrderedContainer
+from zope.interface import implementer
+from zope.lifecycleevent.interfaces import IObjectAddedEvent, IObjectRemovedEvent
+from zope.schema.fieldproperty import FieldProperty
+from zope.schema.vocabulary import SimpleTerm, SimpleVocabulary
-# import standard library
-
-# import interfaces
from pyams_content.component.illustration import IIllustrationTarget, ILinkIllustrationTarget
from pyams_content.component.paragraph.interfaces import IParagraphFactorySettings
from pyams_content.component.theme.interfaces import IThemesManagerTarget
@@ -26,29 +30,20 @@
from pyams_content.reference.pictograms.interfaces import IPictogramManagerTarget
from pyams_content.root.interfaces import ISiteRoot
from pyams_content.shared.common.interfaces import ISharedContentFactory
-from pyams_content.shared.site.interfaces import ISiteManager, ISiteManagerFactory, ISiteFolderFactory, ISiteContainer
+from pyams_content.shared.common.manager import BaseSharedTool
+from pyams_content.shared.site import SiteTopic
+from pyams_content.shared.site.container import SiteContainerMixin
+from pyams_content.shared.site.folder import SiteFolder
+from pyams_content.shared.site.interfaces import ISiteContainer, ISiteFolderFactory, ISiteManager, ISiteManagerFactory
from pyams_form.interfaces.form import IFormContextPermissionChecker
from pyams_i18n.interfaces import II18n
from pyams_portal.interfaces import IPortalContext
-from zope.component.interfaces import ISite
-from zope.lifecycleevent.interfaces import IObjectAddedEvent, IObjectRemovedEvent
-
-# import packages
-from pyams_content.shared.common.manager import BaseSharedTool
-from pyams_content.shared.site import Topic
-from pyams_content.shared.site.container import SiteContainerMixin
-from pyams_content.shared.site.folder import SiteFolder
from pyams_skin.skin import UserSkinnableContent
-from pyams_utils.adapter import adapter_config, ContextAdapter
+from pyams_utils.adapter import ContextAdapter, adapter_config
from pyams_utils.registry import get_utilities_for
from pyams_utils.request import query_request
from pyams_utils.traversing import get_parent
from pyams_utils.vocabulary import vocabulary_config
-from pyramid.events import subscriber
-from zope.container.ordered import OrderedContainer
-from zope.interface import implementer
-from zope.schema.fieldproperty import FieldProperty
-from zope.schema.vocabulary import SimpleTerm, SimpleVocabulary
from pyams_content import _
@@ -59,6 +54,9 @@
class SiteManager(SiteContainerMixin, OrderedContainer, BaseSharedTool, UserSkinnableContent):
"""Site manager persistent class"""
+ description = FieldProperty(ISiteManager['description'])
+ notepad = FieldProperty(ISiteManager['notepad'])
+
allowed_paragraphs = FieldProperty(IParagraphFactorySettings['allowed_paragraphs'])
auto_created_paragraphs = FieldProperty(IParagraphFactorySettings['auto_created_paragraphs'])
@@ -100,7 +98,7 @@
@adapter_config(context=ISiteContainer, provides=ISharedContentFactory)
def site_manager_shared_content_factory(context):
- return Topic
+ return SiteTopic
@subscriber(IObjectAddedEvent, context_selector=ISiteManager)
@@ -138,4 +136,4 @@
request = query_request()
super(SiteManagerVocabulary, self).__init__([SimpleTerm(v, title=II18n(t).query_attribute('title',
request=request))
- for v, t in get_utilities_for(self.interface)])
+ for v, t in get_utilities_for(self.interface)])
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_content/shared/site/skin/__init__.py Fri Oct 05 10:44:32 2018 +0200
@@ -0,0 +1,20 @@
+#
+# Copyright (c) 2008-2018 Thierry Florac <tflorac AT ulthar.net>
+# All Rights Reserved.
+#
+# This software is subject to the provisions of the Zope Public License,
+# Version 2.1 (ZPL). A copy of the ZPL should accompany this distribution.
+# THIS SOFTWARE IS PROVIDED "AS IS" AND ANY AND ALL EXPRESS OR IMPLIED
+# WARRANTIES ARE DISCLAIMED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+# WARRANTIES OF TITLE, MERCHANTABILITY, AGAINST INFRINGEMENT, AND FITNESS
+# FOR A PARTICULAR PURPOSE.
+#
+
+__docformat__ = 'restructuredtext'
+
+
+# import standard library
+
+# import interfaces
+
+# import packages
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_content/shared/site/skin/breadcrumb.py Fri Oct 05 10:44:32 2018 +0200
@@ -0,0 +1,35 @@
+#
+# Copyright (c) 2008-2018 Thierry Florac <tflorac AT ulthar.net>
+# All Rights Reserved.
+#
+# This software is subject to the provisions of the Zope Public License,
+# Version 2.1 (ZPL). A copy of the ZPL should accompany this distribution.
+# THIS SOFTWARE IS PROVIDED "AS IS" AND ANY AND ALL EXPRESS OR IMPLIED
+# WARRANTIES ARE DISCLAIMED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+# WARRANTIES OF TITLE, MERCHANTABILITY, AGAINST INFRINGEMENT, AND FITNESS
+# FOR A PARTICULAR PURPOSE.
+#
+
+__docformat__ = 'restructuredtext'
+
+
+# import standard library
+
+# import interfaces
+from pyams_content.shared.site.interfaces import ISiteContainer
+from pyams_i18n.interfaces import II18n
+from pyams_skin.interfaces.viewlet import IBreadcrumbItem
+from pyams_skin.layer import IPyAMSUserLayer
+
+# import packages
+from pyams_skin.viewlet.breadcrumb import BreadcrumbItem
+from pyams_utils.adapter import adapter_config
+
+
+@adapter_config(context=(ISiteContainer, IPyAMSUserLayer), provides=IBreadcrumbItem)
+class SiteContainerBreadcumbAdapter(BreadcrumbItem):
+ """Site container breadcrumb adapter"""
+
+ @property
+ def label(self):
+ return II18n(self.context).query_attribute('short_name', request=self.request)
--- a/src/pyams_content/shared/site/zmi/__init__.py Thu Sep 06 18:10:04 2018 +0200
+++ b/src/pyams_content/shared/site/zmi/__init__.py Fri Oct 05 10:44:32 2018 +0200
@@ -13,46 +13,34 @@
__docformat__ = 'restructuredtext'
-# import standard library
from uuid import uuid4
-# import interfaces
+from pyramid.decorator import reify
+from pyramid.path import DottedNameResolver
+from z3c.form import field
+from zope.interface import Interface
+from zope.intid.interfaces import IIntIds
+from zope.lifecycleevent import ObjectCreatedEvent
+from zope.schema import Int
+
+from pyams_content import _
from pyams_content.interfaces import CREATE_CONTENT_PERMISSION
from pyams_content.shared.common.interfaces import IWfSharedContent
-from pyams_content.shared.site.interfaces import ISiteContainer, ISiteManager, IWfTopic
-from pyams_i18n.interfaces import II18nManager, INegotiator
-from pyams_skin.interfaces.viewlet import IToolbarAddingMenu, IMenuHeader
-from pyams_skin.layer import IPyAMSLayer
-from pyams_workflow.interfaces import IWorkflowInfo, IWorkflowVersions
-from pyams_zmi.interfaces.menu import IContentManagementMenu
-from pyams_zmi.layer import IAdminLayer
-from zope.intid.interfaces import IIntIds
-
-# import packages
-from pyams_content.shared.common.zmi import SharedContentAddForm, SharedContentAJAXAddForm
+from pyams_content.shared.common.zmi import SharedContentAJAXAddForm, SharedContentAddForm
+from pyams_content.shared.site.interfaces import ISiteContainer, ISiteManager
from pyams_content.shared.site.zmi.widget import SiteManagerFoldersSelectorFieldWidget
from pyams_form.form import ajax_config
+from pyams_i18n.interfaces import II18nManager, INegotiator
from pyams_pagelet.pagelet import pagelet_config
+from pyams_skin.interfaces.viewlet import IToolbarAddingMenu
+from pyams_skin.layer import IPyAMSLayer
from pyams_skin.viewlet.toolbar import ToolbarMenuItem
-from pyams_utils.adapter import adapter_config, ContextRequestAdapter
from pyams_utils.registry import get_utility
from pyams_utils.traversing import get_parent
from pyams_utils.url import absolute_url, generate_url
from pyams_viewlet.viewlet import viewlet_config
-from pyramid.decorator import reify
-from pyramid.path import DottedNameResolver
-from z3c.form import field
-from zope.interface import Interface
-from zope.lifecycleevent import ObjectCreatedEvent
-from zope.schema import Int
-from pyams_content import _
-
-
-@adapter_config(context=(IWfTopic, IContentManagementMenu), provides=IMenuHeader)
-class TopicContentMenuHeader(ContextRequestAdapter):
- """Topic content menu header adapter"""
-
- header = _("This topic")
+from pyams_workflow.interfaces import IWorkflowInfo, IWorkflowVersions
+from pyams_zmi.layer import IAdminLayer
@viewlet_config(name='add-topic.menu', context=ISiteContainer, layer=IAdminLayer, view=Interface,
--- a/src/pyams_content/shared/site/zmi/container.py Thu Sep 06 18:10:04 2018 +0200
+++ b/src/pyams_content/shared/site/zmi/container.py Fri Oct 05 10:44:32 2018 +0200
@@ -15,67 +15,65 @@
# import standard library
import json
-
from datetime import datetime
+from pyramid.exceptions import NotFound
+from pyramid.location import lineage
+from pyramid.view import view_config
+from z3c.form import field
+from z3c.table.column import GetAttrColumn
+from z3c.table.interfaces import IColumn, IValues
+from zope.interface import implementer
+from zope.intid.interfaces import IIntIds
+from zope.lifecycleevent import ObjectMovedEvent
+
+from pyams_content import _
# import interfaces
-from pyams_content.interfaces import MANAGE_SITE_PERMISSION, MANAGE_CONTENT_PERMISSION
+from pyams_content.interfaces import MANAGE_CONTENT_PERMISSION, MANAGE_SITE_PERMISSION
from pyams_content.shared.common.interfaces import ISharedContent
from pyams_content.shared.common.interfaces.zmi import IDashboardTable
-from pyams_content.shared.site.interfaces import ISiteContainer, ISiteManager, IContentLink
+from pyams_content.shared.common.zmi.dashboard import SharedToolDashboardOwnerColumn, SharedToolDashboardSequenceColumn, \
+ SharedToolDashboardStatusColumn, SharedToolDashboardStatusDateColumn, SharedToolDashboardStatusPrincipalColumn, \
+ SharedToolDashboardVersionColumn
+# import packages
+from pyams_content.shared.site import WfSiteTopic
+from pyams_content.shared.site.interfaces import IContentLink, ISiteContainer, ISiteManager
+from pyams_content.skin import pyams_content
from pyams_content.skin.zmi.interfaces import ISiteTreeMenu, ISiteTreeTable, IUserAddingsMenuLabel
+from pyams_form.form import ajax_config
from pyams_i18n.interfaces import II18n
+from pyams_pagelet.pagelet import pagelet_config
+from pyams_skin.container import ContainerView, delete_container_element
+from pyams_skin.event import get_json_table_cell_refresh_event
from pyams_skin.interfaces import IInnerPage, IPageHeader
from pyams_skin.interfaces.container import ITableElementEditor, ITableElementName, ITableWithActions
from pyams_skin.interfaces.viewlet import IBreadcrumbItem, ITableItemColumnActionsMenu
from pyams_skin.layer import IPyAMSLayer
+from pyams_skin.page import DefaultPageHeaderAdapter
+from pyams_skin.table import BaseTable, DefaultElementEditorAdapter, I18nColumn, JsActionColumn, NameColumn, \
+ SorterColumn, TrashColumn
+from pyams_skin.viewlet.breadcrumb import BreadcrumbAdminLayerItem
+from pyams_skin.viewlet.menu import MenuItem
+from pyams_skin.viewlet.toolbar import ToolbarMenuItem
+from pyams_utils.adapter import ContextRequestAdapter, ContextRequestViewAdapter, adapter_config
+from pyams_utils.fanstatic import get_resource_path
from pyams_utils.interfaces import VIEW_SYSTEM_PERMISSION
from pyams_utils.interfaces.traversing import IPathElements
-from pyams_workflow.interfaces import IWorkflowVersions, IWorkflowPublicationInfo
-from pyams_zmi.interfaces.menu import ISiteManagementMenu, IPropertiesMenu
-from pyams_zmi.layer import IAdminLayer
-from z3c.table.interfaces import IColumn, IValues
-from zope.intid.interfaces import IIntIds
-
-# import packages
-from pyams_content.shared.site import WfTopic
-from pyams_content.shared.common.zmi.dashboard import SharedToolDashboardSequenceColumn, \
- SharedToolDashboardStatusColumn, SharedToolDashboardVersionColumn, SharedToolDashboardStatusDateColumn, \
- SharedToolDashboardStatusPrincipalColumn, SharedToolDashboardOwnerColumn
-from pyams_content.skin import pyams_content
-from pyams_form.form import ajax_config
-from pyams_pagelet.pagelet import pagelet_config
-from pyams_skin.container import ContainerView, delete_container_element
-from pyams_skin.event import get_json_table_cell_refresh_event
-from pyams_skin.page import DefaultPageHeaderAdapter
-from pyams_skin.table import BaseTable, TrashColumn, DefaultElementEditorAdapter, NameColumn, SorterColumn, \
- JsActionColumn, I18nColumn
-from pyams_skin.viewlet.breadcrumb import BreadcrumbItem
-from pyams_skin.viewlet.menu import MenuItem
-from pyams_skin.viewlet.toolbar import ToolbarMenuItem
-from pyams_utils.adapter import adapter_config, ContextRequestViewAdapter, ContextRequestAdapter
-from pyams_utils.fanstatic import get_resource_path
from pyams_utils.registry import get_utility
from pyams_utils.timezone import tztime
from pyams_utils.traversing import get_parent
from pyams_utils.url import absolute_url
from pyams_viewlet.manager import viewletmanager_config
from pyams_viewlet.viewlet import viewlet_config
+from pyams_workflow.interfaces import IWorkflowPublicationInfo, IWorkflowVersions
from pyams_zmi.form import AdminDialogEditForm
+from pyams_zmi.interfaces.menu import IPropertiesMenu, ISiteManagementMenu
+from pyams_zmi.layer import IAdminLayer
from pyams_zmi.view import AdminView
-from pyramid.exceptions import NotFound
-from pyramid.location import lineage
-from pyramid.view import view_config
-from z3c.form import field
-from z3c.table.column import GetAttrColumn
-from zope.interface import implementer, Interface
-from zope.lifecycleevent import ObjectMovedEvent
-
-from pyams_content import _
@adapter_config(context=(ISiteContainer, IAdminLayer), provides=IBreadcrumbItem)
-class SiteContainerBreadcrumbAdapter(BreadcrumbItem):
+class SiteContainerBreadcrumbAdapter(BreadcrumbAdminLayerItem):
"""Site container breadcrumb adapter"""
@property
@@ -90,7 +88,7 @@
@property
def label(self):
return '{content} ({blog})'.format(
- content=self.request.localizer.translate(WfTopic.content_name),
+ content=self.request.localizer.translate(WfSiteTopic.content_name),
blog=II18n(self.context).query_attribute('title', request=self.request))
@@ -332,9 +330,10 @@
icon_class = 'fa-eye opacity-75'
else:
icon_class = 'fa-eye-slash text-danger opaque'
- return '<i class="fa fa-fw {icon_class} hint align-base" title="{title}" data-ams-hint-gravity="e"></i>'.format(
- icon_class=icon_class,
- title=self.request.localizer.translate(self.get_icon_hint(item)))
+ return '<i class="fa fa-fw {icon_class} hint align-base" title="{title}" ' \
+ 'data-ams-hint-gravity="e"></i>'.format(
+ icon_class=icon_class,
+ title=self.request.localizer.translate(self.get_icon_hint(item)))
def get_icon_hint(self, item):
translate = self.request.localizer.translate
@@ -393,12 +392,12 @@
' <i class="fa fa-fw {switch}"></i>' \
' </span> <span class="title">{title}</span>' \
'</div>'.format(
- padding='<span class="tree-node-padding"></span>' * depth,
- hint=self.request.localizer.translate(_("Click to show/hide inner folders")),
- switch='fa-{state}-square-o switch'.format(
- state=self.table.rows_state or ('minus' if item in lineage(self.context) else 'plus'))
- if ISiteContainer.providedBy(item) else '',
- title=name or super(SiteContainerTreeNameColumn, self).renderCell(item))
+ padding='<span class="tree-node-padding"></span>' * depth,
+ hint=self.request.localizer.translate(_("Click to show/hide inner folders")),
+ switch='fa-{state}-square-o switch'.format(
+ state=self.table.rows_state or ('minus' if item in lineage(self.context) else 'plus'))
+ if ISiteContainer.providedBy(item) else '',
+ title=name or super(SiteContainerTreeNameColumn, self).renderCell(item))
@adapter_config(name='content-type', context=(ISiteContainer, IPyAMSLayer, ISiteTreeTable), provides=IColumn)
--- a/src/pyams_content/shared/site/zmi/folder.py Thu Sep 06 18:10:04 2018 +0200
+++ b/src/pyams_content/shared/site/zmi/folder.py Fri Oct 05 10:44:32 2018 +0200
@@ -9,33 +9,31 @@
# WARRANTIES OF TITLE, MERCHANTABILITY, AGAINST INFRINGEMENT, AND FITNESS
# FOR A PARTICULAR PURPOSE.
#
-from pyams_form.group import NamedWidgetsGroup
-from pyams_form.interfaces.form import IInnerSubForm
__docformat__ = 'restructuredtext'
+from pyramid.events import subscriber
+from pyramid.path import DottedNameResolver
+from z3c.form import field
+from z3c.form.interfaces import IDataExtractedEvent
+from zope.interface import Interface, Invalid
+from zope.intid.interfaces import IIntIds
+from zope.schema import Text, Int
-# import standard library
-
-# import interfaces
from pyams_content.interfaces import MANAGE_SITE_PERMISSION, MANAGE_TOOL_PERMISSION
from pyams_content.shared.common.interfaces import IBaseSharedTool
+from pyams_content.shared.common.zmi.manager import SharedToolPropertiesEditForm
from pyams_content.shared.site.interfaces import ISiteContainer, ISiteManager, ISiteFolder
+from pyams_content.shared.site.zmi.widget import SiteManagerFoldersSelectorFieldWidget
+from pyams_form.form import AJAXAddForm, ajax_config
+from pyams_form.group import NamedWidgetsGroup
+from pyams_form.interfaces.form import IInnerSubForm
from pyams_i18n.interfaces import INegotiator, II18n
+from pyams_i18n.schema import I18nTextLineField
+from pyams_pagelet.pagelet import pagelet_config
from pyams_skin.interfaces.container import ITableElementName, ITableElementEditor
from pyams_skin.interfaces.viewlet import IToolbarAddingMenu, IMenuHeader
from pyams_skin.layer import IPyAMSLayer
-from pyams_zmi.interfaces.menu import ISiteManagementMenu
-from pyams_zmi.layer import IAdminLayer
-from z3c.form.interfaces import IDataExtractedEvent
-from zope.intid.interfaces import IIntIds
-
-# import packages
-from pyams_content.shared.common.zmi.manager import SharedToolPropertiesEditForm
-from pyams_content.shared.site.zmi.widget import SiteManagerFoldersSelectorFieldWidget
-from pyams_form.form import AJAXAddForm, ajax_config
-from pyams_i18n.schema import I18nTextLineField
-from pyams_pagelet.pagelet import pagelet_config
from pyams_skin.table import DefaultElementEditorAdapter
from pyams_skin.viewlet.toolbar import ToolbarMenuItem
from pyams_utils.adapter import adapter_config, ContextRequestAdapter
@@ -45,11 +43,8 @@
from pyams_utils.url import absolute_url
from pyams_viewlet.viewlet import viewlet_config
from pyams_zmi.form import AdminDialogAddForm, InnerAdminEditForm
-from pyramid.events import subscriber
-from pyramid.path import DottedNameResolver
-from z3c.form import field
-from zope.interface import Interface, Invalid
-from zope.schema import Text, Int
+from pyams_zmi.interfaces.menu import ISiteManagementMenu
+from pyams_zmi.layer import IAdminLayer
from pyams_content import _
@@ -189,8 +184,8 @@
legend = _("Site folder properties")
- fields = field.Fields(ISiteFolder).select('title', 'short_name', 'heading', 'notepad') + \
- field.Fields(IBaseSharedTool).select('shared_content_workflow')
+ fields = field.Fields(ISiteFolder).select('title', 'short_name', 'heading', 'description', 'notepad') + \
+ field.Fields(IBaseSharedTool).select('shared_content_workflow')
@adapter_config(name='navigation', context=(ISiteFolder, IPyAMSLayer, SiteFolderPropertiesEditForm),
@@ -223,5 +218,5 @@
legend=self.main_group_legend,
css_class=self.main_group_class,
switch=True,
- display_mode='auto'))
+ display_mode='always'))
super(SiteFolderNavigationPropertiesEditForm, self).updateGroups()
--- a/src/pyams_content/shared/site/zmi/manager.py Thu Sep 06 18:10:04 2018 +0200
+++ b/src/pyams_content/shared/site/zmi/manager.py Fri Oct 05 10:44:32 2018 +0200
@@ -12,42 +12,38 @@
__docformat__ = 'restructuredtext'
-
-# import standard library
+from pyramid.events import subscriber
+from pyramid.path import DottedNameResolver
+from z3c.form import field
+from z3c.form.interfaces import IDataExtractedEvent
+from zope.interface import Interface, Invalid
-# import interfaces
-from pyams_content.interfaces import MANAGE_SITE_ROOT_PERMISSION
+from pyams_content import _
+from pyams_content.interfaces import MANAGE_SITE_ROOT_PERMISSION, MANAGE_TOOL_PERMISSION
from pyams_content.root.interfaces import ISiteRoot
+from pyams_content.shared.common import IBaseSharedTool
+from pyams_content.shared.common.zmi.manager import SharedToolPropertiesEditForm
+from pyams_content.shared.site import WfSiteTopic
from pyams_content.shared.site.interfaces import ISiteManager, ISiteManagerFactory
+from pyams_content.shared.site.manager import SiteManager
from pyams_content.skin.zmi.interfaces import ISiteTreeTable, IUserAddingsMenuLabel
+from pyams_form.form import AJAXAddForm, ajax_config
from pyams_i18n.interfaces import II18n, INegotiator
+from pyams_pagelet.pagelet import pagelet_config
from pyams_skin.interfaces.container import ITableElementEditor, ITableElementName
-from pyams_skin.interfaces.viewlet import IToolbarAddingMenu, IBreadcrumbItem, IMenuHeader
+from pyams_skin.interfaces.viewlet import IBreadcrumbItem, IMenuHeader, IToolbarAddingMenu
from pyams_skin.layer import IPyAMSLayer
-from pyams_zmi.interfaces.menu import ISiteManagementMenu
-from pyams_zmi.layer import IAdminLayer
-from z3c.form.interfaces import IDataExtractedEvent
-
-# import packages
-from pyams_content.shared.site import WfTopic
-from pyams_content.shared.site.manager import SiteManager
-from pyams_form.form import AJAXAddForm, ajax_config
-from pyams_pagelet.pagelet import pagelet_config
from pyams_skin.table import DefaultElementEditorAdapter
-from pyams_skin.viewlet.breadcrumb import BreadcrumbItem
+from pyams_skin.viewlet.breadcrumb import BreadcrumbAdminLayerItem
from pyams_skin.viewlet.toolbar import ToolbarMenuItem
-from pyams_utils.adapter import adapter_config, ContextRequestAdapter
+from pyams_utils.adapter import ContextRequestAdapter, adapter_config
from pyams_utils.registry import query_utility
from pyams_utils.unicode import translate_string
from pyams_utils.url import absolute_url
from pyams_viewlet.viewlet import viewlet_config
from pyams_zmi.form import AdminDialogAddForm
-from pyramid.events import subscriber
-from pyramid.path import DottedNameResolver
-from z3c.form import field
-from zope.interface import Invalid, Interface
-
-from pyams_content import _
+from pyams_zmi.interfaces.menu import ISiteManagementMenu
+from pyams_zmi.layer import IAdminLayer
@adapter_config(context=(ISiteManager, ISiteManagementMenu), provides=IMenuHeader)
@@ -57,8 +53,8 @@
header = _("Site management")
-@adapter_config(context=(ISiteManager, IPyAMSLayer), provides=IBreadcrumbItem)
-class SiteManagerBreadcrumbAdapter(BreadcrumbItem):
+@adapter_config(context=(ISiteManager, IAdminLayer), provides=IBreadcrumbItem)
+class SiteManagerBreadcrumbAdapter(BreadcrumbAdminLayerItem):
"""Site manager breadcrumb adapter"""
@property
@@ -100,7 +96,7 @@
@property
def label(self):
return '{content} ({site})'.format(
- content=self.request.localizer.translate(WfTopic.content_name),
+ content=self.request.localizer.translate(WfSiteTopic.content_name),
site=II18n(self.context).query_attribute('title', request=self.request))
@@ -146,6 +142,17 @@
return absolute_url(self.context, self.request, 'site-tree.html')
+@pagelet_config(name='properties.html', context=ISiteManager, layer=IPyAMSLayer, permission=MANAGE_TOOL_PERMISSION)
+@ajax_config(name='properties.json', context=ISiteManager, layer=IPyAMSLayer)
+class SiteManagerPropertiesEditForm(SharedToolPropertiesEditForm):
+ """Site manager properties edit form"""
+
+ legend = _("Site folder properties")
+
+ fields = field.Fields(ISiteManager).select('title', 'short_name', 'description', 'notepad') + \
+ field.Fields(IBaseSharedTool).select('shared_content_workflow')
+
+
@subscriber(IDataExtractedEvent, form_selector=SiteManagerAddForm)
def handle_new_site_manager_data_extraction(event):
"""Handle new site manager data extraction"""
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_content/shared/topic/__init__.py Fri Oct 05 10:44:32 2018 +0200
@@ -0,0 +1,49 @@
+#
+# Copyright (c) 2008-2015 Thierry Florac <tflorac AT ulthar.net>
+# All Rights Reserved.
+#
+# This software is subject to the provisions of the Zope Public License,
+# Version 2.1 (ZPL). A copy of the ZPL should accompany this distribution.
+# THIS SOFTWARE IS PROVIDED "AS IS" AND ANY AND ALL EXPRESS OR IMPLIED
+# WARRANTIES ARE DISCLAIMED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+# WARRANTIES OF TITLE, MERCHANTABILITY, AGAINST INFRINGEMENT, AND FITNESS
+# FOR A PARTICULAR PURPOSE.
+#
+
+__docformat__ = 'restructuredtext'
+
+from zope.interface import implementer, provider
+
+from pyams_content.component.illustration.interfaces import IIllustrationTarget, ILinkIllustrationTarget
+from pyams_content.component.paragraph.interfaces import IParagraphContainerTarget
+from pyams_content.component.theme.interfaces import ITagsTarget, IThemesTarget
+from pyams_content.features.preview.interfaces import IPreviewTarget
+from pyams_content.features.review.interfaces import IReviewTarget
+from pyams_content.shared.common import SharedContent, WfSharedContent, register_content_type
+from pyams_content.shared.common.interfaces import IWfSharedContentFactory
+from pyams_content.shared.topic.interfaces import ITopic, IWfTopic, IWfTopicFactory, TOPIC_CONTENT_NAME, \
+ TOPIC_CONTENT_TYPE
+from pyams_utils.adapter import adapter_config
+
+
+@implementer(IWfTopic, IIllustrationTarget, ILinkIllustrationTarget, IParagraphContainerTarget,
+ ITagsTarget, IThemesTarget, IPreviewTarget, IReviewTarget)
+class WfTopic(WfSharedContent):
+ """Base topic"""
+
+ content_type = TOPIC_CONTENT_TYPE
+ content_name = TOPIC_CONTENT_NAME
+
+
+register_content_type(WfTopic)
+
+
+@provider(IWfTopicFactory)
+@implementer(ITopic)
+class Topic(SharedContent):
+ """Workflow managed topic class"""
+
+
+@adapter_config(context=IWfTopicFactory, provides=IWfSharedContentFactory)
+def topic_content_factory(context):
+ return WfTopic
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_content/shared/topic/interfaces/__init__.py Fri Oct 05 10:44:32 2018 +0200
@@ -0,0 +1,43 @@
+#
+# Copyright (c) 2008-2015 Thierry Florac <tflorac AT ulthar.net>
+# All Rights Reserved.
+#
+# This software is subject to the provisions of the Zope Public License,
+# Version 2.1 (ZPL). A copy of the ZPL should accompany this distribution.
+# THIS SOFTWARE IS PROVIDED "AS IS" AND ANY AND ALL EXPRESS OR IMPLIED
+# WARRANTIES ARE DISCLAIMED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+# WARRANTIES OF TITLE, MERCHANTABILITY, AGAINST INFRINGEMENT, AND FITNESS
+# FOR A PARTICULAR PURPOSE.
+#
+
+__docformat__ = 'restructuredtext'
+
+from zope.interface import Interface
+
+from pyams_content import _
+from pyams_content.shared.common.interfaces import ISharedContent, ISharedToolPortalContext, \
+ IWfSharedContentPortalContext
+
+
+TOPIC_CONTENT_TYPE = 'topic'
+TOPIC_CONTENT_NAME = _("Topic")
+
+
+class ITopicManager(ISharedToolPortalContext):
+ """Topic manager interface"""
+
+
+class ITopicManagerFactory(Interface):
+ """Topic manager factory interface"""
+
+
+class IWfTopic(IWfSharedContentPortalContext):
+ """Topic interface"""
+
+
+class IWfTopicFactory(Interface):
+ """Topic parent interface"""
+
+
+class ITopic(ISharedContent):
+ """Workflow managed topic interface"""
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_content/shared/topic/manager.py Fri Oct 05 10:44:32 2018 +0200
@@ -0,0 +1,62 @@
+#
+# Copyright (c) 2008-2015 Thierry Florac <tflorac AT ulthar.net>
+# All Rights Reserved.
+#
+# This software is subject to the provisions of the Zope Public License,
+# Version 2.1 (ZPL). A copy of the ZPL should accompany this distribution.
+# THIS SOFTWARE IS PROVIDED "AS IS" AND ANY AND ALL EXPRESS OR IMPLIED
+# WARRANTIES ARE DISCLAIMED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+# WARRANTIES OF TITLE, MERCHANTABILITY, AGAINST INFRINGEMENT, AND FITNESS
+# FOR A PARTICULAR PURPOSE.
+#
+
+__docformat__ = 'restructuredtext'
+
+from pyramid.events import subscriber
+from zope.component.interfaces import ISite
+from zope.interface import implementer
+from zope.lifecycleevent.interfaces import IObjectAddedEvent
+from zope.schema.fieldproperty import FieldProperty
+
+from pyams_content.component.paragraph.interfaces import IParagraphFactorySettings
+from pyams_content.component.theme.interfaces import IThemesManagerTarget
+from pyams_content.reference.pictograms.interfaces import IPictogramManagerTarget
+from pyams_content.shared.common.interfaces import ISharedContentFactory
+from pyams_content.shared.common.manager import SharedTool
+from pyams_content.shared.topic import Topic
+from pyams_content.shared.topic.interfaces import ITopicManager, ITopicManagerFactory, TOPIC_CONTENT_TYPE
+from pyams_utils.adapter import adapter_config
+from pyams_utils.registry import utility_config
+from pyams_utils.traversing import get_parent
+
+
+@implementer(ITopicManager, IParagraphFactorySettings, IThemesManagerTarget, IPictogramManagerTarget)
+class TopicManager(SharedTool):
+ """Topic manager class"""
+
+ shared_content_type = TOPIC_CONTENT_TYPE
+
+ allowed_paragraphs = FieldProperty(IParagraphFactorySettings['allowed_paragraphs'])
+ auto_created_paragraphs = FieldProperty(IParagraphFactorySettings['auto_created_paragraphs'])
+
+
+@utility_config(provides=ITopicManagerFactory)
+class TopicManagerFactory(object):
+ """Default topic manager factory"""
+
+ def __new__(cls):
+ return TopicManager
+
+
+@adapter_config(context=ITopicManager, provides=ISharedContentFactory)
+def topic_manager_content_factory(context):
+ return Topic
+
+
+@subscriber(IObjectAddedEvent, context_selector=ITopicManager)
+def handle_added_topic_manager(event):
+ """Register topic manager when added"""
+ site = get_parent(event.newParent, ISite)
+ registry = site.getSiteManager()
+ if registry is not None:
+ registry.registerUtility(event.object, ITopicManager)
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_content/shared/topic/zmi/__init__.py Fri Oct 05 10:44:32 2018 +0200
@@ -0,0 +1,74 @@
+#
+# Copyright (c) 2008-2015 Thierry Florac <tflorac AT ulthar.net>
+# All Rights Reserved.
+#
+# This software is subject to the provisions of the Zope Public License,
+# Version 2.1 (ZPL). A copy of the ZPL should accompany this distribution.
+# THIS SOFTWARE IS PROVIDED "AS IS" AND ANY AND ALL EXPRESS OR IMPLIED
+# WARRANTIES ARE DISCLAIMED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+# WARRANTIES OF TITLE, MERCHANTABILITY, AGAINST INFRINGEMENT, AND FITNESS
+# FOR A PARTICULAR PURPOSE.
+#
+
+__docformat__ = 'restructuredtext'
+
+from pyramid.view import view_config
+from zope.interface import Interface
+
+from pyams_content import _
+from pyams_content.interfaces import CREATE_CONTENT_PERMISSION
+from pyams_content.shared.common.zmi import SharedContentAJAXAddForm, SharedContentAddForm
+from pyams_content.shared.topic.interfaces import ITopicManager, IWfTopic
+from pyams_i18n.interfaces import II18n
+from pyams_pagelet.pagelet import pagelet_config
+from pyams_skin.interfaces import IContentTitle
+from pyams_skin.interfaces.viewlet import IMenuHeader, IWidgetTitleViewletManager
+from pyams_skin.layer import IPyAMSLayer
+from pyams_skin.viewlet.toolbar import ToolbarAction
+from pyams_utils.adapter import ContextRequestAdapter, ContextRequestViewAdapter, adapter_config
+from pyams_viewlet.viewlet import viewlet_config
+from pyams_zmi.interfaces.menu import IContentManagementMenu
+from pyams_zmi.layer import IAdminLayer
+
+
+@adapter_config(context=(IWfTopic, IContentManagementMenu), provides=IMenuHeader)
+class TopicContentMenuHeader(ContextRequestAdapter):
+ """Topic content menu header adapter"""
+
+ header = _("This topic")
+
+
+@adapter_config(context=(IWfTopic, IPyAMSLayer, Interface), provides=IContentTitle)
+class TopicTitleAdapter(ContextRequestViewAdapter):
+ """Topic title adapter"""
+
+ @property
+ def title(self):
+ translate = self.request.localizer.translate
+ return translate(_("Topic « {title} »")).format(
+ title=II18n(self.context).query_attribute('title', request=self.request))
+
+
+@viewlet_config(name='add-shared-content.action', context=ITopicManager, layer=IAdminLayer, view=Interface,
+ manager=IWidgetTitleViewletManager, permission=CREATE_CONTENT_PERMISSION, weight=1)
+class TopicAddAction(ToolbarAction):
+ """Topic adding action"""
+
+ label = _("Add topic")
+ label_css_class = 'fa fa-fw fa-plus'
+ url = 'add-shared-content.html'
+ modal_target = True
+
+
+@pagelet_config(name='add-shared-content.html', context=ITopicManager, layer=IPyAMSLayer,
+ permission=CREATE_CONTENT_PERMISSION)
+class TopicAddForm(SharedContentAddForm):
+ """Topic add form"""
+
+ legend = _("Add topic")
+
+
+@view_config(name='add-shared-content.json', context=ITopicManager, request_type=IPyAMSLayer,
+ permission=CREATE_CONTENT_PERMISSION, renderer='json', xhr=True)
+class TopicAJAXAddForm(SharedContentAJAXAddForm, TopicAddForm):
+ """Topic add form, JSON renderer"""
--- a/src/pyams_content/shared/view/__init__.py Thu Sep 06 18:10:04 2018 +0200
+++ b/src/pyams_content/shared/view/__init__.py Fri Oct 05 10:44:32 2018 +0200
@@ -12,40 +12,36 @@
__docformat__ = 'restructuredtext'
-
-# import standard library
import logging
logger = logging.getLogger("PyAMS (content)")
from datetime import datetime
from itertools import tee
-# import interfaces
+from hypatia.catalog import CatalogQuery
from hypatia.interfaces import ICatalog
+from hypatia.query import Any, Gt, Lt
+from pyramid.events import subscriber
+from pyramid.threadlocal import get_current_registry
+from zope.interface import implementer, provider
+from zope.intid.interfaces import IIntIds
+from zope.lifecycleevent.interfaces import IObjectModifiedEvent
+from zope.schema.fieldproperty import FieldProperty
+
+from pyams_cache.beaker import get_cache
+from pyams_catalog.query import CatalogResultSet, or_
from pyams_content.features.preview.interfaces import IPreviewTarget
from pyams_content.features.review.interfaces import IReviewTarget
+from pyams_content.shared.common import WfSharedContent, register_content_type, SharedContent, IWfSharedContentFactory
from pyams_content.shared.common.interfaces.types import IWfTypedSharedContent
from pyams_content.shared.view.interfaces import IView, IWfView, IWfViewFactory, IViewQuery, \
IViewQueryParamsExtension, IViewQueryFilterExtension, VIEW_CONTENT_TYPE, VIEW_CONTENT_NAME, IViewSettings
+from pyams_utils.adapter import adapter_config, ContextAdapter
from pyams_utils.interfaces import ICacheKeyValue
-from zope.intid.interfaces import IIntIds
-from zope.lifecycleevent.interfaces import IObjectModifiedEvent
-
-# import packages
-from hypatia.catalog import CatalogQuery
-from hypatia.query import Any, Gt, Lt
-from pyams_cache.beaker import get_cache
-from pyams_catalog.query import CatalogResultSet, or_
-from pyams_content.shared.common import WfSharedContent, register_content_type, SharedContent, IWfSharedContentFactory
-from pyams_utils.adapter import adapter_config, ContextAdapter
from pyams_utils.list import unique_iter
from pyams_utils.registry import get_utility, get_global_registry
from pyams_utils.timezone import tztime
from pyams_workflow.interfaces import IWorkflow
-from pyramid.events import subscriber
-from pyramid.threadlocal import get_current_registry
-from zope.interface import implementer, provider
-from zope.schema.fieldproperty import FieldProperty
VIEWS_CACHE_REGION = 'views'
@@ -64,7 +60,9 @@
content_type = VIEW_CONTENT_TYPE
content_name = VIEW_CONTENT_NAME
+ handle_content_url = False
handle_header = False
+ handle_description = False
select_context_type = FieldProperty(IWfView['select_context_type'])
selected_content_types = FieldProperty(IWfView['selected_content_types'])
@@ -138,6 +136,7 @@
logger.debug("Retrieving view items from cache key {0}".format(cache_key))
return results
+
register_content_type(WfView)
--- a/src/pyams_content/shared/view/interfaces/__init__.py Thu Sep 06 18:10:04 2018 +0200
+++ b/src/pyams_content/shared/view/interfaces/__init__.py Fri Oct 05 10:44:32 2018 +0200
@@ -24,7 +24,7 @@
# import packages
from pyams_thesaurus.schema import ThesaurusTermsListField
from zope.interface import Interface, Attribute
-from zope.schema import List, Set, Choice, Bool, Int
+from zope.schema import Set, Choice, Bool, Int
from zope.schema.vocabulary import SimpleVocabulary, SimpleTerm
from pyams_content import _
@@ -41,7 +41,7 @@
VIEW_ORDERS = (
{'id': CREATION_DATE_ORDER, 'title': _("Creation date")},
- {'id': UPDATE_DATE_ORDER,'title': _("Last update date")},
+ {'id': UPDATE_DATE_ORDER, 'title': _("Last update date")},
{'id': PUBLICATION_DATE_ORDER, 'title': _("Current publication date")},
{'id': FIRSTPUBLICATION_DATE_ORDER, 'title': _("First publication date")}
)
--- a/src/pyams_content/shared/view/portlet/__init__.py Thu Sep 06 18:10:04 2018 +0200
+++ b/src/pyams_content/shared/view/portlet/__init__.py Fri Oct 05 10:44:32 2018 +0200
@@ -12,27 +12,23 @@
__docformat__ = 'restructuredtext'
-
-# import standard library
from itertools import islice
-# import interfaces
-from pyams_content.shared.view.interfaces import IViewsMerger, IViewsManager
+from zope.interface import implementer
+from zope.schema.fieldproperty import FieldProperty
+
+from pyams_content.shared.view.interfaces import IViewsManager, IViewsMerger
from pyams_content.shared.view.portlet.interfaces import IViewItemsPortletSettings, VIEW_DISPLAY_CONTEXT
from pyams_portal.interfaces import PREVIEW_MODE
+from pyams_portal.portlet import Portlet, PortletSettings, portlet_config
+from pyams_sequence.reference import get_sequence_target
+from pyams_utils.factory import factory_config
from pyams_utils.interfaces import VIEW_PERMISSION
from pyams_utils.interfaces.url import DISPLAY_CONTEXT
-from pyams_workflow.interfaces import IWorkflow
-
-# import packages
-from pyams_portal.portlet import PortletSettings, portlet_config, Portlet
-from pyams_sequence.reference import get_sequence_target
-from pyams_utils.factory import factory_config
from pyams_utils.list import unique_iter
from pyams_utils.registry import get_utility
from pyams_utils.request import check_request
-from zope.interface import implementer
-from zope.schema.fieldproperty import FieldProperty
+from pyams_workflow.interfaces import IWorkflow
from pyams_content import _
@@ -50,6 +46,7 @@
views_context = FieldProperty(IViewItemsPortletSettings['views_context'])
views_merge_mode = FieldProperty(IViewItemsPortletSettings['views_merge_mode'])
limit = FieldProperty(IViewItemsPortletSettings['limit'])
+ start = FieldProperty(IViewItemsPortletSettings['start'])
def get_views(self):
views_manager = get_utility(IViewsManager)
@@ -78,6 +75,7 @@
yield from islice(unique_iter(merger.get_results(self.get_views(),
context,
ignore_cache=ignore_cache)),
+ (self.start or 1) - 1,
self.limit)
--- a/src/pyams_content/shared/view/portlet/interfaces.py Thu Sep 06 18:10:04 2018 +0200
+++ b/src/pyams_content/shared/view/portlet/interfaces.py Fri Oct 05 10:44:32 2018 +0200
@@ -92,5 +92,10 @@
description=_("Maximum number of results that the component may extract from merged views"),
required=False)
+ start = Int(title=_("Starting from..."),
+ description=_("You can skip several results if specifying an integer value here..."),
+ required=False,
+ default=1)
+
def get_items(self):
"""Get iterator over items returned by selected views, using selected merger"""
--- a/src/pyams_content/shared/view/portlet/zmi/templates/view-items-list-preview.pt Thu Sep 06 18:10:04 2018 +0200
+++ b/src/pyams_content/shared/view/portlet/zmi/templates/view-items-list-preview.pt Fri Oct 05 10:44:32 2018 +0200
@@ -4,14 +4,22 @@
tal:condition="title">
<tal:var content="title" /><br />
</strong>
- <ul>
- <li tal:repeat="item settings.get_items(request, ignore_cache=True)">
- <tal:var content="i18n:item.title" />
- <tal:var define="global count count+1" />
- </li>
- </ul>
- <tal:if condition="not:count">
- <tal:if condition="settings.views" i18n:translate="">No result found</tal:if>
- <tal:if condition="not:settings.views" i18n:translate="">No selected view</tal:if>
- </tal:if>
+ <div>
+ <span i18n:translate="">Selected views:</span>
+ <tal:if condition="not:settings.views" i18n:translate="">none</tal:if>
+ <tal:loop repeat="view settings.get_views()">
+ ${i18n:view.title}<tal:if condition="not:repeat.view.end()">,</tal:if>
+ </tal:loop>
+ </div>
+ <div>
+ <span i18n:translate="">Extracted contents:</span>
+ <tal:if condition="not:settings.views" i18n:translate="">none (no selected view)</tal:if>
+ <ul>
+ <li tal:repeat="item settings.get_items(request, ignore_cache=True)">
+ <tal:var content="i18n:item.title" />
+ <tal:var define="global count count+1" />
+ </li>
+ <span tal:condition="not:count" i18n:translate="">No result found</span>
+ </ul>
+ </div>
</div>
--- a/src/pyams_content/shared/view/reference.py Thu Sep 06 18:10:04 2018 +0200
+++ b/src/pyams_content/shared/view/reference.py Fri Oct 05 10:44:32 2018 +0200
@@ -24,7 +24,7 @@
# import packages
from hypatia.catalog import CatalogQuery
-from hypatia.query import Any, Not, NotEq
+from hypatia.query import Any, NotEq
from pyams_catalog.query import CatalogResultSet, and_
from pyams_content.workflow import VISIBLE_STATES
from pyams_utils.adapter import adapter_config, ContextAdapter, get_annotation_adapter
@@ -87,6 +87,6 @@
if (not items) or (settings.references_mode == ALWAYS_REFERENCE_MODE):
catalog = get_utility(ICatalog)
params = Any(catalog['oid'], settings.references) & \
- Any(catalog['workflow_state'], VISIBLE_STATES)
+ Any(catalog['workflow_state'], VISIBLE_STATES)
items.prepend(CatalogResultSet(CatalogQuery(catalog).query(params)))
return items
--- a/src/pyams_content/site.py Thu Sep 06 18:10:04 2018 +0200
+++ b/src/pyams_content/site.py Fri Oct 05 10:44:32 2018 +0200
@@ -12,19 +12,15 @@
__docformat__ = 'restructuredtext'
-
-# import standard library
import transaction
-
-# import interfaces
+from ZODB.interfaces import IBroken
from hypatia.interfaces import ICatalog
+from zope.interface import Interface
from zope.intid.interfaces import IIntIds
-# import packages
from pyams_utils.container import find_objects_providing
from pyams_utils.registry import set_local_registry, get_utility
from pyams_utils.site import site_factory
-from zope.interface import Interface
def site_index(request):
@@ -38,10 +34,13 @@
transaction.savepoint()
intids = get_utility(IIntIds)
for index, document in enumerate(find_objects_providing(application, Interface)):
- print("Indexing: {0!r}".format(document))
- catalog.reindex_doc(intids.register(document), document)
- if not index % 100:
- transaction.savepoint()
+ if IBroken.providedBy(document):
+ print("Skipping broken object: {0!r}".format(document))
+ else:
+ print("Indexing: {0!r}".format(document))
+ catalog.reindex_doc(intids.register(document), document)
+ if not index % 100:
+ transaction.savepoint()
finally:
set_local_registry(None)
transaction.commit()
--- a/src/pyams_content/skin/resources/js/pyams_content.js Thu Sep 06 18:10:04 2018 +0200
+++ b/src/pyams_content/skin/resources/js/pyams_content.js Fri Oct 05 10:44:32 2018 +0200
@@ -164,6 +164,21 @@
*/
galleries: {
+ addMediaCallback: function(options) {
+ var gallery = $('.gallery', $('[id="' + options.parent + '"]'));
+ var switcher = gallery.siblings('.switcher');
+ if (switcher.parents('fieldset:first').hasClass('switched')) {
+ switcher.click();
+ }
+ for (var i=0; i < options.medias.length; i++) {
+ gallery.append(options.medias[i]);
+ }
+ gallery.sortable({
+ helper: 'clone',
+ stop: PyAMS_content.galleries.setOrder
+ })
+ },
+
updateMediaTitle: function(options) {
$('img[id="' + options.media_id + '"]').attr('original-title', options.title);
},
@@ -215,6 +230,9 @@
{object_name: object_name},
function(result, status) {
media.remove();
+ if (result.handle_json) {
+ MyAMS.ajax.handleJSON(result);
+ }
});
}
});
--- a/src/pyams_content/skin/resources/js/pyams_content.min.js Thu Sep 06 18:10:04 2018 +0200
+++ b/src/pyams_content/skin/resources/js/pyams_content.min.js Fri Oct 05 10:44:32 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 à 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('<a href="oid://'+e.data.oid+'">'+e.data.title+"</a>")}})}})}),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");t("i",e).attr("class","fa fa-fw fa-spinner fa-pulse"),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:'<i class="text-danger fa fa-2x fa-bell shake animated"></i> '+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('<div class="hidden-mask"></div>')}},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('<h1 class="loading"><i class="fa fa-2x fa-gear fa-spin"></i></h1>'),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),a.skin.scrollTo(r,{offset:r.height()-o.height()}))})}else a.skin.cleanContainer(r),r.empty(),n.removeClass("fa-minus-square-o").addClass("fa-plus-square-o"),o.removeData("ams-disabled-handlers")},switchLastEditor:function(e){var a=t('table[id="'+e+'"]'),i=t("tr:last",a);t('[data-ams-click-handler="PyAMS_content.paragraphs.switchEditor"]',i).click()},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="manager_themes.widgets.thesaurus_name:list"]',e).val(),n=t('select[name="manager_themes.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("<option></option>").attr("value",this.id).attr("selected",this.id===s).text(this.text).appendTo(n)})})},getExtracts:function(e){var i=t(e.currentTarget).parents("form"),n=t('select[name="manager_themes.widgets.thesaurus_name:list"]',i).val(),s=t('select[name="manager_themes.widgets.extract_name:list"]',i),r=s.data("select2");n&&"--NOVALUE--"!==n?a.jsonrpc.post("getExtracts",{thesaurus_name:n},{url:"/api/thesaurus/json"},function(t){r.results.empty(),r.opts.populateResults.call(r,r.results,t.result,{term:""})}):(s.select2("data",null),r.results.empty(),r.opts.populateResults.call(r,r.results,[],{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})})}},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")}},header:{submitEditForm:function(){var e=t(this).parents("form").first();a.form.submit(e,{form_data:{autosubmit:!0}})}},footer:{submitEditForm:function(){var e=t(this).parents("form").first();a.form.submit(e,{form_data:{autosubmit:!0}})}},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('<a href="oid://'+e.data.oid+'">'+e.data.title+"</a>")}})}})}),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:{addMediaCallback:function(e){var a=t(".gallery",t('[id="'+e.parent+'"]')),n=a.siblings(".switcher");n.parents("fieldset:first").hasClass("switched")&&n.click();for(var s=0;s<e.medias.length;s++)a.append(e.medias[s]);a.sortable({helper:"clone",stop:i.galleries.setOrder})},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");t("i",e).attr("class","fa fa-fw fa-spinner fa-pulse"),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:'<i class="text-danger fa fa-2x fa-bell shake animated"></i> '+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(),t.handle_json&&a.ajax.handleJSON(t)})}})}},afterFancyboxLoad:function(t,e){t.element.hasClass("not-visible")&&t.inner.prepend('<div class="hidden-mask"></div>')}},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('<h1 class="loading"><i class="fa fa-2x fa-gear fa-spin"></i></h1>'),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),a.skin.scrollTo(r,{offset:r.height()-o.height()}))})}else a.skin.cleanContainer(r),r.empty(),n.removeClass("fa-minus-square-o").addClass("fa-plus-square-o"),o.removeData("ams-disabled-handlers")},switchLastEditor:function(e){var a=t('table[id="'+e+'"]'),i=t("tr:last",a);t('[data-ams-click-handler="PyAMS_content.paragraphs.switchEditor"]',i).click()},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="manager_themes.widgets.thesaurus_name:list"]',e).val(),n=t('select[name="manager_themes.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("<option></option>").attr("value",this.id).attr("selected",this.id===s).text(this.text).appendTo(n)})})},getExtracts:function(e){var i=t(e.currentTarget).parents("form"),n=t('select[name="manager_themes.widgets.thesaurus_name:list"]',i).val(),s=t('select[name="manager_themes.widgets.extract_name:list"]',i),r=s.data("select2");n&&"--NOVALUE--"!==n?a.jsonrpc.post("getExtracts",{thesaurus_name:n},{url:"/api/thesaurus/json"},function(t){r.results.empty(),r.opts.populateResults.call(r,r.results,t.result,{term:""})}):(s.select2("data",null),r.results.empty(),r.opts.populateResults.call(r,r.results,[],{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})})}},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")}},header:{submitEditForm:function(){var e=t(this).parents("form").first();a.form.submit(e,{form_data:{autosubmit:!0}})}},footer:{submitEditForm:function(){var e=t(this).parents("form").first();a.form.submit(e,{form_data:{autosubmit:!0}})}},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);
--- a/src/pyams_content/skin/zmi/viewlet/toplinks/__init__.py Thu Sep 06 18:10:04 2018 +0200
+++ b/src/pyams_content/skin/zmi/viewlet/toplinks/__init__.py Fri Oct 05 10:44:32 2018 +0200
@@ -9,32 +9,29 @@
# WARRANTIES OF TITLE, MERCHANTABILITY, AGAINST INFRINGEMENT, AND FITNESS
# FOR A PARTICULAR PURPOSE.
#
+import locale
+
__docformat__ = 'restructuredtext'
-# import standard library
+from hypatia.catalog import CatalogQuery
+from hypatia.interfaces import ICatalog
+from hypatia.query import And, Any, NotEq, Or
-# import interfaces
-from hypatia.interfaces import ICatalog
+from pyams_catalog.query import CatalogResultSet
+from pyams_content import _
from pyams_content.shared.common.interfaces import IBaseSharedTool, ISharedSite
from pyams_content.skin.zmi.interfaces import IUserAddingsMenuLabel
from pyams_i18n.interfaces import II18n
from pyams_skin.interfaces.viewlet import ITopLinksViewletManager
-from pyams_zmi.layer import IAdminLayer
-
-# import packages
-from hypatia.catalog import CatalogQuery
-from hypatia.query import Any, And, Or, NotEq
-from pyams_catalog.query import CatalogResultSet
-from pyams_skin.viewlet.toplinks import TopLinksViewlet, TopLinksMenu
+from pyams_skin.viewlet.toplinks import TopLinksMenu, TopLinksViewlet
from pyams_template.template import template_config
from pyams_utils.list import unique
-from pyams_utils.registry import get_utility, get_all_utilities_registered_for
+from pyams_utils.registry import get_all_utilities_registered_for, get_utility
from pyams_utils.url import absolute_url
from pyams_viewlet.viewlet import viewlet_config
-
-from pyams_content import _
+from pyams_zmi.layer import IAdminLayer
@viewlet_config(name='shared-sites.menu', layer=IAdminLayer, manager=ITopLinksViewletManager, weight=20)
@@ -51,7 +48,7 @@
request = self.request
parent = self.__parent__
for site in sorted(get_all_utilities_registered_for(ISharedSite),
- key=lambda x: II18n(x).query_attribute('title', request=request) or ''):
+ key=lambda x: locale.strxfrm(II18n(x).query_attribute('title', request=request) or '')):
menu = TopLinksMenu(context, request, parent, self)
menu.label = II18n(site).query_attribute('title', request=request) or site.__name__
menu.url = absolute_url(site, request, 'admin#dashboard.html')
@@ -72,7 +69,7 @@
request = self.request
parent = self.__parent__
for tool in sorted(get_all_utilities_registered_for(IBaseSharedTool),
- key=lambda x: II18n(x).query_attribute('title', request=request) or ''):
+ key=lambda x: locale.strxfrm(II18n(x).query_attribute('title', request=request) or '')):
if ISharedSite.providedBy(tool) or (not tool.shared_content_menu):
continue
menu = TopLinksMenu(context, request, parent, self)
@@ -95,7 +92,7 @@
request = self.request
parent = self.__parent__
for tool in sorted(get_all_utilities_registered_for(IBaseSharedTool),
- key=lambda x: II18n(x).query_attribute('title', request=request) or ''):
+ key=lambda x: locale.strxfrm(II18n(x).query_attribute('title', request=request) or '')):
if ISharedSite.providedBy(tool) or tool.shared_content_menu:
continue
menu = TopLinksMenu(context, request, parent, self)
@@ -123,7 +120,7 @@
Any(catalog['role:pilot'], {request.principal.id})),
NotEq(catalog['content_type'], None))
for tool in sorted(unique(CatalogResultSet(CatalogQuery(catalog).query(params))),
- key=lambda x: II18n(x).query_attribute('title', request=request) or ''):
+ key=lambda x: locale.strxfrm(II18n(x).query_attribute('title', request=request) or '')):
menu = TopLinksMenu(context, request, parent, self)
menu.label = II18n(tool).query_attribute('title', request=request) or tool.__name__
menu.url = absolute_url(tool, request, 'admin#dashboard.html')
@@ -149,7 +146,7 @@
params = And(Any(catalog['role:contributor'], {request.principal.id}),
NotEq(catalog['content_type'], None))
for tool in sorted(unique(CatalogResultSet(CatalogQuery(catalog).query(params))),
- key=lambda x: II18n(x).query_attribute('title', request=request) or ''):
+ key=lambda x: locale.strxfrm(II18n(x).query_attribute('title', request=request) or '')):
content_class = tool.shared_content_factory.content_class
if content_class is None:
continue
--- a/src/pyams_content/tests/test_utilsdocs.py Thu Sep 06 18:10:04 2018 +0200
+++ b/src/pyams_content/tests/test_utilsdocs.py Fri Oct 05 10:44:32 2018 +0200
@@ -23,6 +23,7 @@
current_dir = os.path.dirname(__file__)
+
def doc_suite(test_dir, setUp=None, tearDown=None, globs=None):
"""Returns a test suite, based on doctests found in /doctest."""
suite = []
@@ -50,10 +51,12 @@
return unittest.TestSuite(suite)
+
def test_suite():
"""returns the test suite"""
return doc_suite(current_dir)
+
if __name__ == '__main__':
unittest.main(defaultTest='test_suite')
--- a/src/pyams_content/tests/test_utilsdocstrings.py Thu Sep 06 18:10:04 2018 +0200
+++ b/src/pyams_content/tests/test_utilsdocstrings.py Fri Oct 05 10:44:32 2018 +0200
@@ -23,6 +23,7 @@
current_dir = os.path.abspath(os.path.dirname(__file__))
+
def doc_suite(test_dir, globs=None):
"""Returns a test suite, based on doc tests strings found in /*.py"""
suite = []
@@ -54,9 +55,11 @@
return unittest.TestSuite(suite)
+
def test_suite():
"""returns the test suite"""
return doc_suite(current_dir)
+
if __name__ == '__main__':
unittest.main(defaultTest='test_suite')
--- a/src/pyams_content/workflow/__init__.py Thu Sep 06 18:10:04 2018 +0200
+++ b/src/pyams_content/workflow/__init__.py Fri Oct 05 10:44:32 2018 +0200
@@ -152,9 +152,9 @@
# can't create new version when previous draft already exists
versions = IWorkflowVersions(context)
if (versions.has_version(DRAFT) or
- versions.has_version(PROPOSED) or
- versions.has_version(CANCELED) or
- versions.has_version(REFUSED)):
+ versions.has_version(PROPOSED) or
+ versions.has_version(CANCELED) or
+ versions.has_version(REFUSED)):
return False
request = check_request()
# grant access to webmaster
@@ -246,7 +246,8 @@
for version in IWorkflowVersions(context).get_versions((PUBLISHED, RETIRING, RETIRED, ARCHIVING)):
if version is not context:
IWorkflowInfo(version).fire_transition_toward(ARCHIVED,
- comment=translate(_("Published version {0}")).format(version_id))
+ comment=translate(_("Published version {0}")).format(
+ version_id))
def archive_action(wf, context):
--- a/src/pyams_content/workflow/basic.py Thu Sep 06 18:10:04 2018 +0200
+++ b/src/pyams_content/workflow/basic.py Fri Oct 05 10:44:32 2018 +0200
@@ -157,7 +157,8 @@
for version in IWorkflowVersions(context).get_versions((PUBLISHED, )):
if version is not context:
IWorkflowInfo(version).fire_transition_toward(ARCHIVED,
- comment=translate(_("Published version {0}")).format(version_id))
+ comment=translate(_("Published version {0}")).format(
+ version_id))
def archive_action(wf, context):
--- a/src/pyams_content/workflow/task.py Thu Sep 06 18:10:04 2018 +0200
+++ b/src/pyams_content/workflow/task.py Fri Oct 05 10:44:32 2018 +0200
@@ -55,8 +55,8 @@
for tool in get_all_utilities_registered_for(IBaseSharedTool):
workflow = IWorkflow(tool)
params = Eq(catalog['parents'], intids.register(tool)) & \
- Any(catalog['workflow_state'], workflow.published_states) & \
- Lt(catalog['expiration_date'], now)
+ Any(catalog['workflow_state'], workflow.published_states) & \
+ Lt(catalog['expiration_date'], now)
for content in CatalogResultSet(CatalogQuery(catalog).query(params)):
if not has_retired:
report.write(translate(_("Automatic contents withdrawal:\n")))