merge default doc-dc
authorDamien Correia
Wed, 06 Jun 2018 11:20:14 +0200
branchdoc-dc
changeset 657 652a551b127e
parent 656 0abdc1492e03 (current diff)
parent 583 a3df1b69616b (diff)
child 658 b0bfac7e3160
merge default
--- a/src/pyams_content/component/extfile/__init__.py	Wed May 30 16:36:17 2018 +0200
+++ b/src/pyams_content/component/extfile/__init__.py	Wed Jun 06 11:20:14 2018 +0200
@@ -222,8 +222,6 @@
     icon_class = 'fa-file-image-o'
     icon_hint = _("Image")
 
-    title = FieldProperty(IExtMedia['title'])
-    alt_title = FieldProperty(IExtImage['alt_title'])
     _data = I18nFileProperty(IExtImage['data'])
 
     @property
@@ -254,7 +252,6 @@
     icon_class = 'fa-file-video-o'
     icon_hint = _("Video")
 
-    title = FieldProperty(IExtMedia['title'])
     data = I18nFileProperty(IExtVideo['data'])
 
 register_file_factory('video', ExtVideo, _("Video"))
@@ -274,7 +271,6 @@
     icon_class = 'fa-file-audio-o'
     icon_hint = _("Audio file")
 
-    title = FieldProperty(IExtMedia['title'])
     data = I18nFileProperty(IExtAudio['data'])
 
 register_file_factory('audio', ExtAudio, _("Audio file"))
--- a/src/pyams_content/component/extfile/interfaces/__init__.py	Wed May 30 16:36:17 2018 +0200
+++ b/src/pyams_content/component/extfile/interfaces/__init__.py	Wed Jun 06 11:20:14 2018 +0200
@@ -33,7 +33,7 @@
 class IBaseExtFile(IAssociationItem):
     """Base external file interface"""
 
-    title = I18nTextLineField(title=_("Title"),
+    title = I18nTextLineField(title=_("Alternate title"),
                               description=_("File title, as shown in front-office"),
                               required=False)
 
@@ -70,14 +70,6 @@
 class IExtImage(IExtMedia):
     """External image file interface"""
 
-    title = I18nTextLineField(title=_("Legend"),
-                              description=_("File legend, as shown in front-office"),
-                              required=False)
-
-    alt_title = I18nTextLineField(title=_("Accessibility title"),
-                                  description=_("Alternate title used to describe image content"),
-                                  required=False)
-
     data = I18nThumbnailImageField(title=_("Image data"),
                                    description=_("Image content"),
                                    required=True)
--- a/src/pyams_content/component/extfile/zmi/__init__.py	Wed May 30 16:36:17 2018 +0200
+++ b/src/pyams_content/component/extfile/zmi/__init__.py	Wed Jun 06 11:20:14 2018 +0200
@@ -101,7 +101,7 @@
     legend = _("Add new external file")
     icon_css_class = 'fa fa-fw fa-file-text-o'
 
-    fields = field.Fields(IExtFile).select('title', 'description', 'author', 'language', 'data', 'filename')
+    fields = field.Fields(IExtFile).select('data', 'filename', 'title', 'description', 'author', 'language')
     ajax_handler = 'add-extfile.json'
     edit_permission = MANAGE_CONTENT_PERMISSION
 
@@ -142,7 +142,7 @@
     icon_css_class = 'fa fa-fw fa-file-text-o'
     dialog_class = 'modal-large'
 
-    fields = field.Fields(IExtFile).select('title', 'description', 'author', 'language', 'data', 'filename')
+    fields = field.Fields(IExtFile).select('data', 'filename', 'title', 'description', 'author', 'language')
     ajax_handler = 'properties.json'
     edit_permission = MANAGE_CONTENT_PERMISSION
 
@@ -208,8 +208,7 @@
     legend = _("Add new image")
     icon_css_class = 'fa fa-fw fa-file-image-o'
 
-    fields = field.Fields(IExtImage).select('title', 'alt_title', 'description', 'author',
-                                            'language', 'data', 'filename')
+    fields = field.Fields(IExtImage).select('data', 'filename', 'title', 'description', 'author')
     ajax_handler = 'add-extimage.json'
 
     def updateWidgets(self, prefix=None):
@@ -245,8 +244,7 @@
     legend = _("Update image properties")
     icon_css_class = 'fa fa-fw fa-file-image-o'
 
-    fields = field.Fields(IExtImage).select('title', 'alt_title', 'description', 'author',
-                                            'language', 'data', 'filename')
+    fields = field.Fields(IExtImage).select('data', 'filename', 'title', 'description', 'author')
 
     def updateWidgets(self, prefix=None):
         super(ExtImagePropertiesEditForm, self).updateWidgets(prefix)
@@ -312,7 +310,7 @@
     legend = _("Add new video")
     icon_css_class = 'fa fa-fw fa-file-video-o'
 
-    fields = field.Fields(IExtVideo).select('title', 'description', 'author', 'language', 'data', 'filename')
+    fields = field.Fields(IExtVideo).select('data', 'filename', 'title', 'description', 'author', 'language')
     ajax_handler = 'add-extvideo.json'
 
     def create(self, data):
@@ -341,7 +339,7 @@
     legend = _("Update video properties")
     icon_css_class = 'fa fa-fw fa-file-video-o'
 
-    fields = field.Fields(IExtVideo).select('title', 'description', 'author', 'language', 'data', 'filename')
+    fields = field.Fields(IExtVideo).select('data', 'filename', 'title', 'description', 'author', 'language')
 
 
 @view_config(name='properties.json', context=IExtVideo, request_type=IPyAMSLayer,
@@ -400,7 +398,7 @@
     legend = _("Add new audio file")
     icon_css_class = 'fa fa-fw fa-file-audio-o'
 
-    fields = field.Fields(IExtAudio).select('title', 'description', 'author', 'language', 'data', 'filename')
+    fields = field.Fields(IExtAudio).select('data', 'filename', 'title', 'description', 'author', 'language')
     ajax_handler = 'add-extaudio.json'
 
     def create(self, data):
@@ -429,7 +427,7 @@
     legend = _("Update audio file properties")
     icon_css_class = 'fa fa-fw fa-file-audio-o'
 
-    fields = field.Fields(IExtAudio).select('title', 'description', 'author', 'language', 'data', 'filename')
+    fields = field.Fields(IExtAudio).select('data', 'filename', 'title', 'description', 'author', 'language')
 
 
 @view_config(name='properties.json', context=IExtAudio, request_type=IPyAMSLayer,
--- a/src/pyams_content/component/paragraph/contact.py	Wed May 30 16:36:17 2018 +0200
+++ b/src/pyams_content/component/paragraph/contact.py	Wed Jun 06 11:20:14 2018 +0200
@@ -48,14 +48,14 @@
 
     name = FieldProperty(IContactParagraph['name'])
     charge = FieldProperty(IContactParagraph['charge'])
+    contact_email = FieldProperty(IContactParagraph['contact_email'])
+    contact_form = FieldProperty(IContactParagraph['contact_form'])
     _photo = FileProperty(IContactParagraph['photo'])
 
     if have_gis:
         gps_location = FieldProperty(IContactParagraph['gps_location'])
 
     address = FieldProperty(IContactParagraph['address'])
-    contact_email = FieldProperty(IContactParagraph['contact_email'])
-    contact_form = FieldProperty(IContactParagraph['contact_form'])
     renderer = FieldProperty(IContactParagraph['renderer'])
 
     @property
--- a/src/pyams_content/component/paragraph/interfaces/contact.py	Wed May 30 16:36:17 2018 +0200
+++ b/src/pyams_content/component/paragraph/interfaces/contact.py	Wed Jun 06 11:20:14 2018 +0200
@@ -54,6 +54,15 @@
                                description=_("Label of contact function"),
                                required=False)
 
+    contact_email = MailAddressField(title=_("Email address"),
+                                     description=_("Contact email address"),
+                                     required=False)
+
+    contact_form = InternalReference(title=_("Contact form"),
+                                     description=_("Reference of contact form"),
+                                     required=False,
+                                     content_type=FORM_CONTENT_TYPE)
+
     photo = ImageField(title=_("Photo"),
                        description=_("Use 'browse' button to select contact picture"),
                        required=False)
@@ -66,15 +75,6 @@
     address = Text(title=_("Address"),
                    required=False)
 
-    contact_email = MailAddressField(title=_("Email address"),
-                                     description=_("Contact email address"),
-                                     required=False)
-
-    contact_form = InternalReference(title=_("Contact form"),
-                                     description=_("Reference of contact form"),
-                                     required=False,
-                                     content_type=FORM_CONTENT_TYPE)
-
     renderer = Choice(title=_("Contact template"),
                       description=_("Presentation template used for this contact"),
                       vocabulary=CONTACT_PARAGRAPH_RENDERERS,
--- a/src/pyams_content/component/paragraph/interfaces/pictogram.py	Wed May 30 16:36:17 2018 +0200
+++ b/src/pyams_content/component/paragraph/interfaces/pictogram.py	Wed Jun 06 11:20:14 2018 +0200
@@ -45,7 +45,7 @@
 
     pictogram_name = Choice(title=_("Pictogram"),
                             description=_("Name of the pictogram to select"),
-                            required=True,
+                            required=False,
                             vocabulary=SELECTED_PICTOGRAM_VOCABULARY)
 
     pictogram = Attribute("Select pictogram object")
--- a/src/pyams_content/component/paragraph/zmi/keynumber.py	Wed May 30 16:36:17 2018 +0200
+++ b/src/pyams_content/component/paragraph/zmi/keynumber.py	Wed Jun 06 11:20:14 2018 +0200
@@ -252,6 +252,9 @@
     attrName = 'label'
     weight = 20
 
+    def getValue(self, obj):
+        return super(KeyNumbersTableLabelColumn, self).getValue(obj) or '--'
+
 
 @adapter_config(name='text', context=(IKeyNumberContainerTarget, IPyAMSLayer, KeyNumbersTable), provides=IColumn)
 class KeyNumbersTableTextColumn(I18nColumn, I18nAttrColumn):
@@ -261,6 +264,9 @@
     attrName = 'text'
     weight = 30
 
+    def getValue(self, obj):
+        return super(KeyNumbersTableTextColumn, self).getValue(obj) or '--'
+
 
 @adapter_config(name='trash', context=(IKeyNumberContainerTarget, IPyAMSLayer, KeyNumbersTable), provides=IColumn)
 class KeyNumbersTableTrashColumn(ProtectedFormObjectMixin, TrashColumn):
--- a/src/pyams_content/component/paragraph/zmi/milestone.py	Wed May 30 16:36:17 2018 +0200
+++ b/src/pyams_content/component/paragraph/zmi/milestone.py	Wed Jun 06 11:20:14 2018 +0200
@@ -247,6 +247,9 @@
     attrName = 'title'
     weight = 10
 
+    def getValue(self, obj):
+        return super(MilestonesTableNameColumn, self).getValue(obj) or '--'
+
 
 @adapter_config(name='info', context=(IMilestoneContainerTarget, IPyAMSLayer, MilestonesTable), provides=IColumn)
 class MilestonesTableInfoColumn(I18nColumn, I18nAttrColumn):
@@ -256,6 +259,9 @@
     attrName = 'label'
     weight = 20
 
+    def getValue(self, obj):
+        return super(MilestonesTableInfoColumn, self).getValue(obj) or '--'
+
 
 @adapter_config(name='anchor', context=(IMilestoneContainerTarget, IPyAMSLayer, MilestonesTable), provides=IColumn)
 class MilestonesTableAnchorColumn(I18nColumn, GetAttrColumn):
--- a/src/pyams_content/component/paragraph/zmi/pictogram.py	Wed May 30 16:36:17 2018 +0200
+++ b/src/pyams_content/component/paragraph/zmi/pictogram.py	Wed Jun 06 11:20:14 2018 +0200
@@ -23,13 +23,15 @@
 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.reference.pictograms.interfaces import IPictogramTable
 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_utils.interfaces.data import IObjectData
 from pyams_zmi.interfaces import IPropertiesEditForm
-from z3c.form.interfaces import INPUT_MODE
+from z3c.form.interfaces import INPUT_MODE, IDataExtractedEvent
 from z3c.table.interfaces import IValues, IColumn
 
 # import packages
@@ -48,6 +50,7 @@
 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
+from pyams_utils.registry import query_utility
 from pyams_utils.text import get_text_start
 from pyams_utils.traversing import get_parent
 from pyams_utils.url import absolute_url
@@ -55,10 +58,11 @@
 from pyams_zmi.form import AdminDialogAddForm, AdminDialogEditForm
 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, Interface
+from zope.interface import implementer, alsoProvides, Interface, Invalid
 
 from pyams_content import _
 
@@ -333,6 +337,22 @@
 
     def updateWidgets(self, prefix=None):
         super(PictogramAddForm, self).updateWidgets(prefix)
+        if 'pictogram_name' in self.widgets:
+            pictograms = query_utility(IPictogramTable)
+            if pictograms is not None:
+                label_id = '{0}_pictogram_label'.format(self.id)
+                widget = self.widgets['pictogram_name']
+                widget.after_widget_notice = '<span id="{0}" class="text-info">{1}</span>'.format(
+                    label_id,
+                    self.request.localizer.translate(_("Default header: --")))
+                widget.object_data = {
+                    'ams-change-handler': 'MyAMS.helpers.select2ChangeHelper',
+                    'ams-stop-propagation': 'true',
+                    'ams-select2-helper-type': 'html',
+                    'ams-select2-helper-url': absolute_url(pictograms, self.request, 'get-pictogram-header.html'),
+                    'ams-select2-helper-target': '#{0}'.format(label_id)
+                }
+                alsoProvides(widget, IObjectData)
         if 'body' in self.widgets:
             self.widgets['body'].widget_css_class = 'textarea height-100'
 
@@ -356,6 +376,14 @@
         }
 
 
+@subscriber(IDataExtractedEvent, form_selector=PictogramAddForm)
+def handle_pictogram_add_form_data_extraction(event):
+    """Handle pictogram add form data extraction"""
+    data = event.data
+    if not data.get('pictogram_name'):
+        event.form.widgets.errors += (Invalid(_("You must select a pictogram!")), )
+
+
 @pagelet_config(name='properties.html', context=IPictogramItem, layer=IPyAMSLayer, permission=MANAGE_CONTENT_PERMISSION)
 class PictogramPropertiesEditForm(AdminDialogEditForm):
     """Pictogram properties edit form"""
@@ -371,6 +399,28 @@
 
     def updateWidgets(self, prefix=None):
         super(PictogramPropertiesEditForm, self).updateWidgets(prefix)
+        if 'pictogram_name' in self.widgets:
+            pictograms = query_utility(IPictogramTable)
+            if pictograms is not None:
+                pictogram = pictograms.get(self.context.pictogram_name)
+                label_id = '{0}_pictogram_label'.format(self.id)
+                widget = self.widgets['pictogram_name']
+                widget.required = True
+                if pictogram is None:
+                    widget.after_widget_notice = '<span id="{0}" class="text-info">{1}</span>'.format(label_id, '--')
+                else:
+                    widget.after_widget_notice = '<span id="{0}" class="text-info">{1}</span>'.format(
+                        label_id,
+                        self.request.localizer.translate(_("Default header: {0}")).format(
+                            II18n(pictogram).query_attribute('header', request=self.request) or '--'))
+                widget.object_data = {
+                    'ams-change-handler': 'MyAMS.helpers.select2ChangeHelper',
+                    'ams-stop-propagation': 'true',
+                    'ams-select2-helper-type': 'html',
+                    'ams-select2-helper-url': absolute_url(pictograms, self.request, 'get-pictogram-header.html'),
+                    'ams-select2-helper-target': '#{0}'.format(label_id)
+                }
+                alsoProvides(widget, IObjectData)
         if 'body' in self.widgets:
             self.widgets['body'].widget_css_class = 'textarea height-100'
 
@@ -388,3 +438,11 @@
             output.setdefault('events', []).append(
                 get_json_table_row_refresh_event(target, self.request, PictogramsTable, self.context))
         return output
+
+
+@subscriber(IDataExtractedEvent, form_selector=PictogramPropertiesEditForm)
+def handle_pictogram_edit_form_data_extraction(event):
+    """Handle pictogram edit form data extraction"""
+    data = event.data
+    if not data.get('pictogram_name'):
+        event.form.widgets.errors += (Invalid(_("You must select a pictogram!")), )
--- a/src/pyams_content/features/alert/zmi/container.py	Wed May 30 16:36:17 2018 +0200
+++ b/src/pyams_content/features/alert/zmi/container.py	Wed Jun 06 11:20:14 2018 +0200
@@ -48,7 +48,7 @@
 
 
 @viewlet_config(name='alerts.menu', context=IAlertTarget, layer=IPyAMSLayer, manager=ISiteManagementMenu,
-                permission=MANAGE_SITE_ROOT_PERMISSION, weight=4)
+                permission=MANAGE_SITE_ROOT_PERMISSION, weight=30)
 class AlertsMenu(MenuItem):
     """Alerts menu"""
 
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	Wed May 30 16:36:17 2018 +0200
+++ b/src/pyams_content/locales/fr/LC_MESSAGES/pyams_content.po	Wed Jun 06 11:20:14 2018 +0200
@@ -5,7 +5,7 @@
 msgid ""
 msgstr ""
 "Project-Id-Version: PACKAGE 1.0\n"
-"POT-Creation-Date: 2018-05-30 11:11+0200\n"
+"POT-Creation-Date: 2018-06-06 10:19+0200\n"
 "PO-Revision-Date: 2015-09-10 10:42+0200\n"
 "Last-Translator: Thierry Florac <tflorac@ulthar.net>\n"
 "Language-Team: French\n"
@@ -128,6 +128,16 @@
 msgstr "Contenu de la galerie de médias"
 
 #: src/pyams_content/component/gallery/zmi/interfaces.py:36
+msgid "Images or videos data"
+msgstr "Fichier (image ou vidéo)"
+
+#: 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:56
@@ -137,7 +147,7 @@
 msgid "Author"
 msgstr "Auteur"
 
-#: src/pyams_content/component/gallery/zmi/interfaces.py:37
+#: src/pyams_content/component/gallery/zmi/interfaces.py:41
 #: src/pyams_content/component/gallery/interfaces/__init__.py:62
 #: src/pyams_content/component/extfile/interfaces/__init__.py:45
 #: src/pyams_content/component/paragraph/interfaces/video.py:48
@@ -145,27 +155,17 @@
 msgid "Name of document's author"
 msgstr "Sous la forme \"Prénom Nom / Organisme\""
 
-#: src/pyams_content/component/gallery/zmi/interfaces.py:40
+#: 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:41
+#: 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/interfaces.py:44
-msgid "Images or videos data"
-msgstr "Fichier (image ou vidéo)"
-
-#: src/pyams_content/component/gallery/zmi/interfaces.py:45
-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/templates/gallery-medias.pt:11
 msgid "Gallery medias"
 msgstr "Contenu de la galerie"
@@ -179,19 +179,30 @@
 msgstr "Agrandir l'image"
 
 #: src/pyams_content/component/gallery/interfaces/__init__.py:47
-#: src/pyams_content/component/extfile/interfaces/__init__.py:73
+#: src/pyams_content/component/illustration/interfaces/__init__.py:41
+#: src/pyams_content/component/illustration/interfaces/__init__.py:76
+msgid "Image or video data"
+msgstr "Fichier (image ou vidéo)"
+
+#: src/pyams_content/component/gallery/interfaces/__init__.py:48
+#: src/pyams_content/component/illustration/interfaces/__init__.py:42
+#: src/pyams_content/component/illustration/interfaces/__init__.py:77
+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:45
 msgid "Legend"
 msgstr "Légende"
 
-#: src/pyams_content/component/gallery/interfaces/__init__.py:50
-#: src/pyams_content/component/extfile/interfaces/__init__.py:77
+#: src/pyams_content/component/gallery/interfaces/__init__.py:54
 #: src/pyams_content/component/illustration/interfaces/__init__.py:48
 #: src/pyams_content/reference/pictograms/interfaces/__init__.py:48
 msgid "Accessibility title"
 msgstr "Alternative (accessibilité)"
 
-#: src/pyams_content/component/gallery/interfaces/__init__.py:51
+#: 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é ; "
@@ -199,19 +210,6 @@
 "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:54
-#: src/pyams_content/component/illustration/interfaces/__init__.py:41
-#: src/pyams_content/component/illustration/interfaces/__init__.py:76
-msgid "Image or video data"
-msgstr "Fichier (image ou vidéo)"
-
-#: src/pyams_content/component/gallery/interfaces/__init__.py:55
-#: src/pyams_content/component/illustration/interfaces/__init__.py:42
-#: src/pyams_content/component/illustration/interfaces/__init__.py:77
-msgid "Image or video content"
-msgstr ""
-"Cliquez sur le bouton 'Parcourir...' pour sélectionner un nouveau contenu..."
-
 #: src/pyams_content/component/gallery/interfaces/__init__.py:58
 #: src/pyams_content/component/gallery/interfaces/__init__.py:98
 #: src/pyams_content/component/extfile/interfaces/__init__.py:40
@@ -239,7 +237,7 @@
 "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:97
+#: src/pyams_content/component/extfile/interfaces/__init__.py:89
 msgid "Audio data"
 msgstr "Fichier"
 
@@ -272,7 +270,6 @@
 msgstr "Si 'non', ce média ne sera pas présenté aux internautes"
 
 #: src/pyams_content/component/gallery/interfaces/__init__.py:94
-#: src/pyams_content/component/extfile/interfaces/__init__.py:36
 #: src/pyams_content/component/paragraph/zmi/milestone.py:246
 #: src/pyams_content/component/paragraph/zmi/container.py:224
 #: src/pyams_content/component/paragraph/interfaces/milestone.py:45
@@ -280,10 +277,10 @@
 #: src/pyams_content/shared/common/zmi/dashboard.py:109
 #: src/pyams_content/shared/common/zmi/templates/advanced-search.pt:188
 #: src/pyams_content/shared/imagemap/zmi/container.py:123
-#: src/pyams_content/shared/site/zmi/folder.py:64
+#: src/pyams_content/shared/site/zmi/folder.py:68
 #: src/pyams_content/root/zmi/templates/advanced-search.pt:188
 #: src/pyams_content/interfaces/__init__.py:99
-#: src/pyams_content/reference/pictograms/zmi/__init__.py:162
+#: src/pyams_content/reference/pictograms/zmi/__init__.py:165
 msgid "Title"
 msgstr "Titre"
 
@@ -312,22 +309,22 @@
 msgstr "Fichier"
 
 #: src/pyams_content/component/extfile/__init__.py:223
-#: src/pyams_content/component/extfile/__init__.py:240
+#: src/pyams_content/component/extfile/__init__.py:238
 #: src/pyams_content/shared/imagemap/interfaces/__init__.py:66
 #: src/pyams_content/shared/logo/interfaces/__init__.py:46
 #: src/pyams_content/reference/pictograms/interfaces/__init__.py:44
 msgid "Image"
 msgstr "Image"
 
-#: src/pyams_content/component/extfile/__init__.py:255
-#: src/pyams_content/component/extfile/__init__.py:260
-#: src/pyams_content/component/paragraph/video.py:51
-#: src/pyams_content/component/paragraph/video.py:64
+#: src/pyams_content/component/extfile/__init__.py:253
+#: src/pyams_content/component/extfile/__init__.py:257
+#: src/pyams_content/component/paragraph/video.py:49
+#: src/pyams_content/component/paragraph/video.py:62
 msgid "Video"
 msgstr "Vidéo"
 
-#: src/pyams_content/component/extfile/__init__.py:275
-#: src/pyams_content/component/extfile/__init__.py:280
+#: src/pyams_content/component/extfile/__init__.py:272
+#: src/pyams_content/component/extfile/__init__.py:276
 msgid "Audio file"
 msgstr "Fichier audio"
 
@@ -337,15 +334,15 @@
 
 #: src/pyams_content/component/extfile/zmi/__init__.py:89
 msgid "Add external file"
-msgstr "Fichier standard"
+msgstr "Fichier"
 
 #: src/pyams_content/component/extfile/zmi/__init__.py:101
 msgid "Add new external file"
-msgstr "Ajout d'un fichier standard"
+msgstr "Ajout d'un fichier"
 
 #: src/pyams_content/component/extfile/zmi/__init__.py:141
 msgid "Update file properties"
-msgstr "Propriétés du fichier standard"
+msgstr "Propriétés du fichier"
 
 #: src/pyams_content/component/extfile/zmi/__init__.py:181
 msgid "Images"
@@ -357,48 +354,55 @@
 
 #: src/pyams_content/component/extfile/zmi/__init__.py:208
 msgid "Add new image"
-msgstr "Ajout d'une image"
-
-#: src/pyams_content/component/extfile/zmi/__init__.py:245
+msgstr "Ajout d'une image téléchargeable"
+
+#: src/pyams_content/component/extfile/zmi/__init__.py:244
 msgid "Update image properties"
-msgstr "Propriétés de l'image"
-
-#: src/pyams_content/component/extfile/zmi/__init__.py:285
+msgstr "Propriétés de l'image téléchargeable"
+
+#: src/pyams_content/component/extfile/zmi/__init__.py:283
 msgid "Videos"
 msgstr "Vidéos"
 
-#: src/pyams_content/component/extfile/zmi/__init__.py:300
+#: src/pyams_content/component/extfile/zmi/__init__.py:298
 msgid "Add video"
 msgstr "Vidéo téléchargeable"
 
-#: src/pyams_content/component/extfile/zmi/__init__.py:312
+#: src/pyams_content/component/extfile/zmi/__init__.py:310
 msgid "Add new video"
-msgstr "Ajout d'une vidéo"
-
-#: src/pyams_content/component/extfile/zmi/__init__.py:341
+msgstr "Ajout d'une vidéo téléchargeable"
+
+#: src/pyams_content/component/extfile/zmi/__init__.py:339
 msgid "Update video properties"
-msgstr "Propriétés de la vidéo"
-
-#: src/pyams_content/component/extfile/zmi/__init__.py:373
+msgstr "Propriétés de la vidéo téléchargeable"
+
+#: src/pyams_content/component/extfile/zmi/__init__.py:371
 msgid "Audios files"
 msgstr "Fichiers audios"
 
-#: src/pyams_content/component/extfile/zmi/__init__.py:388
+#: src/pyams_content/component/extfile/zmi/__init__.py:386
 msgid "Add audio file"
-msgstr "Fichier audio téléchargeable"
-
-#: src/pyams_content/component/extfile/zmi/__init__.py:400
+msgstr "Audio téléchargeable"
+
+#: src/pyams_content/component/extfile/zmi/__init__.py:398
 msgid "Add new audio file"
-msgstr "Ajout d'un fichier audio"
-
-#: src/pyams_content/component/extfile/zmi/__init__.py:429
+msgstr "Ajout d'un fichier audio téléchargeable"
+
+#: src/pyams_content/component/extfile/zmi/__init__.py:427
 msgid "Update audio file properties"
-msgstr "Propriétés du fichier audio"
+msgstr "Propriétés du fichier audio 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:33
+#: src/pyams_content/shared/imagemap/interfaces/__init__.py:54
+#: src/pyams_content/shared/site/interfaces/__init__.py:113
+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"
@@ -438,41 +442,27 @@
 msgstr ""
 "Cliquez sur le bouton 'Parcourir...' pour sélectionner un nouveau contenu"
 
-#: src/pyams_content/component/extfile/interfaces/__init__.py:74
-msgid "File legend, as shown in front-office"
-msgstr "Titre du fichier, tel que présenté aux internautes"
-
-#: src/pyams_content/component/extfile/interfaces/__init__.py:78
-#: src/pyams_content/component/illustration/interfaces/__init__.py:49
-#: 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/extfile/interfaces/__init__.py:81
+#: src/pyams_content/component/extfile/interfaces/__init__.py:73
 #: src/pyams_content/shared/logo/interfaces/__init__.py:47
 msgid "Image data"
 msgstr "Fichier"
 
-#: src/pyams_content/component/extfile/interfaces/__init__.py:82
+#: 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:89
+#: src/pyams_content/component/extfile/interfaces/__init__.py:81
 #: src/pyams_content/component/paragraph/interfaces/video.py:51
 msgid "Video data"
 msgstr "Fichier"
 
-#: src/pyams_content/component/extfile/interfaces/__init__.py:90
+#: 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:98
+#: 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"
@@ -501,6 +491,15 @@
 msgid "Header illustration"
 msgstr "Illustration d'en-tête"
 
+#: src/pyams_content/component/illustration/interfaces/__init__.py:49
+#: src/pyams_content/reference/pictograms/interfaces/__init__.py:49
+msgid "Alternate title used to describe image content"
+msgstr ""
+"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:57
 msgid "Name of picture's author"
 msgstr "Sous la forme \"Prénom Nom / Organisme\""
@@ -518,7 +517,7 @@
 
 #: src/pyams_content/component/paragraph/milestone.py:199
 #: src/pyams_content/component/paragraph/milestone.py:222
-#: src/pyams_content/component/paragraph/zmi/milestone.py:297
+#: src/pyams_content/component/paragraph/zmi/milestone.py:303
 msgid "Milestones"
 msgstr "Chronologie"
 
@@ -553,7 +552,7 @@
 
 #: src/pyams_content/component/paragraph/pictogram.py:189
 #: src/pyams_content/component/paragraph/pictogram.py:212
-#: src/pyams_content/component/paragraph/zmi/pictogram.py:301
+#: src/pyams_content/component/paragraph/zmi/pictogram.py:305
 msgid "Pictograms"
 msgstr "Pictogrammes"
 
@@ -567,7 +566,7 @@
 
 #: src/pyams_content/component/paragraph/keynumber.py:183
 #: src/pyams_content/component/paragraph/keynumber.py:207
-#: src/pyams_content/component/paragraph/zmi/keynumber.py:276
+#: src/pyams_content/component/paragraph/zmi/keynumber.py:282
 msgid "Key numbers"
 msgstr "Chiffres-clés"
 
@@ -635,29 +634,29 @@
 msgid "Edit milestone paragraph properties"
 msgstr "Propriétés de la chronologie"
 
-#: src/pyams_content/component/paragraph/zmi/milestone.py:255
+#: src/pyams_content/component/paragraph/zmi/milestone.py:258
 #: src/pyams_content/component/paragraph/interfaces/milestone.py:49
 msgid "Associated label"
 msgstr "Information associée"
 
-#: src/pyams_content/component/paragraph/zmi/milestone.py:264
+#: src/pyams_content/component/paragraph/zmi/milestone.py:270
 #: src/pyams_content/component/paragraph/interfaces/milestone.py:53
 msgid "Anchor"
 msgstr "Ancre"
 
-#: src/pyams_content/component/paragraph/zmi/milestone.py:312
+#: src/pyams_content/component/paragraph/zmi/milestone.py:318
 msgid "Add milestone"
 msgstr "Ajouter un jalon"
 
-#: src/pyams_content/component/paragraph/zmi/milestone.py:323
+#: src/pyams_content/component/paragraph/zmi/milestone.py:329
 msgid "Add new milestone"
 msgstr "Ajout d'un jalon"
 
-#: src/pyams_content/component/paragraph/zmi/milestone.py:356
+#: src/pyams_content/component/paragraph/zmi/milestone.py:362
 msgid "Edit milestone properties"
 msgstr "Propriétés du jalon"
 
-#: src/pyams_content/component/paragraph/zmi/milestone.py:345
+#: src/pyams_content/component/paragraph/zmi/milestone.py:351
 msgid "Milestone was correctly added"
 msgstr "Le jalon a été ajouté."
 
@@ -769,11 +768,11 @@
 
 #: src/pyams_content/component/paragraph/zmi/container.py:367
 msgid "Links and attachments..."
-msgstr "Liens et pièces jointes"
+msgstr "Récap. liens et PJ"
 
 #: src/pyams_content/component/paragraph/zmi/container.py:379
 msgid "Content blocks links and attachments"
-msgstr "Liens et pièces jointes par bloc de contenu"
+msgstr "Récapitulatif des liens et pièces jointes par bloc de contenu"
 
 #: src/pyams_content/component/paragraph/zmi/container.py:127
 msgid "No currently defined paragraph."
@@ -793,49 +792,65 @@
 "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:79
+#: src/pyams_content/component/paragraph/zmi/pictogram.py:83
 msgid "Pictograms..."
 msgstr "Pictogrammes"
 
-#: src/pyams_content/component/paragraph/zmi/pictogram.py:90
+#: src/pyams_content/component/paragraph/zmi/pictogram.py:94
 msgid "Add new pictogram paragraph"
 msgstr "Ajout de pictogrammes"
 
-#: src/pyams_content/component/paragraph/zmi/pictogram.py:122
+#: src/pyams_content/component/paragraph/zmi/pictogram.py:126
 msgid "Edit pictogram paragraph properties"
 msgstr "Propriétés des pictogrammes"
 
 #. Default: Header
-#: src/pyams_content/component/paragraph/zmi/pictogram.py:264
+#: src/pyams_content/component/paragraph/zmi/pictogram.py:268
 msgid "pictogram-item-header"
 msgstr "En-tête"
 
-#: src/pyams_content/component/paragraph/zmi/pictogram.py:279
-#: src/pyams_content/component/paragraph/zmi/keynumber.py:260
+#: src/pyams_content/component/paragraph/zmi/pictogram.py:283
+#: src/pyams_content/component/paragraph/zmi/keynumber.py:263
 #: src/pyams_content/component/paragraph/interfaces/pictogram.py:58
 #: src/pyams_content/component/paragraph/interfaces/keynumber.py:54
 msgid "Associated text"
 msgstr "Texte associé"
 
-#: src/pyams_content/component/paragraph/zmi/pictogram.py:316
-#: src/pyams_content/reference/pictograms/zmi/__init__.py:59
+#: src/pyams_content/component/paragraph/zmi/pictogram.py:320
+#: src/pyams_content/reference/pictograms/zmi/__init__.py:62
 msgid "Add pictogram"
 msgstr "Ajouter un pictogramme"
 
-#: src/pyams_content/component/paragraph/zmi/pictogram.py:327
-#: src/pyams_content/reference/pictograms/zmi/__init__.py:70
+#: src/pyams_content/component/paragraph/zmi/pictogram.py:331
+#: src/pyams_content/reference/pictograms/zmi/__init__.py:73
 msgid "Add new pictogram"
 msgstr "Ajout d'un pictogramme"
 
-#: src/pyams_content/component/paragraph/zmi/pictogram.py:365
-#: src/pyams_content/reference/pictograms/zmi/__init__.py:100
+#: src/pyams_content/component/paragraph/zmi/pictogram.py:393
+#: src/pyams_content/reference/pictograms/zmi/__init__.py:103
 msgid "Edit pictogram properties"
 msgstr "Propriétés du pictogramme"
 
-#: src/pyams_content/component/paragraph/zmi/pictogram.py:354
+#: src/pyams_content/component/paragraph/zmi/pictogram.py:374
 msgid "Pictogram was correctly added"
 msgstr "Le pictogramme a été ajouté."
 
+#: src/pyams_content/component/paragraph/zmi/pictogram.py:384
+#: src/pyams_content/component/paragraph/zmi/pictogram.py:448
+msgid "You must select a pictogram!"
+msgstr "Vous devez sélectionner un pictogramme !"
+
+#: src/pyams_content/component/paragraph/zmi/pictogram.py:347
+#: src/pyams_content/reference/pictograms/zmi/__init__.py:186
+msgid "Default header: --"
+msgstr "En-tête par défaut : --"
+
+#: src/pyams_content/component/paragraph/zmi/pictogram.py:414
+#: src/pyams_content/reference/pictograms/zmi/__init__.py:190
+#, python-format
+msgid "Default header: {0}"
+msgstr "En-tête par défaut : {0}"
+
 #: src/pyams_content/component/paragraph/zmi/keynumber.py:76
 msgid "Key numbers..."
 msgstr "Chiffres-clés"
@@ -859,19 +874,19 @@
 msgid "key-number-label"
 msgstr "En-tête"
 
-#: src/pyams_content/component/paragraph/zmi/keynumber.py:291
+#: src/pyams_content/component/paragraph/zmi/keynumber.py:297
 msgid "Add keynumber"
 msgstr "Ajouter un chiffre-clé"
 
-#: src/pyams_content/component/paragraph/zmi/keynumber.py:302
+#: src/pyams_content/component/paragraph/zmi/keynumber.py:308
 msgid "Add new keynumber"
 msgstr "Ajout d'un chiffre-clé"
 
-#: src/pyams_content/component/paragraph/zmi/keynumber.py:335
+#: src/pyams_content/component/paragraph/zmi/keynumber.py:341
 msgid "Edit keynumber properties"
 msgstr "Propriétés du chiffre-clé"
 
-#: src/pyams_content/component/paragraph/zmi/keynumber.py:324
+#: src/pyams_content/component/paragraph/zmi/keynumber.py:330
 msgid "Key number was correctly added"
 msgstr "Le chiffre-clé a été ajouté."
 
@@ -953,7 +968,7 @@
 #: src/pyams_content/component/paragraph/interfaces/keynumber.py:40
 #: src/pyams_content/component/association/interfaces/__init__.py:42
 #: src/pyams_content/shared/form/interfaces/__init__.py:86
-#: src/pyams_content/shared/site/interfaces/__init__.py:107
+#: src/pyams_content/shared/site/interfaces/__init__.py:117
 #: src/pyams_content/features/alert/interfaces.py:54
 msgid "Visible?"
 msgstr "Visible ?"
@@ -1184,33 +1199,33 @@
 msgstr "Fonction du contact"
 
 #: src/pyams_content/component/paragraph/interfaces/contact.py:57
-msgid "Photo"
-msgstr "Photo"
+msgid "Email address"
+msgstr "Adresse de messagerie"
 
 #: src/pyams_content/component/paragraph/interfaces/contact.py:58
+msgid "Contact email address"
+msgstr "Adresse de messagerie \"stricte\", soit uniquement \"xxx@yyy.com\""
+
+#: src/pyams_content/component/paragraph/interfaces/contact.py:61
+msgid "Contact form"
+msgstr "Formulaire de contact"
+
+#: src/pyams_content/component/paragraph/interfaces/contact.py:62
+msgid "Reference of contact form"
+msgstr "Référence d'un formulaire de contact"
+
+#: src/pyams_content/component/paragraph/interfaces/contact.py:66
+msgid "Photo"
+msgstr "Photo"
+
+#: src/pyams_content/component/paragraph/interfaces/contact.py:67
 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:66
+#: src/pyams_content/component/paragraph/interfaces/contact.py:75
 msgid "Address"
 msgstr "Adresse"
 
-#: src/pyams_content/component/paragraph/interfaces/contact.py:69
-msgid "Email address"
-msgstr "Adresse de messagerie"
-
-#: src/pyams_content/component/paragraph/interfaces/contact.py:70
-msgid "Contact email address"
-msgstr "Adresse de messagerie \"stricte\", soit uniquement \"xxx@yyy.com\""
-
-#: src/pyams_content/component/paragraph/interfaces/contact.py:73
-msgid "Contact form"
-msgstr "Formulaire de contact"
-
-#: src/pyams_content/component/paragraph/interfaces/contact.py:74
-msgid "Reference of contact form"
-msgstr "Référence d'un formulaire de contact"
-
 #: src/pyams_content/component/paragraph/interfaces/contact.py:78
 msgid "Contact template"
 msgstr "Mode de rendu"
@@ -1219,11 +1234,11 @@
 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:62
+#: src/pyams_content/component/paragraph/interfaces/contact.py:71
 msgid "GPS location"
 msgstr "Position GPS"
 
-#: src/pyams_content/component/paragraph/interfaces/contact.py:63
+#: src/pyams_content/component/paragraph/interfaces/contact.py:72
 msgid "GPS coordinates used to locate contact"
 msgstr "Coordonnées GPS de situation du contact"
 
@@ -1392,12 +1407,6 @@
 msgid "Content's internal links"
 msgstr "Autres contenus qui pointent vers ce contenu"
 
-#: src/pyams_content/component/links/interfaces/__init__.py:33
-#: src/pyams_content/shared/imagemap/interfaces/__init__.py:54
-#: src/pyams_content/shared/site/interfaces/__init__.py:103
-msgid "Alternate title"
-msgstr "Titre de substitution"
-
 #: src/pyams_content/component/links/interfaces/__init__.py:34
 msgid "Link title, as shown in front-office"
 msgstr ""
@@ -1739,7 +1748,7 @@
 
 #: src/pyams_content/shared/common/__init__.py:237
 #: src/pyams_content/shared/common/zmi/properties.py:72
-#: src/pyams_content/shared/common/zmi/manager.py:90
+#: src/pyams_content/shared/common/zmi/manager.py:97
 msgid "Properties"
 msgstr "Propriétés"
 
@@ -1966,7 +1975,7 @@
 msgid "Delete definitively"
 msgstr "Supprimer définitivement"
 
-#: src/pyams_content/shared/common/zmi/workflow.py:920
+#: src/pyams_content/shared/common/zmi/workflow.py:923
 msgid ""
 "You must confirm that you previewed and checked this content before "
 "requesting publication!!"
@@ -2058,19 +2067,15 @@
 msgid "{state} since {date}, by {principal}"
 msgstr "{state} depuis {date} par {principal}"
 
-#: src/pyams_content/shared/common/zmi/manager.py:76
-msgid "Tool management"
-msgstr "Gérer l'outil partagé"
-
-#: src/pyams_content/shared/common/zmi/manager.py:100
+#: 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:120
+#: src/pyams_content/shared/common/zmi/manager.py:132
 msgid "WARNING"
 msgstr "ATTENTION"
 
-#: src/pyams_content/shared/common/zmi/manager.py:122
+#: src/pyams_content/shared/common/zmi/manager.py:134
 msgid ""
 "Workflow shouldn't be modified if this tool already contains any shared "
 "content!"
@@ -2078,15 +2083,15 @@
 "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:145
+#: src/pyams_content/shared/common/zmi/manager.py:157
 msgid "Languages"
 msgstr "Langues"
 
-#: src/pyams_content/shared/common/zmi/manager.py:156
+#: src/pyams_content/shared/common/zmi/manager.py:168
 msgid "Content languages"
 msgstr "Langues pour la traduction de cet outil"
 
-#: src/pyams_content/shared/common/zmi/manager.py:173
+#: src/pyams_content/shared/common/zmi/manager.py:185
 msgid ""
 "Tool languages are used to translate own tool properties, and newly created "
 "contents will propose these languages by default"
@@ -2095,6 +2100,14 @@
 "\n"
 "Les nouveaux contenus proposeront également ces langues par défaut."
 
+#: src/pyams_content/shared/common/zmi/manager.py:81
+msgid "Content management"
+msgstr "Gérer ce gabarit"
+
+#: src/pyams_content/shared/common/zmi/manager.py:83
+msgid "Tool management"
+msgstr "Gérer l'outil partagé"
+
 #: src/pyams_content/shared/common/zmi/owner.py:51
 msgid "Change owner..."
 msgstr "Changer de propriétaire"
@@ -3000,14 +3013,14 @@
 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:155
-#: src/pyams_content/shared/site/zmi/folder.py:72
-#: src/pyams_content/shared/site/interfaces/__init__.py:56
+#: src/pyams_content/shared/site/zmi/folder.py:76
+#: src/pyams_content/shared/site/interfaces/__init__.py:66
 msgid "Notepad"
 msgstr "Bloc-notes"
 
 #: src/pyams_content/shared/common/interfaces/__init__.py:156
-#: src/pyams_content/shared/site/zmi/folder.py:73
-#: src/pyams_content/shared/site/interfaces/__init__.py:57
+#: src/pyams_content/shared/site/zmi/folder.py:77
+#: src/pyams_content/shared/site/interfaces/__init__.py:67
 msgid "Internal information to be known about this content"
 msgstr ""
 "Pour prendre note d'informations internes utiles ou importantes à propos de "
@@ -3074,8 +3087,8 @@
 "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"
+"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:283
 msgid "Restricted contents"
@@ -3606,6 +3619,7 @@
 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 !"
 
@@ -3668,45 +3682,65 @@
 msgid "Image map template"
 msgstr "Mode de rendu"
 
-#: src/pyams_content/shared/site/zmi/folder.py:55
+#: src/pyams_content/shared/site/folder.py:58
+msgid "Site folder"
+msgstr "Rubrique"
+
+#: src/pyams_content/shared/site/link.py:46
+msgid "Content link"
+msgstr "Contenu lié"
+
+#: src/pyams_content/shared/site/zmi/folder.py:59
 msgid "Add site folder..."
 msgstr "Ajouter une rubrique"
 
-#: src/pyams_content/shared/site/zmi/folder.py:86
+#: src/pyams_content/shared/site/zmi/folder.py:90
 msgid "Add site folder"
 msgstr "Ajout d'une rubrique"
 
-#: src/pyams_content/shared/site/zmi/folder.py:65
+#: src/pyams_content/shared/site/zmi/folder.py:166
+msgid "Site folder management"
+msgstr "Gérer cette rubrique"
+
+#: src/pyams_content/shared/site/zmi/folder.py:177
+msgid "Site folder properties"
+msgstr "Propriétés de la rubrique"
+
+#: src/pyams_content/shared/site/zmi/folder.py:69
 #: src/pyams_content/interfaces/__init__.py:100
 msgid "Visible label used to display content"
 msgstr "Le titre présenté aux internautes"
 
-#: src/pyams_content/shared/site/zmi/folder.py:68
-#: src/pyams_content/shared/site/zmi/__init__.py:63
+#: src/pyams_content/shared/site/zmi/folder.py:72
+#: src/pyams_content/shared/site/zmi/__init__.py:72
 #: src/pyams_content/shared/site/zmi/link.py:67
 msgid "Parent"
 msgstr "Niveau parent"
 
-#: src/pyams_content/shared/site/zmi/folder.py:69
+#: src/pyams_content/shared/site/zmi/folder.py:73
 #: src/pyams_content/shared/site/zmi/link.py:68
 msgid "Folder's parent"
 msgstr "Niveau de rattachement de cette rubrique"
 
-#: src/pyams_content/shared/site/zmi/folder.py:146
+#: src/pyams_content/shared/site/zmi/folder.py:150
 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:54
+#: 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:75
+#: src/pyams_content/shared/site/zmi/__init__.py:84
 msgid "Add topic"
 msgstr "Ajout d'un article"
 
-#: src/pyams_content/shared/site/zmi/__init__.py:64
+#: src/pyams_content/shared/site/zmi/__init__.py:73
 msgid "Topic's parent"
 msgstr "Niveau parent"
 
@@ -3722,86 +3756,113 @@
 msgid "Edit content link properties"
 msgstr "Propriétés du lien"
 
-#: src/pyams_content/shared/site/zmi/container.py:102
-#: src/pyams_content/shared/site/zmi/container.py:114
-#: src/pyams_content/shared/blog/zmi/manager.py:151
-#: src/pyams_content/shared/blog/zmi/manager.py:163
+#: 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:160
+#: src/pyams_content/shared/blog/zmi/manager.py:172
 msgid "Publication dates..."
 msgstr "Dates de publication"
 
-#: src/pyams_content/shared/site/zmi/container.py:127
-#: src/pyams_content/shared/blog/zmi/manager.py:176
+#: src/pyams_content/shared/site/zmi/container.py:131
+#: src/pyams_content/shared/blog/zmi/manager.py:185
 msgid "Update publication dates"
 msgstr "Dates de publication"
 
-#: src/pyams_content/shared/site/zmi/container.py:172
-#: src/pyams_content/shared/site/zmi/container.py:182
+#: src/pyams_content/shared/site/zmi/container.py:183
+#: src/pyams_content/shared/site/zmi/container.py:193
 #: src/pyams_content/root/zmi/sites.py:68
 msgid "Site tree"
 msgstr "Arborescence du site"
 
-#: src/pyams_content/shared/site/zmi/container.py:301
-#: src/pyams_content/shared/site/zmi/container.py:151
+#: src/pyams_content/shared/site/zmi/container.py:312
+#: src/pyams_content/shared/site/zmi/container.py:162
 msgid "Visible element?"
 msgstr "Élément visible ?"
 
-#: src/pyams_content/shared/site/zmi/container.py:302
+#: src/pyams_content/shared/site/zmi/container.py:313
 msgid "Switch element visibility"
 msgstr "Cliquez pour rendre l'élément visible ou non"
 
-#: src/pyams_content/shared/site/zmi/container.py:363
+#: src/pyams_content/shared/site/zmi/container.py:374
 msgid "Folders and topics"
-msgstr "Rubriques et articles"
-
-#: src/pyams_content/shared/site/zmi/container.py:483
+msgstr "Rubriquage"
+
+#: src/pyams_content/shared/site/zmi/container.py:410
+#: src/pyams_content/root/zmi/__init__.py:798
+msgid "Content"
+msgstr "Contenu"
+
+#: src/pyams_content/shared/site/zmi/container.py:506
 msgid "Delete site item"
 msgstr "Supprimer ce contenu"
 
-#: src/pyams_content/shared/site/zmi/container.py:372
+#: src/pyams_content/shared/site/zmi/container.py:383
 msgid "Click to open/close all folders"
 msgstr "Afficher/masquer toutes les rubriques"
 
-#: src/pyams_content/shared/site/zmi/container.py:388
+#: src/pyams_content/shared/site/zmi/container.py:399
 msgid "Click to show/hide inner folders"
 msgstr "Cliquer pour afficher ou cache les sous-niveaux"
 
-#: src/pyams_content/shared/site/zmi/container.py:258
+#: src/pyams_content/shared/site/zmi/container.py:269
 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:80
-#: src/pyams_content/shared/site/zmi/manager.py:92
+#: src/pyams_content/shared/site/zmi/manager.py:58
+msgid "Site management"
+msgstr "Gérer ce site"
+
+#: src/pyams_content/shared/site/zmi/manager.py:88
+#: src/pyams_content/shared/site/zmi/manager.py:100
 msgid "Add site manager"
 msgstr "Ajouter un site"
 
-#: src/pyams_content/shared/site/zmi/manager.py:91
+#: src/pyams_content/shared/site/zmi/manager.py:99
 msgid "Site manager"
 msgstr "Site"
 
-#: src/pyams_content/shared/site/zmi/manager.py:123
-#: src/pyams_content/shared/blog/zmi/manager.py:117
+#: src/pyams_content/shared/site/zmi/manager.py:131
+#: src/pyams_content/shared/blog/zmi/manager.py:126
 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:127
+#: src/pyams_content/shared/site/zmi/manager.py:135
 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:131
+#: src/pyams_content/shared/site/zmi/manager.py:139
 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:85
+#: src/pyams_content/shared/site/interfaces/__init__.py:95
 msgid "Topic"
 msgstr "Article"
 
-#: src/pyams_content/shared/site/interfaces/__init__.py:104
+#: src/pyams_content/shared/site/interfaces/__init__.py:58
+msgid "Heading"
+msgstr "Chapô"
+
+#: src/pyams_content/shared/site/interfaces/__init__.py:59
+msgid "Heading displayed according to presentation template"
+msgstr "Ce chapô pourra être affiché ou non en fonction du modèle de présentation retenu"
+
+#: src/pyams_content/shared/site/interfaces/__init__.py:62
+msgid "Navigation title"
+msgstr "Titre de navigation"
+
+#: src/pyams_content/shared/site/interfaces/__init__.py:63
+msgid "Title displayed in navigation items"
+msgstr ""
+"Libellé utilisé en lieu et place du titre dans les blocs de navigation, "
+"notamment dans les pages carrefours"
+
+#: src/pyams_content/shared/site/interfaces/__init__.py:114
 msgid "Content title, as shown in front-office"
 msgstr "Titre présenté aux internautes"
 
-#: src/pyams_content/shared/site/interfaces/__init__.py:108
+#: src/pyams_content/shared/site/interfaces/__init__.py:118
 msgid "If 'no', link is not visible"
 msgstr "Si 'non', le lien ne sera pas visible"
 
@@ -3888,20 +3949,24 @@
 msgid "Blog post « {title} »"
 msgstr "Article de blog « {title} »"
 
-#: src/pyams_content/shared/blog/zmi/manager.py:74
-#: src/pyams_content/shared/blog/zmi/manager.py:86
+#: 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:95
 msgid "Add blog manager"
 msgstr "Ajouter un blog"
 
-#: src/pyams_content/shared/blog/zmi/manager.py:85
+#: src/pyams_content/shared/blog/zmi/manager.py:94
 msgid "Blog manager"
 msgstr "Blog"
 
-#: src/pyams_content/shared/blog/zmi/manager.py:121
+#: src/pyams_content/shared/blog/zmi/manager.py:130
 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:125
+#: src/pyams_content/shared/blog/zmi/manager.py:134
 msgid "A blog manager is already registered with this name!!"
 msgstr "Un blog est déjà inscrit dans le registre avec ce nom !"
 
@@ -3945,6 +4010,10 @@
 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:155
 msgid "Content types"
 msgstr "Types de contenus"
@@ -3953,10 +4022,6 @@
 msgid "Home"
 msgstr "Accueil"
 
-#: src/pyams_content/root/zmi/__init__.py:798
-msgid "Content"
-msgstr "Contenu"
-
 #: src/pyams_content/root/zmi/templates/dashboard.pt:7
 msgid "Your contents dashboard"
 msgstr "Les contenus qui me concernent"
@@ -4372,6 +4437,10 @@
 msgid "Edit table properties"
 msgstr "Propriétés de la table"
 
+#: src/pyams_content/reference/zmi/table.py:173
+msgid "Table management"
+msgstr "Gérer cette table"
+
 #: src/pyams_content/reference/zmi/__init__.py:51
 msgid "References"
 msgstr "Tables de réf."
@@ -4813,6 +4882,9 @@
 msgid "Hidden header"
 msgstr "Ne pas afficher d'en-tête de pages"
 
+#~ msgid "File legend, as shown in front-office"
+#~ msgstr "Titre du fichier, tel que présenté aux internautes"
+
 #~ msgid "Check content..."
 #~ msgstr "Auditer le contenu"
 
@@ -4858,9 +4930,6 @@
 #~ msgid "Given site name doesn't exist!"
 #~ msgstr "Le nom de site indiqué n'existe pas !"
 
-#~ msgid "Given alert name doesn't exist!"
-#~ msgstr "L'alerte indiquée n'existe pas !"
-
 #~ msgid "Switch milestone visibility"
 #~ msgstr "Cliquez pour rendre le jalon visible ou non"
 
--- a/src/pyams_content/locales/pyams_content.pot	Wed May 30 16:36:17 2018 +0200
+++ b/src/pyams_content/locales/pyams_content.pot	Wed Jun 06 11:20:14 2018 +0200
@@ -6,7 +6,7 @@
 msgid ""
 msgstr ""
 "Project-Id-Version: PACKAGE 1.0\n"
-"POT-Creation-Date: 2018-05-30 11:11+0200\n"
+"POT-Creation-Date: 2018-06-06 10:19+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"
@@ -129,6 +129,14 @@
 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:56
@@ -138,7 +146,7 @@
 msgid "Author"
 msgstr ""
 
-#: ./src/pyams_content/component/gallery/zmi/interfaces.py:37
+#: ./src/pyams_content/component/gallery/zmi/interfaces.py:41
 #: ./src/pyams_content/component/gallery/interfaces/__init__.py:62
 #: ./src/pyams_content/component/extfile/interfaces/__init__.py:45
 #: ./src/pyams_content/component/paragraph/interfaces/video.py:48
@@ -146,21 +154,13 @@
 msgid "Name of document's author"
 msgstr ""
 
-#: ./src/pyams_content/component/gallery/zmi/interfaces.py:40
+#: ./src/pyams_content/component/gallery/zmi/interfaces.py:44
 msgid "Author comments"
 msgstr ""
 
-#: ./src/pyams_content/component/gallery/zmi/interfaces.py:41
-#: ./src/pyams_content/component/gallery/interfaces/__init__.py:66
-msgid "Comments relatives to author's rights management"
-msgstr ""
-
-#: ./src/pyams_content/component/gallery/zmi/interfaces.py:44
-msgid "Images or videos data"
-msgstr ""
-
 #: ./src/pyams_content/component/gallery/zmi/interfaces.py:45
-msgid "You can upload a single file or choose to upload a whole ZIP archive"
+#: ./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:11
@@ -176,32 +176,30 @@
 msgstr ""
 
 #: ./src/pyams_content/component/gallery/interfaces/__init__.py:47
-#: ./src/pyams_content/component/extfile/interfaces/__init__.py:73
-#: ./src/pyams_content/component/illustration/interfaces/__init__.py:45
-msgid "Legend"
-msgstr ""
-
-#: ./src/pyams_content/component/gallery/interfaces/__init__.py:50
-#: ./src/pyams_content/component/extfile/interfaces/__init__.py:77
-#: ./src/pyams_content/component/illustration/interfaces/__init__.py:48
-#: ./src/pyams_content/reference/pictograms/interfaces/__init__.py:48
-msgid "Accessibility title"
+#: ./src/pyams_content/component/illustration/interfaces/__init__.py:41
+#: ./src/pyams_content/component/illustration/interfaces/__init__.py:76
+msgid "Image or video data"
+msgstr ""
+
+#: ./src/pyams_content/component/gallery/interfaces/__init__.py:48
+#: ./src/pyams_content/component/illustration/interfaces/__init__.py:42
+#: ./src/pyams_content/component/illustration/interfaces/__init__.py:77
+msgid "Image or video content"
 msgstr ""
 
 #: ./src/pyams_content/component/gallery/interfaces/__init__.py:51
-msgid "Alternate title used to describe media content"
+#: ./src/pyams_content/component/illustration/interfaces/__init__.py:45
+msgid "Legend"
 msgstr ""
 
 #: ./src/pyams_content/component/gallery/interfaces/__init__.py:54
-#: ./src/pyams_content/component/illustration/interfaces/__init__.py:41
-#: ./src/pyams_content/component/illustration/interfaces/__init__.py:76
-msgid "Image or video data"
+#: ./src/pyams_content/component/illustration/interfaces/__init__.py:48
+#: ./src/pyams_content/reference/pictograms/interfaces/__init__.py:48
+msgid "Accessibility title"
 msgstr ""
 
 #: ./src/pyams_content/component/gallery/interfaces/__init__.py:55
-#: ./src/pyams_content/component/illustration/interfaces/__init__.py:42
-#: ./src/pyams_content/component/illustration/interfaces/__init__.py:77
-msgid "Image or video content"
+msgid "Alternate title used to describe media content"
 msgstr ""
 
 #: ./src/pyams_content/component/gallery/interfaces/__init__.py:58
@@ -229,7 +227,7 @@
 msgstr ""
 
 #: ./src/pyams_content/component/gallery/interfaces/__init__.py:73
-#: ./src/pyams_content/component/extfile/interfaces/__init__.py:97
+#: ./src/pyams_content/component/extfile/interfaces/__init__.py:89
 msgid "Audio data"
 msgstr ""
 
@@ -262,7 +260,6 @@
 msgstr ""
 
 #: ./src/pyams_content/component/gallery/interfaces/__init__.py:94
-#: ./src/pyams_content/component/extfile/interfaces/__init__.py:36
 #: ./src/pyams_content/component/paragraph/zmi/milestone.py:246
 #: ./src/pyams_content/component/paragraph/zmi/container.py:224
 #: ./src/pyams_content/component/paragraph/interfaces/milestone.py:45
@@ -270,10 +267,10 @@
 #: ./src/pyams_content/shared/common/zmi/dashboard.py:109
 #: ./src/pyams_content/shared/common/zmi/templates/advanced-search.pt:188
 #: ./src/pyams_content/shared/imagemap/zmi/container.py:123
-#: ./src/pyams_content/shared/site/zmi/folder.py:64
+#: ./src/pyams_content/shared/site/zmi/folder.py:68
 #: ./src/pyams_content/root/zmi/templates/advanced-search.pt:188
 #: ./src/pyams_content/interfaces/__init__.py:99
-#: ./src/pyams_content/reference/pictograms/zmi/__init__.py:162
+#: ./src/pyams_content/reference/pictograms/zmi/__init__.py:165
 msgid "Title"
 msgstr ""
 
@@ -299,22 +296,22 @@
 msgstr ""
 
 #: ./src/pyams_content/component/extfile/__init__.py:223
-#: ./src/pyams_content/component/extfile/__init__.py:240
+#: ./src/pyams_content/component/extfile/__init__.py:238
 #: ./src/pyams_content/shared/imagemap/interfaces/__init__.py:66
 #: ./src/pyams_content/shared/logo/interfaces/__init__.py:46
 #: ./src/pyams_content/reference/pictograms/interfaces/__init__.py:44
 msgid "Image"
 msgstr ""
 
-#: ./src/pyams_content/component/extfile/__init__.py:255
-#: ./src/pyams_content/component/extfile/__init__.py:260
-#: ./src/pyams_content/component/paragraph/video.py:51
-#: ./src/pyams_content/component/paragraph/video.py:64
+#: ./src/pyams_content/component/extfile/__init__.py:253
+#: ./src/pyams_content/component/extfile/__init__.py:257
+#: ./src/pyams_content/component/paragraph/video.py:49
+#: ./src/pyams_content/component/paragraph/video.py:62
 msgid "Video"
 msgstr ""
 
-#: ./src/pyams_content/component/extfile/__init__.py:275
-#: ./src/pyams_content/component/extfile/__init__.py:280
+#: ./src/pyams_content/component/extfile/__init__.py:272
+#: ./src/pyams_content/component/extfile/__init__.py:276
 msgid "Audio file"
 msgstr ""
 
@@ -346,39 +343,39 @@
 msgid "Add new image"
 msgstr ""
 
-#: ./src/pyams_content/component/extfile/zmi/__init__.py:245
+#: ./src/pyams_content/component/extfile/zmi/__init__.py:244
 msgid "Update image properties"
 msgstr ""
 
-#: ./src/pyams_content/component/extfile/zmi/__init__.py:285
+#: ./src/pyams_content/component/extfile/zmi/__init__.py:283
 msgid "Videos"
 msgstr ""
 
-#: ./src/pyams_content/component/extfile/zmi/__init__.py:300
+#: ./src/pyams_content/component/extfile/zmi/__init__.py:298
 msgid "Add video"
 msgstr ""
 
-#: ./src/pyams_content/component/extfile/zmi/__init__.py:312
+#: ./src/pyams_content/component/extfile/zmi/__init__.py:310
 msgid "Add new video"
 msgstr ""
 
-#: ./src/pyams_content/component/extfile/zmi/__init__.py:341
+#: ./src/pyams_content/component/extfile/zmi/__init__.py:339
 msgid "Update video properties"
 msgstr ""
 
-#: ./src/pyams_content/component/extfile/zmi/__init__.py:373
+#: ./src/pyams_content/component/extfile/zmi/__init__.py:371
 msgid "Audios files"
 msgstr ""
 
-#: ./src/pyams_content/component/extfile/zmi/__init__.py:388
+#: ./src/pyams_content/component/extfile/zmi/__init__.py:386
 msgid "Add audio file"
 msgstr ""
 
-#: ./src/pyams_content/component/extfile/zmi/__init__.py:400
+#: ./src/pyams_content/component/extfile/zmi/__init__.py:398
 msgid "Add new audio file"
 msgstr ""
 
-#: ./src/pyams_content/component/extfile/zmi/__init__.py:429
+#: ./src/pyams_content/component/extfile/zmi/__init__.py:427
 msgid "Update audio file properties"
 msgstr ""
 
@@ -386,6 +383,13 @@
 msgid "External file type"
 msgstr ""
 
+#: ./src/pyams_content/component/extfile/interfaces/__init__.py:36
+#: ./src/pyams_content/component/links/interfaces/__init__.py:33
+#: ./src/pyams_content/shared/imagemap/interfaces/__init__.py:54
+#: ./src/pyams_content/shared/site/interfaces/__init__.py:113
+msgid "Alternate title"
+msgstr ""
+
 #: ./src/pyams_content/component/extfile/interfaces/__init__.py:37
 msgid "File title, as shown in front-office"
 msgstr ""
@@ -421,35 +425,25 @@
 msgid "File content"
 msgstr ""
 
+#: ./src/pyams_content/component/extfile/interfaces/__init__.py:73
+#: ./src/pyams_content/shared/logo/interfaces/__init__.py:47
+msgid "Image data"
+msgstr ""
+
 #: ./src/pyams_content/component/extfile/interfaces/__init__.py:74
-msgid "File legend, as shown in front-office"
-msgstr ""
-
-#: ./src/pyams_content/component/extfile/interfaces/__init__.py:78
-#: ./src/pyams_content/component/illustration/interfaces/__init__.py:49
-#: ./src/pyams_content/reference/pictograms/interfaces/__init__.py:49
-msgid "Alternate title used to describe image content"
+msgid "Image content"
 msgstr ""
 
 #: ./src/pyams_content/component/extfile/interfaces/__init__.py:81
-#: ./src/pyams_content/shared/logo/interfaces/__init__.py:47
-msgid "Image data"
+#: ./src/pyams_content/component/paragraph/interfaces/video.py:51
+msgid "Video data"
 msgstr ""
 
 #: ./src/pyams_content/component/extfile/interfaces/__init__.py:82
-msgid "Image content"
-msgstr ""
-
-#: ./src/pyams_content/component/extfile/interfaces/__init__.py:89
-#: ./src/pyams_content/component/paragraph/interfaces/video.py:51
-msgid "Video data"
+msgid "Video content"
 msgstr ""
 
 #: ./src/pyams_content/component/extfile/interfaces/__init__.py:90
-msgid "Video content"
-msgstr ""
-
-#: ./src/pyams_content/component/extfile/interfaces/__init__.py:98
 msgid "Audio file content"
 msgstr ""
 
@@ -477,6 +471,11 @@
 msgid "Header illustration"
 msgstr ""
 
+#: ./src/pyams_content/component/illustration/interfaces/__init__.py:49
+#: ./src/pyams_content/reference/pictograms/interfaces/__init__.py:49
+msgid "Alternate title used to describe image content"
+msgstr ""
+
 #: ./src/pyams_content/component/illustration/interfaces/__init__.py:57
 msgid "Name of picture's author"
 msgstr ""
@@ -491,7 +490,7 @@
 
 #: ./src/pyams_content/component/paragraph/milestone.py:199
 #: ./src/pyams_content/component/paragraph/milestone.py:222
-#: ./src/pyams_content/component/paragraph/zmi/milestone.py:297
+#: ./src/pyams_content/component/paragraph/zmi/milestone.py:303
 msgid "Milestones"
 msgstr ""
 
@@ -526,7 +525,7 @@
 
 #: ./src/pyams_content/component/paragraph/pictogram.py:189
 #: ./src/pyams_content/component/paragraph/pictogram.py:212
-#: ./src/pyams_content/component/paragraph/zmi/pictogram.py:301
+#: ./src/pyams_content/component/paragraph/zmi/pictogram.py:305
 msgid "Pictograms"
 msgstr ""
 
@@ -540,7 +539,7 @@
 
 #: ./src/pyams_content/component/paragraph/keynumber.py:183
 #: ./src/pyams_content/component/paragraph/keynumber.py:207
-#: ./src/pyams_content/component/paragraph/zmi/keynumber.py:276
+#: ./src/pyams_content/component/paragraph/zmi/keynumber.py:282
 msgid "Key numbers"
 msgstr ""
 
@@ -608,29 +607,29 @@
 msgid "Edit milestone paragraph properties"
 msgstr ""
 
-#: ./src/pyams_content/component/paragraph/zmi/milestone.py:255
+#: ./src/pyams_content/component/paragraph/zmi/milestone.py:258
 #: ./src/pyams_content/component/paragraph/interfaces/milestone.py:49
 msgid "Associated label"
 msgstr ""
 
-#: ./src/pyams_content/component/paragraph/zmi/milestone.py:264
+#: ./src/pyams_content/component/paragraph/zmi/milestone.py:270
 #: ./src/pyams_content/component/paragraph/interfaces/milestone.py:53
 msgid "Anchor"
 msgstr ""
 
-#: ./src/pyams_content/component/paragraph/zmi/milestone.py:312
+#: ./src/pyams_content/component/paragraph/zmi/milestone.py:318
 msgid "Add milestone"
 msgstr ""
 
-#: ./src/pyams_content/component/paragraph/zmi/milestone.py:323
+#: ./src/pyams_content/component/paragraph/zmi/milestone.py:329
 msgid "Add new milestone"
 msgstr ""
 
-#: ./src/pyams_content/component/paragraph/zmi/milestone.py:356
+#: ./src/pyams_content/component/paragraph/zmi/milestone.py:362
 msgid "Edit milestone properties"
 msgstr ""
 
-#: ./src/pyams_content/component/paragraph/zmi/milestone.py:345
+#: ./src/pyams_content/component/paragraph/zmi/milestone.py:351
 msgid "Milestone was correctly added"
 msgstr ""
 
@@ -754,49 +753,65 @@
 msgid "Check allowed paragraph types to be able to create new paragraphs."
 msgstr ""
 
-#: ./src/pyams_content/component/paragraph/zmi/pictogram.py:79
+#: ./src/pyams_content/component/paragraph/zmi/pictogram.py:83
 msgid "Pictograms..."
 msgstr ""
 
-#: ./src/pyams_content/component/paragraph/zmi/pictogram.py:90
+#: ./src/pyams_content/component/paragraph/zmi/pictogram.py:94
 msgid "Add new pictogram paragraph"
 msgstr ""
 
-#: ./src/pyams_content/component/paragraph/zmi/pictogram.py:122
+#: ./src/pyams_content/component/paragraph/zmi/pictogram.py:126
 msgid "Edit pictogram paragraph properties"
 msgstr ""
 
 #. Default: Header
-#: ./src/pyams_content/component/paragraph/zmi/pictogram.py:264
+#: ./src/pyams_content/component/paragraph/zmi/pictogram.py:268
 msgid "pictogram-item-header"
 msgstr ""
 
-#: ./src/pyams_content/component/paragraph/zmi/pictogram.py:279
-#: ./src/pyams_content/component/paragraph/zmi/keynumber.py:260
+#: ./src/pyams_content/component/paragraph/zmi/pictogram.py:283
+#: ./src/pyams_content/component/paragraph/zmi/keynumber.py:263
 #: ./src/pyams_content/component/paragraph/interfaces/pictogram.py:58
 #: ./src/pyams_content/component/paragraph/interfaces/keynumber.py:54
 msgid "Associated text"
 msgstr ""
 
-#: ./src/pyams_content/component/paragraph/zmi/pictogram.py:316
-#: ./src/pyams_content/reference/pictograms/zmi/__init__.py:59
+#: ./src/pyams_content/component/paragraph/zmi/pictogram.py:320
+#: ./src/pyams_content/reference/pictograms/zmi/__init__.py:62
 msgid "Add pictogram"
 msgstr ""
 
-#: ./src/pyams_content/component/paragraph/zmi/pictogram.py:327
-#: ./src/pyams_content/reference/pictograms/zmi/__init__.py:70
+#: ./src/pyams_content/component/paragraph/zmi/pictogram.py:331
+#: ./src/pyams_content/reference/pictograms/zmi/__init__.py:73
 msgid "Add new pictogram"
 msgstr ""
 
-#: ./src/pyams_content/component/paragraph/zmi/pictogram.py:365
-#: ./src/pyams_content/reference/pictograms/zmi/__init__.py:100
+#: ./src/pyams_content/component/paragraph/zmi/pictogram.py:393
+#: ./src/pyams_content/reference/pictograms/zmi/__init__.py:103
 msgid "Edit pictogram properties"
 msgstr ""
 
-#: ./src/pyams_content/component/paragraph/zmi/pictogram.py:354
+#: ./src/pyams_content/component/paragraph/zmi/pictogram.py:374
 msgid "Pictogram was correctly added"
 msgstr ""
 
+#: ./src/pyams_content/component/paragraph/zmi/pictogram.py:384
+#: ./src/pyams_content/component/paragraph/zmi/pictogram.py:448
+msgid "You must select a pictogram!"
+msgstr ""
+
+#: ./src/pyams_content/component/paragraph/zmi/pictogram.py:347
+#: ./src/pyams_content/reference/pictograms/zmi/__init__.py:186
+msgid "Default header: --"
+msgstr ""
+
+#: ./src/pyams_content/component/paragraph/zmi/pictogram.py:414
+#: ./src/pyams_content/reference/pictograms/zmi/__init__.py:190
+#, python-format
+msgid "Default header: {0}"
+msgstr ""
+
 #: ./src/pyams_content/component/paragraph/zmi/keynumber.py:76
 msgid "Key numbers..."
 msgstr ""
@@ -820,19 +835,19 @@
 msgid "key-number-label"
 msgstr ""
 
-#: ./src/pyams_content/component/paragraph/zmi/keynumber.py:291
+#: ./src/pyams_content/component/paragraph/zmi/keynumber.py:297
 msgid "Add keynumber"
 msgstr ""
 
-#: ./src/pyams_content/component/paragraph/zmi/keynumber.py:302
+#: ./src/pyams_content/component/paragraph/zmi/keynumber.py:308
 msgid "Add new keynumber"
 msgstr ""
 
-#: ./src/pyams_content/component/paragraph/zmi/keynumber.py:335
+#: ./src/pyams_content/component/paragraph/zmi/keynumber.py:341
 msgid "Edit keynumber properties"
 msgstr ""
 
-#: ./src/pyams_content/component/paragraph/zmi/keynumber.py:324
+#: ./src/pyams_content/component/paragraph/zmi/keynumber.py:330
 msgid "Key number was correctly added"
 msgstr ""
 
@@ -914,7 +929,7 @@
 #: ./src/pyams_content/component/paragraph/interfaces/keynumber.py:40
 #: ./src/pyams_content/component/association/interfaces/__init__.py:42
 #: ./src/pyams_content/shared/form/interfaces/__init__.py:86
-#: ./src/pyams_content/shared/site/interfaces/__init__.py:107
+#: ./src/pyams_content/shared/site/interfaces/__init__.py:117
 #: ./src/pyams_content/features/alert/interfaces.py:54
 msgid "Visible?"
 msgstr ""
@@ -1133,33 +1148,33 @@
 msgstr ""
 
 #: ./src/pyams_content/component/paragraph/interfaces/contact.py:57
-msgid "Photo"
+msgid "Email address"
 msgstr ""
 
 #: ./src/pyams_content/component/paragraph/interfaces/contact.py:58
-msgid "Use 'browse' button to select contact picture"
+msgid "Contact email address"
+msgstr ""
+
+#: ./src/pyams_content/component/paragraph/interfaces/contact.py:61
+msgid "Contact form"
+msgstr ""
+
+#: ./src/pyams_content/component/paragraph/interfaces/contact.py:62
+msgid "Reference of contact form"
 msgstr ""
 
 #: ./src/pyams_content/component/paragraph/interfaces/contact.py:66
+msgid "Photo"
+msgstr ""
+
+#: ./src/pyams_content/component/paragraph/interfaces/contact.py:67
+msgid "Use 'browse' button to select contact picture"
+msgstr ""
+
+#: ./src/pyams_content/component/paragraph/interfaces/contact.py:75
 msgid "Address"
 msgstr ""
 
-#: ./src/pyams_content/component/paragraph/interfaces/contact.py:69
-msgid "Email address"
-msgstr ""
-
-#: ./src/pyams_content/component/paragraph/interfaces/contact.py:70
-msgid "Contact email address"
-msgstr ""
-
-#: ./src/pyams_content/component/paragraph/interfaces/contact.py:73
-msgid "Contact form"
-msgstr ""
-
-#: ./src/pyams_content/component/paragraph/interfaces/contact.py:74
-msgid "Reference of contact form"
-msgstr ""
-
 #: ./src/pyams_content/component/paragraph/interfaces/contact.py:78
 msgid "Contact template"
 msgstr ""
@@ -1168,11 +1183,11 @@
 msgid "Presentation template used for this contact"
 msgstr ""
 
-#: ./src/pyams_content/component/paragraph/interfaces/contact.py:62
+#: ./src/pyams_content/component/paragraph/interfaces/contact.py:71
 msgid "GPS location"
 msgstr ""
 
-#: ./src/pyams_content/component/paragraph/interfaces/contact.py:63
+#: ./src/pyams_content/component/paragraph/interfaces/contact.py:72
 msgid "GPS coordinates used to locate contact"
 msgstr ""
 
@@ -1341,12 +1356,6 @@
 msgid "Content's internal links"
 msgstr ""
 
-#: ./src/pyams_content/component/links/interfaces/__init__.py:33
-#: ./src/pyams_content/shared/imagemap/interfaces/__init__.py:54
-#: ./src/pyams_content/shared/site/interfaces/__init__.py:103
-msgid "Alternate title"
-msgstr ""
-
 #: ./src/pyams_content/component/links/interfaces/__init__.py:34
 msgid "Link title, as shown in front-office"
 msgstr ""
@@ -1658,7 +1667,7 @@
 
 #: ./src/pyams_content/shared/common/__init__.py:237
 #: ./src/pyams_content/shared/common/zmi/properties.py:72
-#: ./src/pyams_content/shared/common/zmi/manager.py:90
+#: ./src/pyams_content/shared/common/zmi/manager.py:97
 msgid "Properties"
 msgstr ""
 
@@ -1884,7 +1893,7 @@
 msgid "Delete definitively"
 msgstr ""
 
-#: ./src/pyams_content/shared/common/zmi/workflow.py:920
+#: ./src/pyams_content/shared/common/zmi/workflow.py:923
 msgid ""
 "You must confirm that you previewed and checked this content before "
 "requesting publication!!"
@@ -1972,38 +1981,42 @@
 msgid "{state} since {date}, by {principal}"
 msgstr ""
 
-#: ./src/pyams_content/shared/common/zmi/manager.py:76
-msgid "Tool management"
-msgstr ""
-
-#: ./src/pyams_content/shared/common/zmi/manager.py:100
+#: ./src/pyams_content/shared/common/zmi/manager.py:107
 msgid "Shared tool properties"
 msgstr ""
 
-#: ./src/pyams_content/shared/common/zmi/manager.py:120
+#: ./src/pyams_content/shared/common/zmi/manager.py:132
 msgid "WARNING"
 msgstr ""
 
-#: ./src/pyams_content/shared/common/zmi/manager.py:122
+#: ./src/pyams_content/shared/common/zmi/manager.py:134
 msgid ""
 "Workflow shouldn't be modified if this tool already contains any shared "
 "content!"
 msgstr ""
 
-#: ./src/pyams_content/shared/common/zmi/manager.py:145
+#: ./src/pyams_content/shared/common/zmi/manager.py:157
 msgid "Languages"
 msgstr ""
 
-#: ./src/pyams_content/shared/common/zmi/manager.py:156
+#: ./src/pyams_content/shared/common/zmi/manager.py:168
 msgid "Content languages"
 msgstr ""
 
-#: ./src/pyams_content/shared/common/zmi/manager.py:173
+#: ./src/pyams_content/shared/common/zmi/manager.py:185
 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:81
+msgid "Content management"
+msgstr ""
+
+#: ./src/pyams_content/shared/common/zmi/manager.py:83
+msgid "Tool management"
+msgstr ""
+
 #: ./src/pyams_content/shared/common/zmi/owner.py:51
 msgid "Change owner..."
 msgstr ""
@@ -2832,14 +2845,14 @@
 msgstr ""
 
 #: ./src/pyams_content/shared/common/interfaces/__init__.py:155
-#: ./src/pyams_content/shared/site/zmi/folder.py:72
-#: ./src/pyams_content/shared/site/interfaces/__init__.py:56
+#: ./src/pyams_content/shared/site/zmi/folder.py:76
+#: ./src/pyams_content/shared/site/interfaces/__init__.py:66
 msgid "Notepad"
 msgstr ""
 
 #: ./src/pyams_content/shared/common/interfaces/__init__.py:156
-#: ./src/pyams_content/shared/site/zmi/folder.py:73
-#: ./src/pyams_content/shared/site/interfaces/__init__.py:57
+#: ./src/pyams_content/shared/site/zmi/folder.py:77
+#: ./src/pyams_content/shared/site/interfaces/__init__.py:67
 msgid "Internal information to be known about this content"
 msgstr ""
 
@@ -3395,6 +3408,7 @@
 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 ""
 
@@ -3455,43 +3469,63 @@
 msgid "Image map template"
 msgstr ""
 
-#: ./src/pyams_content/shared/site/zmi/folder.py:55
+#: ./src/pyams_content/shared/site/folder.py:58
+msgid "Site folder"
+msgstr ""
+
+#: ./src/pyams_content/shared/site/link.py:46
+msgid "Content link"
+msgstr ""
+
+#: ./src/pyams_content/shared/site/zmi/folder.py:59
 msgid "Add site folder..."
 msgstr ""
 
-#: ./src/pyams_content/shared/site/zmi/folder.py:86
+#: ./src/pyams_content/shared/site/zmi/folder.py:90
 msgid "Add site folder"
 msgstr ""
 
-#: ./src/pyams_content/shared/site/zmi/folder.py:65
-#: ./src/pyams_content/interfaces/__init__.py:100
-msgid "Visible label used to display content"
-msgstr ""
-
-#: ./src/pyams_content/shared/site/zmi/folder.py:68
-#: ./src/pyams_content/shared/site/zmi/__init__.py:63
-#: ./src/pyams_content/shared/site/zmi/link.py:67
-msgid "Parent"
+#: ./src/pyams_content/shared/site/zmi/folder.py:166
+msgid "Site folder management"
+msgstr ""
+
+#: ./src/pyams_content/shared/site/zmi/folder.py:177
+msgid "Site folder properties"
 msgstr ""
 
 #: ./src/pyams_content/shared/site/zmi/folder.py:69
+#: ./src/pyams_content/interfaces/__init__.py:100
+msgid "Visible label used to display content"
+msgstr ""
+
+#: ./src/pyams_content/shared/site/zmi/folder.py:72
+#: ./src/pyams_content/shared/site/zmi/__init__.py:72
+#: ./src/pyams_content/shared/site/zmi/link.py:67
+msgid "Parent"
+msgstr ""
+
+#: ./src/pyams_content/shared/site/zmi/folder.py:73
 #: ./src/pyams_content/shared/site/zmi/link.py:68
 msgid "Folder's parent"
 msgstr ""
 
-#: ./src/pyams_content/shared/site/zmi/folder.py:146
+#: ./src/pyams_content/shared/site/zmi/folder.py:150
 msgid "You must provide a folder name for default server language!"
 msgstr ""
 
-#: ./src/pyams_content/shared/site/zmi/__init__.py:54
+#: ./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:75
+#: ./src/pyams_content/shared/site/zmi/__init__.py:84
 msgid "Add topic"
 msgstr ""
 
-#: ./src/pyams_content/shared/site/zmi/__init__.py:64
+#: ./src/pyams_content/shared/site/zmi/__init__.py:73
 msgid "Topic's parent"
 msgstr ""
 
@@ -3507,84 +3541,109 @@
 msgid "Edit content link properties"
 msgstr ""
 
-#: ./src/pyams_content/shared/site/zmi/container.py:102
-#: ./src/pyams_content/shared/site/zmi/container.py:114
-#: ./src/pyams_content/shared/blog/zmi/manager.py:151
-#: ./src/pyams_content/shared/blog/zmi/manager.py:163
+#: ./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:160
+#: ./src/pyams_content/shared/blog/zmi/manager.py:172
 msgid "Publication dates..."
 msgstr ""
 
-#: ./src/pyams_content/shared/site/zmi/container.py:127
-#: ./src/pyams_content/shared/blog/zmi/manager.py:176
+#: ./src/pyams_content/shared/site/zmi/container.py:131
+#: ./src/pyams_content/shared/blog/zmi/manager.py:185
 msgid "Update publication dates"
 msgstr ""
 
-#: ./src/pyams_content/shared/site/zmi/container.py:172
-#: ./src/pyams_content/shared/site/zmi/container.py:182
+#: ./src/pyams_content/shared/site/zmi/container.py:183
+#: ./src/pyams_content/shared/site/zmi/container.py:193
 #: ./src/pyams_content/root/zmi/sites.py:68
 msgid "Site tree"
 msgstr ""
 
-#: ./src/pyams_content/shared/site/zmi/container.py:301
-#: ./src/pyams_content/shared/site/zmi/container.py:151
+#: ./src/pyams_content/shared/site/zmi/container.py:312
+#: ./src/pyams_content/shared/site/zmi/container.py:162
 msgid "Visible element?"
 msgstr ""
 
-#: ./src/pyams_content/shared/site/zmi/container.py:302
+#: ./src/pyams_content/shared/site/zmi/container.py:313
 msgid "Switch element visibility"
 msgstr ""
 
-#: ./src/pyams_content/shared/site/zmi/container.py:363
+#: ./src/pyams_content/shared/site/zmi/container.py:374
 msgid "Folders and topics"
 msgstr ""
 
-#: ./src/pyams_content/shared/site/zmi/container.py:483
+#: ./src/pyams_content/shared/site/zmi/container.py:410
+#: ./src/pyams_content/root/zmi/__init__.py:798
+msgid "Content"
+msgstr ""
+
+#: ./src/pyams_content/shared/site/zmi/container.py:506
 msgid "Delete site item"
 msgstr ""
 
-#: ./src/pyams_content/shared/site/zmi/container.py:372
+#: ./src/pyams_content/shared/site/zmi/container.py:383
 msgid "Click to open/close all folders"
 msgstr ""
 
-#: ./src/pyams_content/shared/site/zmi/container.py:388
+#: ./src/pyams_content/shared/site/zmi/container.py:399
 msgid "Click to show/hide inner folders"
 msgstr ""
 
-#: ./src/pyams_content/shared/site/zmi/container.py:258
+#: ./src/pyams_content/shared/site/zmi/container.py:269
 msgid "Can't reparent object to one of it's children. Reloading..."
 msgstr ""
 
-#: ./src/pyams_content/shared/site/zmi/manager.py:80
-#: ./src/pyams_content/shared/site/zmi/manager.py:92
+#: ./src/pyams_content/shared/site/zmi/manager.py:58
+msgid "Site management"
+msgstr ""
+
+#: ./src/pyams_content/shared/site/zmi/manager.py:88
+#: ./src/pyams_content/shared/site/zmi/manager.py:100
 msgid "Add site manager"
 msgstr ""
 
-#: ./src/pyams_content/shared/site/zmi/manager.py:91
+#: ./src/pyams_content/shared/site/zmi/manager.py:99
 msgid "Site manager"
 msgstr ""
 
-#: ./src/pyams_content/shared/site/zmi/manager.py:123
-#: ./src/pyams_content/shared/blog/zmi/manager.py:117
-msgid "You must provide a short name for default server language!"
-msgstr ""
-
-#: ./src/pyams_content/shared/site/zmi/manager.py:127
-msgid "Specified site manager name is already used!"
-msgstr ""
-
 #: ./src/pyams_content/shared/site/zmi/manager.py:131
+#: ./src/pyams_content/shared/blog/zmi/manager.py:126
+msgid "You must provide a short name for default server language!"
+msgstr ""
+
+#: ./src/pyams_content/shared/site/zmi/manager.py:135
+msgid "Specified site manager name is already used!"
+msgstr ""
+
+#: ./src/pyams_content/shared/site/zmi/manager.py:139
 msgid "A site manager is already registered with this name!!"
 msgstr ""
 
-#: ./src/pyams_content/shared/site/interfaces/__init__.py:85
+#: ./src/pyams_content/shared/site/interfaces/__init__.py:95
 msgid "Topic"
 msgstr ""
 
-#: ./src/pyams_content/shared/site/interfaces/__init__.py:104
+#: ./src/pyams_content/shared/site/interfaces/__init__.py:58
+msgid "Heading"
+msgstr ""
+
+#: ./src/pyams_content/shared/site/interfaces/__init__.py:59
+msgid "Heading displayed according to presentation template"
+msgstr ""
+
+#: ./src/pyams_content/shared/site/interfaces/__init__.py:62
+msgid "Navigation title"
+msgstr ""
+
+#: ./src/pyams_content/shared/site/interfaces/__init__.py:63
+msgid "Title displayed in navigation items"
+msgstr ""
+
+#: ./src/pyams_content/shared/site/interfaces/__init__.py:114
 msgid "Content title, as shown in front-office"
 msgstr ""
 
-#: ./src/pyams_content/shared/site/interfaces/__init__.py:108
+#: ./src/pyams_content/shared/site/interfaces/__init__.py:118
 msgid "If 'no', link is not visible"
 msgstr ""
 
@@ -3671,20 +3730,24 @@
 msgid "Blog post « {title} »"
 msgstr ""
 
-#: ./src/pyams_content/shared/blog/zmi/manager.py:74
-#: ./src/pyams_content/shared/blog/zmi/manager.py:86
+#: ./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:95
 msgid "Add blog manager"
 msgstr ""
 
-#: ./src/pyams_content/shared/blog/zmi/manager.py:85
+#: ./src/pyams_content/shared/blog/zmi/manager.py:94
 msgid "Blog manager"
 msgstr ""
 
-#: ./src/pyams_content/shared/blog/zmi/manager.py:121
+#: ./src/pyams_content/shared/blog/zmi/manager.py:130
 msgid "Specified blog manager name is already used!"
 msgstr ""
 
-#: ./src/pyams_content/shared/blog/zmi/manager.py:125
+#: ./src/pyams_content/shared/blog/zmi/manager.py:134
 msgid "A blog manager is already registered with this name!!"
 msgstr ""
 
@@ -3728,6 +3791,10 @@
 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:155
 msgid "Content types"
 msgstr ""
@@ -3736,10 +3803,6 @@
 msgid "Home"
 msgstr ""
 
-#: ./src/pyams_content/root/zmi/__init__.py:798
-msgid "Content"
-msgstr ""
-
 #: ./src/pyams_content/root/zmi/templates/dashboard.pt:7
 msgid "Your contents dashboard"
 msgstr ""
@@ -4150,6 +4213,10 @@
 msgid "Edit table properties"
 msgstr ""
 
+#: ./src/pyams_content/reference/zmi/table.py:173
+msgid "Table management"
+msgstr ""
+
 #: ./src/pyams_content/reference/zmi/__init__.py:51
 msgid "References"
 msgstr ""
--- a/src/pyams_content/reference/pictograms/zmi/__init__.py	Wed May 30 16:36:17 2018 +0200
+++ b/src/pyams_content/reference/pictograms/zmi/__init__.py	Wed Jun 06 11:20:14 2018 +0200
@@ -9,6 +9,7 @@
 # WARRANTIES OF TITLE, MERCHANTABILITY, AGAINST INFRINGEMENT, AND FITNESS
 # FOR A PARTICULAR PURPOSE.
 #
+from z3c.form.interfaces import NOVALUE, NO_VALUE
 
 __docformat__ = 'restructuredtext'
 
@@ -43,6 +44,8 @@
 from pyams_utils.url import absolute_url
 from pyams_viewlet.viewlet import viewlet_config
 from pyams_zmi.form import AdminDialogAddForm, AdminDialogEditForm
+from pyramid.httpexceptions import HTTPNotFound, HTTPBadRequest
+from pyramid.response import Response
 from pyramid.view import view_config
 from z3c.form import field
 from z3c.table.column import GetAttrColumn
@@ -169,3 +172,20 @@
     """Pictograms table contents view"""
 
     table_class = PictogramTableContentsTable
+
+
+@view_config(name='get-pictogram-header.html', context=IPictogramTable, request_type=IPyAMSLayer,
+             permission=VIEW_SYSTEM_PERMISSION)
+def get_pictogram_label(request):
+    """Get alternate label associated with a given pictogram"""
+    name = request.params.get('value')
+    if not name:
+        raise HTTPBadRequest()
+    translate = request.localizer.translate
+    if name == '--NOVALUE--':
+        return Response(translate(_("Default header: --")))
+    pictogram = request.context.get(name)
+    if pictogram is None:
+        raise HTTPNotFound()
+    return Response(translate(_("Default header: {0}")).format(
+        II18n(pictogram).query_attribute('header', request=request) or '--'))
--- a/src/pyams_content/reference/zmi/table.py	Wed May 30 16:36:17 2018 +0200
+++ b/src/pyams_content/reference/zmi/table.py	Wed Jun 06 11:20:14 2018 +0200
@@ -20,7 +20,7 @@
 from pyams_content.reference.interfaces import IReferenceTable
 from pyams_i18n.interfaces import II18n
 from pyams_skin.interfaces import IInnerPage, IPageHeader
-from pyams_skin.interfaces.viewlet import IBreadcrumbItem
+from pyams_skin.interfaces.viewlet import IBreadcrumbItem, IMenuHeader
 from pyams_skin.layer import IPyAMSLayer
 from pyams_utils.interfaces import VIEW_SYSTEM_PERMISSION
 from pyams_zmi.interfaces.menu import ISiteManagementMenu, IPropertiesMenu
@@ -35,7 +35,7 @@
 from pyams_skin.table import BaseTable, TrashColumn
 from pyams_skin.viewlet.breadcrumb import BreadcrumbItem
 from pyams_skin.viewlet.menu import MenuItem
-from pyams_utils.adapter import adapter_config, ContextRequestViewAdapter
+from pyams_utils.adapter import adapter_config, ContextRequestViewAdapter, ContextRequestAdapter
 from pyams_utils.url import absolute_url
 from pyams_viewlet.manager import viewletmanager_config
 from pyams_viewlet.viewlet import viewlet_config
@@ -64,7 +64,7 @@
 
 
 @viewlet_config(name='contents.menu', context=IReferenceTable, layer=IAdminLayer,
-                manager=ISiteManagementMenu, permission=VIEW_SYSTEM_PERMISSION, weight=1)
+                manager=ISiteManagementMenu, permission=VIEW_SYSTEM_PERMISSION, weight=10)
 @viewletmanager_config(name='contents.menu', layer=IAdminLayer, provides=IPropertiesMenu)
 @implementer(IPropertiesMenu)
 class ReferenceTableContentsMenu(MenuItem):
@@ -164,3 +164,10 @@
              permission=MANAGE_SITE_ROOT_PERMISSION, renderer='json', xhr=True)
 class ReferenceTablePropertiesAJAXEditForm(AJAXEditForm, ReferenceTablePropertiesEditForm):
     """Reference table properties edit form, JSON renderer"""
+
+
+@adapter_config(context=(IReferenceTable, ISiteManagementMenu), provides=IMenuHeader)
+class ReferenceTableSiteManagementMenuHeader(ContextRequestAdapter):
+    """Reference table site management menu header adapter"""
+
+    header = _("Table management")
--- a/src/pyams_content/root/zmi/sites.py	Wed May 30 16:36:17 2018 +0200
+++ b/src/pyams_content/root/zmi/sites.py	Wed Jun 06 11:20:14 2018 +0200
@@ -59,7 +59,7 @@
 #
 
 @viewlet_config(name='site-tree.menu', context=ISiteRoot, layer=IAdminLayer, manager=ISiteManagementMenu,
-                permission=VIEW_SYSTEM_PERMISSION, weight=5)
+                permission=VIEW_SYSTEM_PERMISSION, weight=10)
 @viewletmanager_config(name='site-tree.menu', layer=IAdminLayer, context=ISiteRoot, provides=ISiteTreeMenu)
 @implementer(ISiteTreeMenu)
 class SiteTreeMenu(MenuItem):
@@ -155,11 +155,32 @@
         return super(SiteTreeTrashColumn, self).has_permission(item) and item.is_deletable()
 
 
-@view_config(name='delete-shared-site.json', context=ISiteRoot, request_type=IPyAMSLayer,
+@view_config(name='delete-element.json', context=ISiteRoot, request_type=IPyAMSLayer,
              permission=MANAGE_SITE_ROOT_PERMISSION, renderer='json', xhr=True)
 def delete_shared_site(request):
     """Delete shared site from site manager"""
-    if not request.context.is_deletable():
+    translate = request.localizer.translate
+    # Get object name to be removed
+    name = request.params.get('object_name')
+    if not name:
+        return {
+            'status': 'message',
+            'messagebox': {
+                'status': 'error',
+                'content': translate(_("No provided object_name argument!"))
+            }
+        }
+    # Check context
+    if name not in request.context:
+        return {
+            'status': 'message',
+            'messagebox': {
+                'status': 'error',
+                'content': translate(_("Given element name doesn't exist!"))
+            }
+        }
+    context = request.context[name]
+    if not context.is_deletable():
         raise NotFound()
     return delete_container_element(request, ignore_permission=True)
 
--- a/src/pyams_content/shared/blog/zmi/manager.py	Wed May 30 16:36:17 2018 +0200
+++ b/src/pyams_content/shared/blog/zmi/manager.py	Wed Jun 06 11:20:14 2018 +0200
@@ -14,19 +14,20 @@
 
 
 # import standard library
+from datetime import datetime
+
+# import interfaces
 from pyams_content.interfaces import MANAGE_SITE_ROOT_PERMISSION, MANAGE_SITE_PERMISSION
 from pyams_content.root.interfaces import ISiteRoot
 from pyams_content.shared.blog.interfaces import IBlogManager, IBlogManagerFactory
 from pyams_content.skin.zmi.interfaces import ISiteTreeTable, IUserAddingsMenuLabel
 from pyams_i18n.interfaces import II18n, INegotiator
 from pyams_skin.interfaces.container import ITableElementEditor
-from pyams_skin.interfaces.viewlet import IToolbarAddingMenu, ITableItemColumnActionsMenu
+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
+from pyams_zmi.interfaces.menu import IPropertiesMenu, ISiteManagementMenu
 from pyams_zmi.layer import IAdminLayer
-
-# import interfaces
 from z3c.form.interfaces import IDataExtractedEvent
 
 # import packages
@@ -38,6 +39,7 @@
 from pyams_skin.viewlet.toolbar import ToolbarMenuItem
 from pyams_utils.adapter import adapter_config, ContextRequestAdapter
 from pyams_utils.registry import query_utility
+from pyams_utils.timezone import tztime
 from pyams_utils.unicode import translate_string
 from pyams_utils.url import absolute_url
 from pyams_viewlet.viewlet import viewlet_config
@@ -51,6 +53,13 @@
 from pyams_content import _
 
 
+@adapter_config(context=(IBlogManager, ISiteManagementMenu), provides=IMenuHeader)
+class BlogManagerSiteManagementMenuHeader(ContextRequestAdapter):
+    """Blog manager site management menu header adapter"""
+
+    header = _("Blog management")
+
+
 #
 # Blog topic add views
 #
@@ -179,6 +188,13 @@
     ajax_handler = 'workflow-publication.json'
     edit_permission = MANAGE_SITE_PERMISSION
 
+    def updateWidgets(self, prefix=None):
+        super(BlogManagerWorkflowPublicationEditForm, self).updateWidgets(prefix)
+        if 'publication_effective_date' in self.widgets:
+            widget = self.widgets['publication_effective_date']
+            if not widget.value:
+                widget.value = tztime(datetime.utcnow()).strftime('%d/%m/%y %H:%M')
+
 
 @view_config(name='workflow-publication.json', context=IBlogManager, request_type=IPyAMSLayer,
              permission=MANAGE_SITE_PERMISSION, renderer='json', xhr=True)
--- a/src/pyams_content/shared/common/zmi/manager.py	Wed May 30 16:36:17 2018 +0200
+++ b/src/pyams_content/shared/common/zmi/manager.py	Wed Jun 06 11:20:14 2018 +0200
@@ -23,9 +23,11 @@
 from pyams_skin.interfaces import IInnerPage, IPageHeader, IContentTitle
 from pyams_skin.interfaces.viewlet import IMenuHeader, IBreadcrumbItem
 from pyams_skin.layer import IPyAMSLayer
+from pyams_utils.interfaces import MANAGE_SYSTEM_PERMISSION
 from pyams_zmi.interfaces import IPropertiesEditForm
 from pyams_zmi.interfaces.menu import IPropertiesMenu, ISiteManagementMenu
 from pyams_zmi.layer import IAdminLayer
+from z3c.form.interfaces import DISPLAY_MODE
 
 # import packages
 from pyams_form.form import AJAXEditForm
@@ -73,7 +75,12 @@
 class SharedToolSiteManagementMenuHeader(ContextRequestAdapter):
     """Shared tool site management menu header adapter"""
 
-    header = _("Tool management")
+    @property
+    def header(self):
+        if self.context.shared_content_menu:
+            return _("Content management")
+        else:
+            return _("Tool management")
 
 
 #
@@ -81,7 +88,7 @@
 #
 
 @viewlet_config(name='properties.menu', context=IBaseSharedTool, layer=IAdminLayer,
-                manager=ISiteManagementMenu, permission=MANAGE_TOOL_PERMISSION, weight=1)
+                manager=ISiteManagementMenu, permission=MANAGE_TOOL_PERMISSION, weight=40)
 @viewletmanager_config(name='properties.menu', layer=IAdminLayer, provides=IPropertiesMenu)
 @implementer(IPropertiesMenu)
 class SharedToolPropertiesMenu(MenuItem):
@@ -104,6 +111,11 @@
     ajax_handler = 'properties.json'
     edit_permission = MANAGE_TOOL_PERMISSION
 
+    def updateWidgets(self, prefix=None):
+        super(SharedToolPropertiesEditForm, self).updateWidgets(prefix)
+        if not self.request.has_permission(MANAGE_SYSTEM_PERMISSION, context=self.context):
+            self.widgets['shared_content_workflow'].mode = DISPLAY_MODE
+
 
 @view_config(name='properties.json', context=IBaseSharedTool, request_type=IPyAMSLayer,
              permission=MANAGE_TOOL_PERMISSION, renderer='json', xhr=True)
@@ -138,7 +150,7 @@
 #
 
 @viewlet_config(name='languages.menu', context=IBaseSharedTool, layer=IAdminLayer,
-                manager=ISiteManagementMenu, permission=MANAGE_TOOL_PERMISSION, weight=10)
+                manager=ISiteManagementMenu, permission=MANAGE_TOOL_PERMISSION, weight=100)
 class SharedToolLanguagesMenu(MenuItem):
     """Shared tool languages menu"""
 
--- a/src/pyams_content/shared/site/__init__.py	Wed May 30 16:36:17 2018 +0200
+++ b/src/pyams_content/shared/site/__init__.py	Wed Jun 06 11:20:14 2018 +0200
@@ -47,6 +47,8 @@
 class Topic(SharedContent):
     """WOrkflow managed topic class"""
 
+    content_name = TOPIC_CONTENT_NAME
+
     def is_deletable(self):
         workflow = IWorkflow(self)
         for version in IWorkflowVersions(self).get_versions():
--- a/src/pyams_content/shared/site/folder.py	Wed May 30 16:36:17 2018 +0200
+++ b/src/pyams_content/shared/site/folder.py	Wed Jun 06 11:20:14 2018 +0200
@@ -41,6 +41,8 @@
 from zope.schema.fieldproperty import FieldProperty
 from zope.schema.vocabulary import SimpleVocabulary, SimpleTerm
 
+from pyams_content import _
+
 
 @implementer(IDefaultProtectionPolicy, ISiteFolder, ISiteFolderRoles,
              IIllustrationTarget, IPortalContext, IPreviewTarget, IAttributeAnnotatable)
@@ -49,8 +51,12 @@
 
     roles_interface = ISiteFolderRoles
 
+    heading = FieldProperty(ISiteFolder['heading'])
+    navigation_title = FieldProperty(ISiteFolder['navigation_title'])
     notepad = FieldProperty(ISiteFolder['notepad'])
 
+    content_name = _("Site folder")
+
     sequence_name = ''  # use default sequence generator
     sequence_prefix = ''
 
--- a/src/pyams_content/shared/site/interfaces/__init__.py	Wed May 30 16:36:17 2018 +0200
+++ b/src/pyams_content/shared/site/interfaces/__init__.py	Wed Jun 06 11:20:14 2018 +0200
@@ -24,7 +24,7 @@
 # import packages
 from pyams_content.shared.common.interfaces import ISharedSite, IWfSharedContent, ISharedContent, \
     IBaseContentManagerRoles, IBaseSharedTool, IDeletableElement
-from pyams_i18n.schema import I18nTextLineField
+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
@@ -37,6 +37,8 @@
 
     containers('.ISiteContainer')
 
+    content_name = Attribute("Content name")
+
 
 class ISiteContainer(IContainer, IContained, IWorkflowPublicationSupport):
     """Base site container interface"""
@@ -53,6 +55,14 @@
     A site folder is made to contain sub-folders and topics
     """
 
+    heading = I18nTextField(title=_("Heading"),
+                            description=_("Heading displayed according to presentation template"),
+                            required=False)
+
+    navigation_title = I18nTextLineField(title=_("Navigation title"),
+                                         description=_("Title displayed in navigation items"),
+                                         required=False)
+
     notepad = Text(title=_("Notepad"),
                    description=_("Internal information to be known about this content"),
                    required=False)
--- a/src/pyams_content/shared/site/link.py	Wed May 30 16:36:17 2018 +0200
+++ b/src/pyams_content/shared/site/link.py	Wed Jun 06 11:20:14 2018 +0200
@@ -28,6 +28,8 @@
 from zope.interface import implementer
 from zope.schema.fieldproperty import FieldProperty
 
+from pyams_content import _
+
 
 @implementer(IContentLink)
 class ContentLink(Persistent, Contained):
@@ -41,6 +43,8 @@
     alt_title = FieldProperty(IContentLink['alt_title'])
     visible = FieldProperty(IContentLink['visible'])
 
+    content_name = _("Content link")
+
     def is_deletable(self):
         return True
 
--- a/src/pyams_content/shared/site/zmi/__init__.py	Wed May 30 16:36:17 2018 +0200
+++ b/src/pyams_content/shared/site/zmi/__init__.py	Wed Jun 06 11:20:14 2018 +0200
@@ -19,11 +19,12 @@
 # import interfaces
 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
+from pyams_content.shared.site.interfaces import ISiteContainer, ISiteManager, IWfTopic
 from pyams_i18n.interfaces import II18nManager
-from pyams_skin.interfaces.viewlet import IToolbarAddingMenu
+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
 
@@ -32,6 +33,7 @@
 from pyams_content.shared.site.zmi.widget import SiteManagerFoldersSelectorFieldWidget
 from pyams_pagelet.pagelet import pagelet_config
 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
@@ -46,6 +48,13 @@
 from pyams_content import _
 
 
+@adapter_config(context=(IWfTopic, IContentManagementMenu), provides=IMenuHeader)
+class TopicContentMenuHeader(ContextRequestAdapter):
+    """Topic content menu header adapter"""
+
+    header = _("This topic")
+
+
 @viewlet_config(name='add-topic.menu', context=ISiteContainer, layer=IAdminLayer, view=Interface,
                 manager=IToolbarAddingMenu, permission=CREATE_CONTENT_PERMISSION, weight=20)
 class TopicAddMenu(ToolbarMenuItem):
--- a/src/pyams_content/shared/site/zmi/container.py	Wed May 30 16:36:17 2018 +0200
+++ b/src/pyams_content/shared/site/zmi/container.py	Wed Jun 06 11:20:14 2018 +0200
@@ -16,6 +16,8 @@
 # import standard library
 import json
 
+from datetime import datetime
+
 # import interfaces
 from pyams_content.interfaces import MANAGE_SITE_PERMISSION, MANAGE_CONTENT_PERMISSION
 from pyams_content.shared.common.interfaces import ISharedContent
@@ -47,13 +49,14 @@
 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
+    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
@@ -64,6 +67,7 @@
 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
 from zope.lifecycleevent import ObjectMovedEvent
 
@@ -130,6 +134,13 @@
     ajax_handler = 'workflow-publication.json'
     edit_permission = MANAGE_SITE_PERMISSION
 
+    def updateWidgets(self, prefix=None):
+        super(SiteContainerWorkflowPublicationEditForm, self).updateWidgets(prefix)
+        if 'publication_effective_date' in self.widgets:
+            widget = self.widgets['publication_effective_date']
+            if not widget.value:
+                widget.value = tztime(datetime.utcnow()).strftime('%d/%m/%y %H:%M')
+
 
 @view_config(name='workflow-publication.json', context=ISiteContainer, request_type=IPyAMSLayer,
              permission=MANAGE_SITE_PERMISSION, renderer='json', xhr=True)
@@ -163,7 +174,7 @@
 #
 
 @viewlet_config(name='site-tree.menu', layer=IAdminLayer, context=ISiteContainer, manager=ISiteManagementMenu,
-                permission=VIEW_SYSTEM_PERMISSION, weight=5)
+                permission=VIEW_SYSTEM_PERMISSION, weight=10)
 @viewletmanager_config(name='site-tree.menu', layer=IAdminLayer, context=ISiteContainer, provides=ISiteTreeMenu)
 @implementer(ISiteTreeMenu)
 class SiteContainerTreeMenu(MenuItem):
@@ -392,6 +403,18 @@
                    title=name or super(SiteContainerTreeNameColumn, self).renderCell(item))
 
 
+@adapter_config(name='content-type', context=(ISiteContainer, IPyAMSLayer, ISiteTreeTable), provides=IColumn)
+class SiteContainerContentTypeColumn(I18nColumn, GetAttrColumn):
+    """Site container content type column"""
+
+    _header = _("Content")
+
+    weight = 12
+
+    def getValue(self, obj):
+        return self.request.localizer.translate(obj.content_name)
+
+
 @adapter_config(name='sequence', context=(ISiteContainer, IPyAMSLayer, ISiteTreeTable), provides=IColumn)
 class SiteContainerTreeSequenceColumn(SharedToolDashboardSequenceColumn):
     """Site container tree OID column"""
--- a/src/pyams_content/shared/site/zmi/folder.py	Wed May 30 16:36:17 2018 +0200
+++ b/src/pyams_content/shared/site/zmi/folder.py	Wed Jun 06 11:20:14 2018 +0200
@@ -9,6 +9,10 @@
 # WARRANTIES OF TITLE, MERCHANTABILITY, AGAINST INFRINGEMENT, AND FITNESS
 # FOR A PARTICULAR PURPOSE.
 #
+from pyams_content.shared.common import IBaseSharedTool
+from pyams_content.shared.common.zmi.manager import SharedToolPropertiesEditForm
+from pyams_utils.adapter import adapter_config, ContextRequestAdapter
+from pyams_zmi.interfaces.menu import ISiteManagementMenu
 
 __docformat__ = 'restructuredtext'
 
@@ -16,10 +20,10 @@
 # import standard library
 
 # import interfaces
-from pyams_content.interfaces import MANAGE_SITE_PERMISSION
-from pyams_content.shared.site.interfaces import ISiteContainer, ISiteManager
+from pyams_content.interfaces import MANAGE_SITE_PERMISSION, MANAGE_TOOL_PERMISSION
+from pyams_content.shared.site.interfaces import ISiteContainer, ISiteManager, ISiteFolder
 from pyams_i18n.interfaces import INegotiator, II18n
-from pyams_skin.interfaces.viewlet import IToolbarAddingMenu
+from pyams_skin.interfaces.viewlet import IToolbarAddingMenu, IMenuHeader
 from pyams_skin.layer import IPyAMSLayer
 from pyams_zmi.layer import IAdminLayer
 from z3c.form.interfaces import IDataExtractedEvent
@@ -27,7 +31,7 @@
 
 # import packages
 from pyams_content.shared.site.zmi.widget import SiteManagerFoldersSelectorFieldWidget
-from pyams_form.form import AJAXAddForm
+from pyams_form.form import AJAXAddForm, AJAXEditForm
 from pyams_i18n.schema import I18nTextLineField
 from pyams_pagelet.pagelet import pagelet_config
 from pyams_skin.viewlet.toolbar import ToolbarMenuItem
@@ -153,3 +157,37 @@
 
     def get_ajax_output(self, changes):
         return {'status': 'reload'}
+
+
+@adapter_config(context=(ISiteFolder, ISiteManagementMenu), provides=IMenuHeader)
+class SiteFolderSiteManagementMenuHeader(ContextRequestAdapter):
+    """Site folder site management menu header adapter"""
+
+    header = _("Site folder management")
+
+
+#
+# Site folder edit form
+#
+
+@pagelet_config(name='properties.html', context=ISiteFolder, layer=IPyAMSLayer, permission=MANAGE_TOOL_PERMISSION)
+class SiteFolderPropertiesEditForm(SharedToolPropertiesEditForm):
+    """Site folder properties edit form"""
+
+    legend = _("Site folder properties")
+
+    fields = field.Fields(ISiteFolder).select('title', 'short_name', 'heading', 'navigation_title', 'notepad') + \
+             field.Fields(IBaseSharedTool).select('shared_content_workflow')
+
+    def updateWidgets(self, prefix=None):
+        super(SiteFolderPropertiesEditForm, self).updateWidgets(prefix)
+        if 'heading' in self.widgets:
+            self.widgets['heading'].widget_css_class = 'textarea'
+        if 'notepad' in self.widgets:
+            self.widgets['notepad'].widget_css_class = 'textarea'
+
+
+@view_config(name='properties.json', context=ISiteFolder, request_type=IPyAMSLayer,
+             permission=MANAGE_TOOL_PERMISSION, renderer='json', xhr=True)
+class SiteFolderPropertiesAJAXEditForm(AJAXEditForm, SiteFolderPropertiesEditForm):
+    """Site folder properties edit form, JSON renderer"""
--- a/src/pyams_content/shared/site/zmi/manager.py	Wed May 30 16:36:17 2018 +0200
+++ b/src/pyams_content/shared/site/zmi/manager.py	Wed Jun 06 11:20:14 2018 +0200
@@ -22,8 +22,9 @@
 from pyams_content.skin.zmi.interfaces import ISiteTreeTable, IUserAddingsMenuLabel
 from pyams_i18n.interfaces import II18n, INegotiator
 from pyams_skin.interfaces.container import ITableElementEditor
-from pyams_skin.interfaces.viewlet import IToolbarAddingMenu, IBreadcrumbItem
+from pyams_skin.interfaces.viewlet import IToolbarAddingMenu, IBreadcrumbItem, 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
 
@@ -50,6 +51,13 @@
 from pyams_content import _
 
 
+@adapter_config(context=(ISiteManager, ISiteManagementMenu), provides=IMenuHeader)
+class SiteManagerSiteManagementMenuHeader(ContextRequestAdapter):
+    """Site manager site management menu header adapter"""
+
+    header = _("Site management")
+
+
 @adapter_config(context=(ISiteManager, IPyAMSLayer), provides=IBreadcrumbItem)
 class SiteManagerBreadcrumbAdapter(BreadcrumbItem):
     """Site manager breadcrumb adapter"""