Version 0.1.6 0.1.6
authorThierry Florac <thierry.florac@onf.fr>
Mon, 11 Sep 2017 15:10:50 +0200
changeset 141 643417150ee3
parent 140 67bad9f880ee
child 142 03120ac26f6b
Version 0.1.6
buildout.cfg
docs/HISTORY.txt
setup.py
src/pyams_content.egg-info/PKG-INFO
src/pyams_content.egg-info/SOURCES.txt
src/pyams_content.egg-info/requires.txt
src/pyams_content/locales/fr/LC_MESSAGES/pyams_content.mo
src/pyams_content/locales/fr/LC_MESSAGES/pyams_content.po
src/pyams_content/locales/pyams_content.pot
src/pyams_content/skin/resources/js/pyams_content.js
src/pyams_content/skin/resources/js/pyams_content.min.js
src/pyams_content/workflow/zmi/__init__.py
--- a/buildout.cfg	Mon Sep 11 14:54:30 2017 +0200
+++ b/buildout.cfg	Mon Sep 11 15:10:50 2017 +0200
@@ -92,4 +92,4 @@
 eggs = pyams_content [test]
 
 [versions]
-pyams_content = 0.1.5
+pyams_content = 0.1.6
--- a/docs/HISTORY.txt	Mon Sep 11 14:54:30 2017 +0200
+++ b/docs/HISTORY.txt	Mon Sep 11 15:10:50 2017 +0200
@@ -1,6 +1,16 @@
 History
 =======
 
+0.1.6
+-----
+ - added content archiver task
+ - use 'associations' to handle links and external files
+ - updated workflow transitions conditions
+ - updated dashboard headers and columns
+ - updated shared tool's restrictions dashboard
+ - update workflow summary view and forms messages
+ - sort items in top links menus
+
 0.1.5
 -----
  - une generic function to generate all shared tools (pyams_content.generations)
--- a/setup.py	Mon Sep 11 14:54:30 2017 +0200
+++ b/setup.py	Mon Sep 11 15:10:50 2017 +0200
@@ -22,7 +22,7 @@
 README = os.path.join(DOCS, 'README.txt')
 HISTORY = os.path.join(DOCS, 'HISTORY.txt')
 
-version = '0.1.5'
+version = '0.1.6'
 long_description = open(README).read() + '\n\n' + open(HISTORY).read()
 
 tests_require = []
@@ -76,6 +76,7 @@
           'pyams_viewlet',
           'pyams_workflow',
           'pyams_zmi',
+          'pyquery',
           'pyramid',
           'pyramid_chameleon',
           'pyramid_mailer',
--- a/src/pyams_content.egg-info/PKG-INFO	Mon Sep 11 14:54:30 2017 +0200
+++ b/src/pyams_content.egg-info/PKG-INFO	Mon Sep 11 15:10:50 2017 +0200
@@ -1,6 +1,6 @@
 Metadata-Version: 1.1
 Name: pyams-content
-Version: 0.1.5
+Version: 0.1.6
 Summary: PyAMS base content interfaces and classes
 Home-page: http://hg.ztfy.org/pyams/pyams_content
 Author: Thierry Florac
@@ -11,6 +11,16 @@
         History
         =======
         
+        0.1.6
+        -----
+         - added content archiver task
+         - use 'associations' to handle links and external files
+         - updated workflow transitions conditions
+         - updated dashboard headers and columns
+         - updated shared tool's restrictions dashboard
+         - update workflow summary view and forms messages
+         - sort items in top links menus
+        
         0.1.5
         -----
          - une generic function to generate all shared tools (pyams_content.generations)
--- a/src/pyams_content.egg-info/SOURCES.txt	Mon Sep 11 14:54:30 2017 +0200
+++ b/src/pyams_content.egg-info/SOURCES.txt	Mon Sep 11 15:10:50 2017 +0200
@@ -15,57 +15,62 @@
 src/pyams_content.egg-info/requires.txt
 src/pyams_content.egg-info/top_level.txt
 src/pyams_content/component/__init__.py
+src/pyams_content/component/association/__init__.py
+src/pyams_content/component/association/container.py
+src/pyams_content/component/association/paragraph.py
+src/pyams_content/component/association/interfaces/__init__.py
+src/pyams_content/component/association/zmi/__init__.py
+src/pyams_content/component/association/zmi/interfaces.py
+src/pyams_content/component/association/zmi/paragraph.py
+src/pyams_content/component/association/zmi/templates/associations-view.pt
+src/pyams_content/component/association/zmi/templates/associations.pt
+src/pyams_content/component/association/zmi/templates/paragraph-summary.pt
 src/pyams_content/component/extfile/__init__.py
-src/pyams_content/component/extfile/container.py
 src/pyams_content/component/extfile/interfaces/__init__.py
 src/pyams_content/component/extfile/zmi/__init__.py
 src/pyams_content/component/extfile/zmi/container.py
-src/pyams_content/component/extfile/zmi/widget.py
-src/pyams_content/component/extfile/zmi/templates/container.pt
-src/pyams_content/component/extfile/zmi/templates/widget-display.pt
-src/pyams_content/component/extfile/zmi/templates/widget-input.pt
 src/pyams_content/component/gallery/__init__.py
-src/pyams_content/component/gallery/container.py
+src/pyams_content/component/gallery/file.py
+src/pyams_content/component/gallery/paragraph.py
 src/pyams_content/component/gallery/interfaces/__init__.py
 src/pyams_content/component/gallery/zmi/__init__.py
-src/pyams_content/component/gallery/zmi/container.py
-src/pyams_content/component/gallery/zmi/gallery.py
+src/pyams_content/component/gallery/zmi/file.py
 src/pyams_content/component/gallery/zmi/interfaces.py
-src/pyams_content/component/gallery/zmi/widget.py
+src/pyams_content/component/gallery/zmi/paragraph.py
 src/pyams_content/component/gallery/zmi/templates/container.pt
 src/pyams_content/component/gallery/zmi/templates/gallery-images.pt
-src/pyams_content/component/gallery/zmi/templates/widget-display.pt
-src/pyams_content/component/gallery/zmi/templates/widget-input.pt
+src/pyams_content/component/gallery/zmi/templates/renderer-default.pt
 src/pyams_content/component/illustration/__init__.py
+src/pyams_content/component/illustration/paragraph.py
+src/pyams_content/component/illustration/interfaces/__init__.py
+src/pyams_content/component/illustration/zmi/__init__.py
+src/pyams_content/component/illustration/zmi/paragraph.py
+src/pyams_content/component/illustration/zmi/templates/renderer-default.pt
+src/pyams_content/component/illustration/zmi/templates/renderer-left.pt
+src/pyams_content/component/illustration/zmi/templates/renderer-right.pt
 src/pyams_content/component/links/__init__.py
-src/pyams_content/component/links/container.py
 src/pyams_content/component/links/interfaces/__init__.py
 src/pyams_content/component/links/zmi/__init__.py
 src/pyams_content/component/links/zmi/container.py
 src/pyams_content/component/links/zmi/reverse.py
-src/pyams_content/component/links/zmi/widget.py
-src/pyams_content/component/links/zmi/templates/container.pt
-src/pyams_content/component/links/zmi/templates/widget-display.pt
-src/pyams_content/component/links/zmi/templates/widget-input.pt
-src/pyams_content/component/links/zmi/templates/widget-list-display.pt
-src/pyams_content/component/links/zmi/templates/widget-list-input.pt
 src/pyams_content/component/media/__init__.py
 src/pyams_content/component/paragraph/__init__.py
 src/pyams_content/component/paragraph/container.py
+src/pyams_content/component/paragraph/header.py
 src/pyams_content/component/paragraph/html.py
-src/pyams_content/component/paragraph/illustration.py
 src/pyams_content/component/paragraph/interfaces/__init__.py
+src/pyams_content/component/paragraph/interfaces/header.py
+src/pyams_content/component/paragraph/interfaces/html.py
 src/pyams_content/component/paragraph/zmi/__init__.py
 src/pyams_content/component/paragraph/zmi/container.py
+src/pyams_content/component/paragraph/zmi/header.py
 src/pyams_content/component/paragraph/zmi/html.py
-src/pyams_content/component/paragraph/zmi/illustration.py
 src/pyams_content/component/paragraph/zmi/interfaces.py
 src/pyams_content/component/paragraph/zmi/summary.py
+src/pyams_content/component/paragraph/zmi/templates/associations.pt
 src/pyams_content/component/paragraph/zmi/templates/container.pt
+src/pyams_content/component/paragraph/zmi/templates/header-summary.pt
 src/pyams_content/component/paragraph/zmi/templates/html-summary.pt
-src/pyams_content/component/paragraph/zmi/templates/illustration-left.pt
-src/pyams_content/component/paragraph/zmi/templates/illustration-right.pt
-src/pyams_content/component/paragraph/zmi/templates/illustration.pt
 src/pyams_content/component/paragraph/zmi/templates/paragraph-title-icon.pt
 src/pyams_content/component/paragraph/zmi/templates/paragraph-title-toolbar.pt
 src/pyams_content/component/paragraph/zmi/templates/summary.pt
@@ -206,6 +211,9 @@
 src/pyams_content/tests/test_utilsdocstrings.py
 src/pyams_content/workflow/__init__.py
 src/pyams_content/workflow/interfaces.py
+src/pyams_content/workflow/task.py
+src/pyams_content/workflow/zmi/__init__.py
+src/pyams_content/workflow/zmi/task.py
 src/pyams_content/zmi/__init__.py
 src/pyams_content/zmi/tinymce.py
 src/pyams_content/zmi/interfaces/__init__.py
--- a/src/pyams_content.egg-info/requires.txt	Mon Sep 11 14:54:30 2017 +0200
+++ b/src/pyams_content.egg-info/requires.txt	Mon Sep 11 15:10:50 2017 +0200
@@ -17,6 +17,7 @@
 pyams_viewlet
 pyams_workflow
 pyams_zmi
+pyquery
 pyramid
 pyramid_chameleon
 pyramid_mailer
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	Mon Sep 11 14:54:30 2017 +0200
+++ b/src/pyams_content/locales/fr/LC_MESSAGES/pyams_content.po	Mon Sep 11 15:10:50 2017 +0200
@@ -5,7 +5,7 @@
 msgid ""
 msgstr ""
 "Project-Id-Version: PACKAGE 1.0\n"
-"POT-Creation-Date: 2017-07-06 15:36+0200\n"
+"POT-Creation-Date: 2017-09-07 16:29+0200\n"
 "PO-Revision-Date: 2015-09-10 10:42+0200\n"
 "Last-Translator: Thierry Florac <tflorac@ulthar.net>\n"
 "Language-Team: French\n"
@@ -16,364 +16,454 @@
 "Generated-By: Lingua 3.10.dev0\n"
 "Plural-Forms: nplurals=2; plural=(n > 1);\n"
 
-#: src/pyams_content/__init__.py:33
+#: src/pyams_content/__init__.py:36
 msgid "Manage site root"
 msgstr "Gérer l'ensemble du site"
 
-#: src/pyams_content/__init__.py:35
+#: src/pyams_content/__init__.py:38
 msgid "Manage site"
 msgstr "Gérer un site"
 
-#: src/pyams_content/__init__.py:37
+#: src/pyams_content/__init__.py:40
 msgid "Manage tool"
 msgstr "Gérer un outil"
 
-#: src/pyams_content/__init__.py:39
+#: src/pyams_content/__init__.py:42
 msgid "Create content"
 msgstr "Créer un contenu"
 
-#: src/pyams_content/__init__.py:41
+#: src/pyams_content/__init__.py:44
 msgid "Manage content"
 msgstr "Gérer un contenu"
 
-#: src/pyams_content/__init__.py:43
+#: src/pyams_content/__init__.py:46
 msgid "Comment content"
 msgstr "Commenter un contenu"
 
-#: src/pyams_content/__init__.py:45 src/pyams_content/workflow/__init__.py:317
+#: src/pyams_content/__init__.py:48 src/pyams_content/workflow/__init__.py:365
 msgid "Publish content"
 msgstr "Publier le contenu"
 
-#: src/pyams_content/__init__.py:49
+#: src/pyams_content/__init__.py:52
 msgid "Webmaster (role)"
 msgstr "Webmestre (rôle)"
 
-#: src/pyams_content/__init__.py:57
+#: src/pyams_content/__init__.py:61
 msgid "Pilot (role)"
 msgstr "Pilote (rôle)"
 
-#: src/pyams_content/__init__.py:65
+#: src/pyams_content/__init__.py:69
 msgid "Manager (role)"
 msgstr "Responsable (rôle)"
 
-#: src/pyams_content/__init__.py:72
-msgid "Creator (role)"
-msgstr "Créateur (rôle)"
-
-#: src/pyams_content/__init__.py:77
+#: src/pyams_content/__init__.py:76
+msgid "Owner (role)"
+msgstr "Propriétaire (rôle)"
+
+#: src/pyams_content/__init__.py:81
 msgid "Contributor (role)"
 msgstr "Contributeur (rôle)"
 
-#: src/pyams_content/__init__.py:85
+#: src/pyams_content/__init__.py:89
 msgid "Reader (role)"
 msgstr "Relecteur (rôle)"
 
-#: src/pyams_content/__init__.py:91
+#: src/pyams_content/__init__.py:95
 msgid "Operator (role)"
 msgstr "Opérateur (rôle)"
 
-#: src/pyams_content/__init__.py:95
+#: src/pyams_content/__init__.py:99
 msgid "Guest user (role)"
 msgstr "Invité (rôle)"
 
-#: src/pyams_content/component/gallery/zmi/__init__.py:55
-#: src/pyams_content/component/gallery/zmi/templates/widget-input.pt:5
-msgid "Add gallery"
-msgstr "Ajouter une galerie"
-
-#: src/pyams_content/component/gallery/zmi/__init__.py:66
-msgid "Add new images gallery"
-msgstr "Ajouter une galerie d'images"
-
-#: src/pyams_content/component/gallery/zmi/__init__.py:161
+#: src/pyams_content/component/gallery/paragraph.py:36
+#: src/pyams_content/component/gallery/paragraph.py:43
+msgid "Images gallery"
+msgstr "Galeries d'images"
+
+#: src/pyams_content/component/gallery/zmi/file.py:54
+#: src/pyams_content/component/gallery/zmi/file.py:65
+#: src/pyams_content/component/gallery/zmi/paragraph.py:176
+msgid "Add image(s)"
+msgstr "Ajouter des images"
+
+#: src/pyams_content/component/gallery/zmi/file.py:135
+msgid "Show/hide image"
+msgstr "Cliquez pour modifier la visibilité de l'image"
+
+#: src/pyams_content/component/gallery/zmi/file.py:162
+#: src/pyams_content/component/extfile/zmi/__init__.py:183
+msgid "Update image properties"
+msgstr "Propriétés de l'image"
+
+#: src/pyams_content/component/gallery/zmi/file.py:195
+msgid "Download image..."
+msgstr "Télécharger l'image"
+
+#: src/pyams_content/component/gallery/zmi/file.py:209
+msgid "Remove image..."
+msgstr "Supprimer l'image"
+
+#: src/pyams_content/component/gallery/zmi/file.py:225
+#: src/pyams_content/shared/zmi/sites.py:124
+#: src/pyams_content/shared/imagemap/zmi/container.py:169
+msgid "No provided object_name argument!"
+msgstr "Argument 'object_name' non fourni !"
+
+#: src/pyams_content/component/gallery/zmi/file.py:229
+msgid "Given image name doesn't exist!"
+msgstr "L'image spécifiée n'existe pas !"
+
+#: src/pyams_content/component/gallery/zmi/paragraph.py:57
+msgid "Add images gallery..."
+msgstr "Galerie d'images"
+
+#: src/pyams_content/component/gallery/zmi/paragraph.py:68
+msgid "Add new gallery"
+msgstr "Ajout d'une galerie d'images"
+
+#: src/pyams_content/component/gallery/zmi/paragraph.py:107
+msgid "Edit gallery properties"
+msgstr "Propriétés de la galerie d'images"
+
+#: src/pyams_content/component/gallery/zmi/__init__.py:54
 msgid "Update gallery properties"
 msgstr "Propriétés de la galerie d'images"
 
-#: src/pyams_content/component/gallery/zmi/container.py:60
-msgid "Images galleries..."
-msgstr "Galeries d'images..."
-
-#: src/pyams_content/component/gallery/zmi/container.py:76
-msgid "Galleries list"
-msgstr "Liste des galeries d'images"
-
-#: src/pyams_content/component/gallery/zmi/container.py:122
-msgid "Display gallery contents"
-msgstr "Contenu de la galerie"
-
-#: src/pyams_content/component/gallery/zmi/container.py:135
-#: src/pyams_content/component/gallery/interfaces/__init__.py:46
-#: src/pyams_content/component/gallery/interfaces/__init__.py:86
-#: src/pyams_content/component/extfile/zmi/container.py:167
-#: src/pyams_content/component/extfile/interfaces/__init__.py:41
-#: src/pyams_content/component/paragraph/zmi/container.py:252
-#: src/pyams_content/component/paragraph/interfaces/__init__.py:46
-#: src/pyams_content/component/links/zmi/container.py:161
-#: src/pyams_content/component/links/interfaces/__init__.py:43
-#: src/pyams_content/shared/common/zmi/dashboard.py:106
-#: src/pyams_content/shared/common/zmi/templates/advanced-search.pt:188
-#: src/pyams_content/shared/imagemap/zmi/container.py:121
-#: src/pyams_content/interfaces/__init__.py:70
-msgid "Title"
-msgstr "Titre"
-
-#: src/pyams_content/component/gallery/zmi/container.py:147
-#: src/pyams_content/component/extfile/zmi/container.py:112
-msgid "Images"
-msgstr "Images"
-
-#: src/pyams_content/component/gallery/zmi/container.py:186
-msgid "Edit galleries links"
-msgstr "Galeries d'images associées"
-
-#: src/pyams_content/component/gallery/zmi/container.py:113
-msgid "No currently defined gallery."
-msgstr "Aucune galerie d'images associée à ce contenu."
-
-#: src/pyams_content/component/gallery/zmi/gallery.py:56
+#: src/pyams_content/component/gallery/zmi/__init__.py:89
 msgid "Update gallery contents"
 msgstr "Contenu de la galerie d'images"
 
-#: src/pyams_content/component/gallery/zmi/gallery.py:67
-#: src/pyams_content/component/gallery/zmi/gallery.py:78
-msgid "Add image(s)"
-msgstr "Ajouter des images"
-
-#: src/pyams_content/component/gallery/zmi/gallery.py:184
-#: src/pyams_content/component/extfile/zmi/__init__.py:188
-msgid "Update image properties"
-msgstr "Modifier les propriétés d'une image"
-
-#: src/pyams_content/component/gallery/zmi/gallery.py:224
-msgid "Remove image..."
-msgstr "Supprimer l'image..."
-
-#: src/pyams_content/component/gallery/zmi/gallery.py:239
-#: src/pyams_content/shared/zmi/sites.py:124
-#: src/pyams_content/shared/imagemap/zmi/container.py:171
-msgid "No provided object_name argument!"
-msgstr "Argument 'object_name' non fourni !"
-
-#: src/pyams_content/component/gallery/zmi/gallery.py:243
-msgid "Given image name doesn't exist!"
-msgstr "L'image spécifiée n'existe pas !"
-
-#: src/pyams_content/component/gallery/zmi/interfaces.py:32
-#: src/pyams_content/component/gallery/interfaces/__init__.py:52
-#: src/pyams_content/component/extfile/interfaces/__init__.py:49
+#: src/pyams_content/component/gallery/zmi/__init__.py:162
+msgid "Default gallery renderer"
+msgstr "Galerie par défaut"
+
+#: src/pyams_content/component/gallery/zmi/interfaces.py:36
+#: src/pyams_content/component/gallery/interfaces/__init__.py:57
+#: src/pyams_content/component/extfile/interfaces/__init__.py:43
+#: src/pyams_content/component/illustration/interfaces/__init__.py:53
 msgid "Author"
 msgstr "Auteur"
 
-#: src/pyams_content/component/gallery/zmi/interfaces.py:35
+#: src/pyams_content/component/gallery/zmi/interfaces.py:39
 msgid "Author comments"
 msgstr "À propos de l'auteur"
 
-#: src/pyams_content/component/gallery/zmi/interfaces.py:36
-#: src/pyams_content/component/gallery/interfaces/__init__.py:56
+#: src/pyams_content/component/gallery/zmi/interfaces.py:40
+#: src/pyams_content/component/gallery/interfaces/__init__.py:61
 msgid "Comments relatives to author's rights management"
 msgstr "Commentaires relatifs à l'auteur et à la gestion de ses droits"
 
-#: src/pyams_content/component/gallery/zmi/interfaces.py:39
+#: src/pyams_content/component/gallery/zmi/interfaces.py:43
 msgid "Images data"
 msgstr "Image(s) à ajouter"
 
-#: src/pyams_content/component/gallery/zmi/interfaces.py:40
+#: src/pyams_content/component/gallery/zmi/interfaces.py:44
 msgid "You can upload a single file or choose to upload a whole ZIP archive"
 msgstr ""
 "Vous pouvez déposer une simple image ou choisir de télécharger une archive "
 "au format ZIP"
 
-#: src/pyams_content/component/gallery/zmi/templates/gallery-images.pt:20
-msgid "Hidden image"
-msgstr "Image masquée"
-
-#: src/pyams_content/component/gallery/zmi/templates/gallery-images.pt:36
-msgid "Download"
-msgstr "Télécharger"
-
-#: src/pyams_content/component/gallery/interfaces/__init__.py:49
-#: src/pyams_content/component/gallery/interfaces/__init__.py:90
-#: src/pyams_content/component/extfile/interfaces/__init__.py:45
-#: src/pyams_content/component/links/interfaces/__init__.py:47
-#: src/pyams_content/shared/common/interfaces/__init__.py:119
+#: src/pyams_content/component/gallery/zmi/templates/gallery-images.pt:10
+msgid "Gallery images"
+msgstr "Contenu de la galerie"
+
+#: src/pyams_content/component/gallery/interfaces/__init__.py:42
+#: src/pyams_content/component/extfile/interfaces/__init__.py:68
+#: src/pyams_content/component/illustration/interfaces/__init__.py:41
+msgid "Legend"
+msgstr "Légende"
+
+#: src/pyams_content/component/gallery/interfaces/__init__.py:43
+msgid "Image title"
+msgstr "Légende de l'image"
+
+#: src/pyams_content/component/gallery/interfaces/__init__.py:46
+#: src/pyams_content/component/extfile/interfaces/__init__.py:76
+#: src/pyams_content/component/illustration/interfaces/__init__.py:45
+msgid "Accessibility title"
+msgstr "Alternative (accessibilité)"
+
+#: src/pyams_content/component/gallery/interfaces/__init__.py:47
+#: src/pyams_content/component/extfile/interfaces/__init__.py:77
+#: src/pyams_content/component/illustration/interfaces/__init__.py:46
+msgid "Alternate title used to describe image content"
+msgstr ""
+"Ce texte est affiché lorsque l'image ne peut être téléchargée ou affichée ; "
+"il est également utilisé par les navigateurs utilisés par des personnes "
+"souffrant de déficiences visuelles. Il doit donc décrire le contenu de "
+"l'image, pour se conformer aux normes d'accessibilité."
+
+#: src/pyams_content/component/gallery/interfaces/__init__.py:50
+#: src/pyams_content/component/extfile/interfaces/__init__.py:80
+#: src/pyams_content/component/illustration/interfaces/__init__.py:57
+msgid "Image data"
+msgstr "Contenu de l'image"
+
+#: src/pyams_content/component/gallery/interfaces/__init__.py:51
+#: src/pyams_content/component/extfile/interfaces/__init__.py:81
+#: src/pyams_content/component/illustration/interfaces/__init__.py:58
+msgid "Image content"
+msgstr ""
+"Cliquez sur le bouton 'Parcourir...' pour sélectionner un nouveau contenu..."
+
+#: src/pyams_content/component/gallery/interfaces/__init__.py:54
+#: src/pyams_content/component/gallery/interfaces/__init__.py:93
+#: src/pyams_content/component/extfile/interfaces/__init__.py:39
+#: src/pyams_content/component/illustration/interfaces/__init__.py:49
+#: src/pyams_content/component/links/interfaces/__init__.py:38
+#: src/pyams_content/shared/common/interfaces/__init__.py:120
 msgid "Description"
 msgstr "Description"
 
-#: src/pyams_content/component/gallery/interfaces/__init__.py:55
-msgid "Author's comments"
-msgstr "À propos de l'auteur"
-
-#: src/pyams_content/component/gallery/interfaces/__init__.py:59
-msgid "Audio data"
-msgstr "Contenu audio"
-
 #: src/pyams_content/component/gallery/interfaces/__init__.py:60
+msgid "Author's comments"
+msgstr "À propos de l'auteur"
+
+#: src/pyams_content/component/gallery/interfaces/__init__.py:64
+msgid "Audio data"
+msgstr "Contenu audio"
+
+#: src/pyams_content/component/gallery/interfaces/__init__.py:65
 msgid "Sound file associated with the current media"
 msgstr "Vous pouvez associer un fichier audio à cette image"
 
-#: src/pyams_content/component/gallery/interfaces/__init__.py:63
+#: src/pyams_content/component/gallery/interfaces/__init__.py:68
 msgid "Sound title"
 msgstr "Titre du fichier audio"
 
-#: src/pyams_content/component/gallery/interfaces/__init__.py:64
+#: src/pyams_content/component/gallery/interfaces/__init__.py:69
 msgid "Title of associated sound file"
 msgstr "Titre du fichier audio associé à cette image"
 
-#: src/pyams_content/component/gallery/interfaces/__init__.py:67
+#: src/pyams_content/component/gallery/interfaces/__init__.py:72
 msgid "Sound description"
 msgstr "Description"
 
-#: src/pyams_content/component/gallery/interfaces/__init__.py:68
+#: src/pyams_content/component/gallery/interfaces/__init__.py:73
 msgid "Short description of associated sound file"
 msgstr "Courte description du fichier audio associé à cette image"
 
-#: src/pyams_content/component/gallery/interfaces/__init__.py:71
+#: src/pyams_content/component/gallery/interfaces/__init__.py:76
 msgid "PIF number"
 msgstr "Numéro PIF"
 
-#: src/pyams_content/component/gallery/interfaces/__init__.py:72
+#: src/pyams_content/component/gallery/interfaces/__init__.py:77
 msgid "Number used to identify media into national library database"
 msgstr ""
 "Numéro utilisé pour identifier cette image dans la médiathèque nationale"
 
-#: src/pyams_content/component/gallery/interfaces/__init__.py:75
+#: src/pyams_content/component/gallery/interfaces/__init__.py:80
 msgid "Visible image?"
 msgstr "Image visible ?"
 
-#: src/pyams_content/component/gallery/interfaces/__init__.py:76
+#: src/pyams_content/component/gallery/interfaces/__init__.py:81
 msgid "If 'no', this image won't be displayed in front office"
 msgstr "Si 'non', cette image ne sera pas visible en front-office"
 
-#: src/pyams_content/component/gallery/interfaces/__init__.py:87
+#: src/pyams_content/component/gallery/interfaces/__init__.py:89
+#: src/pyams_content/component/extfile/interfaces/__init__.py:35
+#: src/pyams_content/shared/common/zmi/dashboard.py:106
+#: src/pyams_content/shared/common/zmi/templates/advanced-search.pt:188
+#: src/pyams_content/shared/imagemap/zmi/container.py:119
+#: src/pyams_content/interfaces/__init__.py:99
+msgid "Title"
+msgstr "Titre"
+
+#: src/pyams_content/component/gallery/interfaces/__init__.py:90
 msgid "Gallery title, as shown in front-office"
 msgstr "Titre de la galerie affiché en front-office"
 
-#: src/pyams_content/component/gallery/interfaces/__init__.py:91
-msgid "Gallery description displayed by front-office template"
-msgstr "Description de la galerie d'images affichée en front-office"
-
 #: src/pyams_content/component/gallery/interfaces/__init__.py:94
-msgid "Visible gallery?"
-msgstr "Galerie visible ?"
-
-#: src/pyams_content/component/gallery/interfaces/__init__.py:95
-msgid "If 'no', this gallery won't be displayed in front office"
-msgstr "Si 'non', cette galerie ne sera pas affichée en front-office"
-
-#: src/pyams_content/component/gallery/interfaces/__init__.py:122
-msgid "Contained galleries"
-msgstr "Galeries d'images"
-
-#: src/pyams_content/component/gallery/interfaces/__init__.py:123
-msgid "List of images galleries linked to this object"
-msgstr "Liste des galeries d'images associées à cet objet"
-
-#: src/pyams_content/component/extfile/__init__.py:109
+msgid "Gallery description displayed by front-office template"
+msgstr "Description de la galerie d'images affichée en front-office"
+
+#: src/pyams_content/component/gallery/interfaces/__init__.py:97
+msgid "Gallery style"
+msgstr "Style de la galerie"
+
+#: src/pyams_content/component/extfile/__init__.py:169
+#: src/pyams_content/component/extfile/__init__.py:173
 msgid "Standard file"
 msgstr "Fichier standard"
 
-#: src/pyams_content/component/extfile/__init__.py:118
+#: src/pyams_content/component/extfile/__init__.py:181
+#: src/pyams_content/component/extfile/__init__.py:198
 #: src/pyams_content/shared/imagemap/interfaces/__init__.py:59
 msgid "Image"
 msgstr "Image"
 
-#: src/pyams_content/component/extfile/__init__.py:127
+#: src/pyams_content/component/extfile/__init__.py:206
+#: src/pyams_content/component/extfile/__init__.py:211
 msgid "Video"
 msgstr "Vidéo"
 
-#: src/pyams_content/component/extfile/__init__.py:136
+#: src/pyams_content/component/extfile/__init__.py:219
+#: src/pyams_content/component/extfile/__init__.py:224
 msgid "Audio file"
 msgstr "Fichier audio"
 
-#: src/pyams_content/component/extfile/zmi/__init__.py:66
-#: src/pyams_content/component/extfile/zmi/templates/widget-input.pt:5
+#: src/pyams_content/component/extfile/zmi/__init__.py:68
 msgid "Add external file"
-msgstr "Ajouter un fichier joint"
-
-#: src/pyams_content/component/extfile/zmi/__init__.py:77
+msgstr "Fichier standard"
+
+#: src/pyams_content/component/extfile/zmi/__init__.py:80
 msgid "Add new external file"
-msgstr "Ajouter un fichier joint"
-
-#: src/pyams_content/component/extfile/zmi/__init__.py:154
+msgstr "Ajout d'un fichier standard"
+
+#: src/pyams_content/component/extfile/zmi/__init__.py:111
 msgid "Update file properties"
-msgstr "Modifier les propriétés d'un fichier"
-
-#: src/pyams_content/component/extfile/zmi/__init__.py:55
+msgstr "Propriétés du fichier standard"
+
+#: src/pyams_content/component/extfile/zmi/__init__.py:148
+msgid "Add image"
+msgstr "Image"
+
+#: src/pyams_content/component/extfile/zmi/__init__.py:160
+msgid "Add new image"
+msgstr "Ajout d'une image"
+
+#: src/pyams_content/component/extfile/zmi/__init__.py:213
+msgid "Add video"
+msgstr "Vidéo"
+
+#: src/pyams_content/component/extfile/zmi/__init__.py:225
+msgid "Add new video"
+msgstr "Ajout d'une vidéo"
+
+#: src/pyams_content/component/extfile/zmi/__init__.py:247
+msgid "Update video properties"
+msgstr "Propriétés de la vidéo"
+
+#: src/pyams_content/component/extfile/zmi/__init__.py:276
+msgid "Add audio file"
+msgstr "Fichier audio"
+
+#: src/pyams_content/component/extfile/zmi/__init__.py:288
+msgid "Add new audio file"
+msgstr "Ajout d'un fichier audio"
+
+#: src/pyams_content/component/extfile/zmi/__init__.py:310
+msgid "Update audio file properties"
+msgstr "Propriétés du fichier audio"
+
+#: src/pyams_content/component/extfile/zmi/__init__.py:51
 msgid "External file type"
 msgstr "Type de fichier joint"
 
-#: src/pyams_content/component/extfile/zmi/container.py:63
-msgid "External files..."
-msgstr "Fichiers joints..."
-
-#: src/pyams_content/component/extfile/zmi/container.py:107
-msgid "External files list"
-msgstr "Liste des fichiers joints"
-
-#: src/pyams_content/component/extfile/zmi/container.py:179
-msgid "Filename"
-msgstr "Nom de fichier"
-
-#: src/pyams_content/component/extfile/zmi/container.py:195
-msgid "Size"
-msgstr "Taille"
-
-#: src/pyams_content/component/extfile/zmi/container.py:241
-msgid "Edit external files links"
-msgstr "Fichiers joints associés"
-
-#: src/pyams_content/component/extfile/zmi/container.py:111
-#: src/pyams_content/component/extfile/interfaces/__init__.py:101
-#: src/pyams_content/component/paragraph/zmi/container.py:201
-msgid "External files"
-msgstr "Fichiers joints"
-
-#: src/pyams_content/component/extfile/zmi/container.py:113
-msgid "Videos"
-msgstr "Vidéos"
-
-#: src/pyams_content/component/extfile/zmi/container.py:114
-msgid "Sounds"
-msgstr "Sons"
-
-#: src/pyams_content/component/extfile/zmi/container.py:157
-msgid "No currently stored external file."
-msgstr "Aucun fichier joint associé à ce contenu."
-
-#: src/pyams_content/component/extfile/interfaces/__init__.py:42
+#: src/pyams_content/component/extfile/interfaces/__init__.py:36
 msgid "File title, as shown in front-office"
-msgstr "Titre du fichier, tel qu'affiché en front-office"
-
-#: src/pyams_content/component/extfile/interfaces/__init__.py:46
+msgstr "Intitulé du lien qui permettra d'accéder à ce fichier"
+
+#: src/pyams_content/component/extfile/interfaces/__init__.py:40
 msgid "File description displayed by front-office template"
 msgstr "Description du fichier affichée en front-office"
 
-#: src/pyams_content/component/extfile/interfaces/__init__.py:50
+#: src/pyams_content/component/extfile/interfaces/__init__.py:44
 msgid "Name of document's author"
-msgstr "Nom de l'auteur du document"
-
-#: src/pyams_content/component/extfile/interfaces/__init__.py:57
+msgstr "Nom de l'auteur du document, sous la forme \"Prénom Nom / Organisme\""
+
+#: src/pyams_content/component/extfile/interfaces/__init__.py:47
+#: src/pyams_content/component/links/interfaces/__init__.py:66
+msgid "Language"
+msgstr "Langue"
+
+#: src/pyams_content/component/extfile/interfaces/__init__.py:48
+msgid "File's content language"
+msgstr "Langue du fichier"
+
+#: src/pyams_content/component/extfile/interfaces/__init__.py:52
+msgid "Save file as..."
+msgstr "Nom du fichier"
+
+#: src/pyams_content/component/extfile/interfaces/__init__.py:53
+msgid "Name under which the file will be saved"
+msgstr ""
+"Nom donné au fichier en cas de téléchargement ; il est donc important de "
+"veiller au sens de ce nom, sans oublier d'indiquer l'extension !"
+
+#: src/pyams_content/component/extfile/interfaces/__init__.py:60
 msgid "File data"
-msgstr "Contenu du fichier"
-
-#: src/pyams_content/component/extfile/interfaces/__init__.py:58
+msgstr "Fichier sélectionné"
+
+#: src/pyams_content/component/extfile/interfaces/__init__.py:61
 msgid "File content"
 msgstr ""
-"Cliquez sur le bouton 'Parcourir...' pour sélectionner un nouveau contenu..."
+"Cliquez sur le bouton 'Parcourir...' pour sélectionner un nouveau contenu"
 
 #: src/pyams_content/component/extfile/interfaces/__init__.py:69
-#: src/pyams_content/component/paragraph/interfaces/__init__.py:91
-msgid "Image data"
-msgstr "Contenu de l'image"
-
-#: src/pyams_content/component/extfile/interfaces/__init__.py:70
-msgid "Image content"
-msgstr ""
-"Cliquez sur le bouton 'Parcourir...' pour sélectionner un nouveau contenu..."
-
-#: src/pyams_content/component/extfile/interfaces/__init__.py:102
-msgid "List of external files linked to this object"
-msgstr "Liste des fichiers joints associés à cet objet"
+msgid "File legend, as shown in front-office"
+msgstr "Titre du fichier, tel qu'affiché en front-office"
+
+#: src/pyams_content/component/illustration/paragraph.py:36
+#: src/pyams_content/component/illustration/paragraph.py:43
+#: src/pyams_content/component/illustration/zmi/__init__.py:95
+msgid "Illustration"
+msgstr "Illustration"
+
+#: src/pyams_content/component/illustration/zmi/paragraph.py:59
+msgid "Add illustration..."
+msgstr "Illustration"
+
+#: src/pyams_content/component/illustration/zmi/paragraph.py:70
+msgid "Add new illustration"
+msgstr "Ajout d'une illustration"
+
+#: src/pyams_content/component/illustration/zmi/paragraph.py:110
+msgid "Edit illustration properties"
+msgstr "Propriétés de l'illustration"
+
+#: src/pyams_content/component/illustration/zmi/__init__.py:58
+msgid "Centered illustration"
+msgstr "Illustration centrée"
+
+#: src/pyams_content/component/illustration/zmi/__init__.py:67
+msgid "Small illustration on the left with zoom"
+msgstr "Petite illustration sur la gauche avec zoom"
+
+#: src/pyams_content/component/illustration/zmi/__init__.py:76
+msgid "Small illustration on the right with zoom"
+msgstr "Petite illustration sur la droite avec zoom"
+
+#: src/pyams_content/component/illustration/interfaces/__init__.py:42
+msgid "Illustration title"
+msgstr "Légende"
+
+#: src/pyams_content/component/illustration/interfaces/__init__.py:54
+msgid "Name of picture's author"
+msgstr "Nom de l'auteur de la photo, sous la forme \"Prénom Nom / Organisme\""
+
+#: src/pyams_content/component/illustration/interfaces/__init__.py:61
+msgid "Image style"
+msgstr "Style de l'image"
+
+#: src/pyams_content/component/paragraph/html.py:54
+#: src/pyams_content/component/paragraph/html.py:63
+msgid "HTML paragraph"
+msgstr "Paragraphe HTML"
+
+#: src/pyams_content/component/paragraph/header.py:38
+#: src/pyams_content/component/paragraph/interfaces/header.py:34
+msgid "Header"
+msgstr "Chapô"
+
+#: src/pyams_content/component/paragraph/header.py:52
+msgid "Header paragraph"
+msgstr "Chapô"
+
+#: src/pyams_content/component/paragraph/zmi/__init__.py:50
+msgid "Default paragraphs..."
+msgstr "Paragraphes par défaut"
+
+#: src/pyams_content/component/paragraph/zmi/__init__.py:61
+#: src/pyams_content/component/paragraph/interfaces/__init__.py:79
+msgid "Default paragraphs"
+msgstr "Paragraphes par défaut"
+
+#: src/pyams_content/component/paragraph/zmi/__init__.py:78
+msgid ""
+"These paragraphs will be added automatically to any new created content."
+msgstr "Ces paragraphes seront ajoutés automatiquement aux nouveaux contenus."
 
 #: src/pyams_content/component/paragraph/zmi/summary.py:46
 #: src/pyams_content/shared/view/zmi/summary.py:44
@@ -381,115 +471,106 @@
 msgid "Quick preview"
 msgstr "Aperçu"
 
-#: src/pyams_content/component/paragraph/zmi/container.py:63
+#: src/pyams_content/component/paragraph/zmi/container.py:64
 msgid "Paragraphs..."
-msgstr "Paragraphes..."
-
-#: src/pyams_content/component/paragraph/zmi/container.py:79
+msgstr "Paragraphes"
+
+#: src/pyams_content/component/paragraph/zmi/container.py:80
 msgid "Paragraphs list"
 msgstr "Liste des paragraphes"
 
-#: src/pyams_content/component/paragraph/zmi/container.py:141
-msgid "Click and drag to sort paragraphs..."
-msgstr "Utilisez le glisser/déposer pour ordonner les paragraphes..."
-
-#: src/pyams_content/component/paragraph/zmi/container.py:159
+#: src/pyams_content/component/paragraph/zmi/container.py:148
 msgid "Switch paragraph visibility"
-msgstr "Cliquez pour modifier la visibilité du paragraphe..."
-
-#: src/pyams_content/component/paragraph/zmi/container.py:219
-msgid "Useful links"
-msgstr "Liens utiles"
-
-#: src/pyams_content/component/paragraph/zmi/container.py:237
-msgid "Images galleries"
-msgstr "Galeries d'images"
-
-#: src/pyams_content/component/paragraph/zmi/container.py:128
+msgstr "Cliquez pour rendre le paragraphe visible ou non"
+
+#: src/pyams_content/component/paragraph/zmi/container.py:211
+msgid "Show/hide all paragraphs"
+msgstr "Afficher/masquer tous les paragraphes"
+
+#: src/pyams_content/component/paragraph/zmi/container.py:271
+msgid "Links"
+msgstr "Liens"
+
+#: src/pyams_content/component/paragraph/zmi/container.py:287
+msgid "External files"
+msgstr "Fichiers"
+
+#: src/pyams_content/component/paragraph/zmi/container.py:360
+#: src/pyams_content/component/association/zmi/__init__.py:93
+msgid "Associations..."
+msgstr "Associations"
+
+#: src/pyams_content/component/paragraph/zmi/container.py:372
+msgid "Paragraphs associations"
+msgstr "Associations par paragraphe"
+
+#: src/pyams_content/component/paragraph/zmi/container.py:129
 msgid "No currently defined paragraph."
 msgstr "Aucun paragraphe associé à ce contenu."
 
-#: src/pyams_content/component/paragraph/zmi/container.py:262
+#: src/pyams_content/component/paragraph/zmi/container.py:221
 msgid "Click to open/close all paragraphs editors"
 msgstr "Afficher/masquer tous les paragraphes"
 
-#: src/pyams_content/component/paragraph/zmi/container.py:279
+#: src/pyams_content/component/paragraph/zmi/container.py:232
 msgid "Click to open/close paragraph editor"
 msgstr "Afficher/masquer ce paragraphe"
 
-#: src/pyams_content/component/paragraph/zmi/illustration.py:59
-msgid "Add illustration..."
-msgstr "Illustration..."
-
-#: src/pyams_content/component/paragraph/zmi/illustration.py:70
-msgid "Add new illustration"
-msgstr "Ajouter une illustration"
-
-#: src/pyams_content/component/paragraph/zmi/illustration.py:105
-msgid "Edit illustration properties"
-msgstr "Modifier les propriétés d'une illustration"
-
-#: src/pyams_content/component/paragraph/zmi/illustration.py:120
-msgid "Illustration"
-msgstr "Illustration"
-
-#: src/pyams_content/component/paragraph/zmi/illustration.py:188
-msgid "Centered illustration"
-msgstr "Illustration centrée"
-
-#: src/pyams_content/component/paragraph/zmi/illustration.py:197
-msgid "Small illustration on the left with zoom"
-msgstr "Petite illustration sur la gauche avec zoom"
-
-#: src/pyams_content/component/paragraph/zmi/illustration.py:206
-msgid "Small illustration on the right with zoom"
-msgstr "Petite illustration sur la droite avec zoom"
-
-#: src/pyams_content/component/paragraph/zmi/html.py:59
+#: src/pyams_content/component/paragraph/zmi/html.py:65
 msgid "Add HTML paragraph..."
-msgstr "Paragraphe HTML..."
-
-#: src/pyams_content/component/paragraph/zmi/html.py:70
+msgstr "Paragraphe HTML"
+
+#: src/pyams_content/component/paragraph/zmi/html.py:76
 msgid "Add new HTML paragraph"
-msgstr "Ajouter un paragraphe HTML"
-
-#: src/pyams_content/component/paragraph/zmi/html.py:112
+msgstr "Ajout d'un paragraphe HTML"
+
+#: src/pyams_content/component/paragraph/zmi/html.py:118
 msgid "Edit HTML paragraph properties"
-msgstr "Modifier les propriétés d'un paragraphe HTML"
-
-#: src/pyams_content/component/paragraph/zmi/html.py:137
-msgid "HTML paragraph"
-msgstr "Paragraphe HTML"
+msgstr "Propriétés du paragraphe HTML"
+
+#: src/pyams_content/component/paragraph/zmi/header.py:56
+msgid "Add header paragraph..."
+msgstr "Chapô"
+
+#: src/pyams_content/component/paragraph/zmi/header.py:67
+msgid "Add new header paragraph"
+msgstr "Ajout d'un chapô"
+
+#: src/pyams_content/component/paragraph/zmi/header.py:106
+msgid "Edit header paragraph properties"
+msgstr "Propriétés du chapô"
 
 #: src/pyams_content/component/paragraph/zmi/templates/summary.pt:7
 #: src/pyams_content/component/paragraph/zmi/templates/summary.pt:30
 msgid "This content doesn't contain any paragraph."
 msgstr "Aucun paragraphe n'est associé à ce contenu."
 
-#: src/pyams_content/component/paragraph/interfaces/__init__.py:41
+#: src/pyams_content/component/paragraph/interfaces/__init__.py:43
+#: src/pyams_content/component/association/interfaces/__init__.py:42
 msgid "Visible?"
 msgstr "Visible ?"
 
-#: src/pyams_content/component/paragraph/interfaces/__init__.py:42
+#: src/pyams_content/component/paragraph/interfaces/__init__.py:44
 msgid "Is this paragraph visible in front-office?"
 msgstr "Si 'non', ce paragraphe ne sera pas affiché en front-office"
 
-#: src/pyams_content/component/paragraph/interfaces/__init__.py:47
+#: src/pyams_content/component/paragraph/interfaces/__init__.py:48
+msgid "§ Title"
+msgstr "Titre §"
+
+#: src/pyams_content/component/paragraph/interfaces/__init__.py:49
 msgid "Paragraph title"
 msgstr "Titre du paragraphe"
 
-#: src/pyams_content/component/paragraph/interfaces/__init__.py:74
+#: src/pyams_content/component/paragraph/interfaces/__init__.py:80
+msgid "List of paragraphs automatically added to a new content"
+msgstr ""
+"Liste des types de paragraphes ajoutés automatiquement aux nouveaux contenus"
+
+#: src/pyams_content/component/paragraph/interfaces/html.py:34
 msgid "Body"
 msgstr "Contenu HTML"
 
-#: src/pyams_content/component/paragraph/interfaces/__init__.py:94
-msgid "Legend"
-msgstr "Légende"
-
-#: src/pyams_content/component/paragraph/interfaces/__init__.py:97
-msgid "Image style"
-msgstr "Style de l'image"
-
 #: src/pyams_content/component/theme/zmi/portlet.py:39
 msgid "Themes"
 msgstr "Thèmes"
@@ -498,7 +579,7 @@
 #: src/pyams_content/component/theme/zmi/manager.py:45
 #: src/pyams_content/shared/view/zmi/theme.py:49
 msgid "Themes..."
-msgstr "Thèmes..."
+msgstr "Thèmes"
 
 #: src/pyams_content/component/theme/zmi/__init__.py:63
 msgid "Content themes"
@@ -512,63 +593,102 @@
 msgid "Terms"
 msgstr "Termes"
 
-#: src/pyams_content/component/links/zmi/__init__.py:52
+#: src/pyams_content/component/association/paragraph.py:37
+#: src/pyams_content/component/association/paragraph.py:44
+msgid "Associations paragraph"
+msgstr "Liens utiles"
+
+#: src/pyams_content/component/association/zmi/paragraph.py:58
+msgid "Add associations paragraph..."
+msgstr "Liens utiles"
+
+#: src/pyams_content/component/association/zmi/paragraph.py:69
+msgid "Add new association paragraph"
+msgstr "Ajout d'un paragraphe « liens utiles »"
+
+#: src/pyams_content/component/association/zmi/paragraph.py:103
+msgid "Edit association paragraph properties"
+msgstr "Propriétés du paragraphe « liens utiles »"
+
+#: src/pyams_content/component/association/zmi/__init__.py:105
+msgid "Associations list"
+msgstr "Liste des associations"
+
+#: src/pyams_content/component/association/zmi/__init__.py:206
+msgid "Switch association visibility"
+msgstr "Cliquez pour rendre le lien visible ou non en pied de paragraphe"
+
+#: src/pyams_content/component/association/zmi/__init__.py:257
+msgid "Public title"
+msgstr "Libellé public"
+
+#: src/pyams_content/component/association/zmi/__init__.py:271
+msgid "Inner title"
+msgstr "Contenu interne"
+
+#: src/pyams_content/component/association/zmi/__init__.py:286
+msgid "Size"
+msgstr "Taille"
+
+#: src/pyams_content/component/association/zmi/__init__.py:64
+msgid "Association was correctly added."
+msgstr "L'association a été ajoutée."
+
+#: src/pyams_content/component/association/zmi/templates/associations.pt:6
+msgid "Associations"
+msgstr "Associations"
+
+#: src/pyams_content/component/association/interfaces/__init__.py:43
+msgid "Is this item visible in front-office?"
+msgstr "Si 'non', ce lien ne sera pas affiché en front-office"
+
+#: src/pyams_content/component/links/__init__.py:91
+msgid "Internal link"
+msgstr "Lien interne"
+
+#: src/pyams_content/component/links/__init__.py:160
+msgid "External link"
+msgstr "Lien externe"
+
+#: src/pyams_content/component/links/__init__.py:201
+msgid "Mailto link"
+msgstr "Lien « mailto »"
+
+#: src/pyams_content/component/links/zmi/__init__.py:51
 msgid "Add internal link"
-msgstr "Ajouter un lien interne"
-
-#: src/pyams_content/component/links/zmi/__init__.py:64
+msgstr "Lien interne"
+
+#: src/pyams_content/component/links/zmi/__init__.py:63
 msgid "Add new internal link"
-msgstr "Ajouter un lien interne"
-
-#: src/pyams_content/component/links/zmi/__init__.py:123
+msgstr "Ajout d'un lien interne"
+
+#: src/pyams_content/component/links/zmi/__init__.py:92
 msgid "Edit internal link properties"
-msgstr "Modifier les propriétés d'un lien interne"
-
-#: src/pyams_content/component/links/zmi/__init__.py:159
+msgstr "Propriétés du lien interne"
+
+#: src/pyams_content/component/links/zmi/__init__.py:127
 msgid "Add external link"
-msgstr "Ajouter un lien externe"
-
-#: src/pyams_content/component/links/zmi/__init__.py:171
+msgstr "Lien externe"
+
+#: src/pyams_content/component/links/zmi/__init__.py:139
 msgid "Add new external link"
-msgstr "Ajouter un lien externe"
-
-#: src/pyams_content/component/links/zmi/__init__.py:230
+msgstr "Ajout d'un lien externe"
+
+#: src/pyams_content/component/links/zmi/__init__.py:168
 msgid "Edit external link properties"
-msgstr "Modifier les propriétés d'un lien externe"
-
-#: src/pyams_content/component/links/zmi/__init__.py:267
+msgstr "Propriétés du lien externe"
+
+#: src/pyams_content/component/links/zmi/__init__.py:204
 msgid "Add mailto link"
-msgstr "Ajouter un lien « mailto »"
-
-#: src/pyams_content/component/links/zmi/__init__.py:279
+msgstr "Lien « mailto »"
+
+#: src/pyams_content/component/links/zmi/__init__.py:216
 msgid "Add new mailto link"
-msgstr "Ajouter un lien « mailto »"
-
-#: src/pyams_content/component/links/zmi/__init__.py:338
+msgstr "Ajout d'un lien « mailto »"
+
+#: src/pyams_content/component/links/zmi/__init__.py:245
 msgid "Edit mailto link properties"
-msgstr "Modifier les propriétés d'un lien « mailto »"
-
-#: src/pyams_content/component/links/zmi/container.py:64
-msgid "Useful links..."
-msgstr "Liens utiles..."
-
-#: src/pyams_content/component/links/zmi/container.py:116
-msgid "Useful links list"
-msgstr "Liste des liens utiles"
-
-#: src/pyams_content/component/links/zmi/container.py:173
-#: src/pyams_content/shared/imagemap/zmi/container.py:133
-#: src/pyams_content/shared/imagemap/interfaces/__init__.py:46
-msgid "Link target"
-msgstr "Cible du lien"
-
-#: src/pyams_content/component/links/zmi/container.py:216
-msgid "Edit useful links links"
-msgstr "Liens utiles associés"
-
-#: src/pyams_content/component/links/zmi/container.py:153
-msgid "No currently defined link."
-msgstr "Aucun lien utile asocié à ce contenu."
+msgstr "Propriétés du lien « mailto »"
 
 #: src/pyams_content/component/links/zmi/reverse.py:55
 msgid "Reverse links"
@@ -578,80 +698,71 @@
 msgid "Content's internal links"
 msgstr "Liens internes vers ce contenu"
 
-#: src/pyams_content/component/links/zmi/templates/widget-input.pt:12
-#: src/pyams_content/component/links/zmi/templates/widget-list-input.pt:12
-msgid "Add internal link..."
-msgstr "Ajouter un lien interne..."
-
-#: src/pyams_content/component/links/zmi/templates/widget-input.pt:19
-#: src/pyams_content/component/links/zmi/templates/widget-list-input.pt:19
-msgid "Add external link..."
-msgstr "Ajouter un lien externe..."
-
-#: src/pyams_content/component/links/zmi/templates/widget-input.pt:26
-#: src/pyams_content/component/links/zmi/templates/widget-list-input.pt:26
-msgid "Add mailto link..."
-msgstr "Ajouter un lien « mailto »..."
-
-#: src/pyams_content/component/links/interfaces/__init__.py:44
+#: src/pyams_content/component/links/interfaces/__init__.py:34
+#: src/pyams_content/shared/imagemap/interfaces/__init__.py:47
+msgid "Alternate title"
+msgstr "Titre de substitution"
+
+#: src/pyams_content/component/links/interfaces/__init__.py:35
 msgid "Link title, as shown in front-office"
-msgstr "Titre du lien, tel qu'affiché en front-office"
-
-#: src/pyams_content/component/links/interfaces/__init__.py:48
+msgstr ""
+"Le contexte d'utilisation de ce lien peut nécessiter de modifier son titre "
+"d'origine. Ce titre de substitution sera alors présenté aux internautes."
+
+#: src/pyams_content/component/links/interfaces/__init__.py:39
 msgid "Link description displayed by front-office template"
 msgstr "Description du lien, affichée en front-office"
 
-#: src/pyams_content/component/links/interfaces/__init__.py:61
+#: src/pyams_content/component/links/interfaces/__init__.py:49
 msgid "Internal reference"
 msgstr "Référence interne"
 
-#: src/pyams_content/component/links/interfaces/__init__.py:62
+#: src/pyams_content/component/links/interfaces/__init__.py:50
 msgid ""
 "Internal link target reference. You can search a reference using '+' "
 "followed by internal number, of by entering text matching content title."
 msgstr ""
-"Référence interne vers la cible du lien. Vous pouvez rechercher une "
-"référence en utilisant le '+' suivi du numéro interne, ou en indiquant des "
-"mots contenus dans son titre..."
-
-#: src/pyams_content/component/links/interfaces/__init__.py:74
+"Référence interne vers la cible du lien. Vous pouvez la rechercher par des "
+"mots de son titre, ou par son numéro interne (précédé d'un '+') ; le titre "
+"d'origine peut être modifié en utilisant le titre de substitution."
+
+#: src/pyams_content/component/links/interfaces/__init__.py:62
 msgid "Target URL"
 msgstr "URL cible"
 
-#: src/pyams_content/component/links/interfaces/__init__.py:75
+#: src/pyams_content/component/links/interfaces/__init__.py:63
 msgid "URL used to access external resource"
 msgstr "URL utilisée pour accéder à cette ressource externe"
 
+#: src/pyams_content/component/links/interfaces/__init__.py:67
+msgid "Language used in this remote resource"
+msgstr ""
+"Langue utilisée pour cette ressource extene ; à préciser lorsqu'il ne s'agit "
+"pas de la langue par défaut du site."
+
 #: src/pyams_content/component/links/interfaces/__init__.py:78
-msgid "Language"
-msgstr "Langue"
+msgid "Target address"
+msgstr "Adresse mail"
 
 #: src/pyams_content/component/links/interfaces/__init__.py:79
-msgid "Language used in this remote resource"
-msgstr "Langue utilisée pour cette ressource extene"
-
-#: src/pyams_content/component/links/interfaces/__init__.py:90
-msgid "Target address"
-msgstr "Adresse mail"
-
-#: src/pyams_content/component/links/interfaces/__init__.py:91
 msgid "Target email address"
+msgstr "Adresse de messagerie \"stricte\", soit uniquement \"xxx@yyy.com\""
+
+#: src/pyams_content/component/links/interfaces/__init__.py:83
+msgid "Address name"
+msgstr "Nom de messagerie"
+
+#: src/pyams_content/component/links/interfaces/__init__.py:84
+msgid "Address as displayed in address book"
 msgstr ""
-"Adresse de messagerie \"stricte\" (uniquement \"xxx@yyy.com\") de la cible"
-
-#: src/pyams_content/component/links/interfaces/__init__.py:109
-msgid "Contained links"
-msgstr "Liens utiles"
-
-#: src/pyams_content/component/links/interfaces/__init__.py:110
-msgid "List of internal or external links linked to this object"
-msgstr "Liste des liens internes ou externes associés à cet objet"
-
-#: src/pyams_content/component/links/interfaces/__init__.py:122
+"Nom de la boîte aux lettres, tel qu'il sera affiché dans l'application de "
+"messagerie."
+
+#: src/pyams_content/component/links/interfaces/__init__.py:95
 msgid "Internal references"
 msgstr "Références internes"
 
-#: src/pyams_content/component/links/interfaces/__init__.py:123
+#: src/pyams_content/component/links/interfaces/__init__.py:96
 msgid "List of internal references"
 msgstr "Liste de références internes imposées dans la vue"
 
@@ -661,12 +772,12 @@
 msgid "{date} by {principal}"
 msgstr "{date} par {principal}"
 
-#: src/pyams_content/shared/common/review.py:209
+#: src/pyams_content/shared/common/review.py:210
 #, python-format
 msgid "A new comment was added on content « {0} »"
 msgstr "Un nouveau commentaire a été ajouté pour le contenu « {0} »"
 
-#: src/pyams_content/shared/common/review.py:166
+#: src/pyams_content/shared/common/review.py:167
 #, python-format
 msgid "[{service_name}] A content review is requested"
 msgstr "[{service_name}] Demande de relecture"
@@ -676,6 +787,7 @@
 msgstr "Résultats de la recherche rapide"
 
 #: src/pyams_content/shared/common/zmi/search.py:143
+#: src/pyams_content/shared/common/zmi/dashboard.py:958
 msgid "Advanced search"
 msgstr "Recherche avancée"
 
@@ -684,12 +796,12 @@
 msgstr "Résultats de la recherche avancée"
 
 #: src/pyams_content/shared/common/zmi/search.py:118
-#: src/pyams_content/shared/common/zmi/dashboard.py:196
+#: src/pyams_content/shared/common/zmi/dashboard.py:203
 msgid "Owner"
 msgstr "Propriétaire"
 
 #: src/pyams_content/shared/common/zmi/search.py:121
-#: src/pyams_content/shared/common/zmi/dashboard.py:155
+#: src/pyams_content/shared/common/zmi/dashboard.py:144
 msgid "Status"
 msgstr "Statut"
 
@@ -709,195 +821,196 @@
 msgid "Modified before..."
 msgstr "et le"
 
-#: src/pyams_content/shared/common/zmi/properties.py:57
+#: src/pyams_content/shared/common/zmi/properties.py:55
 msgid "Composition"
 msgstr "Composition"
 
-#: src/pyams_content/shared/common/zmi/properties.py:67
+#: src/pyams_content/shared/common/zmi/properties.py:65
 #: src/pyams_content/shared/common/zmi/manager.py:90
 msgid "Properties"
 msgstr "Propriétés"
 
-#: src/pyams_content/shared/common/zmi/properties.py:78
+#: src/pyams_content/shared/common/zmi/properties.py:76
 msgid "Content properties"
 msgstr "Propriétés élémentaires"
 
-#: src/pyams_content/shared/common/zmi/properties.py:110
+#: src/pyams_content/shared/common/zmi/properties.py:115
 msgid "Publication settings"
 msgstr "Dates de publication et de retrait"
 
-#: src/pyams_content/shared/common/zmi/workflow.py:116
-#: src/pyams_content/shared/common/zmi/workflow.py:201
-#: src/pyams_content/shared/common/zmi/workflow.py:246
-#: src/pyams_content/shared/common/zmi/workflow.py:304
-#: src/pyams_content/shared/common/zmi/workflow.py:384
-#: src/pyams_content/shared/common/zmi/workflow.py:444
-#: src/pyams_content/shared/common/zmi/workflow.py:489
-#: src/pyams_content/shared/common/zmi/workflow.py:535
-#: src/pyams_content/shared/common/zmi/workflow.py:583
-#: src/pyams_content/shared/common/zmi/workflow.py:628
-#: src/pyams_content/shared/common/zmi/workflow.py:674
-#: src/pyams_content/shared/common/zmi/workflow.py:727
-#: src/pyams_content/shared/common/zmi/__init__.py:249
+#: src/pyams_content/shared/common/zmi/workflow.py:115
+#: src/pyams_content/shared/common/zmi/workflow.py:200
+#: src/pyams_content/shared/common/zmi/workflow.py:245
+#: src/pyams_content/shared/common/zmi/workflow.py:303
+#: src/pyams_content/shared/common/zmi/workflow.py:383
+#: src/pyams_content/shared/common/zmi/workflow.py:443
+#: src/pyams_content/shared/common/zmi/workflow.py:488
+#: src/pyams_content/shared/common/zmi/workflow.py:534
+#: src/pyams_content/shared/common/zmi/workflow.py:582
+#: src/pyams_content/shared/common/zmi/workflow.py:627
+#: src/pyams_content/shared/common/zmi/workflow.py:673
+#: src/pyams_content/shared/common/zmi/workflow.py:726
+#: src/pyams_content/shared/common/zmi/__init__.py:252
 #: src/pyams_content/shared/common/zmi/owner.py:74
 #: src/pyams_content/shared/common/zmi/review.py:90
 msgid "Cancel"
 msgstr "Annuler"
 
-#: src/pyams_content/shared/common/zmi/workflow.py:117
+#: src/pyams_content/shared/common/zmi/workflow.py:116
 msgid "Request publication"
 msgstr "Demander la publication"
 
-#: src/pyams_content/shared/common/zmi/workflow.py:202
-#: src/pyams_content/workflow/__init__.py:259
+#: src/pyams_content/shared/common/zmi/workflow.py:171
+#: src/pyams_content/shared/common/zmi/workflow.py:170
+#: src/pyams_content/shared/common/zmi/workflow.py:273
+#: src/pyams_content/shared/common/zmi/workflow.py:414
+msgid "A comment is required"
+msgstr "Le commentaire est obligatoire"
+
+#: src/pyams_content/shared/common/zmi/workflow.py:201
+#: src/pyams_content/workflow/__init__.py:307
 msgid "Cancel publication request"
 msgstr "Annuler la demande de publication"
 
-#: src/pyams_content/shared/common/zmi/workflow.py:247
+#: src/pyams_content/shared/common/zmi/workflow.py:246
 msgid "Refuse publication request"
 msgstr "Refuser la demande de publication"
 
-#: src/pyams_content/shared/common/zmi/workflow.py:305
+#: src/pyams_content/shared/common/zmi/workflow.py:304
 msgid "Publish"
 msgstr "Publier"
 
-#: src/pyams_content/shared/common/zmi/workflow.py:385
+#: src/pyams_content/shared/common/zmi/workflow.py:384
 msgid "Request retire"
 msgstr "Demander le retrait"
 
-#: src/pyams_content/shared/common/zmi/workflow.py:445
+#: src/pyams_content/shared/common/zmi/workflow.py:444
 msgid "Cancel retire request"
 msgstr "Annuler la demande de retrait"
 
-#: src/pyams_content/shared/common/zmi/workflow.py:490
+#: src/pyams_content/shared/common/zmi/workflow.py:489
 msgid "Retire"
 msgstr "Retirer"
 
-#: src/pyams_content/shared/common/zmi/workflow.py:536
-#: src/pyams_content/workflow/__init__.py:371
+#: src/pyams_content/shared/common/zmi/workflow.py:535
+#: src/pyams_content/workflow/__init__.py:426
 msgid "Request archive"
 msgstr "Demander l'archivage"
 
-#: src/pyams_content/shared/common/zmi/workflow.py:584
+#: src/pyams_content/shared/common/zmi/workflow.py:583
 msgid "Cancel archive request"
 msgstr "Annuler la demande d'archivage"
 
-#: src/pyams_content/shared/common/zmi/workflow.py:629
+#: src/pyams_content/shared/common/zmi/workflow.py:628
 msgid "Archive"
 msgstr "Archiver"
 
-#: src/pyams_content/shared/common/zmi/workflow.py:675
-#: src/pyams_content/workflow/__init__.py:436
-#: src/pyams_content/workflow/__init__.py:448
-#: src/pyams_content/workflow/__init__.py:460
-#: src/pyams_content/workflow/__init__.py:472
-#: src/pyams_content/workflow/__init__.py:484
+#: src/pyams_content/shared/common/zmi/workflow.py:674
+#: src/pyams_content/workflow/__init__.py:491
+#: src/pyams_content/workflow/__init__.py:503
+#: src/pyams_content/workflow/__init__.py:515
+#: src/pyams_content/workflow/__init__.py:527
+#: src/pyams_content/workflow/__init__.py:539
 msgid "Create new version"
 msgstr "Créer une nouvelle version"
 
-#: src/pyams_content/shared/common/zmi/workflow.py:728
-#: src/pyams_content/workflow/__init__.py:496
+#: src/pyams_content/shared/common/zmi/workflow.py:727
+#: src/pyams_content/workflow/__init__.py:551
 msgid "Delete version"
 msgstr "Supprimer cette version"
 
 #: src/pyams_content/shared/common/zmi/workflow.py:167
-#: src/pyams_content/shared/common/zmi/workflow.py:352
+#: src/pyams_content/shared/common/zmi/workflow.py:353
 msgid "Publication start date is required"
 msgstr "La date de début de publication est obligatoire"
 
-#: src/pyams_content/shared/common/zmi/workflow.py:170
-#: src/pyams_content/shared/common/zmi/workflow.py:274
-#: src/pyams_content/shared/common/zmi/workflow.py:415
-msgid "A comment is required"
-msgstr "Le commentaire est obligatoire"
-
-#: src/pyams_content/shared/common/zmi/workflow.py:751
+#: src/pyams_content/shared/common/zmi/workflow.py:750
 msgid "Delete content"
 msgstr "Supprimer définitivement ce contenu"
 
-#: src/pyams_content/shared/common/zmi/workflow.py:760
+#: src/pyams_content/shared/common/zmi/workflow.py:759
 msgid "Delete definitively"
 msgstr "Supprimer définitivement"
 
-#: src/pyams_content/shared/common/zmi/workflow.py:81
+#: src/pyams_content/shared/common/zmi/workflow.py:80
 #, python-format
 msgid "{state} | by {principal}"
 msgstr "{state} | par {principal}"
 
-#: src/pyams_content/shared/common/zmi/workflow.py:77
-#: src/pyams_content/workflow/__init__.py:551
-#: src/pyams_content/workflow/__init__.py:574
+#: src/pyams_content/shared/common/zmi/workflow.py:76
+#: src/pyams_content/workflow/__init__.py:607
+#: src/pyams_content/workflow/__init__.py:630
 #, python-format
 msgid "{state} {date}"
 msgstr "{state} {date}"
 
-#: src/pyams_content/shared/common/zmi/__init__.py:239
+#: src/pyams_content/shared/common/zmi/__init__.py:242
 msgid "Duplicate content..."
-msgstr "Dupliquer le contenu..."
-
-#: src/pyams_content/shared/common/zmi/__init__.py:258
+msgstr "Dupliquer le contenu"
+
+#: src/pyams_content/shared/common/zmi/__init__.py:261
 msgid "Duplicate content"
 msgstr "Dupliquer ce contenu"
 
 #: src/pyams_content/shared/common/zmi/__init__.py:80
 msgid "This title can be modified afterwards"
-msgstr "Le titre pourra être modifié ultérieurement"
-
-#: src/pyams_content/shared/common/zmi/__init__.py:250
+msgstr "Pourra être modifié ultérieurement"
+
+#: src/pyams_content/shared/common/zmi/__init__.py:253
 msgid "Duplicate this content"
 msgstr "Dupliquer ce contenu"
 
-#: src/pyams_content/shared/common/zmi/__init__.py:301
+#: src/pyams_content/shared/common/zmi/__init__.py:304
 #, python-format
 msgid "Duplicate content ({oid})"
 msgstr "Contenu dupliqué ({oid})"
 
-#: src/pyams_content/shared/common/zmi/__init__.py:347
+#: src/pyams_content/shared/common/zmi/__init__.py:350
 msgid "Created or modified in this version"
 msgstr "Créé ou modifié dans cette version"
 
-#: src/pyams_content/shared/common/zmi/summary.py:49
+#: src/pyams_content/shared/common/zmi/summary.py:51
 msgid "Display content summary"
 msgstr "Récapitulatif pour ce contenu"
 
-#: src/pyams_content/shared/common/zmi/summary.py:73
+#: src/pyams_content/shared/common/zmi/summary.py:75
 msgid "Identity card"
 msgstr "Carte d'identité"
 
-#: src/pyams_content/shared/common/zmi/summary.py:85
+#: src/pyams_content/shared/common/zmi/summary.py:87
 msgid "Requested action"
 msgstr "Évolution demandée"
 
-#: src/pyams_content/shared/common/zmi/summary.py:125
+#: src/pyams_content/shared/common/zmi/summary.py:128
 msgid "Publication and retire dates"
-msgstr "Rappel des dates de publication et de retrait"
-
-#: src/pyams_content/shared/common/zmi/summary.py:138
+msgstr "Dates de publication et de retrait planifiées"
+
+#: src/pyams_content/shared/common/zmi/summary.py:141
 msgid "Current version"
-msgstr "Version actuelle"
-
-#: src/pyams_content/shared/common/zmi/summary.py:168
+msgstr "À propos de cette version"
+
+#: src/pyams_content/shared/common/zmi/summary.py:171
 msgid "Content history"
-msgstr "Historique de ce contenu"
-
-#: src/pyams_content/shared/common/zmi/summary.py:115
+msgstr "Pour mémoire"
+
+#: src/pyams_content/shared/common/zmi/summary.py:118
 msgid "Associated comment"
 msgstr "Commentaire associé"
 
-#: src/pyams_content/shared/common/zmi/summary.py:150
-#: src/pyams_content/shared/common/zmi/dashboard.py:144
+#: src/pyams_content/shared/common/zmi/summary.py:153
+#: src/pyams_content/shared/common/zmi/dashboard.py:179
 msgid "Version"
 msgstr "Version"
 
-#: src/pyams_content/shared/common/zmi/summary.py:106
+#: src/pyams_content/shared/common/zmi/summary.py:108
 #, python-format
 msgid "{state} {date} by {principal}"
 msgstr "{state} {date} par {principal}"
 
-#: src/pyams_content/shared/common/zmi/summary.py:156
+#: src/pyams_content/shared/common/zmi/summary.py:159
 #, python-format
 msgid "{state} since {date}, by {principal}"
-msgstr "{state} depuis {date}, par {principal}"
+msgstr "{state} depuis {date} par {principal}"
 
 #: src/pyams_content/shared/common/zmi/manager.py:76
 msgid "Tool management"
@@ -916,8 +1029,8 @@
 "Workflow shouldn't be modified if this tool already contains any shared "
 "content!"
 msgstr ""
-"Le workflow ne devrait pas être modifié si cet outil renferme déjà des "
-"contenus partagés !"
+"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
 msgid "Content languages"
@@ -934,7 +1047,7 @@
 
 #: src/pyams_content/shared/common/zmi/owner.py:51
 msgid "Change owner..."
-msgstr "Changer de propriétaire..."
+msgstr "Changer de propriétaire"
 
 #: src/pyams_content/shared/common/zmi/owner.py:83
 msgid "Change content's owner"
@@ -974,273 +1087,278 @@
 msgid "Unique ID"
 msgstr "N° IN"
 
-#: src/pyams_content/shared/common/zmi/dashboard.py:171
+#: src/pyams_content/shared/common/zmi/dashboard.py:167
 msgid "Status date"
 msgstr "En date du"
 
-#: src/pyams_content/shared/common/zmi/dashboard.py:183
+#: src/pyams_content/shared/common/zmi/dashboard.py:190
 msgid "Status principal"
 msgstr "Intervenant"
 
-#: src/pyams_content/shared/common/zmi/dashboard.py:208
+#: src/pyams_content/shared/common/zmi/dashboard.py:215
 msgid "Last modification"
 msgstr "Dernière modification"
 
-#: src/pyams_content/shared/common/zmi/dashboard.py:226
-#: src/pyams_content/root/zmi/__init__.py:88
+#: src/pyams_content/shared/common/zmi/dashboard.py:233
+#: src/pyams_content/root/zmi/__init__.py:89
 msgid "Dashboard"
 msgstr "Tableau de bord"
 
-#: src/pyams_content/shared/common/zmi/dashboard.py:236
+#: src/pyams_content/shared/common/zmi/dashboard.py:243
 msgid "Contents dashboard"
-msgstr "Les contenus qui me concernent"
-
-#: src/pyams_content/shared/common/zmi/dashboard.py:270
-#: src/pyams_content/root/zmi/__init__.py:134
+msgstr "Mon tableau de bord"
+
+#: src/pyams_content/shared/common/zmi/dashboard.py:277
+#: src/pyams_content/root/zmi/__init__.py:138
 #, python-format
 msgid "MANAGER - {0} content waiting for your action"
 msgstr "RESPONSABLE - {0} contenu en attente de votre intervention"
 
-#: src/pyams_content/shared/common/zmi/dashboard.py:271
-#: src/pyams_content/root/zmi/__init__.py:135
+#: src/pyams_content/shared/common/zmi/dashboard.py:278
+#: src/pyams_content/root/zmi/__init__.py:139
 #, python-format
 msgid "MANAGER - {0} contents waiting for your action"
 msgstr "RESPONSABLE - {0} contenus en attente de votre intervention"
 
-#: src/pyams_content/shared/common/zmi/dashboard.py:312
-#: src/pyams_content/root/zmi/__init__.py:179
+#: src/pyams_content/shared/common/zmi/dashboard.py:317
+#: src/pyams_content/root/zmi/__init__.py:181
 #, python-format
 msgid "CONTRIBUTOR - {0} content waiting for action"
 msgstr "CONTRIBUTEUR - {0} contenu soumis à un responsable"
 
-#: src/pyams_content/shared/common/zmi/dashboard.py:313
-#: src/pyams_content/root/zmi/__init__.py:180
+#: src/pyams_content/shared/common/zmi/dashboard.py:318
+#: src/pyams_content/root/zmi/__init__.py:182
 #, python-format
 msgid "CONTRIBUTOR - {0} contents waiting for action"
 msgstr "CONTRIBUTEUR - {0} contenus soumis à un responsable"
 
-#: src/pyams_content/shared/common/zmi/dashboard.py:343
-#: src/pyams_content/root/zmi/__init__.py:213
+#: src/pyams_content/shared/common/zmi/dashboard.py:348
+#: src/pyams_content/root/zmi/__init__.py:215
 #, python-format
 msgid "CONTRIBUTOR - {0} modified content"
 msgstr "CONTRIBUTEUR - {0} contenu modifié"
 
-#: src/pyams_content/shared/common/zmi/dashboard.py:382
-#: src/pyams_content/root/zmi/__init__.py:254
+#: src/pyams_content/shared/common/zmi/dashboard.py:387
+#: src/pyams_content/root/zmi/__init__.py:256
 msgid "My contents"
 msgstr "Tous mes contenus"
 
-#: src/pyams_content/shared/common/zmi/dashboard.py:397
-#: src/pyams_content/root/zmi/__init__.py:269
+#: src/pyams_content/shared/common/zmi/dashboard.py:402
+#: src/pyams_content/root/zmi/__init__.py:271
 msgid "My favorites"
 msgstr "Mes favoris"
 
-#: src/pyams_content/shared/common/zmi/dashboard.py:406
-#: src/pyams_content/root/zmi/__init__.py:278
+#: src/pyams_content/shared/common/zmi/dashboard.py:411
+#: src/pyams_content/root/zmi/__init__.py:280
 #, python-format
 msgid "CONTRIBUTOR - {0} favorite"
 msgstr "CONTRIBUTEUR - {0} contenu favori"
 
-#: src/pyams_content/shared/common/zmi/dashboard.py:407
-#: src/pyams_content/root/zmi/__init__.py:279
+#: src/pyams_content/shared/common/zmi/dashboard.py:412
+#: src/pyams_content/root/zmi/__init__.py:281
 #, python-format
 msgid "CONTRIBUTOR - {0} favorites"
 msgstr "CONTRIBUTEUR - {0} contenus favoris"
 
-#: src/pyams_content/shared/common/zmi/dashboard.py:419
+#: src/pyams_content/shared/common/zmi/dashboard.py:424
 #: src/pyams_content/shared/common/zmi/templates/header.pt:23
 msgid "Add/remove from favorites"
 msgstr "Ajouter/enlever des favoris"
 
-#: src/pyams_content/shared/common/zmi/dashboard.py:480
-#: src/pyams_content/root/zmi/__init__.py:315
+#: src/pyams_content/shared/common/zmi/dashboard.py:485
+#: src/pyams_content/root/zmi/__init__.py:317
 msgid "Your favorites"
 msgstr "Mes favoris"
 
-#: src/pyams_content/shared/common/zmi/dashboard.py:493
-#: src/pyams_content/root/zmi/__init__.py:328
+#: src/pyams_content/shared/common/zmi/dashboard.py:498
+#: src/pyams_content/root/zmi/__init__.py:330
 msgid "My preparations"
 msgstr "Mes préparations"
 
-#: src/pyams_content/shared/common/zmi/dashboard.py:502
-#: src/pyams_content/root/zmi/__init__.py:337
+#: src/pyams_content/shared/common/zmi/dashboard.py:507
+#: src/pyams_content/root/zmi/__init__.py:339
 #, python-format
 msgid "CONTRIBUTOR - {0} prepared content"
 msgstr "CONTRIBUTEUR - {0} contenu en préparation"
 
-#: src/pyams_content/shared/common/zmi/dashboard.py:503
-#: src/pyams_content/root/zmi/__init__.py:338
+#: src/pyams_content/shared/common/zmi/dashboard.py:508
+#: src/pyams_content/root/zmi/__init__.py:340
 #, python-format
 msgid "CONTRIBUTOR - {0} prepared contents"
 msgstr "CONTRIBUTEUR - {0} contenus en préparation"
 
-#: src/pyams_content/shared/common/zmi/dashboard.py:541
-#: src/pyams_content/root/zmi/__init__.py:375
+#: src/pyams_content/shared/common/zmi/dashboard.py:546
+#: src/pyams_content/root/zmi/__init__.py:377
 msgid "Your prepared contents"
 msgstr "Mes contenus en préparation"
 
-#: src/pyams_content/shared/common/zmi/dashboard.py:554
-#: src/pyams_content/root/zmi/__init__.py:388
+#: src/pyams_content/shared/common/zmi/dashboard.py:559
+#: src/pyams_content/root/zmi/__init__.py:390
 msgid "My submissions"
 msgstr "Mes soumissions"
 
-#: src/pyams_content/shared/common/zmi/dashboard.py:563
-#: src/pyams_content/root/zmi/__init__.py:397
+#: src/pyams_content/shared/common/zmi/dashboard.py:568
+#: src/pyams_content/root/zmi/__init__.py:399
 #, python-format
 msgid "CONTRIBUTOR - {0} submitted content"
 msgstr "CONTRIBUTEUR - {0} contenu soumis à un responsable"
 
-#: src/pyams_content/shared/common/zmi/dashboard.py:564
-#: src/pyams_content/root/zmi/__init__.py:398
+#: src/pyams_content/shared/common/zmi/dashboard.py:569
+#: src/pyams_content/root/zmi/__init__.py:400
 #, python-format
 msgid "CONTRIBUTOR - {0} submitted contents"
 msgstr "CONTRIBUTEUR - {0} contenus soumis à un responsable"
 
-#: src/pyams_content/shared/common/zmi/dashboard.py:602
-#: src/pyams_content/root/zmi/__init__.py:435
+#: src/pyams_content/shared/common/zmi/dashboard.py:607
+#: src/pyams_content/root/zmi/__init__.py:437
 msgid "Your submitted contents"
 msgstr "Mes contenus soumis à un responsable"
 
-#: src/pyams_content/shared/common/zmi/dashboard.py:615
-#: src/pyams_content/root/zmi/__init__.py:448
+#: src/pyams_content/shared/common/zmi/dashboard.py:620
+#: src/pyams_content/root/zmi/__init__.py:450
 msgid "My publications"
 msgstr "Mes publications"
 
-#: src/pyams_content/shared/common/zmi/dashboard.py:624
-#: src/pyams_content/root/zmi/__init__.py:457
+#: src/pyams_content/shared/common/zmi/dashboard.py:629
+#: src/pyams_content/root/zmi/__init__.py:459
 #, python-format
 msgid "CONTRIBUTOR - {0} published content"
 msgstr "CONTRIBUTEUR - {0} contenu publié"
 
-#: src/pyams_content/shared/common/zmi/dashboard.py:625
-#: src/pyams_content/root/zmi/__init__.py:458
+#: src/pyams_content/shared/common/zmi/dashboard.py:630
+#: src/pyams_content/root/zmi/__init__.py:460
 #, python-format
 msgid "CONTRIBUTOR - {0} published contents"
 msgstr "CONTRIBUTEUR - {0} contenus publiés"
 
-#: src/pyams_content/shared/common/zmi/dashboard.py:663
-#: src/pyams_content/root/zmi/__init__.py:495
+#: src/pyams_content/shared/common/zmi/dashboard.py:668
+#: src/pyams_content/root/zmi/__init__.py:497
 msgid "Your published contents"
 msgstr "Mes contenus publiés"
 
-#: src/pyams_content/shared/common/zmi/dashboard.py:676
-#: src/pyams_content/root/zmi/__init__.py:508
+#: src/pyams_content/shared/common/zmi/dashboard.py:681
+#: src/pyams_content/root/zmi/__init__.py:510
 msgid "My retired contents"
 msgstr "Mes contenus retirés"
 
-#: src/pyams_content/shared/common/zmi/dashboard.py:685
-#: src/pyams_content/root/zmi/__init__.py:517
+#: src/pyams_content/shared/common/zmi/dashboard.py:690
+#: src/pyams_content/root/zmi/__init__.py:519
 #, python-format
 msgid "CONTRIBUTOR - {0} retired content"
 msgstr "CONTRIBUTEUR - {0} contenu retiré"
 
-#: src/pyams_content/shared/common/zmi/dashboard.py:686
-#: src/pyams_content/root/zmi/__init__.py:518
+#: src/pyams_content/shared/common/zmi/dashboard.py:691
+#: src/pyams_content/root/zmi/__init__.py:520
 #, python-format
 msgid "CONTRIBUTOR - {0} retired contents"
 msgstr "CONTRIBUTEUR - {0} contenus retirés"
 
-#: src/pyams_content/shared/common/zmi/dashboard.py:725
-#: src/pyams_content/root/zmi/__init__.py:556
+#: src/pyams_content/shared/common/zmi/dashboard.py:730
+#: src/pyams_content/root/zmi/__init__.py:558
 msgid "Your retired contents"
 msgstr "Mes contenus retirés"
 
-#: src/pyams_content/shared/common/zmi/dashboard.py:738
-#: src/pyams_content/root/zmi/__init__.py:569
+#: src/pyams_content/shared/common/zmi/dashboard.py:743
+#: src/pyams_content/root/zmi/__init__.py:571
 msgid "My archived contents"
 msgstr "Mes contenus archivés"
 
-#: src/pyams_content/shared/common/zmi/dashboard.py:747
-#: src/pyams_content/root/zmi/__init__.py:578
+#: src/pyams_content/shared/common/zmi/dashboard.py:752
+#: src/pyams_content/root/zmi/__init__.py:580
 #, python-format
 msgid "CONTRIBUTOR - {0} archived content"
 msgstr "CONTRIBUTEUR - {0} contenu archivé"
 
-#: src/pyams_content/shared/common/zmi/dashboard.py:748
-#: src/pyams_content/root/zmi/__init__.py:579
+#: src/pyams_content/shared/common/zmi/dashboard.py:753
+#: src/pyams_content/root/zmi/__init__.py:581
 #, python-format
 msgid "CONTRIBUTOR - {0} archived contents"
 msgstr "CONTRIBUTEUR - {0} contenus archivés"
 
-#: src/pyams_content/shared/common/zmi/dashboard.py:793
-#: src/pyams_content/root/zmi/__init__.py:623
+#: src/pyams_content/shared/common/zmi/dashboard.py:798
+#: src/pyams_content/root/zmi/__init__.py:625
 msgid "Your archived contents"
 msgstr "Mes contenus archivés"
 
-#: src/pyams_content/shared/common/zmi/dashboard.py:807
-#: src/pyams_content/root/zmi/__init__.py:637
+#: src/pyams_content/shared/common/zmi/dashboard.py:812
+#: src/pyams_content/root/zmi/__init__.py:639
 msgid "Other interventions"
 msgstr "Toutes les interventions"
 
-#: src/pyams_content/shared/common/zmi/dashboard.py:822
-#: src/pyams_content/root/zmi/__init__.py:652
+#: src/pyams_content/shared/common/zmi/dashboard.py:827
+#: src/pyams_content/root/zmi/__init__.py:654
 msgid "Last publications"
 msgstr "Dernières publications"
 
-#: src/pyams_content/shared/common/zmi/dashboard.py:831
-#: src/pyams_content/root/zmi/__init__.py:661
+#: src/pyams_content/shared/common/zmi/dashboard.py:836
+#: src/pyams_content/root/zmi/__init__.py:663
 #, python-format
 msgid "CONTRIBUTORS - {0} published content"
 msgstr "TOUS CONTRIBUTEURS - {0} contenu publié"
 
-#: src/pyams_content/shared/common/zmi/dashboard.py:876
-#: src/pyams_content/root/zmi/__init__.py:705
+#: src/pyams_content/shared/common/zmi/dashboard.py:881
+#: src/pyams_content/root/zmi/__init__.py:707
 msgid "Last published contents"
 msgstr "Derniers contenus publiés"
 
-#: src/pyams_content/shared/common/zmi/dashboard.py:889
-#: src/pyams_content/root/zmi/__init__.py:718
+#: src/pyams_content/shared/common/zmi/dashboard.py:894
+#: src/pyams_content/root/zmi/__init__.py:720
 msgid "Last updates"
 msgstr "Dernières modifications"
 
-#: src/pyams_content/shared/common/zmi/dashboard.py:898
-#: src/pyams_content/root/zmi/__init__.py:727
+#: src/pyams_content/shared/common/zmi/dashboard.py:903
+#: src/pyams_content/root/zmi/__init__.py:729
 #, python-format
 msgid "CONTRIBUTORS - {0} updated content"
 msgstr "TOUS CONTRIBUTEURS - {0} contenu modifié"
 
-#: src/pyams_content/shared/common/zmi/dashboard.py:941
-#: src/pyams_content/root/zmi/__init__.py:769
+#: src/pyams_content/shared/common/zmi/dashboard.py:946
+#: src/pyams_content/root/zmi/__init__.py:771
 msgid "Last updated contents"
 msgstr "Derniers contenus modifiés"
 
-#: src/pyams_content/shared/common/zmi/dashboard.py:348
-#: src/pyams_content/root/zmi/__init__.py:218
+#: src/pyams_content/shared/common/zmi/dashboard.py:353
+#: src/pyams_content/root/zmi/__init__.py:220
 #, python-format
 msgid "CONTRIBUTOR - {0} modified contents"
 msgstr "CONTRIBUTEUR - {0} contenus modifiés"
 
-#: src/pyams_content/shared/common/zmi/dashboard.py:350
-#: src/pyams_content/root/zmi/__init__.py:220
+#: src/pyams_content/shared/common/zmi/dashboard.py:355
+#: src/pyams_content/root/zmi/__init__.py:222
 #, python-format
 msgid "CONTRIBUTOR - Last {0} modified contents"
 msgstr "CONTRIBUTEUR - Les {0} dernières modifications"
 
-#: src/pyams_content/shared/common/zmi/dashboard.py:836
-#: src/pyams_content/root/zmi/__init__.py:666
+#: src/pyams_content/shared/common/zmi/dashboard.py:841
+#: src/pyams_content/root/zmi/__init__.py:668
 #, python-format
 msgid "CONTRIBUTORS - Last {0} published contents"
 msgstr "TOUS CONTRIBUTEURS - Les {0} dernières publications"
 
-#: src/pyams_content/shared/common/zmi/dashboard.py:838
-#: src/pyams_content/root/zmi/__init__.py:668
+#: src/pyams_content/shared/common/zmi/dashboard.py:843
+#: src/pyams_content/root/zmi/__init__.py:670
 msgid "CONTRIBUTORS - Last published contents (in the limit of 50)"
 msgstr "TOUS CONTRIBUTEURS - Les {0} dernières publications"
 
-#: src/pyams_content/shared/common/zmi/dashboard.py:903
-#: src/pyams_content/root/zmi/__init__.py:732
+#: src/pyams_content/shared/common/zmi/dashboard.py:908
+#: src/pyams_content/root/zmi/__init__.py:734
 #, python-format
 msgid "CONTRIBUTORS - Last {0} updated contents"
 msgstr "TOUS CONTRIBUTEURS - Les {0} dernières modifications"
 
-#: src/pyams_content/shared/common/zmi/dashboard.py:905
-#: src/pyams_content/root/zmi/__init__.py:734
+#: src/pyams_content/shared/common/zmi/dashboard.py:910
+#: src/pyams_content/root/zmi/__init__.py:736
 msgid "CONTRIBUTORS - Last updated contents (in the limit of 50)"
 msgstr "TOUS CONTRIBUTEURS - Les {0} dernières modifications"
 
+#: src/pyams_content/shared/common/zmi/dashboard.py:159
+#: src/pyams_content/shared/common/zmi/header.py:96
+msgid "Content publication start date is not passed yet"
+msgstr "La date de début de publication n'est pas encore atteinte"
+
 #: src/pyams_content/shared/common/zmi/review.py:61
 msgid "Ask for review..."
-msgstr "Demander une relecture..."
+msgstr "Demander une relecture"
 
 #: src/pyams_content/shared/common/zmi/review.py:99
 msgid "Content review request"
@@ -1316,16 +1434,24 @@
 msgid "Manager name"
 msgstr "Nom du responsable"
 
-#: src/pyams_content/shared/common/zmi/security.py:142
+#: src/pyams_content/shared/common/zmi/security.py:112
+msgid "Restricted"
+msgstr "restrictions"
+
+#: src/pyams_content/shared/common/zmi/security.py:129
+msgid "Owners"
+msgstr "Propriétaires"
+
+#: src/pyams_content/shared/common/zmi/security.py:176
 #, python-format
 msgid "Edit manager restrictions for « {0} »"
-msgstr "Gérer les restrictions d'accès pour « {0} »"
-
-#: src/pyams_content/shared/common/zmi/security.py:179
+msgstr "Gérer le périmètre d'intervention de « {0} »"
+
+#: src/pyams_content/shared/common/zmi/security.py:213
 msgid "Apply contents restrictions"
 msgstr "Appliquer des restrictions d'accès"
 
-#: src/pyams_content/shared/common/zmi/security.py:181
+#: src/pyams_content/shared/common/zmi/security.py:215
 msgid ""
 "You can specify which contents this manager will be able to manage. If you "
 "specify several criteria, the manager will be able to manage contents for "
@@ -1335,21 +1461,21 @@
 "autorisé à gérer. Si vous indiquez plusieurs critères, il pourra gérer les "
 "contenus pour lesquels au moins l'un des critères correspond."
 
-#: src/pyams_content/shared/common/zmi/header.py:84
+#: src/pyams_content/shared/common/zmi/header.py:85
 #, python-format
 msgid "{state} by {principal}"
 msgstr "{state} par {principal}"
 
-#: src/pyams_content/shared/common/zmi/header.py:108
+#: src/pyams_content/shared/common/zmi/header.py:117
 #, python-format
 msgid "since {date}"
 msgstr "depuis {date}"
 
-#: src/pyams_content/shared/common/zmi/header.py:118
+#: src/pyams_content/shared/common/zmi/header.py:127
 msgid "access new version"
 msgstr "accéder à la nouvelle version en préparation"
 
-#: src/pyams_content/shared/common/zmi/header.py:129
+#: src/pyams_content/shared/common/zmi/header.py:138
 msgid "access published version"
 msgstr "accéder à la version en ligne"
 
@@ -1371,7 +1497,7 @@
 
 #: src/pyams_content/shared/common/zmi/templates/review-comments.pt:43
 msgid "Add a comment..."
-msgstr "Ajouter un commentaire..."
+msgstr "Nouveau commentaire..."
 
 #: src/pyams_content/shared/common/zmi/templates/review-comments.pt:49
 msgid "Add comment"
@@ -1400,15 +1526,21 @@
 "actuel ; il pourra ensuite à nouveau être publié, en créant une nouvelle "
 "version."
 
-#: src/pyams_content/shared/common/zmi/templates/dashboard.pt:18
+#: src/pyams_content/shared/common/zmi/templates/dashboard.pt:13
+msgid "SEARCH - Between all contents of type &laquo;&nbsp;${type}&nbsp;&raquo;"
+msgstr ""
+"RECHERCHE - Tous contenus de type &laquo;&nbsp;${type}&nbsp;&raquo; confondus"
+
+#: src/pyams_content/shared/common/zmi/templates/dashboard.pt:24
 msgid "Quick search..."
 msgstr "Recherche rapide..."
 
-#: src/pyams_content/shared/common/zmi/templates/dashboard.pt:21
+#: src/pyams_content/shared/common/zmi/templates/dashboard.pt:29
 msgid "Advanced search..."
 msgstr "Recherche avancée..."
 
-#: src/pyams_content/shared/common/zmi/templates/dashboard.pt:32
+#: src/pyams_content/shared/common/zmi/templates/dashboard.pt:42
+#: src/pyams_content/root/zmi/templates/dashboard.pt:18
 msgid "You are not actually concerned by any content."
 msgstr "Vous n'êtes actuellement concerné par aucun contenu."
 
@@ -1449,8 +1581,8 @@
 "WARNING: this request was made by a contributor which is not the owner of "
 "this content."
 msgstr ""
-"ATTENTION : cette demande est formulée par un contributeur qui n'est pas le "
-"propriétaire de ce contenu !"
+"ATTENTION : cette demande est formulée par un contributeur habilité qui "
+"n'est pas le propriétaire."
 
 #: src/pyams_content/shared/common/zmi/templates/wf-clone-message.pt:2
 msgid "You considerate that the currently published must evolve."
@@ -1530,9 +1662,8 @@
 "The contributor will be notified of this and will be able to update the "
 "content before doing a new publication request."
 msgstr ""
-"Le contributeur qui vous a sollicité va être notifié de ce refus ; il pourra "
-"alors à nouveau le modifier avant d'effectuer une nouvelle demande de "
-"publication."
+"Le contributeur qui vous a sollicité va être notifié de votre refus ; il "
+"pourra modifier ce contenu et effectuer une nouvelle demande de publication."
 
 #: src/pyams_content/shared/common/zmi/templates/wf-cancel-archiving-message.pt:1
 msgid ""
@@ -1644,45 +1775,45 @@
 msgid "This content is already retired and not visible."
 msgstr "Ce contenu est déjà retiré et n'est plus visible des internautes."
 
-#: src/pyams_content/shared/common/interfaces/__init__.py:57
+#: src/pyams_content/shared/common/interfaces/__init__.py:58
 msgid "Workflow name"
 msgstr "Nom du workflow"
 
-#: src/pyams_content/shared/common/interfaces/__init__.py:58
+#: src/pyams_content/shared/common/interfaces/__init__.py:59
 msgid "Name of workflow utility used to manage tool contents"
 msgstr "Nom du workflow qui gère le cycle de vie des contenus de cet outil"
 
-#: src/pyams_content/shared/common/interfaces/__init__.py:66
+#: src/pyams_content/shared/common/interfaces/__init__.py:67
 #: src/pyams_content/root/interfaces/__init__.py:40
 msgid "Webmasters"
 msgstr "Webmestres"
 
-#: src/pyams_content/shared/common/interfaces/__init__.py:67
+#: src/pyams_content/shared/common/interfaces/__init__.py:68
 msgid "Webmasters can handle all contents, including published ones"
 msgstr ""
 "Les webmestres peuvent modifier et gérer tous les contenus, y compris ceux "
-"qui sont publiés"
-
-#: src/pyams_content/shared/common/interfaces/__init__.py:71
+"qui sont publiés et hormis ceux qui sont archivés"
+
+#: src/pyams_content/shared/common/interfaces/__init__.py:72
 msgid "Pilots"
 msgstr "Pilotes"
 
-#: src/pyams_content/shared/common/interfaces/__init__.py:72
+#: src/pyams_content/shared/common/interfaces/__init__.py:73
 msgid ""
 "Pilots can handle tool configuration, manage access rules, grant users roles "
 "and manage managers restrictions"
 msgstr ""
-"Les pilotes sont autorisés à gérer la configuration des outils, désignent "
-"les responsables et les contributeurs, et peuvent gérer les restrictions "
-"d'accès des contributeurs"
-
-#: src/pyams_content/shared/common/interfaces/__init__.py:77
-#: src/pyams_content/shared/common/interfaces/__init__.py:144
-msgid "Managers"
-msgstr "Responsables"
+"Les pilotes gèrent la configuration des outils, désignent les responsables "
+"et les contributeurs, et limitent si nécessaire l'intervention des "
+"responsables à certains contenus"
 
 #: src/pyams_content/shared/common/interfaces/__init__.py:78
 #: src/pyams_content/shared/common/interfaces/__init__.py:145
+msgid "Managers"
+msgstr "Responsables"
+
+#: src/pyams_content/shared/common/interfaces/__init__.py:79
+#: src/pyams_content/shared/common/interfaces/__init__.py:146
 msgid ""
 "Managers can handle main operations in tool's workflow, like publish or "
 "retire contents"
@@ -1691,20 +1822,20 @@
 "(comme la publication ou le retrait des contenus), dans la limite des "
 "restrictions qui leur sont imposées"
 
-#: src/pyams_content/shared/common/interfaces/__init__.py:83
-#: src/pyams_content/shared/common/interfaces/__init__.py:150
+#: src/pyams_content/shared/common/interfaces/__init__.py:84
+#: src/pyams_content/shared/common/interfaces/__init__.py:151
 msgid "Contributors"
 msgstr "Contributeurs"
 
-#: src/pyams_content/shared/common/interfaces/__init__.py:84
+#: src/pyams_content/shared/common/interfaces/__init__.py:85
 msgid "Contributors are users which are allowed to create new contents"
 msgstr "Les contributeurs sont autorisés à créer de nouveaux contenus"
 
-#: src/pyams_content/shared/common/interfaces/__init__.py:95
+#: src/pyams_content/shared/common/interfaces/__init__.py:96
 msgid "Version creator"
 msgstr "À l'origine de cette version"
 
-#: src/pyams_content/shared/common/interfaces/__init__.py:96
+#: src/pyams_content/shared/common/interfaces/__init__.py:97
 msgid ""
 "Name of content's version creator. The creator of the first version is also "
 "it's owner."
@@ -1712,39 +1843,39 @@
 "Nom du créateur de cette version. Le créateur de la première version d'un "
 "contenu est aussi son propriétaire."
 
-#: src/pyams_content/shared/common/interfaces/__init__.py:100
+#: src/pyams_content/shared/common/interfaces/__init__.py:101
 msgid "First owner"
 msgstr "Premier propriétaire"
 
-#: src/pyams_content/shared/common/interfaces/__init__.py:101
+#: src/pyams_content/shared/common/interfaces/__init__.py:102
 msgid "Name of content's first version owner"
 msgstr "Nom de l'utilisateur ayant créé la première version"
 
-#: src/pyams_content/shared/common/interfaces/__init__.py:105
+#: src/pyams_content/shared/common/interfaces/__init__.py:106
 msgid "Version creation"
-msgstr "Création de cette version"
-
-#: src/pyams_content/shared/common/interfaces/__init__.py:108
-msgid "Version modifiers"
-msgstr "Intervenants sur cette version"
+msgstr "Date de création"
 
 #: src/pyams_content/shared/common/interfaces/__init__.py:109
+msgid "Version modifiers"
+msgstr "Intervenants"
+
+#: src/pyams_content/shared/common/interfaces/__init__.py:110
 msgid "List of principals who modified this content"
-msgstr "Liste des utilisateurs qui sont intervenus sur ce contenu"
-
-#: src/pyams_content/shared/common/interfaces/__init__.py:112
-msgid "Last modifier"
-msgstr "Dernier intervenant"
+msgstr "Liste des utilisateurs qui sont intervenus sur cette version"
 
 #: src/pyams_content/shared/common/interfaces/__init__.py:113
+msgid "Last modifier"
+msgstr "Dernier intervenant"
+
+#: src/pyams_content/shared/common/interfaces/__init__.py:114
 msgid "Last principal who modified this content"
 msgstr "Dernier utilisateur étant intervenu sur ce contenu"
 
-#: src/pyams_content/shared/common/interfaces/__init__.py:116
+#: src/pyams_content/shared/common/interfaces/__init__.py:117
 msgid "Last update"
 msgstr "Dernière modification"
 
-#: src/pyams_content/shared/common/interfaces/__init__.py:120
+#: src/pyams_content/shared/common/interfaces/__init__.py:121
 msgid ""
 "The content's description is 'hidden' into HTML's page headers; but it can "
 "be seen, for example, in some search engines results as content's description"
@@ -1753,29 +1884,29 @@
 "mais on peut la retrouver, par exemple, dans les listes de résultats des "
 "moteurs de recherche comme Google"
 
-#: src/pyams_content/shared/common/interfaces/__init__.py:125
+#: src/pyams_content/shared/common/interfaces/__init__.py:126
 msgid "Keywords"
 msgstr "Mots-clés"
 
-#: src/pyams_content/shared/common/interfaces/__init__.py:126
+#: src/pyams_content/shared/common/interfaces/__init__.py:127
 msgid "They will be included into HTML pages metadata"
 msgstr "Ces mots-clés seront intégrés dans les métadonnées des pages HTML"
 
-#: src/pyams_content/shared/common/interfaces/__init__.py:129
+#: src/pyams_content/shared/common/interfaces/__init__.py:130
 msgid "Notepad"
-msgstr "Commentaire"
-
-#: src/pyams_content/shared/common/interfaces/__init__.py:130
+msgstr "Bloc-notes"
+
+#: src/pyams_content/shared/common/interfaces/__init__.py:131
 msgid "Internal information to be known about this content"
 msgstr ""
 "Pour prendre note d'informations internes utiles ou importantes à propos de "
 "ce contenu"
 
-#: src/pyams_content/shared/common/interfaces/__init__.py:137
+#: src/pyams_content/shared/common/interfaces/__init__.py:138
 msgid "Content owner"
 msgstr "Propriétaire"
 
-#: src/pyams_content/shared/common/interfaces/__init__.py:138
+#: src/pyams_content/shared/common/interfaces/__init__.py:139
 msgid ""
 "The owner is the creator of content's first version, except if it was "
 "transferred afterwards to another owner"
@@ -1784,7 +1915,7 @@
 "lorsque cette propriété a été transférée à un autre utilisateur après coup. "
 "Les contenus archivés ne sont plus transférables."
 
-#: src/pyams_content/shared/common/interfaces/__init__.py:151
+#: src/pyams_content/shared/common/interfaces/__init__.py:152
 msgid ""
 "Contributors are users which are allowed to update this content in addition "
 "to it's owner"
@@ -1792,11 +1923,11 @@
 "Les contributeurs sont autorisés, en plus du propriétaire, à modifier ce "
 "contenu"
 
-#: src/pyams_content/shared/common/interfaces/__init__.py:156
+#: src/pyams_content/shared/common/interfaces/__init__.py:157
 msgid "Readers"
 msgstr "Relecteurs"
 
-#: src/pyams_content/shared/common/interfaces/__init__.py:157
+#: src/pyams_content/shared/common/interfaces/__init__.py:158
 msgid ""
 "Readers are users which are asked to verify and comment contents before they "
 "are published"
@@ -1804,26 +1935,26 @@
 "Les relecteurs sont des utilisateurs qui sont sollicités pour vérifier et "
 "commenter un contenu avant sa publication"
 
-#: src/pyams_content/shared/common/interfaces/__init__.py:162
+#: src/pyams_content/shared/common/interfaces/__init__.py:163
 msgid "Guests"
 msgstr "Invités"
 
-#: src/pyams_content/shared/common/interfaces/__init__.py:163
+#: src/pyams_content/shared/common/interfaces/__init__.py:164
 msgid ""
 "Guests are users which are allowed to view contents with restricted access"
 msgstr ""
 "Les invités sont autorisés à consulter des contenus dont l'accès a été "
 "restreint"
 
-#: src/pyams_content/shared/common/interfaces/__init__.py:182
+#: src/pyams_content/shared/common/interfaces/__init__.py:183
 msgid "Principal ID"
 msgstr "ID utilisateur"
 
-#: src/pyams_content/shared/common/interfaces/__init__.py:187
+#: src/pyams_content/shared/common/interfaces/__init__.py:188
 msgid "Restricted contents"
 msgstr "Accès restreints"
 
-#: src/pyams_content/shared/common/interfaces/__init__.py:188
+#: src/pyams_content/shared/common/interfaces/__init__.py:189
 msgid ""
 "If 'yes', this manager will get restricted access to manage contents based "
 "on selected settings"
@@ -1831,11 +1962,11 @@
 "Si 'oui', ce responsable n'aura qu'un accès restreint à certains contenus en "
 "fonction de paramètres spécifiques"
 
-#: src/pyams_content/shared/common/interfaces/__init__.py:193
+#: src/pyams_content/shared/common/interfaces/__init__.py:194
 msgid "Selected owners"
 msgstr "Propriétaires"
 
-#: src/pyams_content/shared/common/interfaces/__init__.py:194
+#: src/pyams_content/shared/common/interfaces/__init__.py:195
 msgid "Manager will have access to contents owned by these principals"
 msgstr ""
 "Le responsable n'aura accès qu'aux contenus dont ces utilisateurs sont "
@@ -1866,7 +1997,7 @@
 msgstr "Cette brève"
 
 #: src/pyams_content/shared/news/zmi/__init__.py:63
-#: src/pyams_content/shared/news/zmi/__init__.py:73
+#: src/pyams_content/shared/news/zmi/__init__.py:74
 msgid "Add news topic"
 msgstr "Ajouter une brève"
 
@@ -1903,7 +2034,7 @@
 
 #: src/pyams_content/shared/view/zmi/reference.py:54
 msgid "References..."
-msgstr "Références..."
+msgstr "Références"
 
 #: src/pyams_content/shared/view/zmi/reference.py:64
 msgid "View internal references settings"
@@ -1934,7 +2065,7 @@
 msgstr "Vue"
 
 #: src/pyams_content/shared/view/interfaces/__init__.py:40
-#: src/pyams_content/interfaces/__init__.py:82
+#: src/pyams_content/interfaces/__init__.py:111
 #: src/pyams_content/interfaces/review.py:67
 msgid "Creation date"
 msgstr "Date de création"
@@ -2036,42 +2167,47 @@
 msgid "Image map « {title} »"
 msgstr "Article de blog « {title} »"
 
-#: src/pyams_content/shared/imagemap/zmi/container.py:56
+#: src/pyams_content/shared/imagemap/zmi/container.py:54
 msgid "Image areas"
 msgstr "Zones de l'image"
 
-#: src/pyams_content/shared/imagemap/zmi/container.py:67
+#: src/pyams_content/shared/imagemap/zmi/container.py:65
 #: src/pyams_content/shared/imagemap/interfaces/__init__.py:63
 msgid "Image map areas"
 msgstr "Zones cliquables de l'images"
 
-#: src/pyams_content/shared/imagemap/zmi/container.py:111
+#: src/pyams_content/shared/imagemap/zmi/container.py:136
+#: src/pyams_content/shared/imagemap/interfaces/__init__.py:42
+msgid "Link target"
+msgstr "Cible du lien"
+
+#: src/pyams_content/shared/imagemap/zmi/container.py:109
 msgid "No currently defined image."
 msgstr "Aucun image de fond n'est actuellement définie."
 
-#: src/pyams_content/shared/imagemap/zmi/container.py:113
+#: src/pyams_content/shared/imagemap/zmi/container.py:111
 msgid "No currently defined area."
 msgstr "Aucune zone cliquable n'est actuellement définie."
 
-#: src/pyams_content/shared/imagemap/zmi/container.py:182
+#: src/pyams_content/shared/imagemap/zmi/container.py:180
 msgid "Given area name doesn't exist!"
 msgstr "La zone indiquée n'existe pas !"
 
-#: src/pyams_content/shared/imagemap/zmi/container.py:178
+#: src/pyams_content/shared/imagemap/zmi/container.py:176
 msgid "Bad query object_name parameter value!"
 msgstr "Valeur incorrecte du paramètre object_name !"
 
-#: src/pyams_content/shared/imagemap/zmi/area.py:47
+#: src/pyams_content/shared/imagemap/zmi/area.py:46
 msgid "Add image area"
 msgstr "Ajouter une zone"
 
-#: src/pyams_content/shared/imagemap/zmi/area.py:65
+#: src/pyams_content/shared/imagemap/zmi/area.py:64
 msgid "Add new image area"
 msgstr "Ajout d'une zone cliquable"
 
-#: src/pyams_content/shared/imagemap/zmi/area.py:108
+#: src/pyams_content/shared/imagemap/zmi/area.py:106
 msgid "Edit image map properties"
-msgstr "Modifier les propriétés d'une image"
+msgstr "Propriétés de l'image"
 
 #: src/pyams_content/shared/imagemap/zmi/templates/summary.pt:3
 msgid "Image areas preview"
@@ -2081,18 +2217,14 @@
 msgid "Image map"
 msgstr "Image cliquable"
 
-#: src/pyams_content/shared/imagemap/interfaces/__init__.py:42
-msgid "Area title"
-msgstr "Titre de la zone"
-
 #: src/pyams_content/shared/imagemap/interfaces/__init__.py:43
-msgid "Label associated with this area"
-msgstr "Libellé associé à cette zone"
-
-#: src/pyams_content/shared/imagemap/interfaces/__init__.py:47
 msgid "Internal or external link associated with this map area"
 msgstr "Lien interne ou externe associé à cette zone"
 
+#: src/pyams_content/shared/imagemap/interfaces/__init__.py:48
+msgid "Alternate label associated with this area"
+msgstr "Libellé de substitution associé à cette zone"
+
 #: src/pyams_content/shared/imagemap/interfaces/__init__.py:51
 msgid "Map area coordinates"
 msgstr "Coordonnées"
@@ -2150,7 +2282,7 @@
 
 #: src/pyams_content/profile/zmi/__init__.py:40
 msgid "Admin. profile"
-msgstr "Profil d'admin."
+msgstr "Profil intervenant"
 
 #: src/pyams_content/profile/interfaces/__init__.py:33
 msgid "User favorites"
@@ -2168,27 +2300,31 @@
 msgid "Default length used for inner tables and dashboards"
 msgstr "Longueur par défaut des tableaux internes et des tableaux de bord"
 
-#: src/pyams_content/root/zmi/__init__.py:74
+#: src/pyams_content/root/zmi/__init__.py:75
 msgid "Home"
 msgstr "Accueil"
 
-#: src/pyams_content/root/zmi/__init__.py:123
+#: src/pyams_content/root/zmi/__init__.py:782
+msgid "Content"
+msgstr "Contenu"
+
+#: src/pyams_content/root/zmi/templates/dashboard.pt:6
 msgid "Your contents dashboard"
 msgstr "Les contenus qui me concernent"
 
-#: src/pyams_content/root/zmi/__init__.py:780
-msgid "Content"
-msgstr "Contenu"
-
 #: src/pyams_content/root/interfaces/__init__.py:36
 msgid "Site managers"
 msgstr "Administrateurs"
 
 #: src/pyams_content/root/interfaces/__init__.py:44
+msgid "Templates managers"
+msgstr "Designers"
+
+#: src/pyams_content/root/interfaces/__init__.py:48
 msgid "Operators group"
 msgstr "Groupe des opérateurs"
 
-#: src/pyams_content/root/interfaces/__init__.py:45
+#: src/pyams_content/root/interfaces/__init__.py:49
 msgid "Name of group containing all roles owners"
 msgstr ""
 "Tous les utilisateurs auxquels sera attribué un rôle seront placés dans ce "
@@ -2198,11 +2334,11 @@
 msgid "Shared sites"
 msgstr "Sites et blogs"
 
-#: src/pyams_content/zmi/viewlet/toplinks/__init__.py:65
+#: src/pyams_content/zmi/viewlet/toplinks/__init__.py:66
 msgid "Shared contents"
 msgstr "Contenus partagés"
 
-#: src/pyams_content/zmi/viewlet/toplinks/__init__.py:85
+#: src/pyams_content/zmi/viewlet/toplinks/__init__.py:87
 msgid "My roles"
 msgstr "Mes rôles"
 
@@ -2210,96 +2346,96 @@
 msgid "Create new content"
 msgstr "Créer un nouveau contenu"
 
-#: src/pyams_content/workflow/__init__.py:83
+#: src/pyams_content/workflow/__init__.py:69
 msgid "Draft"
 msgstr "Brouillon"
 
-#: src/pyams_content/workflow/__init__.py:84
+#: src/pyams_content/workflow/__init__.py:70
 msgid "Proposed"
 msgstr "Publication demandée"
 
-#: src/pyams_content/workflow/__init__.py:85
+#: src/pyams_content/workflow/__init__.py:71
 msgid "Canceled"
 msgstr "Annulé"
 
-#: src/pyams_content/workflow/__init__.py:86
+#: src/pyams_content/workflow/__init__.py:72
 msgid "Refused"
 msgstr "Refusé"
 
-#: src/pyams_content/workflow/__init__.py:87
+#: src/pyams_content/workflow/__init__.py:73
 msgid "Published"
 msgstr "Publié"
 
-#: src/pyams_content/workflow/__init__.py:88
+#: src/pyams_content/workflow/__init__.py:74
 msgid "Retiring"
 msgstr "Retrait demandé"
 
-#: src/pyams_content/workflow/__init__.py:89
+#: src/pyams_content/workflow/__init__.py:75
 msgid "Retired"
 msgstr "Retiré"
 
-#: src/pyams_content/workflow/__init__.py:90
+#: src/pyams_content/workflow/__init__.py:76
 msgid "Archiving"
 msgstr "Archivage demandé"
 
-#: src/pyams_content/workflow/__init__.py:91
+#: src/pyams_content/workflow/__init__.py:77
 msgid "Archived"
 msgstr "Archivé"
 
-#: src/pyams_content/workflow/__init__.py:92
+#: src/pyams_content/workflow/__init__.py:78
 msgid "Deleted"
 msgstr "Supprimé"
 
-#: src/pyams_content/workflow/__init__.py:94
+#: src/pyams_content/workflow/__init__.py:83
 msgid "draft created"
 msgstr "brouillon créé"
 
-#: src/pyams_content/workflow/__init__.py:95
+#: src/pyams_content/workflow/__init__.py:84
 msgid "publication requested"
 msgstr "publication demandée"
 
-#: src/pyams_content/workflow/__init__.py:96
+#: src/pyams_content/workflow/__init__.py:85
 msgid "published"
 msgstr "publié"
 
-#: src/pyams_content/workflow/__init__.py:97
+#: src/pyams_content/workflow/__init__.py:86
 msgid "retiring requested"
 msgstr "retrait demandé"
 
-#: src/pyams_content/workflow/__init__.py:98
+#: src/pyams_content/workflow/__init__.py:87
 msgid "retired"
 msgstr "retiré"
 
-#: src/pyams_content/workflow/__init__.py:99
+#: src/pyams_content/workflow/__init__.py:88
 msgid "archiving requested"
 msgstr "archivage demandé"
 
-#: src/pyams_content/workflow/__init__.py:100
+#: src/pyams_content/workflow/__init__.py:89
 msgid "archived"
 msgstr "archivé"
 
-#: src/pyams_content/workflow/__init__.py:223
+#: src/pyams_content/workflow/__init__.py:271
 msgid "Initialize"
 msgstr "Création"
 
-#: src/pyams_content/workflow/__init__.py:226
+#: src/pyams_content/workflow/__init__.py:274
 msgid "Draft creation"
 msgstr "Création du brouillon"
 
-#: src/pyams_content/workflow/__init__.py:229
-#: src/pyams_content/workflow/__init__.py:244
+#: src/pyams_content/workflow/__init__.py:277
+#: src/pyams_content/workflow/__init__.py:292
 msgid "Propose publication"
 msgstr "Demander la publication"
 
-#: src/pyams_content/workflow/__init__.py:236
-#: src/pyams_content/workflow/__init__.py:251
+#: src/pyams_content/workflow/__init__.py:284
+#: src/pyams_content/workflow/__init__.py:299
 msgid "Publication request"
 msgstr "Demande de publication"
 
-#: src/pyams_content/workflow/__init__.py:237
-#: src/pyams_content/workflow/__init__.py:252
-#: src/pyams_content/workflow/__init__.py:338
-#: src/pyams_content/workflow/__init__.py:378
+#: src/pyams_content/workflow/__init__.py:285
+#: src/pyams_content/workflow/__init__.py:300
+#: src/pyams_content/workflow/__init__.py:386
+#: src/pyams_content/workflow/__init__.py:433
 msgid ""
 "content managers authorized to take charge of your content are going to be "
 "notified of your request."
@@ -2307,217 +2443,238 @@
 "les responsables habilités à prendre en charge votre demande vont être "
 "sollicités."
 
-#: src/pyams_content/workflow/__init__.py:240
+#: src/pyams_content/workflow/__init__.py:288
 #, python-format
 msgid "A publication request has been submitted for content « {0} »"
 msgstr "Une demande de publication a été soumise pour le contenu « {0} »"
 
-#: src/pyams_content/workflow/__init__.py:255
+#: src/pyams_content/workflow/__init__.py:303
 #, python-format
 msgid "A new publication request has been submitted for content « {0} »"
 msgstr ""
 "Une demande de nouvelle publication a été soumise pour le contenu « {0} »"
 
-#: src/pyams_content/workflow/__init__.py:266
+#: src/pyams_content/workflow/__init__.py:314
 msgid "Publication request canceled"
 msgstr "Annulation de la demande de publication"
 
-#: src/pyams_content/workflow/__init__.py:268
+#: src/pyams_content/workflow/__init__.py:316
 #, python-format
 msgid "The publication request for content « {0} » has been cancelled"
 msgstr "La demande de publication du contenu « {0} » a été annulée"
 
-#: src/pyams_content/workflow/__init__.py:272
+#: src/pyams_content/workflow/__init__.py:320
 msgid "Reset canceled publication to draft"
 msgstr "Retour automatique en statut 'brouillon'"
 
-#: src/pyams_content/workflow/__init__.py:276
-#: src/pyams_content/workflow/__init__.py:305
+#: src/pyams_content/workflow/__init__.py:324
+#: src/pyams_content/workflow/__init__.py:353
 msgid "State reset to 'draft' (automatic)"
 msgstr "Retour automatique en statut 'brouillon'"
 
-#: src/pyams_content/workflow/__init__.py:280
+#: src/pyams_content/workflow/__init__.py:328
 msgid "Reset canceled publication to retired"
 msgstr "Retour automatique en statut 'retiré'"
 
-#: src/pyams_content/workflow/__init__.py:284
+#: src/pyams_content/workflow/__init__.py:332
 msgid "State reset to 'retired' (automatic)"
 msgstr "Retour automatique en statut 'retiré'"
 
-#: src/pyams_content/workflow/__init__.py:288
+#: src/pyams_content/workflow/__init__.py:336
 msgid "Refuse publication"
 msgstr "Refuser la publication"
 
-#: src/pyams_content/workflow/__init__.py:295
+#: src/pyams_content/workflow/__init__.py:343
 msgid "Publication refused"
 msgstr "Refus de publication"
 
-#: src/pyams_content/workflow/__init__.py:297
+#: src/pyams_content/workflow/__init__.py:345
 #, python-format
 msgid "The publication request for content « {0} » has been refused"
 msgstr "La publication du contenu « {0} » a été refusée"
 
-#: src/pyams_content/workflow/__init__.py:301
+#: src/pyams_content/workflow/__init__.py:349
 msgid "Reset refused publication to draft"
 msgstr "Publication refusée"
 
-#: src/pyams_content/workflow/__init__.py:309
+#: src/pyams_content/workflow/__init__.py:357
 msgid "Reset refused publication to retired"
 msgstr "Publication refusée"
 
-#: src/pyams_content/workflow/__init__.py:313
+#: src/pyams_content/workflow/__init__.py:361
 msgid "State reset to 'refused' (automatic)"
 msgstr "Retour automatique en status 'refusé'"
 
-#: src/pyams_content/workflow/__init__.py:325
+#: src/pyams_content/workflow/__init__.py:373
 msgid "Content published"
 msgstr "Publication"
 
-#: src/pyams_content/workflow/__init__.py:327
+#: src/pyams_content/workflow/__init__.py:375
 #, python-format
 msgid "The content « {0} » has been published"
 msgstr "Le contenu « {0} » a été publié"
 
-#: src/pyams_content/workflow/__init__.py:331
+#: src/pyams_content/workflow/__init__.py:379
 msgid "Request retiring"
 msgstr "Demander le retrait"
 
-#: src/pyams_content/workflow/__init__.py:337
+#: src/pyams_content/workflow/__init__.py:385
 msgid "Retire request"
 msgstr "Demande de retrait"
 
-#: src/pyams_content/workflow/__init__.py:341
+#: src/pyams_content/workflow/__init__.py:389
 #, python-format
 msgid "A retire request has been submitted for content « {0} »"
 msgstr "Une demande de retrait a été soumise pour le contenu « {0} »"
 
-#: src/pyams_content/workflow/__init__.py:345
+#: src/pyams_content/workflow/__init__.py:393
+msgid "Retired content"
+msgstr "Contenu retiré"
+
+#: src/pyams_content/workflow/__init__.py:397
+msgid "Content retired after passed expiration date"
+msgstr "Retrait automatique après la date de fin de publication"
+
+#: src/pyams_content/workflow/__init__.py:400
 msgid "Cancel retiring request"
 msgstr "Annuler la demande de retrait"
 
-#: src/pyams_content/workflow/__init__.py:352
+#: src/pyams_content/workflow/__init__.py:407
 msgid "Retire request canceled"
 msgstr "Annulation de la demande de retrait"
 
-#: src/pyams_content/workflow/__init__.py:354
+#: src/pyams_content/workflow/__init__.py:409
 #, python-format
 msgid "The retiring request for content « {0} » has been cancelled"
 msgstr "La demande de retrait du contenu « {0} » a été annulée"
 
-#: src/pyams_content/workflow/__init__.py:358
+#: src/pyams_content/workflow/__init__.py:413
 msgid "Retire content"
 msgstr "Retirer"
 
-#: src/pyams_content/workflow/__init__.py:365
+#: src/pyams_content/workflow/__init__.py:420
 msgid "Content retired"
 msgstr "Retrait"
 
-#: src/pyams_content/workflow/__init__.py:367
+#: src/pyams_content/workflow/__init__.py:422
 #, python-format
 msgid "The content « {0} » has been retired"
 msgstr "Le contenu « {0} » a été retiré"
 
-#: src/pyams_content/workflow/__init__.py:377
+#: src/pyams_content/workflow/__init__.py:432
 msgid "Archive request"
 msgstr "Demande d'archivage"
 
-#: src/pyams_content/workflow/__init__.py:381
+#: src/pyams_content/workflow/__init__.py:436
 #, python-format
 msgid "An archive request has been submitted for content « {0} »"
 msgstr "Une demande d'archivage a été soumise pour le contenu « {0} »"
 
-#: src/pyams_content/workflow/__init__.py:385
+#: src/pyams_content/workflow/__init__.py:440
 msgid "Cancel archiving request"
 msgstr "Annuler la demande d'archivage"
 
-#: src/pyams_content/workflow/__init__.py:392
+#: src/pyams_content/workflow/__init__.py:447
 msgid "Archive request canceled"
 msgstr "Annulation de la demande d'archivage"
 
-#: src/pyams_content/workflow/__init__.py:394
+#: src/pyams_content/workflow/__init__.py:449
 #, python-format
 msgid "The archive request for content « {0} » has been cancelled"
 msgstr "La demande d'archivage du contenu « {0} » a été annulée"
 
-#: src/pyams_content/workflow/__init__.py:398
+#: src/pyams_content/workflow/__init__.py:453
 msgid "Archive content"
 msgstr "Archiver"
 
-#: src/pyams_content/workflow/__init__.py:406
+#: src/pyams_content/workflow/__init__.py:461
 msgid "Content archived"
 msgstr "Archivage"
 
-#: src/pyams_content/workflow/__init__.py:408
+#: src/pyams_content/workflow/__init__.py:463
 #, python-format
 msgid "The content « {0} » has been archived"
 msgstr "Le contenu « {0} » a été archivé"
 
-#: src/pyams_content/workflow/__init__.py:412
+#: src/pyams_content/workflow/__init__.py:467
 msgid "Archive published content"
 msgstr "Archivage automatique d'un contenu publié"
 
-#: src/pyams_content/workflow/__init__.py:416
-#: src/pyams_content/workflow/__init__.py:424
-#: src/pyams_content/workflow/__init__.py:432
+#: src/pyams_content/workflow/__init__.py:471
+#: src/pyams_content/workflow/__init__.py:479
+#: src/pyams_content/workflow/__init__.py:487
 msgid "Content archived after version publication"
 msgstr "Archivage automatique après publication"
 
-#: src/pyams_content/workflow/__init__.py:420
+#: src/pyams_content/workflow/__init__.py:475
 msgid "Archive retiring content"
 msgstr "Archivage automatique d'un contenu en attente de retrait"
 
-#: src/pyams_content/workflow/__init__.py:428
+#: src/pyams_content/workflow/__init__.py:483
 msgid "Archive retired content"
 msgstr "Archivage automatique d'un contenu retiré"
 
-#: src/pyams_content/workflow/__init__.py:444
-#: src/pyams_content/workflow/__init__.py:456
-#: src/pyams_content/workflow/__init__.py:468
-#: src/pyams_content/workflow/__init__.py:480
-#: src/pyams_content/workflow/__init__.py:492
+#: src/pyams_content/workflow/__init__.py:499
+#: src/pyams_content/workflow/__init__.py:511
+#: src/pyams_content/workflow/__init__.py:523
+#: src/pyams_content/workflow/__init__.py:535
+#: src/pyams_content/workflow/__init__.py:547
 msgid "New version created"
 msgstr "Création d'une nouvelle version"
 
-#: src/pyams_content/workflow/__init__.py:504
+#: src/pyams_content/workflow/__init__.py:559
 msgid "Version deleted"
 msgstr "Version supprimée"
 
-#: src/pyams_content/workflow/__init__.py:572
+#: src/pyams_content/workflow/__init__.py:628
 msgid "publication refused"
 msgstr "publication refusée"
 
-#: src/pyams_content/workflow/__init__.py:570
+#: src/pyams_content/workflow/__init__.py:626
 msgid "new version created"
 msgstr "nouvelle version en préparation"
 
-#: src/pyams_content/workflow/__init__.py:193
+#: src/pyams_content/workflow/__init__.py:241
 #, python-format
 msgid "Published version {0}"
 msgstr "Version {0} publiée"
 
-#: src/pyams_content/interfaces/__init__.py:66
+#: src/pyams_content/workflow/task.py:57
+msgid "Automatic contents withdrawal:\n"
+msgstr ""
+"Retrait automatique des contenus après la date de fin de publication :\n"
+
+#: src/pyams_content/workflow/zmi/task.py:43
+msgid "Add content archiver task..."
+msgstr "Ajouter une tâche d'archivage automatique"
+
+#: src/pyams_content/workflow/zmi/task.py:54
+msgid "Add automatic content archiver"
+msgstr "Ajout d'une tâche d'archivage automatique"
+
+#: src/pyams_content/interfaces/__init__.py:95
 msgid "Unique key"
 msgstr "Clé unique"
 
-#: src/pyams_content/interfaces/__init__.py:67
+#: src/pyams_content/interfaces/__init__.py:96
 msgid "WARNING: this key can't be modified after creation!!!"
 msgstr "ATTENTION : cette clé ne pourra plus être modifiée !!!"
 
-#: src/pyams_content/interfaces/__init__.py:71
+#: src/pyams_content/interfaces/__init__.py:100
 msgid "Visible label used to display content"
 msgstr "Le titre affiché en front-office"
 
-#: src/pyams_content/interfaces/__init__.py:74
+#: src/pyams_content/interfaces/__init__.py:103
 msgid "Short name"
 msgstr "Titre court"
 
-#: src/pyams_content/interfaces/__init__.py:75
+#: src/pyams_content/interfaces/__init__.py:104
 msgid "Short name used in breadcrumbs"
 msgstr ""
 "Affiché lorsque le contenu est consulté depuis son site d'origine (s'il a "
 "été identifié)"
 
-#: src/pyams_content/interfaces/__init__.py:86
+#: src/pyams_content/interfaces/__init__.py:115
 msgid "Modification date"
 msgstr "Dernière modification apportée"
 
@@ -2549,6 +2706,105 @@
 msgid "List of principals which reviewed the comment"
 msgstr "Liste des utilisateurs qui ont apporté des commentaires sur ce contenu"
 
+#~ msgid "Area title"
+#~ msgstr "Titre de la zone"
+
+#~ msgid "Add gallery"
+#~ msgstr "Ajouter une galerie"
+
+#~ msgid "Add internal link..."
+#~ msgstr "Ajouter un lien interne..."
+
+#~ msgid "Add external link..."
+#~ msgstr "Ajouter un lien externe..."
+
+#~ msgid "Add mailto link..."
+#~ msgstr "Ajouter un lien « mailto »..."
+
+#~ msgid "Images galleries..."
+#~ msgstr "Galeries d'images"
+
+#~ msgid "Display gallery contents"
+#~ msgstr "Contenu de la galerie"
+
+#~ msgid "Images"
+#~ msgstr "Images"
+
+#~ msgid "Edit galleries links"
+#~ msgstr "Galeries d'images associées"
+
+#~ msgid "No currently defined gallery."
+#~ msgstr "Aucune galerie d'images associée à ce contenu."
+
+#~ msgid "Visible gallery?"
+#~ msgstr "Galerie visible ?"
+
+#~ msgid "If 'no', this gallery won't be displayed in front office"
+#~ msgstr "Si 'non', cette galerie ne sera pas affichée en front-office"
+
+#~ msgid "Contained galleries"
+#~ msgstr "Galeries d'images"
+
+#~ msgid "List of images galleries linked to this object"
+#~ msgstr "Liste des galeries d'images associées à cet objet"
+
+#~ msgid "External files list"
+#~ msgstr "Liste des fichiers joints"
+
+#~ msgid "Filename"
+#~ msgstr "Nom de fichier"
+
+#~ msgid "Edit external files links"
+#~ msgstr "Fichiers joints associés"
+
+#~ msgid "Videos"
+#~ msgstr "Vidéos"
+
+#~ msgid "Sounds"
+#~ msgstr "Sons"
+
+#~ msgid "No currently stored external file."
+#~ msgstr "Aucun fichier joint associé à ce contenu."
+
+#~ msgid "List of external files linked to this object"
+#~ msgstr "Liste des fichiers joints associés à cet objet"
+
+#~ msgid "Click and drag to sort paragraphs..."
+#~ msgstr "Utilisez le glisser/déposer pour ordonner les paragraphes..."
+
+#~ msgid "Useful links"
+#~ msgstr "Liens utiles"
+
+#~ msgid "Useful links..."
+#~ msgstr "Liens utiles"
+
+#~ msgid "Useful links list"
+#~ msgstr "Liste des liens utiles"
+
+#~ msgid "Edit useful links links"
+#~ msgstr "Liens utiles associés"
+
+#~ msgid "No currently defined link."
+#~ msgstr "Aucun lien utile asocié à ce contenu."
+
+#~ msgid "Contained links"
+#~ msgstr "Liens utiles"
+
+#~ msgid "List of internal or external links linked to this object"
+#~ msgstr "Liste des liens internes ou externes associés à cet objet"
+
+#~ msgid "Automatic content withdrawal"
+#~ msgstr "Retrait automatique après la date de fin de publication"
+
+#~ msgid "ZEO connection name"
+#~ msgstr "Nom de la connection ZEO"
+
+#~ msgid "Name of ZEO connection utility pointing to content database"
+#~ msgstr "Nom du workflow qui gère le cycle de vie des contenus de cet outil"
+
+#~ msgid "Creator (role)"
+#~ msgstr "Créateur (rôle)"
+
 #~ msgid "Workflow"
 #~ msgstr "Workflow"
 
@@ -2604,9 +2860,6 @@
 #~ msgid "Name of the manager who published the document"
 #~ msgstr "Nom du responsable ayant publié le document"
 
-#~ msgid "Publication"
-#~ msgstr "Mise en ligne"
-
 #~ msgid "Last publication date and actor"
 #~ msgstr "Nom du responsable ayant effectué la dernière mise en ligne"
 
--- a/src/pyams_content/locales/pyams_content.pot	Mon Sep 11 14:54:30 2017 +0200
+++ b/src/pyams_content/locales/pyams_content.pot	Mon Sep 11 15:10:50 2017 +0200
@@ -6,7 +6,7 @@
 msgid ""
 msgstr ""
 "Project-Id-Version: PACKAGE 1.0\n"
-"POT-Creation-Date: 2017-07-06 15:36+0200\n"
+"POT-Creation-Date: 2017-09-07 16:29+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"
@@ -16,359 +16,443 @@
 "Content-Transfer-Encoding: 8bit\n"
 "Generated-By: Lingua 3.10.dev0\n"
 
-#: ./src/pyams_content/__init__.py:33
+#: ./src/pyams_content/__init__.py:36
 msgid "Manage site root"
 msgstr ""
 
-#: ./src/pyams_content/__init__.py:35
+#: ./src/pyams_content/__init__.py:38
 msgid "Manage site"
 msgstr ""
 
-#: ./src/pyams_content/__init__.py:37
+#: ./src/pyams_content/__init__.py:40
 msgid "Manage tool"
 msgstr ""
 
-#: ./src/pyams_content/__init__.py:39
+#: ./src/pyams_content/__init__.py:42
 msgid "Create content"
 msgstr ""
 
-#: ./src/pyams_content/__init__.py:41
+#: ./src/pyams_content/__init__.py:44
 msgid "Manage content"
 msgstr ""
 
-#: ./src/pyams_content/__init__.py:43
+#: ./src/pyams_content/__init__.py:46
 msgid "Comment content"
 msgstr ""
 
-#: ./src/pyams_content/__init__.py:45
-#: ./src/pyams_content/workflow/__init__.py:317
+#: ./src/pyams_content/__init__.py:48
+#: ./src/pyams_content/workflow/__init__.py:365
 msgid "Publish content"
 msgstr ""
 
-#: ./src/pyams_content/__init__.py:49
+#: ./src/pyams_content/__init__.py:52
 msgid "Webmaster (role)"
 msgstr ""
 
-#: ./src/pyams_content/__init__.py:57
+#: ./src/pyams_content/__init__.py:61
 msgid "Pilot (role)"
 msgstr ""
 
-#: ./src/pyams_content/__init__.py:65
+#: ./src/pyams_content/__init__.py:69
 msgid "Manager (role)"
 msgstr ""
 
-#: ./src/pyams_content/__init__.py:72
-msgid "Creator (role)"
-msgstr ""
-
-#: ./src/pyams_content/__init__.py:77
+#: ./src/pyams_content/__init__.py:76
+msgid "Owner (role)"
+msgstr ""
+
+#: ./src/pyams_content/__init__.py:81
 msgid "Contributor (role)"
 msgstr ""
 
-#: ./src/pyams_content/__init__.py:85
+#: ./src/pyams_content/__init__.py:89
 msgid "Reader (role)"
 msgstr ""
 
-#: ./src/pyams_content/__init__.py:91
-msgid "Operator (role)"
-msgstr ""
-
 #: ./src/pyams_content/__init__.py:95
+msgid "Operator (role)"
+msgstr ""
+
+#: ./src/pyams_content/__init__.py:99
 msgid "Guest user (role)"
 msgstr ""
 
-#: ./src/pyams_content/component/gallery/zmi/__init__.py:55
-#: ./src/pyams_content/component/gallery/zmi/templates/widget-input.pt:5
-msgid "Add gallery"
-msgstr ""
-
-#: ./src/pyams_content/component/gallery/zmi/__init__.py:66
-msgid "Add new images gallery"
-msgstr ""
-
-#: ./src/pyams_content/component/gallery/zmi/__init__.py:161
+#: ./src/pyams_content/component/gallery/paragraph.py:36
+#: ./src/pyams_content/component/gallery/paragraph.py:43
+msgid "Images gallery"
+msgstr ""
+
+#: ./src/pyams_content/component/gallery/zmi/file.py:54
+#: ./src/pyams_content/component/gallery/zmi/file.py:65
+#: ./src/pyams_content/component/gallery/zmi/paragraph.py:176
+msgid "Add image(s)"
+msgstr ""
+
+#: ./src/pyams_content/component/gallery/zmi/file.py:135
+msgid "Show/hide image"
+msgstr ""
+
+#: ./src/pyams_content/component/gallery/zmi/file.py:162
+#: ./src/pyams_content/component/extfile/zmi/__init__.py:183
+msgid "Update image properties"
+msgstr ""
+
+#: ./src/pyams_content/component/gallery/zmi/file.py:195
+msgid "Download image..."
+msgstr ""
+
+#: ./src/pyams_content/component/gallery/zmi/file.py:209
+msgid "Remove image..."
+msgstr ""
+
+#: ./src/pyams_content/component/gallery/zmi/file.py:225
+#: ./src/pyams_content/shared/zmi/sites.py:124
+#: ./src/pyams_content/shared/imagemap/zmi/container.py:169
+msgid "No provided object_name argument!"
+msgstr ""
+
+#: ./src/pyams_content/component/gallery/zmi/file.py:229
+msgid "Given image name doesn't exist!"
+msgstr ""
+
+#: ./src/pyams_content/component/gallery/zmi/paragraph.py:57
+msgid "Add images gallery..."
+msgstr ""
+
+#: ./src/pyams_content/component/gallery/zmi/paragraph.py:68
+msgid "Add new gallery"
+msgstr ""
+
+#: ./src/pyams_content/component/gallery/zmi/paragraph.py:107
+msgid "Edit gallery properties"
+msgstr ""
+
+#: ./src/pyams_content/component/gallery/zmi/__init__.py:54
 msgid "Update gallery properties"
 msgstr ""
 
-#: ./src/pyams_content/component/gallery/zmi/container.py:60
-msgid "Images galleries..."
-msgstr ""
-
-#: ./src/pyams_content/component/gallery/zmi/container.py:76
-msgid "Galleries list"
-msgstr ""
-
-#: ./src/pyams_content/component/gallery/zmi/container.py:122
-msgid "Display gallery contents"
-msgstr ""
-
-#: ./src/pyams_content/component/gallery/zmi/container.py:135
-#: ./src/pyams_content/component/gallery/interfaces/__init__.py:46
-#: ./src/pyams_content/component/gallery/interfaces/__init__.py:86
-#: ./src/pyams_content/component/extfile/zmi/container.py:167
-#: ./src/pyams_content/component/extfile/interfaces/__init__.py:41
-#: ./src/pyams_content/component/paragraph/zmi/container.py:252
-#: ./src/pyams_content/component/paragraph/interfaces/__init__.py:46
-#: ./src/pyams_content/component/links/zmi/container.py:161
-#: ./src/pyams_content/component/links/interfaces/__init__.py:43
-#: ./src/pyams_content/shared/common/zmi/dashboard.py:106
-#: ./src/pyams_content/shared/common/zmi/templates/advanced-search.pt:188
-#: ./src/pyams_content/shared/imagemap/zmi/container.py:121
-#: ./src/pyams_content/interfaces/__init__.py:70
-msgid "Title"
-msgstr ""
-
-#: ./src/pyams_content/component/gallery/zmi/container.py:147
-#: ./src/pyams_content/component/extfile/zmi/container.py:112
-msgid "Images"
-msgstr ""
-
-#: ./src/pyams_content/component/gallery/zmi/container.py:186
-msgid "Edit galleries links"
-msgstr ""
-
-#: ./src/pyams_content/component/gallery/zmi/container.py:113
-msgid "No currently defined gallery."
-msgstr ""
-
-#: ./src/pyams_content/component/gallery/zmi/gallery.py:56
+#: ./src/pyams_content/component/gallery/zmi/__init__.py:89
 msgid "Update gallery contents"
 msgstr ""
 
-#: ./src/pyams_content/component/gallery/zmi/gallery.py:67
-#: ./src/pyams_content/component/gallery/zmi/gallery.py:78
-msgid "Add image(s)"
-msgstr ""
-
-#: ./src/pyams_content/component/gallery/zmi/gallery.py:184
-#: ./src/pyams_content/component/extfile/zmi/__init__.py:188
-msgid "Update image properties"
-msgstr ""
-
-#: ./src/pyams_content/component/gallery/zmi/gallery.py:224
-msgid "Remove image..."
-msgstr ""
-
-#: ./src/pyams_content/component/gallery/zmi/gallery.py:239
-#: ./src/pyams_content/shared/zmi/sites.py:124
-#: ./src/pyams_content/shared/imagemap/zmi/container.py:171
-msgid "No provided object_name argument!"
-msgstr ""
-
-#: ./src/pyams_content/component/gallery/zmi/gallery.py:243
-msgid "Given image name doesn't exist!"
-msgstr ""
-
-#: ./src/pyams_content/component/gallery/zmi/interfaces.py:32
-#: ./src/pyams_content/component/gallery/interfaces/__init__.py:52
-#: ./src/pyams_content/component/extfile/interfaces/__init__.py:49
-msgid "Author"
-msgstr ""
-
-#: ./src/pyams_content/component/gallery/zmi/interfaces.py:35
-msgid "Author comments"
+#: ./src/pyams_content/component/gallery/zmi/__init__.py:162
+msgid "Default gallery renderer"
 msgstr ""
 
 #: ./src/pyams_content/component/gallery/zmi/interfaces.py:36
-#: ./src/pyams_content/component/gallery/interfaces/__init__.py:56
-msgid "Comments relatives to author's rights management"
+#: ./src/pyams_content/component/gallery/interfaces/__init__.py:57
+#: ./src/pyams_content/component/extfile/interfaces/__init__.py:43
+#: ./src/pyams_content/component/illustration/interfaces/__init__.py:53
+msgid "Author"
 msgstr ""
 
 #: ./src/pyams_content/component/gallery/zmi/interfaces.py:39
-msgid "Images data"
+msgid "Author comments"
 msgstr ""
 
 #: ./src/pyams_content/component/gallery/zmi/interfaces.py:40
+#: ./src/pyams_content/component/gallery/interfaces/__init__.py:61
+msgid "Comments relatives to author's rights management"
+msgstr ""
+
+#: ./src/pyams_content/component/gallery/zmi/interfaces.py:43
+msgid "Images data"
+msgstr ""
+
+#: ./src/pyams_content/component/gallery/zmi/interfaces.py:44
 msgid "You can upload a single file or choose to upload a whole ZIP archive"
 msgstr ""
 
-#: ./src/pyams_content/component/gallery/zmi/templates/gallery-images.pt:20
-msgid "Hidden image"
-msgstr ""
-
-#: ./src/pyams_content/component/gallery/zmi/templates/gallery-images.pt:36
-msgid "Download"
-msgstr ""
-
-#: ./src/pyams_content/component/gallery/interfaces/__init__.py:49
-#: ./src/pyams_content/component/gallery/interfaces/__init__.py:90
-#: ./src/pyams_content/component/extfile/interfaces/__init__.py:45
-#: ./src/pyams_content/component/links/interfaces/__init__.py:47
-#: ./src/pyams_content/shared/common/interfaces/__init__.py:119
+#: ./src/pyams_content/component/gallery/zmi/templates/gallery-images.pt:10
+msgid "Gallery images"
+msgstr ""
+
+#: ./src/pyams_content/component/gallery/interfaces/__init__.py:42
+#: ./src/pyams_content/component/extfile/interfaces/__init__.py:68
+#: ./src/pyams_content/component/illustration/interfaces/__init__.py:41
+msgid "Legend"
+msgstr ""
+
+#: ./src/pyams_content/component/gallery/interfaces/__init__.py:43
+msgid "Image title"
+msgstr ""
+
+#: ./src/pyams_content/component/gallery/interfaces/__init__.py:46
+#: ./src/pyams_content/component/extfile/interfaces/__init__.py:76
+#: ./src/pyams_content/component/illustration/interfaces/__init__.py:45
+msgid "Accessibility title"
+msgstr ""
+
+#: ./src/pyams_content/component/gallery/interfaces/__init__.py:47
+#: ./src/pyams_content/component/extfile/interfaces/__init__.py:77
+#: ./src/pyams_content/component/illustration/interfaces/__init__.py:46
+msgid "Alternate title used to describe image content"
+msgstr ""
+
+#: ./src/pyams_content/component/gallery/interfaces/__init__.py:50
+#: ./src/pyams_content/component/extfile/interfaces/__init__.py:80
+#: ./src/pyams_content/component/illustration/interfaces/__init__.py:57
+msgid "Image data"
+msgstr ""
+
+#: ./src/pyams_content/component/gallery/interfaces/__init__.py:51
+#: ./src/pyams_content/component/extfile/interfaces/__init__.py:81
+#: ./src/pyams_content/component/illustration/interfaces/__init__.py:58
+msgid "Image content"
+msgstr ""
+
+#: ./src/pyams_content/component/gallery/interfaces/__init__.py:54
+#: ./src/pyams_content/component/gallery/interfaces/__init__.py:93
+#: ./src/pyams_content/component/extfile/interfaces/__init__.py:39
+#: ./src/pyams_content/component/illustration/interfaces/__init__.py:49
+#: ./src/pyams_content/component/links/interfaces/__init__.py:38
+#: ./src/pyams_content/shared/common/interfaces/__init__.py:120
 msgid "Description"
 msgstr ""
 
-#: ./src/pyams_content/component/gallery/interfaces/__init__.py:55
-msgid "Author's comments"
-msgstr ""
-
-#: ./src/pyams_content/component/gallery/interfaces/__init__.py:59
-msgid "Audio data"
-msgstr ""
-
 #: ./src/pyams_content/component/gallery/interfaces/__init__.py:60
-msgid "Sound file associated with the current media"
-msgstr ""
-
-#: ./src/pyams_content/component/gallery/interfaces/__init__.py:63
-msgid "Sound title"
+msgid "Author's comments"
 msgstr ""
 
 #: ./src/pyams_content/component/gallery/interfaces/__init__.py:64
-msgid "Title of associated sound file"
-msgstr ""
-
-#: ./src/pyams_content/component/gallery/interfaces/__init__.py:67
-msgid "Sound description"
+msgid "Audio data"
+msgstr ""
+
+#: ./src/pyams_content/component/gallery/interfaces/__init__.py:65
+msgid "Sound file associated with the current media"
 msgstr ""
 
 #: ./src/pyams_content/component/gallery/interfaces/__init__.py:68
-msgid "Short description of associated sound file"
-msgstr ""
-
-#: ./src/pyams_content/component/gallery/interfaces/__init__.py:71
-msgid "PIF number"
+msgid "Sound title"
+msgstr ""
+
+#: ./src/pyams_content/component/gallery/interfaces/__init__.py:69
+msgid "Title of associated sound file"
 msgstr ""
 
 #: ./src/pyams_content/component/gallery/interfaces/__init__.py:72
-msgid "Number used to identify media into national library database"
-msgstr ""
-
-#: ./src/pyams_content/component/gallery/interfaces/__init__.py:75
-msgid "Visible image?"
+msgid "Sound description"
+msgstr ""
+
+#: ./src/pyams_content/component/gallery/interfaces/__init__.py:73
+msgid "Short description of associated sound file"
 msgstr ""
 
 #: ./src/pyams_content/component/gallery/interfaces/__init__.py:76
+msgid "PIF number"
+msgstr ""
+
+#: ./src/pyams_content/component/gallery/interfaces/__init__.py:77
+msgid "Number used to identify media into national library database"
+msgstr ""
+
+#: ./src/pyams_content/component/gallery/interfaces/__init__.py:80
+msgid "Visible image?"
+msgstr ""
+
+#: ./src/pyams_content/component/gallery/interfaces/__init__.py:81
 msgid "If 'no', this image won't be displayed in front office"
 msgstr ""
 
-#: ./src/pyams_content/component/gallery/interfaces/__init__.py:87
+#: ./src/pyams_content/component/gallery/interfaces/__init__.py:89
+#: ./src/pyams_content/component/extfile/interfaces/__init__.py:35
+#: ./src/pyams_content/shared/common/zmi/dashboard.py:106
+#: ./src/pyams_content/shared/common/zmi/templates/advanced-search.pt:188
+#: ./src/pyams_content/shared/imagemap/zmi/container.py:119
+#: ./src/pyams_content/interfaces/__init__.py:99
+msgid "Title"
+msgstr ""
+
+#: ./src/pyams_content/component/gallery/interfaces/__init__.py:90
 msgid "Gallery title, as shown in front-office"
 msgstr ""
 
-#: ./src/pyams_content/component/gallery/interfaces/__init__.py:91
-msgid "Gallery description displayed by front-office template"
-msgstr ""
-
 #: ./src/pyams_content/component/gallery/interfaces/__init__.py:94
-msgid "Visible gallery?"
-msgstr ""
-
-#: ./src/pyams_content/component/gallery/interfaces/__init__.py:95
-msgid "If 'no', this gallery won't be displayed in front office"
-msgstr ""
-
-#: ./src/pyams_content/component/gallery/interfaces/__init__.py:122
-msgid "Contained galleries"
-msgstr ""
-
-#: ./src/pyams_content/component/gallery/interfaces/__init__.py:123
-msgid "List of images galleries linked to this object"
-msgstr ""
-
-#: ./src/pyams_content/component/extfile/__init__.py:109
+msgid "Gallery description displayed by front-office template"
+msgstr ""
+
+#: ./src/pyams_content/component/gallery/interfaces/__init__.py:97
+msgid "Gallery style"
+msgstr ""
+
+#: ./src/pyams_content/component/extfile/__init__.py:169
+#: ./src/pyams_content/component/extfile/__init__.py:173
 msgid "Standard file"
 msgstr ""
 
-#: ./src/pyams_content/component/extfile/__init__.py:118
+#: ./src/pyams_content/component/extfile/__init__.py:181
+#: ./src/pyams_content/component/extfile/__init__.py:198
 #: ./src/pyams_content/shared/imagemap/interfaces/__init__.py:59
 msgid "Image"
 msgstr ""
 
-#: ./src/pyams_content/component/extfile/__init__.py:127
+#: ./src/pyams_content/component/extfile/__init__.py:206
+#: ./src/pyams_content/component/extfile/__init__.py:211
 msgid "Video"
 msgstr ""
 
-#: ./src/pyams_content/component/extfile/__init__.py:136
+#: ./src/pyams_content/component/extfile/__init__.py:219
+#: ./src/pyams_content/component/extfile/__init__.py:224
 msgid "Audio file"
 msgstr ""
 
-#: ./src/pyams_content/component/extfile/zmi/__init__.py:66
-#: ./src/pyams_content/component/extfile/zmi/templates/widget-input.pt:5
+#: ./src/pyams_content/component/extfile/zmi/__init__.py:68
 msgid "Add external file"
 msgstr ""
 
-#: ./src/pyams_content/component/extfile/zmi/__init__.py:77
+#: ./src/pyams_content/component/extfile/zmi/__init__.py:80
 msgid "Add new external file"
 msgstr ""
 
-#: ./src/pyams_content/component/extfile/zmi/__init__.py:154
+#: ./src/pyams_content/component/extfile/zmi/__init__.py:111
 msgid "Update file properties"
 msgstr ""
 
-#: ./src/pyams_content/component/extfile/zmi/__init__.py:55
+#: ./src/pyams_content/component/extfile/zmi/__init__.py:148
+msgid "Add image"
+msgstr ""
+
+#: ./src/pyams_content/component/extfile/zmi/__init__.py:160
+msgid "Add new image"
+msgstr ""
+
+#: ./src/pyams_content/component/extfile/zmi/__init__.py:213
+msgid "Add video"
+msgstr ""
+
+#: ./src/pyams_content/component/extfile/zmi/__init__.py:225
+msgid "Add new video"
+msgstr ""
+
+#: ./src/pyams_content/component/extfile/zmi/__init__.py:247
+msgid "Update video properties"
+msgstr ""
+
+#: ./src/pyams_content/component/extfile/zmi/__init__.py:276
+msgid "Add audio file"
+msgstr ""
+
+#: ./src/pyams_content/component/extfile/zmi/__init__.py:288
+msgid "Add new audio file"
+msgstr ""
+
+#: ./src/pyams_content/component/extfile/zmi/__init__.py:310
+msgid "Update audio file properties"
+msgstr ""
+
+#: ./src/pyams_content/component/extfile/zmi/__init__.py:51
 msgid "External file type"
 msgstr ""
 
-#: ./src/pyams_content/component/extfile/zmi/container.py:63
-msgid "External files..."
-msgstr ""
-
-#: ./src/pyams_content/component/extfile/zmi/container.py:107
-msgid "External files list"
-msgstr ""
-
-#: ./src/pyams_content/component/extfile/zmi/container.py:179
-msgid "Filename"
-msgstr ""
-
-#: ./src/pyams_content/component/extfile/zmi/container.py:195
-msgid "Size"
-msgstr ""
-
-#: ./src/pyams_content/component/extfile/zmi/container.py:241
-msgid "Edit external files links"
-msgstr ""
-
-#: ./src/pyams_content/component/extfile/zmi/container.py:111
-#: ./src/pyams_content/component/extfile/interfaces/__init__.py:101
-#: ./src/pyams_content/component/paragraph/zmi/container.py:201
-msgid "External files"
-msgstr ""
-
-#: ./src/pyams_content/component/extfile/zmi/container.py:113
-msgid "Videos"
-msgstr ""
-
-#: ./src/pyams_content/component/extfile/zmi/container.py:114
-msgid "Sounds"
-msgstr ""
-
-#: ./src/pyams_content/component/extfile/zmi/container.py:157
-msgid "No currently stored external file."
-msgstr ""
-
-#: ./src/pyams_content/component/extfile/interfaces/__init__.py:42
+#: ./src/pyams_content/component/extfile/interfaces/__init__.py:36
 msgid "File title, as shown in front-office"
 msgstr ""
 
-#: ./src/pyams_content/component/extfile/interfaces/__init__.py:46
+#: ./src/pyams_content/component/extfile/interfaces/__init__.py:40
 msgid "File description displayed by front-office template"
 msgstr ""
 
-#: ./src/pyams_content/component/extfile/interfaces/__init__.py:50
+#: ./src/pyams_content/component/extfile/interfaces/__init__.py:44
 msgid "Name of document's author"
 msgstr ""
 
-#: ./src/pyams_content/component/extfile/interfaces/__init__.py:57
+#: ./src/pyams_content/component/extfile/interfaces/__init__.py:47
+#: ./src/pyams_content/component/links/interfaces/__init__.py:66
+msgid "Language"
+msgstr ""
+
+#: ./src/pyams_content/component/extfile/interfaces/__init__.py:48
+msgid "File's content language"
+msgstr ""
+
+#: ./src/pyams_content/component/extfile/interfaces/__init__.py:52
+msgid "Save file as..."
+msgstr ""
+
+#: ./src/pyams_content/component/extfile/interfaces/__init__.py:53
+msgid "Name under which the file will be saved"
+msgstr ""
+
+#: ./src/pyams_content/component/extfile/interfaces/__init__.py:60
 msgid "File data"
 msgstr ""
 
-#: ./src/pyams_content/component/extfile/interfaces/__init__.py:58
+#: ./src/pyams_content/component/extfile/interfaces/__init__.py:61
 msgid "File content"
 msgstr ""
 
 #: ./src/pyams_content/component/extfile/interfaces/__init__.py:69
-#: ./src/pyams_content/component/paragraph/interfaces/__init__.py:91
-msgid "Image data"
-msgstr ""
-
-#: ./src/pyams_content/component/extfile/interfaces/__init__.py:70
-msgid "Image content"
-msgstr ""
-
-#: ./src/pyams_content/component/extfile/interfaces/__init__.py:102
-msgid "List of external files linked to this object"
+msgid "File legend, as shown in front-office"
+msgstr ""
+
+#: ./src/pyams_content/component/illustration/paragraph.py:36
+#: ./src/pyams_content/component/illustration/paragraph.py:43
+#: ./src/pyams_content/component/illustration/zmi/__init__.py:95
+msgid "Illustration"
+msgstr ""
+
+#: ./src/pyams_content/component/illustration/zmi/paragraph.py:59
+msgid "Add illustration..."
+msgstr ""
+
+#: ./src/pyams_content/component/illustration/zmi/paragraph.py:70
+msgid "Add new illustration"
+msgstr ""
+
+#: ./src/pyams_content/component/illustration/zmi/paragraph.py:110
+msgid "Edit illustration properties"
+msgstr ""
+
+#: ./src/pyams_content/component/illustration/zmi/__init__.py:58
+msgid "Centered illustration"
+msgstr ""
+
+#: ./src/pyams_content/component/illustration/zmi/__init__.py:67
+msgid "Small illustration on the left with zoom"
+msgstr ""
+
+#: ./src/pyams_content/component/illustration/zmi/__init__.py:76
+msgid "Small illustration on the right with zoom"
+msgstr ""
+
+#: ./src/pyams_content/component/illustration/interfaces/__init__.py:42
+msgid "Illustration title"
+msgstr ""
+
+#: ./src/pyams_content/component/illustration/interfaces/__init__.py:54
+msgid "Name of picture's author"
+msgstr ""
+
+#: ./src/pyams_content/component/illustration/interfaces/__init__.py:61
+msgid "Image style"
+msgstr ""
+
+#: ./src/pyams_content/component/paragraph/html.py:54
+#: ./src/pyams_content/component/paragraph/html.py:63
+msgid "HTML paragraph"
+msgstr ""
+
+#: ./src/pyams_content/component/paragraph/header.py:38
+#: ./src/pyams_content/component/paragraph/interfaces/header.py:34
+msgid "Header"
+msgstr ""
+
+#: ./src/pyams_content/component/paragraph/header.py:52
+msgid "Header paragraph"
+msgstr ""
+
+#: ./src/pyams_content/component/paragraph/zmi/__init__.py:50
+msgid "Default paragraphs..."
+msgstr ""
+
+#: ./src/pyams_content/component/paragraph/zmi/__init__.py:61
+#: ./src/pyams_content/component/paragraph/interfaces/__init__.py:79
+msgid "Default paragraphs"
+msgstr ""
+
+#: ./src/pyams_content/component/paragraph/zmi/__init__.py:78
+msgid ""
+"These paragraphs will be added automatically to any new created content."
 msgstr ""
 
 #: ./src/pyams_content/component/paragraph/zmi/summary.py:46
@@ -377,84 +461,73 @@
 msgid "Quick preview"
 msgstr ""
 
-#: ./src/pyams_content/component/paragraph/zmi/container.py:63
+#: ./src/pyams_content/component/paragraph/zmi/container.py:64
 msgid "Paragraphs..."
 msgstr ""
 
-#: ./src/pyams_content/component/paragraph/zmi/container.py:79
+#: ./src/pyams_content/component/paragraph/zmi/container.py:80
 msgid "Paragraphs list"
 msgstr ""
 
-#: ./src/pyams_content/component/paragraph/zmi/container.py:141
-msgid "Click and drag to sort paragraphs..."
-msgstr ""
-
-#: ./src/pyams_content/component/paragraph/zmi/container.py:159
+#: ./src/pyams_content/component/paragraph/zmi/container.py:148
 msgid "Switch paragraph visibility"
 msgstr ""
 
-#: ./src/pyams_content/component/paragraph/zmi/container.py:219
-msgid "Useful links"
-msgstr ""
-
-#: ./src/pyams_content/component/paragraph/zmi/container.py:237
-msgid "Images galleries"
-msgstr ""
-
-#: ./src/pyams_content/component/paragraph/zmi/container.py:128
+#: ./src/pyams_content/component/paragraph/zmi/container.py:211
+msgid "Show/hide all paragraphs"
+msgstr ""
+
+#: ./src/pyams_content/component/paragraph/zmi/container.py:271
+msgid "Links"
+msgstr ""
+
+#: ./src/pyams_content/component/paragraph/zmi/container.py:287
+msgid "External files"
+msgstr ""
+
+#: ./src/pyams_content/component/paragraph/zmi/container.py:360
+#: ./src/pyams_content/component/association/zmi/__init__.py:93
+msgid "Associations..."
+msgstr ""
+
+#: ./src/pyams_content/component/paragraph/zmi/container.py:372
+msgid "Paragraphs associations"
+msgstr ""
+
+#: ./src/pyams_content/component/paragraph/zmi/container.py:129
 msgid "No currently defined paragraph."
 msgstr ""
 
-#: ./src/pyams_content/component/paragraph/zmi/container.py:262
+#: ./src/pyams_content/component/paragraph/zmi/container.py:221
 msgid "Click to open/close all paragraphs editors"
 msgstr ""
 
-#: ./src/pyams_content/component/paragraph/zmi/container.py:279
+#: ./src/pyams_content/component/paragraph/zmi/container.py:232
 msgid "Click to open/close paragraph editor"
 msgstr ""
 
-#: ./src/pyams_content/component/paragraph/zmi/illustration.py:59
-msgid "Add illustration..."
-msgstr ""
-
-#: ./src/pyams_content/component/paragraph/zmi/illustration.py:70
-msgid "Add new illustration"
-msgstr ""
-
-#: ./src/pyams_content/component/paragraph/zmi/illustration.py:105
-msgid "Edit illustration properties"
-msgstr ""
-
-#: ./src/pyams_content/component/paragraph/zmi/illustration.py:120
-msgid "Illustration"
-msgstr ""
-
-#: ./src/pyams_content/component/paragraph/zmi/illustration.py:188
-msgid "Centered illustration"
-msgstr ""
-
-#: ./src/pyams_content/component/paragraph/zmi/illustration.py:197
-msgid "Small illustration on the left with zoom"
-msgstr ""
-
-#: ./src/pyams_content/component/paragraph/zmi/illustration.py:206
-msgid "Small illustration on the right with zoom"
-msgstr ""
-
-#: ./src/pyams_content/component/paragraph/zmi/html.py:59
+#: ./src/pyams_content/component/paragraph/zmi/html.py:65
 msgid "Add HTML paragraph..."
 msgstr ""
 
-#: ./src/pyams_content/component/paragraph/zmi/html.py:70
+#: ./src/pyams_content/component/paragraph/zmi/html.py:76
 msgid "Add new HTML paragraph"
 msgstr ""
 
-#: ./src/pyams_content/component/paragraph/zmi/html.py:112
+#: ./src/pyams_content/component/paragraph/zmi/html.py:118
 msgid "Edit HTML paragraph properties"
 msgstr ""
 
-#: ./src/pyams_content/component/paragraph/zmi/html.py:137
-msgid "HTML paragraph"
+#: ./src/pyams_content/component/paragraph/zmi/header.py:56
+msgid "Add header paragraph..."
+msgstr ""
+
+#: ./src/pyams_content/component/paragraph/zmi/header.py:67
+msgid "Add new header paragraph"
+msgstr ""
+
+#: ./src/pyams_content/component/paragraph/zmi/header.py:106
+msgid "Edit header paragraph properties"
 msgstr ""
 
 #: ./src/pyams_content/component/paragraph/zmi/templates/summary.pt:7
@@ -462,30 +535,31 @@
 msgid "This content doesn't contain any paragraph."
 msgstr ""
 
-#: ./src/pyams_content/component/paragraph/interfaces/__init__.py:41
+#: ./src/pyams_content/component/paragraph/interfaces/__init__.py:43
+#: ./src/pyams_content/component/association/interfaces/__init__.py:42
 msgid "Visible?"
 msgstr ""
 
-#: ./src/pyams_content/component/paragraph/interfaces/__init__.py:42
+#: ./src/pyams_content/component/paragraph/interfaces/__init__.py:44
 msgid "Is this paragraph visible in front-office?"
 msgstr ""
 
-#: ./src/pyams_content/component/paragraph/interfaces/__init__.py:47
+#: ./src/pyams_content/component/paragraph/interfaces/__init__.py:48
+msgid "§ Title"
+msgstr ""
+
+#: ./src/pyams_content/component/paragraph/interfaces/__init__.py:49
 msgid "Paragraph title"
 msgstr ""
 
-#: ./src/pyams_content/component/paragraph/interfaces/__init__.py:74
+#: ./src/pyams_content/component/paragraph/interfaces/__init__.py:80
+msgid "List of paragraphs automatically added to a new content"
+msgstr ""
+
+#: ./src/pyams_content/component/paragraph/interfaces/html.py:34
 msgid "Body"
 msgstr ""
 
-#: ./src/pyams_content/component/paragraph/interfaces/__init__.py:94
-msgid "Legend"
-msgstr ""
-
-#: ./src/pyams_content/component/paragraph/interfaces/__init__.py:97
-msgid "Image style"
-msgstr ""
-
 #: ./src/pyams_content/component/theme/zmi/portlet.py:39
 msgid "Themes"
 msgstr ""
@@ -508,64 +582,103 @@
 msgid "Terms"
 msgstr ""
 
-#: ./src/pyams_content/component/links/zmi/__init__.py:52
+#: ./src/pyams_content/component/association/paragraph.py:37
+#: ./src/pyams_content/component/association/paragraph.py:44
+msgid "Associations paragraph"
+msgstr ""
+
+#: ./src/pyams_content/component/association/zmi/paragraph.py:58
+msgid "Add associations paragraph..."
+msgstr ""
+
+#: ./src/pyams_content/component/association/zmi/paragraph.py:69
+msgid "Add new association paragraph"
+msgstr ""
+
+#: ./src/pyams_content/component/association/zmi/paragraph.py:103
+msgid "Edit association paragraph properties"
+msgstr ""
+
+#: ./src/pyams_content/component/association/zmi/__init__.py:105
+msgid "Associations list"
+msgstr ""
+
+#: ./src/pyams_content/component/association/zmi/__init__.py:206
+msgid "Switch association visibility"
+msgstr ""
+
+#: ./src/pyams_content/component/association/zmi/__init__.py:257
+msgid "Public title"
+msgstr ""
+
+#: ./src/pyams_content/component/association/zmi/__init__.py:271
+msgid "Inner title"
+msgstr ""
+
+#: ./src/pyams_content/component/association/zmi/__init__.py:286
+msgid "Size"
+msgstr ""
+
+#: ./src/pyams_content/component/association/zmi/__init__.py:64
+msgid "Association was correctly added."
+msgstr ""
+
+#: ./src/pyams_content/component/association/zmi/templates/associations.pt:6
+msgid "Associations"
+msgstr ""
+
+#: ./src/pyams_content/component/association/interfaces/__init__.py:43
+msgid "Is this item visible in front-office?"
+msgstr ""
+
+#: ./src/pyams_content/component/links/__init__.py:91
+msgid "Internal link"
+msgstr ""
+
+#: ./src/pyams_content/component/links/__init__.py:160
+msgid "External link"
+msgstr ""
+
+#: ./src/pyams_content/component/links/__init__.py:201
+msgid "Mailto link"
+msgstr ""
+
+#: ./src/pyams_content/component/links/zmi/__init__.py:51
 msgid "Add internal link"
 msgstr ""
 
-#: ./src/pyams_content/component/links/zmi/__init__.py:64
+#: ./src/pyams_content/component/links/zmi/__init__.py:63
 msgid "Add new internal link"
 msgstr ""
 
-#: ./src/pyams_content/component/links/zmi/__init__.py:123
+#: ./src/pyams_content/component/links/zmi/__init__.py:92
 msgid "Edit internal link properties"
 msgstr ""
 
-#: ./src/pyams_content/component/links/zmi/__init__.py:159
+#: ./src/pyams_content/component/links/zmi/__init__.py:127
 msgid "Add external link"
 msgstr ""
 
-#: ./src/pyams_content/component/links/zmi/__init__.py:171
+#: ./src/pyams_content/component/links/zmi/__init__.py:139
 msgid "Add new external link"
 msgstr ""
 
-#: ./src/pyams_content/component/links/zmi/__init__.py:230
+#: ./src/pyams_content/component/links/zmi/__init__.py:168
 msgid "Edit external link properties"
 msgstr ""
 
-#: ./src/pyams_content/component/links/zmi/__init__.py:267
+#: ./src/pyams_content/component/links/zmi/__init__.py:204
 msgid "Add mailto link"
 msgstr ""
 
-#: ./src/pyams_content/component/links/zmi/__init__.py:279
+#: ./src/pyams_content/component/links/zmi/__init__.py:216
 msgid "Add new mailto link"
 msgstr ""
 
-#: ./src/pyams_content/component/links/zmi/__init__.py:338
+#: ./src/pyams_content/component/links/zmi/__init__.py:245
 msgid "Edit mailto link properties"
 msgstr ""
 
-#: ./src/pyams_content/component/links/zmi/container.py:64
-msgid "Useful links..."
-msgstr ""
-
-#: ./src/pyams_content/component/links/zmi/container.py:116
-msgid "Useful links list"
-msgstr ""
-
-#: ./src/pyams_content/component/links/zmi/container.py:173
-#: ./src/pyams_content/shared/imagemap/zmi/container.py:133
-#: ./src/pyams_content/shared/imagemap/interfaces/__init__.py:46
-msgid "Link target"
-msgstr ""
-
-#: ./src/pyams_content/component/links/zmi/container.py:216
-msgid "Edit useful links links"
-msgstr ""
-
-#: ./src/pyams_content/component/links/zmi/container.py:153
-msgid "No currently defined link."
-msgstr ""
-
 #: ./src/pyams_content/component/links/zmi/reverse.py:55
 msgid "Reverse links"
 msgstr ""
@@ -574,76 +687,62 @@
 msgid "Content's internal links"
 msgstr ""
 
-#: ./src/pyams_content/component/links/zmi/templates/widget-input.pt:12
-#: ./src/pyams_content/component/links/zmi/templates/widget-list-input.pt:12
-msgid "Add internal link..."
-msgstr ""
-
-#: ./src/pyams_content/component/links/zmi/templates/widget-input.pt:19
-#: ./src/pyams_content/component/links/zmi/templates/widget-list-input.pt:19
-msgid "Add external link..."
-msgstr ""
-
-#: ./src/pyams_content/component/links/zmi/templates/widget-input.pt:26
-#: ./src/pyams_content/component/links/zmi/templates/widget-list-input.pt:26
-msgid "Add mailto link..."
-msgstr ""
-
-#: ./src/pyams_content/component/links/interfaces/__init__.py:44
+#: ./src/pyams_content/component/links/interfaces/__init__.py:34
+#: ./src/pyams_content/shared/imagemap/interfaces/__init__.py:47
+msgid "Alternate title"
+msgstr ""
+
+#: ./src/pyams_content/component/links/interfaces/__init__.py:35
 msgid "Link title, as shown in front-office"
 msgstr ""
 
-#: ./src/pyams_content/component/links/interfaces/__init__.py:48
+#: ./src/pyams_content/component/links/interfaces/__init__.py:39
 msgid "Link description displayed by front-office template"
 msgstr ""
 
-#: ./src/pyams_content/component/links/interfaces/__init__.py:61
+#: ./src/pyams_content/component/links/interfaces/__init__.py:49
 msgid "Internal reference"
 msgstr ""
 
-#: ./src/pyams_content/component/links/interfaces/__init__.py:62
+#: ./src/pyams_content/component/links/interfaces/__init__.py:50
 msgid ""
 "Internal link target reference. You can search a reference using '+' followed"
 " by internal number, of by entering text matching content title."
 msgstr ""
 
-#: ./src/pyams_content/component/links/interfaces/__init__.py:74
+#: ./src/pyams_content/component/links/interfaces/__init__.py:62
 msgid "Target URL"
 msgstr ""
 
-#: ./src/pyams_content/component/links/interfaces/__init__.py:75
+#: ./src/pyams_content/component/links/interfaces/__init__.py:63
 msgid "URL used to access external resource"
 msgstr ""
 
+#: ./src/pyams_content/component/links/interfaces/__init__.py:67
+msgid "Language used in this remote resource"
+msgstr ""
+
 #: ./src/pyams_content/component/links/interfaces/__init__.py:78
-msgid "Language"
+msgid "Target address"
 msgstr ""
 
 #: ./src/pyams_content/component/links/interfaces/__init__.py:79
-msgid "Language used in this remote resource"
-msgstr ""
-
-#: ./src/pyams_content/component/links/interfaces/__init__.py:90
-msgid "Target address"
-msgstr ""
-
-#: ./src/pyams_content/component/links/interfaces/__init__.py:91
 msgid "Target email address"
 msgstr ""
 
-#: ./src/pyams_content/component/links/interfaces/__init__.py:109
-msgid "Contained links"
-msgstr ""
-
-#: ./src/pyams_content/component/links/interfaces/__init__.py:110
-msgid "List of internal or external links linked to this object"
-msgstr ""
-
-#: ./src/pyams_content/component/links/interfaces/__init__.py:122
+#: ./src/pyams_content/component/links/interfaces/__init__.py:83
+msgid "Address name"
+msgstr ""
+
+#: ./src/pyams_content/component/links/interfaces/__init__.py:84
+msgid "Address as displayed in address book"
+msgstr ""
+
+#: ./src/pyams_content/component/links/interfaces/__init__.py:95
 msgid "Internal references"
 msgstr ""
 
-#: ./src/pyams_content/component/links/interfaces/__init__.py:123
+#: ./src/pyams_content/component/links/interfaces/__init__.py:96
 msgid "List of internal references"
 msgstr ""
 
@@ -653,12 +752,12 @@
 msgid "{date} by {principal}"
 msgstr ""
 
-#: ./src/pyams_content/shared/common/review.py:209
+#: ./src/pyams_content/shared/common/review.py:210
 #, python-format
 msgid "A new comment was added on content « {0} »"
 msgstr ""
 
-#: ./src/pyams_content/shared/common/review.py:166
+#: ./src/pyams_content/shared/common/review.py:167
 #, python-format
 msgid "[{service_name}] A content review is requested"
 msgstr ""
@@ -668,6 +767,7 @@
 msgstr ""
 
 #: ./src/pyams_content/shared/common/zmi/search.py:143
+#: ./src/pyams_content/shared/common/zmi/dashboard.py:958
 msgid "Advanced search"
 msgstr ""
 
@@ -676,12 +776,12 @@
 msgstr ""
 
 #: ./src/pyams_content/shared/common/zmi/search.py:118
-#: ./src/pyams_content/shared/common/zmi/dashboard.py:196
+#: ./src/pyams_content/shared/common/zmi/dashboard.py:203
 msgid "Owner"
 msgstr ""
 
 #: ./src/pyams_content/shared/common/zmi/search.py:121
-#: ./src/pyams_content/shared/common/zmi/dashboard.py:155
+#: ./src/pyams_content/shared/common/zmi/dashboard.py:144
 msgid "Status"
 msgstr ""
 
@@ -701,133 +801,134 @@
 msgid "Modified before..."
 msgstr ""
 
-#: ./src/pyams_content/shared/common/zmi/properties.py:57
+#: ./src/pyams_content/shared/common/zmi/properties.py:55
 msgid "Composition"
 msgstr ""
 
-#: ./src/pyams_content/shared/common/zmi/properties.py:67
+#: ./src/pyams_content/shared/common/zmi/properties.py:65
 #: ./src/pyams_content/shared/common/zmi/manager.py:90
 msgid "Properties"
 msgstr ""
 
-#: ./src/pyams_content/shared/common/zmi/properties.py:78
+#: ./src/pyams_content/shared/common/zmi/properties.py:76
 msgid "Content properties"
 msgstr ""
 
-#: ./src/pyams_content/shared/common/zmi/properties.py:110
+#: ./src/pyams_content/shared/common/zmi/properties.py:115
 msgid "Publication settings"
 msgstr ""
 
-#: ./src/pyams_content/shared/common/zmi/workflow.py:116
-#: ./src/pyams_content/shared/common/zmi/workflow.py:201
-#: ./src/pyams_content/shared/common/zmi/workflow.py:246
-#: ./src/pyams_content/shared/common/zmi/workflow.py:304
-#: ./src/pyams_content/shared/common/zmi/workflow.py:384
-#: ./src/pyams_content/shared/common/zmi/workflow.py:444
-#: ./src/pyams_content/shared/common/zmi/workflow.py:489
-#: ./src/pyams_content/shared/common/zmi/workflow.py:535
-#: ./src/pyams_content/shared/common/zmi/workflow.py:583
-#: ./src/pyams_content/shared/common/zmi/workflow.py:628
-#: ./src/pyams_content/shared/common/zmi/workflow.py:674
-#: ./src/pyams_content/shared/common/zmi/workflow.py:727
-#: ./src/pyams_content/shared/common/zmi/__init__.py:249
+#: ./src/pyams_content/shared/common/zmi/workflow.py:115
+#: ./src/pyams_content/shared/common/zmi/workflow.py:200
+#: ./src/pyams_content/shared/common/zmi/workflow.py:245
+#: ./src/pyams_content/shared/common/zmi/workflow.py:303
+#: ./src/pyams_content/shared/common/zmi/workflow.py:383
+#: ./src/pyams_content/shared/common/zmi/workflow.py:443
+#: ./src/pyams_content/shared/common/zmi/workflow.py:488
+#: ./src/pyams_content/shared/common/zmi/workflow.py:534
+#: ./src/pyams_content/shared/common/zmi/workflow.py:582
+#: ./src/pyams_content/shared/common/zmi/workflow.py:627
+#: ./src/pyams_content/shared/common/zmi/workflow.py:673
+#: ./src/pyams_content/shared/common/zmi/workflow.py:726
+#: ./src/pyams_content/shared/common/zmi/__init__.py:252
 #: ./src/pyams_content/shared/common/zmi/owner.py:74
 #: ./src/pyams_content/shared/common/zmi/review.py:90
 msgid "Cancel"
 msgstr ""
 
-#: ./src/pyams_content/shared/common/zmi/workflow.py:117
+#: ./src/pyams_content/shared/common/zmi/workflow.py:116
 msgid "Request publication"
 msgstr ""
 
-#: ./src/pyams_content/shared/common/zmi/workflow.py:202
-#: ./src/pyams_content/workflow/__init__.py:259
+#: ./src/pyams_content/shared/common/zmi/workflow.py:171
+#: ./src/pyams_content/shared/common/zmi/workflow.py:170
+#: ./src/pyams_content/shared/common/zmi/workflow.py:273
+#: ./src/pyams_content/shared/common/zmi/workflow.py:414
+msgid "A comment is required"
+msgstr ""
+
+#: ./src/pyams_content/shared/common/zmi/workflow.py:201
+#: ./src/pyams_content/workflow/__init__.py:307
 msgid "Cancel publication request"
 msgstr ""
 
-#: ./src/pyams_content/shared/common/zmi/workflow.py:247
+#: ./src/pyams_content/shared/common/zmi/workflow.py:246
 msgid "Refuse publication request"
 msgstr ""
 
-#: ./src/pyams_content/shared/common/zmi/workflow.py:305
+#: ./src/pyams_content/shared/common/zmi/workflow.py:304
 msgid "Publish"
 msgstr ""
 
-#: ./src/pyams_content/shared/common/zmi/workflow.py:385
+#: ./src/pyams_content/shared/common/zmi/workflow.py:384
 msgid "Request retire"
 msgstr ""
 
-#: ./src/pyams_content/shared/common/zmi/workflow.py:445
+#: ./src/pyams_content/shared/common/zmi/workflow.py:444
 msgid "Cancel retire request"
 msgstr ""
 
-#: ./src/pyams_content/shared/common/zmi/workflow.py:490
+#: ./src/pyams_content/shared/common/zmi/workflow.py:489
 msgid "Retire"
 msgstr ""
 
-#: ./src/pyams_content/shared/common/zmi/workflow.py:536
-#: ./src/pyams_content/workflow/__init__.py:371
+#: ./src/pyams_content/shared/common/zmi/workflow.py:535
+#: ./src/pyams_content/workflow/__init__.py:426
 msgid "Request archive"
 msgstr ""
 
-#: ./src/pyams_content/shared/common/zmi/workflow.py:584
+#: ./src/pyams_content/shared/common/zmi/workflow.py:583
 msgid "Cancel archive request"
 msgstr ""
 
-#: ./src/pyams_content/shared/common/zmi/workflow.py:629
+#: ./src/pyams_content/shared/common/zmi/workflow.py:628
 msgid "Archive"
 msgstr ""
 
-#: ./src/pyams_content/shared/common/zmi/workflow.py:675
-#: ./src/pyams_content/workflow/__init__.py:436
-#: ./src/pyams_content/workflow/__init__.py:448
-#: ./src/pyams_content/workflow/__init__.py:460
-#: ./src/pyams_content/workflow/__init__.py:472
-#: ./src/pyams_content/workflow/__init__.py:484
+#: ./src/pyams_content/shared/common/zmi/workflow.py:674
+#: ./src/pyams_content/workflow/__init__.py:491
+#: ./src/pyams_content/workflow/__init__.py:503
+#: ./src/pyams_content/workflow/__init__.py:515
+#: ./src/pyams_content/workflow/__init__.py:527
+#: ./src/pyams_content/workflow/__init__.py:539
 msgid "Create new version"
 msgstr ""
 
-#: ./src/pyams_content/shared/common/zmi/workflow.py:728
-#: ./src/pyams_content/workflow/__init__.py:496
+#: ./src/pyams_content/shared/common/zmi/workflow.py:727
+#: ./src/pyams_content/workflow/__init__.py:551
 msgid "Delete version"
 msgstr ""
 
 #: ./src/pyams_content/shared/common/zmi/workflow.py:167
-#: ./src/pyams_content/shared/common/zmi/workflow.py:352
+#: ./src/pyams_content/shared/common/zmi/workflow.py:353
 msgid "Publication start date is required"
 msgstr ""
 
-#: ./src/pyams_content/shared/common/zmi/workflow.py:170
-#: ./src/pyams_content/shared/common/zmi/workflow.py:274
-#: ./src/pyams_content/shared/common/zmi/workflow.py:415
-msgid "A comment is required"
-msgstr ""
-
-#: ./src/pyams_content/shared/common/zmi/workflow.py:751
+#: ./src/pyams_content/shared/common/zmi/workflow.py:750
 msgid "Delete content"
 msgstr ""
 
-#: ./src/pyams_content/shared/common/zmi/workflow.py:760
+#: ./src/pyams_content/shared/common/zmi/workflow.py:759
 msgid "Delete definitively"
 msgstr ""
 
-#: ./src/pyams_content/shared/common/zmi/workflow.py:81
+#: ./src/pyams_content/shared/common/zmi/workflow.py:80
 #, python-format
 msgid "{state} | by {principal}"
 msgstr ""
 
-#: ./src/pyams_content/shared/common/zmi/workflow.py:77
-#: ./src/pyams_content/workflow/__init__.py:551
-#: ./src/pyams_content/workflow/__init__.py:574
+#: ./src/pyams_content/shared/common/zmi/workflow.py:76
+#: ./src/pyams_content/workflow/__init__.py:607
+#: ./src/pyams_content/workflow/__init__.py:630
 #, python-format
 msgid "{state} {date}"
 msgstr ""
 
-#: ./src/pyams_content/shared/common/zmi/__init__.py:239
+#: ./src/pyams_content/shared/common/zmi/__init__.py:242
 msgid "Duplicate content..."
 msgstr ""
 
-#: ./src/pyams_content/shared/common/zmi/__init__.py:258
+#: ./src/pyams_content/shared/common/zmi/__init__.py:261
 msgid "Duplicate content"
 msgstr ""
 
@@ -835,58 +936,58 @@
 msgid "This title can be modified afterwards"
 msgstr ""
 
-#: ./src/pyams_content/shared/common/zmi/__init__.py:250
+#: ./src/pyams_content/shared/common/zmi/__init__.py:253
 msgid "Duplicate this content"
 msgstr ""
 
-#: ./src/pyams_content/shared/common/zmi/__init__.py:301
+#: ./src/pyams_content/shared/common/zmi/__init__.py:304
 #, python-format
 msgid "Duplicate content ({oid})"
 msgstr ""
 
-#: ./src/pyams_content/shared/common/zmi/__init__.py:347
+#: ./src/pyams_content/shared/common/zmi/__init__.py:350
 msgid "Created or modified in this version"
 msgstr ""
 
-#: ./src/pyams_content/shared/common/zmi/summary.py:49
+#: ./src/pyams_content/shared/common/zmi/summary.py:51
 msgid "Display content summary"
 msgstr ""
 
-#: ./src/pyams_content/shared/common/zmi/summary.py:73
+#: ./src/pyams_content/shared/common/zmi/summary.py:75
 msgid "Identity card"
 msgstr ""
 
-#: ./src/pyams_content/shared/common/zmi/summary.py:85
+#: ./src/pyams_content/shared/common/zmi/summary.py:87
 msgid "Requested action"
 msgstr ""
 
-#: ./src/pyams_content/shared/common/zmi/summary.py:125
+#: ./src/pyams_content/shared/common/zmi/summary.py:128
 msgid "Publication and retire dates"
 msgstr ""
 
-#: ./src/pyams_content/shared/common/zmi/summary.py:138
+#: ./src/pyams_content/shared/common/zmi/summary.py:141
 msgid "Current version"
 msgstr ""
 
-#: ./src/pyams_content/shared/common/zmi/summary.py:168
+#: ./src/pyams_content/shared/common/zmi/summary.py:171
 msgid "Content history"
 msgstr ""
 
-#: ./src/pyams_content/shared/common/zmi/summary.py:115
+#: ./src/pyams_content/shared/common/zmi/summary.py:118
 msgid "Associated comment"
 msgstr ""
 
-#: ./src/pyams_content/shared/common/zmi/summary.py:150
-#: ./src/pyams_content/shared/common/zmi/dashboard.py:144
+#: ./src/pyams_content/shared/common/zmi/summary.py:153
+#: ./src/pyams_content/shared/common/zmi/dashboard.py:179
 msgid "Version"
 msgstr ""
 
-#: ./src/pyams_content/shared/common/zmi/summary.py:106
+#: ./src/pyams_content/shared/common/zmi/summary.py:108
 #, python-format
 msgid "{state} {date} by {principal}"
 msgstr ""
 
-#: ./src/pyams_content/shared/common/zmi/summary.py:156
+#: ./src/pyams_content/shared/common/zmi/summary.py:159
 #, python-format
 msgid "{state} since {date}, by {principal}"
 msgstr ""
@@ -957,270 +1058,275 @@
 msgid "Unique ID"
 msgstr ""
 
-#: ./src/pyams_content/shared/common/zmi/dashboard.py:171
+#: ./src/pyams_content/shared/common/zmi/dashboard.py:167
 msgid "Status date"
 msgstr ""
 
-#: ./src/pyams_content/shared/common/zmi/dashboard.py:183
+#: ./src/pyams_content/shared/common/zmi/dashboard.py:190
 msgid "Status principal"
 msgstr ""
 
-#: ./src/pyams_content/shared/common/zmi/dashboard.py:208
+#: ./src/pyams_content/shared/common/zmi/dashboard.py:215
 msgid "Last modification"
 msgstr ""
 
-#: ./src/pyams_content/shared/common/zmi/dashboard.py:226
-#: ./src/pyams_content/root/zmi/__init__.py:88
+#: ./src/pyams_content/shared/common/zmi/dashboard.py:233
+#: ./src/pyams_content/root/zmi/__init__.py:89
 msgid "Dashboard"
 msgstr ""
 
-#: ./src/pyams_content/shared/common/zmi/dashboard.py:236
+#: ./src/pyams_content/shared/common/zmi/dashboard.py:243
 msgid "Contents dashboard"
 msgstr ""
 
-#: ./src/pyams_content/shared/common/zmi/dashboard.py:270
-#: ./src/pyams_content/root/zmi/__init__.py:134
+#: ./src/pyams_content/shared/common/zmi/dashboard.py:277
+#: ./src/pyams_content/root/zmi/__init__.py:138
 #, python-format
 msgid "MANAGER - {0} content waiting for your action"
 msgstr ""
 
-#: ./src/pyams_content/shared/common/zmi/dashboard.py:271
-#: ./src/pyams_content/root/zmi/__init__.py:135
+#: ./src/pyams_content/shared/common/zmi/dashboard.py:278
+#: ./src/pyams_content/root/zmi/__init__.py:139
 #, python-format
 msgid "MANAGER - {0} contents waiting for your action"
 msgstr ""
 
-#: ./src/pyams_content/shared/common/zmi/dashboard.py:312
-#: ./src/pyams_content/root/zmi/__init__.py:179
+#: ./src/pyams_content/shared/common/zmi/dashboard.py:317
+#: ./src/pyams_content/root/zmi/__init__.py:181
 #, python-format
 msgid "CONTRIBUTOR - {0} content waiting for action"
 msgstr ""
 
-#: ./src/pyams_content/shared/common/zmi/dashboard.py:313
-#: ./src/pyams_content/root/zmi/__init__.py:180
+#: ./src/pyams_content/shared/common/zmi/dashboard.py:318
+#: ./src/pyams_content/root/zmi/__init__.py:182
 #, python-format
 msgid "CONTRIBUTOR - {0} contents waiting for action"
 msgstr ""
 
-#: ./src/pyams_content/shared/common/zmi/dashboard.py:343
-#: ./src/pyams_content/root/zmi/__init__.py:213
-#, python-format
-msgid "CONTRIBUTOR - {0} modified content"
-msgstr ""
-
-#: ./src/pyams_content/shared/common/zmi/dashboard.py:382
-#: ./src/pyams_content/root/zmi/__init__.py:254
-msgid "My contents"
-msgstr ""
-
-#: ./src/pyams_content/shared/common/zmi/dashboard.py:397
-#: ./src/pyams_content/root/zmi/__init__.py:269
-msgid "My favorites"
-msgstr ""
-
-#: ./src/pyams_content/shared/common/zmi/dashboard.py:406
-#: ./src/pyams_content/root/zmi/__init__.py:278
-#, python-format
-msgid "CONTRIBUTOR - {0} favorite"
-msgstr ""
-
-#: ./src/pyams_content/shared/common/zmi/dashboard.py:407
-#: ./src/pyams_content/root/zmi/__init__.py:279
-#, python-format
-msgid "CONTRIBUTOR - {0} favorites"
-msgstr ""
-
-#: ./src/pyams_content/shared/common/zmi/dashboard.py:419
-#: ./src/pyams_content/shared/common/zmi/templates/header.pt:23
-msgid "Add/remove from favorites"
-msgstr ""
-
-#: ./src/pyams_content/shared/common/zmi/dashboard.py:480
-#: ./src/pyams_content/root/zmi/__init__.py:315
-msgid "Your favorites"
-msgstr ""
-
-#: ./src/pyams_content/shared/common/zmi/dashboard.py:493
-#: ./src/pyams_content/root/zmi/__init__.py:328
-msgid "My preparations"
-msgstr ""
-
-#: ./src/pyams_content/shared/common/zmi/dashboard.py:502
-#: ./src/pyams_content/root/zmi/__init__.py:337
-#, python-format
-msgid "CONTRIBUTOR - {0} prepared content"
-msgstr ""
-
-#: ./src/pyams_content/shared/common/zmi/dashboard.py:503
-#: ./src/pyams_content/root/zmi/__init__.py:338
-#, python-format
-msgid "CONTRIBUTOR - {0} prepared contents"
-msgstr ""
-
-#: ./src/pyams_content/shared/common/zmi/dashboard.py:541
-#: ./src/pyams_content/root/zmi/__init__.py:375
-msgid "Your prepared contents"
-msgstr ""
-
-#: ./src/pyams_content/shared/common/zmi/dashboard.py:554
-#: ./src/pyams_content/root/zmi/__init__.py:388
-msgid "My submissions"
-msgstr ""
-
-#: ./src/pyams_content/shared/common/zmi/dashboard.py:563
-#: ./src/pyams_content/root/zmi/__init__.py:397
-#, python-format
-msgid "CONTRIBUTOR - {0} submitted content"
-msgstr ""
-
-#: ./src/pyams_content/shared/common/zmi/dashboard.py:564
-#: ./src/pyams_content/root/zmi/__init__.py:398
-#, python-format
-msgid "CONTRIBUTOR - {0} submitted contents"
-msgstr ""
-
-#: ./src/pyams_content/shared/common/zmi/dashboard.py:602
-#: ./src/pyams_content/root/zmi/__init__.py:435
-msgid "Your submitted contents"
-msgstr ""
-
-#: ./src/pyams_content/shared/common/zmi/dashboard.py:615
-#: ./src/pyams_content/root/zmi/__init__.py:448
-msgid "My publications"
-msgstr ""
-
-#: ./src/pyams_content/shared/common/zmi/dashboard.py:624
-#: ./src/pyams_content/root/zmi/__init__.py:457
-#, python-format
-msgid "CONTRIBUTOR - {0} published content"
-msgstr ""
-
-#: ./src/pyams_content/shared/common/zmi/dashboard.py:625
-#: ./src/pyams_content/root/zmi/__init__.py:458
-#, python-format
-msgid "CONTRIBUTOR - {0} published contents"
-msgstr ""
-
-#: ./src/pyams_content/shared/common/zmi/dashboard.py:663
-#: ./src/pyams_content/root/zmi/__init__.py:495
-msgid "Your published contents"
-msgstr ""
-
-#: ./src/pyams_content/shared/common/zmi/dashboard.py:676
-#: ./src/pyams_content/root/zmi/__init__.py:508
-msgid "My retired contents"
-msgstr ""
-
-#: ./src/pyams_content/shared/common/zmi/dashboard.py:685
-#: ./src/pyams_content/root/zmi/__init__.py:517
-#, python-format
-msgid "CONTRIBUTOR - {0} retired content"
-msgstr ""
-
-#: ./src/pyams_content/shared/common/zmi/dashboard.py:686
-#: ./src/pyams_content/root/zmi/__init__.py:518
-#, python-format
-msgid "CONTRIBUTOR - {0} retired contents"
-msgstr ""
-
-#: ./src/pyams_content/shared/common/zmi/dashboard.py:725
-#: ./src/pyams_content/root/zmi/__init__.py:556
-msgid "Your retired contents"
-msgstr ""
-
-#: ./src/pyams_content/shared/common/zmi/dashboard.py:738
-#: ./src/pyams_content/root/zmi/__init__.py:569
-msgid "My archived contents"
-msgstr ""
-
-#: ./src/pyams_content/shared/common/zmi/dashboard.py:747
-#: ./src/pyams_content/root/zmi/__init__.py:578
-#, python-format
-msgid "CONTRIBUTOR - {0} archived content"
-msgstr ""
-
-#: ./src/pyams_content/shared/common/zmi/dashboard.py:748
-#: ./src/pyams_content/root/zmi/__init__.py:579
-#, python-format
-msgid "CONTRIBUTOR - {0} archived contents"
-msgstr ""
-
-#: ./src/pyams_content/shared/common/zmi/dashboard.py:793
-#: ./src/pyams_content/root/zmi/__init__.py:623
-msgid "Your archived contents"
-msgstr ""
-
-#: ./src/pyams_content/shared/common/zmi/dashboard.py:807
-#: ./src/pyams_content/root/zmi/__init__.py:637
-msgid "Other interventions"
-msgstr ""
-
-#: ./src/pyams_content/shared/common/zmi/dashboard.py:822
-#: ./src/pyams_content/root/zmi/__init__.py:652
-msgid "Last publications"
-msgstr ""
-
-#: ./src/pyams_content/shared/common/zmi/dashboard.py:831
-#: ./src/pyams_content/root/zmi/__init__.py:661
-#, python-format
-msgid "CONTRIBUTORS - {0} published content"
-msgstr ""
-
-#: ./src/pyams_content/shared/common/zmi/dashboard.py:876
-#: ./src/pyams_content/root/zmi/__init__.py:705
-msgid "Last published contents"
-msgstr ""
-
-#: ./src/pyams_content/shared/common/zmi/dashboard.py:889
-#: ./src/pyams_content/root/zmi/__init__.py:718
-msgid "Last updates"
-msgstr ""
-
-#: ./src/pyams_content/shared/common/zmi/dashboard.py:898
-#: ./src/pyams_content/root/zmi/__init__.py:727
-#, python-format
-msgid "CONTRIBUTORS - {0} updated content"
-msgstr ""
-
-#: ./src/pyams_content/shared/common/zmi/dashboard.py:941
-#: ./src/pyams_content/root/zmi/__init__.py:769
-msgid "Last updated contents"
-msgstr ""
-
 #: ./src/pyams_content/shared/common/zmi/dashboard.py:348
-#: ./src/pyams_content/root/zmi/__init__.py:218
+#: ./src/pyams_content/root/zmi/__init__.py:215
+#, python-format
+msgid "CONTRIBUTOR - {0} modified content"
+msgstr ""
+
+#: ./src/pyams_content/shared/common/zmi/dashboard.py:387
+#: ./src/pyams_content/root/zmi/__init__.py:256
+msgid "My contents"
+msgstr ""
+
+#: ./src/pyams_content/shared/common/zmi/dashboard.py:402
+#: ./src/pyams_content/root/zmi/__init__.py:271
+msgid "My favorites"
+msgstr ""
+
+#: ./src/pyams_content/shared/common/zmi/dashboard.py:411
+#: ./src/pyams_content/root/zmi/__init__.py:280
+#, python-format
+msgid "CONTRIBUTOR - {0} favorite"
+msgstr ""
+
+#: ./src/pyams_content/shared/common/zmi/dashboard.py:412
+#: ./src/pyams_content/root/zmi/__init__.py:281
+#, python-format
+msgid "CONTRIBUTOR - {0} favorites"
+msgstr ""
+
+#: ./src/pyams_content/shared/common/zmi/dashboard.py:424
+#: ./src/pyams_content/shared/common/zmi/templates/header.pt:23
+msgid "Add/remove from favorites"
+msgstr ""
+
+#: ./src/pyams_content/shared/common/zmi/dashboard.py:485
+#: ./src/pyams_content/root/zmi/__init__.py:317
+msgid "Your favorites"
+msgstr ""
+
+#: ./src/pyams_content/shared/common/zmi/dashboard.py:498
+#: ./src/pyams_content/root/zmi/__init__.py:330
+msgid "My preparations"
+msgstr ""
+
+#: ./src/pyams_content/shared/common/zmi/dashboard.py:507
+#: ./src/pyams_content/root/zmi/__init__.py:339
+#, python-format
+msgid "CONTRIBUTOR - {0} prepared content"
+msgstr ""
+
+#: ./src/pyams_content/shared/common/zmi/dashboard.py:508
+#: ./src/pyams_content/root/zmi/__init__.py:340
+#, python-format
+msgid "CONTRIBUTOR - {0} prepared contents"
+msgstr ""
+
+#: ./src/pyams_content/shared/common/zmi/dashboard.py:546
+#: ./src/pyams_content/root/zmi/__init__.py:377
+msgid "Your prepared contents"
+msgstr ""
+
+#: ./src/pyams_content/shared/common/zmi/dashboard.py:559
+#: ./src/pyams_content/root/zmi/__init__.py:390
+msgid "My submissions"
+msgstr ""
+
+#: ./src/pyams_content/shared/common/zmi/dashboard.py:568
+#: ./src/pyams_content/root/zmi/__init__.py:399
+#, python-format
+msgid "CONTRIBUTOR - {0} submitted content"
+msgstr ""
+
+#: ./src/pyams_content/shared/common/zmi/dashboard.py:569
+#: ./src/pyams_content/root/zmi/__init__.py:400
 #, python-format
-msgid "CONTRIBUTOR - {0} modified contents"
-msgstr ""
-
-#: ./src/pyams_content/shared/common/zmi/dashboard.py:350
-#: ./src/pyams_content/root/zmi/__init__.py:220
+msgid "CONTRIBUTOR - {0} submitted contents"
+msgstr ""
+
+#: ./src/pyams_content/shared/common/zmi/dashboard.py:607
+#: ./src/pyams_content/root/zmi/__init__.py:437
+msgid "Your submitted contents"
+msgstr ""
+
+#: ./src/pyams_content/shared/common/zmi/dashboard.py:620
+#: ./src/pyams_content/root/zmi/__init__.py:450
+msgid "My publications"
+msgstr ""
+
+#: ./src/pyams_content/shared/common/zmi/dashboard.py:629
+#: ./src/pyams_content/root/zmi/__init__.py:459
+#, python-format
+msgid "CONTRIBUTOR - {0} published content"
+msgstr ""
+
+#: ./src/pyams_content/shared/common/zmi/dashboard.py:630
+#: ./src/pyams_content/root/zmi/__init__.py:460
+#, python-format
+msgid "CONTRIBUTOR - {0} published contents"
+msgstr ""
+
+#: ./src/pyams_content/shared/common/zmi/dashboard.py:668
+#: ./src/pyams_content/root/zmi/__init__.py:497
+msgid "Your published contents"
+msgstr ""
+
+#: ./src/pyams_content/shared/common/zmi/dashboard.py:681
+#: ./src/pyams_content/root/zmi/__init__.py:510
+msgid "My retired contents"
+msgstr ""
+
+#: ./src/pyams_content/shared/common/zmi/dashboard.py:690
+#: ./src/pyams_content/root/zmi/__init__.py:519
 #, python-format
-msgid "CONTRIBUTOR - Last {0} modified contents"
+msgid "CONTRIBUTOR - {0} retired content"
+msgstr ""
+
+#: ./src/pyams_content/shared/common/zmi/dashboard.py:691
+#: ./src/pyams_content/root/zmi/__init__.py:520
+#, python-format
+msgid "CONTRIBUTOR - {0} retired contents"
+msgstr ""
+
+#: ./src/pyams_content/shared/common/zmi/dashboard.py:730
+#: ./src/pyams_content/root/zmi/__init__.py:558
+msgid "Your retired contents"
+msgstr ""
+
+#: ./src/pyams_content/shared/common/zmi/dashboard.py:743
+#: ./src/pyams_content/root/zmi/__init__.py:571
+msgid "My archived contents"
+msgstr ""
+
+#: ./src/pyams_content/shared/common/zmi/dashboard.py:752
+#: ./src/pyams_content/root/zmi/__init__.py:580
+#, python-format
+msgid "CONTRIBUTOR - {0} archived content"
+msgstr ""
+
+#: ./src/pyams_content/shared/common/zmi/dashboard.py:753
+#: ./src/pyams_content/root/zmi/__init__.py:581
+#, python-format
+msgid "CONTRIBUTOR - {0} archived contents"
+msgstr ""
+
+#: ./src/pyams_content/shared/common/zmi/dashboard.py:798
+#: ./src/pyams_content/root/zmi/__init__.py:625
+msgid "Your archived contents"
+msgstr ""
+
+#: ./src/pyams_content/shared/common/zmi/dashboard.py:812
+#: ./src/pyams_content/root/zmi/__init__.py:639
+msgid "Other interventions"
+msgstr ""
+
+#: ./src/pyams_content/shared/common/zmi/dashboard.py:827
+#: ./src/pyams_content/root/zmi/__init__.py:654
+msgid "Last publications"
 msgstr ""
 
 #: ./src/pyams_content/shared/common/zmi/dashboard.py:836
-#: ./src/pyams_content/root/zmi/__init__.py:666
+#: ./src/pyams_content/root/zmi/__init__.py:663
 #, python-format
-msgid "CONTRIBUTORS - Last {0} published contents"
-msgstr ""
-
-#: ./src/pyams_content/shared/common/zmi/dashboard.py:838
-#: ./src/pyams_content/root/zmi/__init__.py:668
-msgid "CONTRIBUTORS - Last published contents (in the limit of 50)"
+msgid "CONTRIBUTORS - {0} published content"
+msgstr ""
+
+#: ./src/pyams_content/shared/common/zmi/dashboard.py:881
+#: ./src/pyams_content/root/zmi/__init__.py:707
+msgid "Last published contents"
+msgstr ""
+
+#: ./src/pyams_content/shared/common/zmi/dashboard.py:894
+#: ./src/pyams_content/root/zmi/__init__.py:720
+msgid "Last updates"
 msgstr ""
 
 #: ./src/pyams_content/shared/common/zmi/dashboard.py:903
-#: ./src/pyams_content/root/zmi/__init__.py:732
+#: ./src/pyams_content/root/zmi/__init__.py:729
+#, python-format
+msgid "CONTRIBUTORS - {0} updated content"
+msgstr ""
+
+#: ./src/pyams_content/shared/common/zmi/dashboard.py:946
+#: ./src/pyams_content/root/zmi/__init__.py:771
+msgid "Last updated contents"
+msgstr ""
+
+#: ./src/pyams_content/shared/common/zmi/dashboard.py:353
+#: ./src/pyams_content/root/zmi/__init__.py:220
+#, python-format
+msgid "CONTRIBUTOR - {0} modified contents"
+msgstr ""
+
+#: ./src/pyams_content/shared/common/zmi/dashboard.py:355
+#: ./src/pyams_content/root/zmi/__init__.py:222
+#, python-format
+msgid "CONTRIBUTOR - Last {0} modified contents"
+msgstr ""
+
+#: ./src/pyams_content/shared/common/zmi/dashboard.py:841
+#: ./src/pyams_content/root/zmi/__init__.py:668
+#, python-format
+msgid "CONTRIBUTORS - Last {0} published contents"
+msgstr ""
+
+#: ./src/pyams_content/shared/common/zmi/dashboard.py:843
+#: ./src/pyams_content/root/zmi/__init__.py:670
+msgid "CONTRIBUTORS - Last published contents (in the limit of 50)"
+msgstr ""
+
+#: ./src/pyams_content/shared/common/zmi/dashboard.py:908
+#: ./src/pyams_content/root/zmi/__init__.py:734
 #, python-format
 msgid "CONTRIBUTORS - Last {0} updated contents"
 msgstr ""
 
-#: ./src/pyams_content/shared/common/zmi/dashboard.py:905
-#: ./src/pyams_content/root/zmi/__init__.py:734
+#: ./src/pyams_content/shared/common/zmi/dashboard.py:910
+#: ./src/pyams_content/root/zmi/__init__.py:736
 msgid "CONTRIBUTORS - Last updated contents (in the limit of 50)"
 msgstr ""
 
+#: ./src/pyams_content/shared/common/zmi/dashboard.py:159
+#: ./src/pyams_content/shared/common/zmi/header.py:96
+msgid "Content publication start date is not passed yet"
+msgstr ""
+
 #: ./src/pyams_content/shared/common/zmi/review.py:61
 msgid "Ask for review..."
 msgstr ""
@@ -1293,37 +1399,45 @@
 msgid "Manager name"
 msgstr ""
 
-#: ./src/pyams_content/shared/common/zmi/security.py:142
+#: ./src/pyams_content/shared/common/zmi/security.py:112
+msgid "Restricted"
+msgstr ""
+
+#: ./src/pyams_content/shared/common/zmi/security.py:129
+msgid "Owners"
+msgstr ""
+
+#: ./src/pyams_content/shared/common/zmi/security.py:176
 #, python-format
 msgid "Edit manager restrictions for « {0} »"
 msgstr ""
 
-#: ./src/pyams_content/shared/common/zmi/security.py:179
+#: ./src/pyams_content/shared/common/zmi/security.py:213
 msgid "Apply contents restrictions"
 msgstr ""
 
-#: ./src/pyams_content/shared/common/zmi/security.py:181
+#: ./src/pyams_content/shared/common/zmi/security.py:215
 msgid ""
 "You can specify which contents this manager will be able to manage. If you "
 "specify several criteria, the manager will be able to manage contents for "
 "which at least one criteria is matching."
 msgstr ""
 
-#: ./src/pyams_content/shared/common/zmi/header.py:84
+#: ./src/pyams_content/shared/common/zmi/header.py:85
 #, python-format
 msgid "{state} by {principal}"
 msgstr ""
 
-#: ./src/pyams_content/shared/common/zmi/header.py:108
+#: ./src/pyams_content/shared/common/zmi/header.py:117
 #, python-format
 msgid "since {date}"
 msgstr ""
 
-#: ./src/pyams_content/shared/common/zmi/header.py:118
+#: ./src/pyams_content/shared/common/zmi/header.py:127
 msgid "access new version"
 msgstr ""
 
-#: ./src/pyams_content/shared/common/zmi/header.py:129
+#: ./src/pyams_content/shared/common/zmi/header.py:138
 msgid "access published version"
 msgstr ""
 
@@ -1366,15 +1480,20 @@
 "again except by creating a new version."
 msgstr ""
 
-#: ./src/pyams_content/shared/common/zmi/templates/dashboard.pt:18
+#: ./src/pyams_content/shared/common/zmi/templates/dashboard.pt:13
+msgid "SEARCH - Between all contents of type &laquo;&nbsp;${type}&nbsp;&raquo;"
+msgstr ""
+
+#: ./src/pyams_content/shared/common/zmi/templates/dashboard.pt:24
 msgid "Quick search..."
 msgstr ""
 
-#: ./src/pyams_content/shared/common/zmi/templates/dashboard.pt:21
+#: ./src/pyams_content/shared/common/zmi/templates/dashboard.pt:29
 msgid "Advanced search..."
 msgstr ""
 
-#: ./src/pyams_content/shared/common/zmi/templates/dashboard.pt:32
+#: ./src/pyams_content/shared/common/zmi/templates/dashboard.pt:42
+#: ./src/pyams_content/root/zmi/templates/dashboard.pt:18
 msgid "You are not actually concerned by any content."
 msgstr ""
 
@@ -1570,172 +1689,172 @@
 msgid "This content is already retired and not visible."
 msgstr ""
 
-#: ./src/pyams_content/shared/common/interfaces/__init__.py:57
+#: ./src/pyams_content/shared/common/interfaces/__init__.py:58
 msgid "Workflow name"
 msgstr ""
 
-#: ./src/pyams_content/shared/common/interfaces/__init__.py:58
+#: ./src/pyams_content/shared/common/interfaces/__init__.py:59
 msgid "Name of workflow utility used to manage tool contents"
 msgstr ""
 
-#: ./src/pyams_content/shared/common/interfaces/__init__.py:66
-#: ./src/pyams_content/root/interfaces/__init__.py:40
-msgid "Webmasters"
-msgstr ""
-
 #: ./src/pyams_content/shared/common/interfaces/__init__.py:67
+#: ./src/pyams_content/root/interfaces/__init__.py:40
+msgid "Webmasters"
+msgstr ""
+
+#: ./src/pyams_content/shared/common/interfaces/__init__.py:68
 msgid "Webmasters can handle all contents, including published ones"
 msgstr ""
 
-#: ./src/pyams_content/shared/common/interfaces/__init__.py:71
-msgid "Pilots"
-msgstr ""
-
 #: ./src/pyams_content/shared/common/interfaces/__init__.py:72
+msgid "Pilots"
+msgstr ""
+
+#: ./src/pyams_content/shared/common/interfaces/__init__.py:73
 msgid ""
 "Pilots can handle tool configuration, manage access rules, grant users roles "
 "and manage managers restrictions"
 msgstr ""
 
-#: ./src/pyams_content/shared/common/interfaces/__init__.py:77
-#: ./src/pyams_content/shared/common/interfaces/__init__.py:144
-msgid "Managers"
-msgstr ""
-
 #: ./src/pyams_content/shared/common/interfaces/__init__.py:78
 #: ./src/pyams_content/shared/common/interfaces/__init__.py:145
+msgid "Managers"
+msgstr ""
+
+#: ./src/pyams_content/shared/common/interfaces/__init__.py:79
+#: ./src/pyams_content/shared/common/interfaces/__init__.py:146
 msgid ""
 "Managers can handle main operations in tool's workflow, like publish or "
 "retire contents"
 msgstr ""
 
-#: ./src/pyams_content/shared/common/interfaces/__init__.py:83
-#: ./src/pyams_content/shared/common/interfaces/__init__.py:150
-msgid "Contributors"
-msgstr ""
-
 #: ./src/pyams_content/shared/common/interfaces/__init__.py:84
+#: ./src/pyams_content/shared/common/interfaces/__init__.py:151
+msgid "Contributors"
+msgstr ""
+
+#: ./src/pyams_content/shared/common/interfaces/__init__.py:85
 msgid "Contributors are users which are allowed to create new contents"
 msgstr ""
 
-#: ./src/pyams_content/shared/common/interfaces/__init__.py:95
-msgid "Version creator"
-msgstr ""
-
 #: ./src/pyams_content/shared/common/interfaces/__init__.py:96
+msgid "Version creator"
+msgstr ""
+
+#: ./src/pyams_content/shared/common/interfaces/__init__.py:97
 msgid ""
 "Name of content's version creator. The creator of the first version is also "
 "it's owner."
 msgstr ""
 
-#: ./src/pyams_content/shared/common/interfaces/__init__.py:100
-msgid "First owner"
-msgstr ""
-
 #: ./src/pyams_content/shared/common/interfaces/__init__.py:101
+msgid "First owner"
+msgstr ""
+
+#: ./src/pyams_content/shared/common/interfaces/__init__.py:102
 msgid "Name of content's first version owner"
 msgstr ""
 
-#: ./src/pyams_content/shared/common/interfaces/__init__.py:105
+#: ./src/pyams_content/shared/common/interfaces/__init__.py:106
 msgid "Version creation"
 msgstr ""
 
-#: ./src/pyams_content/shared/common/interfaces/__init__.py:108
-msgid "Version modifiers"
-msgstr ""
-
 #: ./src/pyams_content/shared/common/interfaces/__init__.py:109
+msgid "Version modifiers"
+msgstr ""
+
+#: ./src/pyams_content/shared/common/interfaces/__init__.py:110
 msgid "List of principals who modified this content"
 msgstr ""
 
-#: ./src/pyams_content/shared/common/interfaces/__init__.py:112
-msgid "Last modifier"
-msgstr ""
-
 #: ./src/pyams_content/shared/common/interfaces/__init__.py:113
+msgid "Last modifier"
+msgstr ""
+
+#: ./src/pyams_content/shared/common/interfaces/__init__.py:114
 msgid "Last principal who modified this content"
 msgstr ""
 
-#: ./src/pyams_content/shared/common/interfaces/__init__.py:116
+#: ./src/pyams_content/shared/common/interfaces/__init__.py:117
 msgid "Last update"
 msgstr ""
 
-#: ./src/pyams_content/shared/common/interfaces/__init__.py:120
+#: ./src/pyams_content/shared/common/interfaces/__init__.py:121
 msgid ""
 "The content's description is 'hidden' into HTML's page headers; but it can be"
 " seen, for example, in some search engines results as content's description"
 msgstr ""
 
-#: ./src/pyams_content/shared/common/interfaces/__init__.py:125
+#: ./src/pyams_content/shared/common/interfaces/__init__.py:126
 msgid "Keywords"
 msgstr ""
 
-#: ./src/pyams_content/shared/common/interfaces/__init__.py:126
+#: ./src/pyams_content/shared/common/interfaces/__init__.py:127
 msgid "They will be included into HTML pages metadata"
 msgstr ""
 
-#: ./src/pyams_content/shared/common/interfaces/__init__.py:129
-msgid "Notepad"
-msgstr ""
-
 #: ./src/pyams_content/shared/common/interfaces/__init__.py:130
+msgid "Notepad"
+msgstr ""
+
+#: ./src/pyams_content/shared/common/interfaces/__init__.py:131
 msgid "Internal information to be known about this content"
 msgstr ""
 
-#: ./src/pyams_content/shared/common/interfaces/__init__.py:137
-msgid "Content owner"
-msgstr ""
-
 #: ./src/pyams_content/shared/common/interfaces/__init__.py:138
+msgid "Content owner"
+msgstr ""
+
+#: ./src/pyams_content/shared/common/interfaces/__init__.py:139
 msgid ""
 "The owner is the creator of content's first version, except if it was "
 "transferred afterwards to another owner"
 msgstr ""
 
-#: ./src/pyams_content/shared/common/interfaces/__init__.py:151
+#: ./src/pyams_content/shared/common/interfaces/__init__.py:152
 msgid ""
 "Contributors are users which are allowed to update this content in addition "
 "to it's owner"
 msgstr ""
 
-#: ./src/pyams_content/shared/common/interfaces/__init__.py:156
+#: ./src/pyams_content/shared/common/interfaces/__init__.py:157
 msgid "Readers"
 msgstr ""
 
-#: ./src/pyams_content/shared/common/interfaces/__init__.py:157
+#: ./src/pyams_content/shared/common/interfaces/__init__.py:158
 msgid ""
 "Readers are users which are asked to verify and comment contents before they "
 "are published"
 msgstr ""
 
-#: ./src/pyams_content/shared/common/interfaces/__init__.py:162
-msgid "Guests"
-msgstr ""
-
 #: ./src/pyams_content/shared/common/interfaces/__init__.py:163
+msgid "Guests"
+msgstr ""
+
+#: ./src/pyams_content/shared/common/interfaces/__init__.py:164
 msgid ""
 "Guests are users which are allowed to view contents with restricted access"
 msgstr ""
 
-#: ./src/pyams_content/shared/common/interfaces/__init__.py:182
+#: ./src/pyams_content/shared/common/interfaces/__init__.py:183
 msgid "Principal ID"
 msgstr ""
 
-#: ./src/pyams_content/shared/common/interfaces/__init__.py:187
-msgid "Restricted contents"
-msgstr ""
-
 #: ./src/pyams_content/shared/common/interfaces/__init__.py:188
+msgid "Restricted contents"
+msgstr ""
+
+#: ./src/pyams_content/shared/common/interfaces/__init__.py:189
 msgid ""
 "If 'yes', this manager will get restricted access to manage contents based on"
 " selected settings"
 msgstr ""
 
-#: ./src/pyams_content/shared/common/interfaces/__init__.py:193
+#: ./src/pyams_content/shared/common/interfaces/__init__.py:194
 msgid "Selected owners"
 msgstr ""
 
-#: ./src/pyams_content/shared/common/interfaces/__init__.py:194
+#: ./src/pyams_content/shared/common/interfaces/__init__.py:195
 msgid "Manager will have access to contents owned by these principals"
 msgstr ""
 
@@ -1764,7 +1883,7 @@
 msgstr ""
 
 #: ./src/pyams_content/shared/news/zmi/__init__.py:63
-#: ./src/pyams_content/shared/news/zmi/__init__.py:73
+#: ./src/pyams_content/shared/news/zmi/__init__.py:74
 msgid "Add news topic"
 msgstr ""
 
@@ -1832,7 +1951,7 @@
 msgstr ""
 
 #: ./src/pyams_content/shared/view/interfaces/__init__.py:40
-#: ./src/pyams_content/interfaces/__init__.py:82
+#: ./src/pyams_content/interfaces/__init__.py:111
 #: ./src/pyams_content/interfaces/review.py:67
 msgid "Creation date"
 msgstr ""
@@ -1930,40 +2049,45 @@
 msgid "Image map « {title} »"
 msgstr ""
 
-#: ./src/pyams_content/shared/imagemap/zmi/container.py:56
+#: ./src/pyams_content/shared/imagemap/zmi/container.py:54
 msgid "Image areas"
 msgstr ""
 
-#: ./src/pyams_content/shared/imagemap/zmi/container.py:67
+#: ./src/pyams_content/shared/imagemap/zmi/container.py:65
 #: ./src/pyams_content/shared/imagemap/interfaces/__init__.py:63
 msgid "Image map areas"
 msgstr ""
 
+#: ./src/pyams_content/shared/imagemap/zmi/container.py:136
+#: ./src/pyams_content/shared/imagemap/interfaces/__init__.py:42
+msgid "Link target"
+msgstr ""
+
+#: ./src/pyams_content/shared/imagemap/zmi/container.py:109
+msgid "No currently defined image."
+msgstr ""
+
 #: ./src/pyams_content/shared/imagemap/zmi/container.py:111
-msgid "No currently defined image."
-msgstr ""
-
-#: ./src/pyams_content/shared/imagemap/zmi/container.py:113
 msgid "No currently defined area."
 msgstr ""
 
-#: ./src/pyams_content/shared/imagemap/zmi/container.py:182
+#: ./src/pyams_content/shared/imagemap/zmi/container.py:180
 msgid "Given area name doesn't exist!"
 msgstr ""
 
-#: ./src/pyams_content/shared/imagemap/zmi/container.py:178
+#: ./src/pyams_content/shared/imagemap/zmi/container.py:176
 msgid "Bad query object_name parameter value!"
 msgstr ""
 
-#: ./src/pyams_content/shared/imagemap/zmi/area.py:47
+#: ./src/pyams_content/shared/imagemap/zmi/area.py:46
 msgid "Add image area"
 msgstr ""
 
-#: ./src/pyams_content/shared/imagemap/zmi/area.py:65
+#: ./src/pyams_content/shared/imagemap/zmi/area.py:64
 msgid "Add new image area"
 msgstr ""
 
-#: ./src/pyams_content/shared/imagemap/zmi/area.py:108
+#: ./src/pyams_content/shared/imagemap/zmi/area.py:106
 msgid "Edit image map properties"
 msgstr ""
 
@@ -1975,18 +2099,14 @@
 msgid "Image map"
 msgstr ""
 
-#: ./src/pyams_content/shared/imagemap/interfaces/__init__.py:42
-msgid "Area title"
-msgstr ""
-
 #: ./src/pyams_content/shared/imagemap/interfaces/__init__.py:43
-msgid "Label associated with this area"
-msgstr ""
-
-#: ./src/pyams_content/shared/imagemap/interfaces/__init__.py:47
 msgid "Internal or external link associated with this map area"
 msgstr ""
 
+#: ./src/pyams_content/shared/imagemap/interfaces/__init__.py:48
+msgid "Alternate label associated with this area"
+msgstr ""
+
 #: ./src/pyams_content/shared/imagemap/interfaces/__init__.py:51
 msgid "Map area coordinates"
 msgstr ""
@@ -2062,27 +2182,31 @@
 msgid "Default length used for inner tables and dashboards"
 msgstr ""
 
-#: ./src/pyams_content/root/zmi/__init__.py:74
+#: ./src/pyams_content/root/zmi/__init__.py:75
 msgid "Home"
 msgstr ""
 
-#: ./src/pyams_content/root/zmi/__init__.py:123
+#: ./src/pyams_content/root/zmi/__init__.py:782
+msgid "Content"
+msgstr ""
+
+#: ./src/pyams_content/root/zmi/templates/dashboard.pt:6
 msgid "Your contents dashboard"
 msgstr ""
 
-#: ./src/pyams_content/root/zmi/__init__.py:780
-msgid "Content"
-msgstr ""
-
 #: ./src/pyams_content/root/interfaces/__init__.py:36
 msgid "Site managers"
 msgstr ""
 
 #: ./src/pyams_content/root/interfaces/__init__.py:44
+msgid "Templates managers"
+msgstr ""
+
+#: ./src/pyams_content/root/interfaces/__init__.py:48
 msgid "Operators group"
 msgstr ""
 
-#: ./src/pyams_content/root/interfaces/__init__.py:45
+#: ./src/pyams_content/root/interfaces/__init__.py:49
 msgid "Name of group containing all roles owners"
 msgstr ""
 
@@ -2090,11 +2214,11 @@
 msgid "Shared sites"
 msgstr ""
 
-#: ./src/pyams_content/zmi/viewlet/toplinks/__init__.py:65
+#: ./src/pyams_content/zmi/viewlet/toplinks/__init__.py:66
 msgid "Shared contents"
 msgstr ""
 
-#: ./src/pyams_content/zmi/viewlet/toplinks/__init__.py:85
+#: ./src/pyams_content/zmi/viewlet/toplinks/__init__.py:87
 msgid "My roles"
 msgstr ""
 
@@ -2102,309 +2226,329 @@
 msgid "Create new content"
 msgstr ""
 
+#: ./src/pyams_content/workflow/__init__.py:69
+msgid "Draft"
+msgstr ""
+
+#: ./src/pyams_content/workflow/__init__.py:70
+msgid "Proposed"
+msgstr ""
+
+#: ./src/pyams_content/workflow/__init__.py:71
+msgid "Canceled"
+msgstr ""
+
+#: ./src/pyams_content/workflow/__init__.py:72
+msgid "Refused"
+msgstr ""
+
+#: ./src/pyams_content/workflow/__init__.py:73
+msgid "Published"
+msgstr ""
+
+#: ./src/pyams_content/workflow/__init__.py:74
+msgid "Retiring"
+msgstr ""
+
+#: ./src/pyams_content/workflow/__init__.py:75
+msgid "Retired"
+msgstr ""
+
+#: ./src/pyams_content/workflow/__init__.py:76
+msgid "Archiving"
+msgstr ""
+
+#: ./src/pyams_content/workflow/__init__.py:77
+msgid "Archived"
+msgstr ""
+
+#: ./src/pyams_content/workflow/__init__.py:78
+msgid "Deleted"
+msgstr ""
+
 #: ./src/pyams_content/workflow/__init__.py:83
-msgid "Draft"
+msgid "draft created"
 msgstr ""
 
 #: ./src/pyams_content/workflow/__init__.py:84
-msgid "Proposed"
+msgid "publication requested"
 msgstr ""
 
 #: ./src/pyams_content/workflow/__init__.py:85
-msgid "Canceled"
+msgid "published"
 msgstr ""
 
 #: ./src/pyams_content/workflow/__init__.py:86
-msgid "Refused"
+msgid "retiring requested"
 msgstr ""
 
 #: ./src/pyams_content/workflow/__init__.py:87
-msgid "Published"
+msgid "retired"
 msgstr ""
 
 #: ./src/pyams_content/workflow/__init__.py:88
-msgid "Retiring"
+msgid "archiving requested"
 msgstr ""
 
 #: ./src/pyams_content/workflow/__init__.py:89
-msgid "Retired"
-msgstr ""
-
-#: ./src/pyams_content/workflow/__init__.py:90
-msgid "Archiving"
-msgstr ""
-
-#: ./src/pyams_content/workflow/__init__.py:91
-msgid "Archived"
-msgstr ""
-
-#: ./src/pyams_content/workflow/__init__.py:92
-msgid "Deleted"
-msgstr ""
-
-#: ./src/pyams_content/workflow/__init__.py:94
-msgid "draft created"
-msgstr ""
-
-#: ./src/pyams_content/workflow/__init__.py:95
-msgid "publication requested"
-msgstr ""
-
-#: ./src/pyams_content/workflow/__init__.py:96
-msgid "published"
-msgstr ""
-
-#: ./src/pyams_content/workflow/__init__.py:97
-msgid "retiring requested"
-msgstr ""
-
-#: ./src/pyams_content/workflow/__init__.py:98
-msgid "retired"
-msgstr ""
-
-#: ./src/pyams_content/workflow/__init__.py:99
-msgid "archiving requested"
-msgstr ""
-
-#: ./src/pyams_content/workflow/__init__.py:100
 msgid "archived"
 msgstr ""
 
-#: ./src/pyams_content/workflow/__init__.py:223
+#: ./src/pyams_content/workflow/__init__.py:271
 msgid "Initialize"
 msgstr ""
 
-#: ./src/pyams_content/workflow/__init__.py:226
+#: ./src/pyams_content/workflow/__init__.py:274
 msgid "Draft creation"
 msgstr ""
 
-#: ./src/pyams_content/workflow/__init__.py:229
-#: ./src/pyams_content/workflow/__init__.py:244
+#: ./src/pyams_content/workflow/__init__.py:277
+#: ./src/pyams_content/workflow/__init__.py:292
 msgid "Propose publication"
 msgstr ""
 
-#: ./src/pyams_content/workflow/__init__.py:236
-#: ./src/pyams_content/workflow/__init__.py:251
+#: ./src/pyams_content/workflow/__init__.py:284
+#: ./src/pyams_content/workflow/__init__.py:299
 msgid "Publication request"
 msgstr ""
 
-#: ./src/pyams_content/workflow/__init__.py:237
-#: ./src/pyams_content/workflow/__init__.py:252
-#: ./src/pyams_content/workflow/__init__.py:338
-#: ./src/pyams_content/workflow/__init__.py:378
+#: ./src/pyams_content/workflow/__init__.py:285
+#: ./src/pyams_content/workflow/__init__.py:300
+#: ./src/pyams_content/workflow/__init__.py:386
+#: ./src/pyams_content/workflow/__init__.py:433
 msgid ""
 "content managers authorized to take charge of your content are going to be "
 "notified of your request."
 msgstr ""
 
-#: ./src/pyams_content/workflow/__init__.py:240
-#, python-format
-msgid "A publication request has been submitted for content « {0} »"
-msgstr ""
-
-#: ./src/pyams_content/workflow/__init__.py:255
-#, python-format
-msgid "A new publication request has been submitted for content « {0} »"
-msgstr ""
-
-#: ./src/pyams_content/workflow/__init__.py:266
-msgid "Publication request canceled"
-msgstr ""
-
-#: ./src/pyams_content/workflow/__init__.py:268
-#, python-format
-msgid "The publication request for content « {0} » has been cancelled"
-msgstr ""
-
-#: ./src/pyams_content/workflow/__init__.py:272
-msgid "Reset canceled publication to draft"
-msgstr ""
-
-#: ./src/pyams_content/workflow/__init__.py:276
-#: ./src/pyams_content/workflow/__init__.py:305
-msgid "State reset to 'draft' (automatic)"
-msgstr ""
-
-#: ./src/pyams_content/workflow/__init__.py:280
-msgid "Reset canceled publication to retired"
-msgstr ""
-
-#: ./src/pyams_content/workflow/__init__.py:284
-msgid "State reset to 'retired' (automatic)"
-msgstr ""
-
 #: ./src/pyams_content/workflow/__init__.py:288
-msgid "Refuse publication"
-msgstr ""
-
-#: ./src/pyams_content/workflow/__init__.py:295
-msgid "Publication refused"
-msgstr ""
-
-#: ./src/pyams_content/workflow/__init__.py:297
+#, python-format
+msgid "A publication request has been submitted for content « {0} »"
+msgstr ""
+
+#: ./src/pyams_content/workflow/__init__.py:303
+#, python-format
+msgid "A new publication request has been submitted for content « {0} »"
+msgstr ""
+
+#: ./src/pyams_content/workflow/__init__.py:314
+msgid "Publication request canceled"
+msgstr ""
+
+#: ./src/pyams_content/workflow/__init__.py:316
 #, python-format
-msgid "The publication request for content « {0} » has been refused"
-msgstr ""
-
-#: ./src/pyams_content/workflow/__init__.py:301
-msgid "Reset refused publication to draft"
-msgstr ""
-
-#: ./src/pyams_content/workflow/__init__.py:309
-msgid "Reset refused publication to retired"
-msgstr ""
-
-#: ./src/pyams_content/workflow/__init__.py:313
-msgid "State reset to 'refused' (automatic)"
-msgstr ""
-
-#: ./src/pyams_content/workflow/__init__.py:325
-msgid "Content published"
-msgstr ""
-
-#: ./src/pyams_content/workflow/__init__.py:327
-#, python-format
-msgid "The content « {0} » has been published"
-msgstr ""
-
-#: ./src/pyams_content/workflow/__init__.py:331
-msgid "Request retiring"
-msgstr ""
-
-#: ./src/pyams_content/workflow/__init__.py:337
-msgid "Retire request"
-msgstr ""
-
-#: ./src/pyams_content/workflow/__init__.py:341
-#, python-format
-msgid "A retire request has been submitted for content « {0} »"
+msgid "The publication request for content « {0} » has been cancelled"
+msgstr ""
+
+#: ./src/pyams_content/workflow/__init__.py:320
+msgid "Reset canceled publication to draft"
+msgstr ""
+
+#: ./src/pyams_content/workflow/__init__.py:324
+#: ./src/pyams_content/workflow/__init__.py:353
+msgid "State reset to 'draft' (automatic)"
+msgstr ""
+
+#: ./src/pyams_content/workflow/__init__.py:328
+msgid "Reset canceled publication to retired"
+msgstr ""
+
+#: ./src/pyams_content/workflow/__init__.py:332
+msgid "State reset to 'retired' (automatic)"
+msgstr ""
+
+#: ./src/pyams_content/workflow/__init__.py:336
+msgid "Refuse publication"
+msgstr ""
+
+#: ./src/pyams_content/workflow/__init__.py:343
+msgid "Publication refused"
 msgstr ""
 
 #: ./src/pyams_content/workflow/__init__.py:345
-msgid "Cancel retiring request"
-msgstr ""
-
-#: ./src/pyams_content/workflow/__init__.py:352
-msgid "Retire request canceled"
-msgstr ""
-
-#: ./src/pyams_content/workflow/__init__.py:354
 #, python-format
-msgid "The retiring request for content « {0} » has been cancelled"
-msgstr ""
-
-#: ./src/pyams_content/workflow/__init__.py:358
-msgid "Retire content"
-msgstr ""
-
-#: ./src/pyams_content/workflow/__init__.py:365
-msgid "Content retired"
-msgstr ""
-
-#: ./src/pyams_content/workflow/__init__.py:367
+msgid "The publication request for content « {0} » has been refused"
+msgstr ""
+
+#: ./src/pyams_content/workflow/__init__.py:349
+msgid "Reset refused publication to draft"
+msgstr ""
+
+#: ./src/pyams_content/workflow/__init__.py:357
+msgid "Reset refused publication to retired"
+msgstr ""
+
+#: ./src/pyams_content/workflow/__init__.py:361
+msgid "State reset to 'refused' (automatic)"
+msgstr ""
+
+#: ./src/pyams_content/workflow/__init__.py:373
+msgid "Content published"
+msgstr ""
+
+#: ./src/pyams_content/workflow/__init__.py:375
 #, python-format
-msgid "The content « {0} » has been retired"
-msgstr ""
-
-#: ./src/pyams_content/workflow/__init__.py:377
-msgid "Archive request"
-msgstr ""
-
-#: ./src/pyams_content/workflow/__init__.py:381
-#, python-format
-msgid "An archive request has been submitted for content « {0} »"
+msgid "The content « {0} » has been published"
+msgstr ""
+
+#: ./src/pyams_content/workflow/__init__.py:379
+msgid "Request retiring"
 msgstr ""
 
 #: ./src/pyams_content/workflow/__init__.py:385
-msgid "Cancel archiving request"
-msgstr ""
-
-#: ./src/pyams_content/workflow/__init__.py:392
-msgid "Archive request canceled"
-msgstr ""
-
-#: ./src/pyams_content/workflow/__init__.py:394
+msgid "Retire request"
+msgstr ""
+
+#: ./src/pyams_content/workflow/__init__.py:389
 #, python-format
-msgid "The archive request for content « {0} » has been cancelled"
-msgstr ""
-
-#: ./src/pyams_content/workflow/__init__.py:398
-msgid "Archive content"
-msgstr ""
-
-#: ./src/pyams_content/workflow/__init__.py:406
-msgid "Content archived"
-msgstr ""
-
-#: ./src/pyams_content/workflow/__init__.py:408
+msgid "A retire request has been submitted for content « {0} »"
+msgstr ""
+
+#: ./src/pyams_content/workflow/__init__.py:393
+msgid "Retired content"
+msgstr ""
+
+#: ./src/pyams_content/workflow/__init__.py:397
+msgid "Content retired after passed expiration date"
+msgstr ""
+
+#: ./src/pyams_content/workflow/__init__.py:400
+msgid "Cancel retiring request"
+msgstr ""
+
+#: ./src/pyams_content/workflow/__init__.py:407
+msgid "Retire request canceled"
+msgstr ""
+
+#: ./src/pyams_content/workflow/__init__.py:409
 #, python-format
-msgid "The content « {0} » has been archived"
-msgstr ""
-
-#: ./src/pyams_content/workflow/__init__.py:412
-msgid "Archive published content"
-msgstr ""
-
-#: ./src/pyams_content/workflow/__init__.py:416
-#: ./src/pyams_content/workflow/__init__.py:424
-#: ./src/pyams_content/workflow/__init__.py:432
-msgid "Content archived after version publication"
+msgid "The retiring request for content « {0} » has been cancelled"
+msgstr ""
+
+#: ./src/pyams_content/workflow/__init__.py:413
+msgid "Retire content"
 msgstr ""
 
 #: ./src/pyams_content/workflow/__init__.py:420
+msgid "Content retired"
+msgstr ""
+
+#: ./src/pyams_content/workflow/__init__.py:422
+#, python-format
+msgid "The content « {0} » has been retired"
+msgstr ""
+
+#: ./src/pyams_content/workflow/__init__.py:432
+msgid "Archive request"
+msgstr ""
+
+#: ./src/pyams_content/workflow/__init__.py:436
+#, python-format
+msgid "An archive request has been submitted for content « {0} »"
+msgstr ""
+
+#: ./src/pyams_content/workflow/__init__.py:440
+msgid "Cancel archiving request"
+msgstr ""
+
+#: ./src/pyams_content/workflow/__init__.py:447
+msgid "Archive request canceled"
+msgstr ""
+
+#: ./src/pyams_content/workflow/__init__.py:449
+#, python-format
+msgid "The archive request for content « {0} » has been cancelled"
+msgstr ""
+
+#: ./src/pyams_content/workflow/__init__.py:453
+msgid "Archive content"
+msgstr ""
+
+#: ./src/pyams_content/workflow/__init__.py:461
+msgid "Content archived"
+msgstr ""
+
+#: ./src/pyams_content/workflow/__init__.py:463
+#, python-format
+msgid "The content « {0} » has been archived"
+msgstr ""
+
+#: ./src/pyams_content/workflow/__init__.py:467
+msgid "Archive published content"
+msgstr ""
+
+#: ./src/pyams_content/workflow/__init__.py:471
+#: ./src/pyams_content/workflow/__init__.py:479
+#: ./src/pyams_content/workflow/__init__.py:487
+msgid "Content archived after version publication"
+msgstr ""
+
+#: ./src/pyams_content/workflow/__init__.py:475
 msgid "Archive retiring content"
 msgstr ""
 
-#: ./src/pyams_content/workflow/__init__.py:428
+#: ./src/pyams_content/workflow/__init__.py:483
 msgid "Archive retired content"
 msgstr ""
 
-#: ./src/pyams_content/workflow/__init__.py:444
-#: ./src/pyams_content/workflow/__init__.py:456
-#: ./src/pyams_content/workflow/__init__.py:468
-#: ./src/pyams_content/workflow/__init__.py:480
-#: ./src/pyams_content/workflow/__init__.py:492
+#: ./src/pyams_content/workflow/__init__.py:499
+#: ./src/pyams_content/workflow/__init__.py:511
+#: ./src/pyams_content/workflow/__init__.py:523
+#: ./src/pyams_content/workflow/__init__.py:535
+#: ./src/pyams_content/workflow/__init__.py:547
 msgid "New version created"
 msgstr ""
 
-#: ./src/pyams_content/workflow/__init__.py:504
+#: ./src/pyams_content/workflow/__init__.py:559
 msgid "Version deleted"
 msgstr ""
 
-#: ./src/pyams_content/workflow/__init__.py:572
+#: ./src/pyams_content/workflow/__init__.py:628
 msgid "publication refused"
 msgstr ""
 
-#: ./src/pyams_content/workflow/__init__.py:570
+#: ./src/pyams_content/workflow/__init__.py:626
 msgid "new version created"
 msgstr ""
 
-#: ./src/pyams_content/workflow/__init__.py:193
+#: ./src/pyams_content/workflow/__init__.py:241
 #, python-format
 msgid "Published version {0}"
 msgstr ""
 
-#: ./src/pyams_content/interfaces/__init__.py:66
+#: ./src/pyams_content/workflow/task.py:57
+msgid "Automatic contents withdrawal:\n"
+msgstr ""
+
+#: ./src/pyams_content/workflow/zmi/task.py:43
+msgid "Add content archiver task..."
+msgstr ""
+
+#: ./src/pyams_content/workflow/zmi/task.py:54
+msgid "Add automatic content archiver"
+msgstr ""
+
+#: ./src/pyams_content/interfaces/__init__.py:95
 msgid "Unique key"
 msgstr ""
 
-#: ./src/pyams_content/interfaces/__init__.py:67
+#: ./src/pyams_content/interfaces/__init__.py:96
 msgid "WARNING: this key can't be modified after creation!!!"
 msgstr ""
 
-#: ./src/pyams_content/interfaces/__init__.py:71
+#: ./src/pyams_content/interfaces/__init__.py:100
 msgid "Visible label used to display content"
 msgstr ""
 
-#: ./src/pyams_content/interfaces/__init__.py:74
+#: ./src/pyams_content/interfaces/__init__.py:103
 msgid "Short name"
 msgstr ""
 
-#: ./src/pyams_content/interfaces/__init__.py:75
+#: ./src/pyams_content/interfaces/__init__.py:104
 msgid "Short name used in breadcrumbs"
 msgstr ""
 
-#: ./src/pyams_content/interfaces/__init__.py:86
+#: ./src/pyams_content/interfaces/__init__.py:115
 msgid "Modification date"
 msgstr ""
 
--- a/src/pyams_content/skin/resources/js/pyams_content.js	Mon Sep 11 14:54:30 2017 +0200
+++ b/src/pyams_content/skin/resources/js/pyams_content.js	Mon Sep 11 15:10:50 2017 +0200
@@ -18,11 +18,21 @@
 			},
 
 			getImagesList: function(callback) {
-				return MyAMS.ajax.post('get-images-list.json', {}, callback);
+				var form = $(document.activeElement).parents('form');
+				if (form.exists()) {
+					var base = form.attr('data-ams-form-handler') || form.attr('action');
+					var target = base.substr(0, base.lastIndexOf('/') + 1);
+					return MyAMS.ajax.post(target + 'get-images-list.json', {}, callback);
+				}
 			},
 
 			getLinksList: function(callback) {
-				return MyAMS.ajax.post('get-links-list.json', {}, callback);
+				var form = $(document.activeElement).parents('form');
+				if (form.exists()) {
+					var base = form.attr('data-ams-form-handler') || form.attr('action');
+					var target = base.substr(0, base.lastIndexOf('/')+1);
+					return MyAMS.ajax.post(target + 'get-links-list.json', {}, callback);
+				}
 			}
 		},
 
@@ -49,103 +59,27 @@
 		},
 
 		/**
-		 * External files management
-		 */
-		extfiles: {
-
-			refresh: function(options) {
-				if (typeof(options) === 'string') {
-					options = JSON.parse(options);
-				}
-				var select = $('select[name="form.widgets.files:list"]');
-				var plugin = select.data('select2');
-				$('<option></option>').attr('value', options.new_file.id)
-									  .attr('selected', 'selected')
-									  .text(options.new_file.text)
-									  .appendTo(select);
-				var data = select.select2('data');
-				data.push(options.new_file);
-				select.select2('data', data);
-				plugin.results.empty();
-				plugin.opts.populateResults.call(plugin, plugin.results, options.files, {term: ''});
-			},
-
-			refreshContainer: function(changes) {
-				var para = $('tr[data-ams-element-name="' + changes.object_name + '"]');
-				var counter = $('span.count', $('div.action.extfiles', para));
-				if (changes.nb_files > 0) {
-					counter.text('(' + changes.nb_files + ')');
-				} else {
-					counter.text('');
-				}
-			}
-		},
-
-
-		/**
-		 * Links management
-		 */
-		links: {
-
-			init: function() {
-
-				function initElements(data, status) {
-					var plugin = select.data('select2');
-					plugin.results.empty();
-					plugin.opts.populateResults.call(plugin, plugin.results, data, {term: ''});
-				}
-
-				var select = $(this);
-				MyAMS.ajax.post('get-links.json', {
-					keyFieldName: 'id',
-					valueFieldName: 'text'
-				}, initElements);
-			},
-
-			refresh: function(options) {
-				if (typeof(options) === 'string') {
-					options = JSON.parse(options);
-				}
-				var select = $('input[name="form.widgets.link"], select[name="form.widgets.links:list"]');
-				var plugin = select.data('select2');
-				if (select.attr('type') === 'select') {
-					$('<option></option>').attr('value', options.new_link.id)
-										  .attr('selected', 'selected')
-										  .text(options.new_link.text)
-										  .appendTo(select);
-				}
-				var data;
-				if (select.prop('multiple')) {
-					data = select.select2('data');
-					data.push(options.new_link);
-					select.select2('data', data);
-					plugin.results.empty();
-					plugin.opts.populateResults.call(plugin, plugin.results, options.links, {term: ''});
-				} else {
-					select.select2('data', [options.new_link]);
-					plugin.results.empty();
-					plugin.opts.populateResults.call(plugin, plugin.results, options.links, {term: ''});
-					select.val(options.new_link.id);
-				}
-			},
-
-			refreshContainer: function(changes) {
-				var para = $('tr[data-ams-element-name="' + changes.object_name + '"]');
-				var counter = $('span.count', $('div.action.links', para));
-				if (changes.nb_links > 0) {
-					counter.text('(' + changes.nb_links + ')');
-				} else {
-					counter.text('');
-				}
-			}
-		},
-
-
-		/**
 		 * Galleries management
 		 */
 		galleries: {
 
+			switchImageVisibility: function(element) {
+				return function() {
+					var source = $(this);
+					var image = source.parents('.image');
+					var gallery = image.parents('.gallery');
+					MyAMS.ajax.post(gallery.data('ams-location') + '/set-image-visibility.json',
+									{object_name: image.data('ams-element-name')},
+									function(result, status) {
+										if (result.visible) {
+											$('i', source).attr('class', 'fa fa-fw fa-eye');
+										} else {
+											$('i', source).attr('class', 'fa fa-fw fa-eye-slash text-danger');
+										}
+									});
+				};
+			},
+
 			refresh: function(options) {
 				if (typeof(options) === 'string') {
 					options = JSON.parse(options);
@@ -264,14 +198,7 @@
 			refreshParagraph: function(changes) {
 				var container = $('table[id="paragraphs_list"]');
 				var para = $('tr[data-ams-element-name="' + changes.object_name + '"]', container);
-				if (changes.visible) {
-					$('i', $('td.switcher', para)).removeClass('fa-eye-slash text-danger')
-												  .addClass('fa-eye');
-				} else {
-					$('i', $('td.switcher', para)).removeClass('fa-eye')
-												  .addClass('fa-eye-slash text-danger');
-				}
-				$('span.title', para).text(changes.title || '--');
+				$('span.title', para).html(changes.title || ' - - - - - - - -');
 			},
 
 			switchEditor: function(element) {
@@ -346,6 +273,57 @@
 
 
 		/**
+		 * Associations management
+		 */
+		associations: {
+
+			afterUpdateCallback: function(options) {
+				// Reload widget
+				var widget = $('#' + options.parent).parent('.ams-widget');
+				widget.replaceWith($(options.table));
+				widget = $('#' + options.parent).parent('.ams-widget');
+				MyAMS.initContent(widget);
+				// Check fieldset state
+				var legend = widget.siblings('legend');
+				if (legend.parents('fieldset:first').hasClass('switched')) {
+					legend.click();
+				}
+			},
+
+			switchVisibility: function (element) {
+				return function () {
+					var source = $(this);
+					var association = source.parents('tr');
+					var container = association.parents('table');
+					MyAMS.ajax.post(container.data('ams-location') + '/set-association-visibility.json',
+						{object_name: association.data('ams-element-name')},
+						function (result, status) {
+							if (result.visible) {
+								$('i', source).attr('class', 'fa fa-fw fa-eye');
+							} else {
+								$('i', source).attr('class', 'fa fa-fw fa-eye-slash text-danger');
+							}
+						});
+				};
+			}
+		},
+
+
+		/**
+		 * Illustration management
+		 */
+		illustration: {
+
+			afterUpdateCallback: function(options) {
+				var parent = $('#' + options.parent);
+				parent.replaceWith($(options.form));
+				parent = $('#' + options.parent);
+				MyAMS.initContent(parent);
+			}
+		},
+
+
+		/**
 		 * Themes management
 		 */
 		themes: {
@@ -475,15 +453,6 @@
 			case 'paragraph':
 				PyAMS_content.paragraphs.refreshParagraph(settings);
 				break;
-			case 'extfiles_container':
-				PyAMS_content.extfiles.refreshContainer(settings);
-				break;
-			case 'links_container':
-				PyAMS_content.links.refreshContainer(settings);
-				break;
-			case 'galleries_container':
-				PyAMS_content.galleries.refreshContainer(settings);
-				break;
 			case 'review_comments':
 				PyAMS_content.review.updateComments();
 				break;
--- a/src/pyams_content/skin/resources/js/pyams_content.min.js	Mon Sep 11 14:54:30 2017 +0200
+++ b/src/pyams_content/skin/resources/js/pyams_content.min.js	Mon Sep 11 15:10:50 2017 +0200
@@ -1,1 +1,1 @@
-(function(c,b){var e=b.MyAMS;var d={TinyMCE:{initEditor:function(f){f.image_list=d.TinyMCE.getImagesList;f.link_list=d.TinyMCE.getLinksList;return f},getImagesList:function(f){return e.ajax.post("get-images-list.json",{},f)},getLinksList:function(f){return e.ajax.post("get-links-list.json",{},f)}},profile:{switchFavorite:function(){var g=c(this);var f=g.data("sequence-oid");e.ajax.post("switch-user-favorite.json",{oid:f},function(h,i){if(h.favorite){g.removeClass("fa-star-o").addClass("fa-star")}else{g.removeClass("fa-star").addClass("fa-star-o")}})}},extfiles:{refresh:function(g){if(typeof(g)==="string"){g=JSON.parse(g)}var f=c('select[name="form.widgets.files:list"]');var h=f.data("select2");c("<option></option>").attr("value",g.new_file.id).attr("selected","selected").text(g.new_file.text).appendTo(f);var i=f.select2("data");i.push(g.new_file);f.select2("data",i);h.results.empty();h.opts.populateResults.call(h,h.results,g.files,{term:""})},refreshContainer:function(h){var f=c('tr[data-ams-element-name="'+h.object_name+'"]');var g=c("span.count",c("div.action.extfiles",f));if(h.nb_files>0){g.text("("+h.nb_files+")")}else{g.text("")}}},links:{init:function(){function g(j,h){var i=f.data("select2");i.results.empty();i.opts.populateResults.call(i,i.results,j,{term:""})}var f=c(this);e.ajax.post("get-links.json",{keyFieldName:"id",valueFieldName:"text"},g)},refresh:function(g){if(typeof(g)==="string"){g=JSON.parse(g)}var f=c('input[name="form.widgets.link"], select[name="form.widgets.links:list"]');var h=f.data("select2");if(f.attr("type")==="select"){c("<option></option>").attr("value",g.new_link.id).attr("selected","selected").text(g.new_link.text).appendTo(f)}var i;if(f.prop("multiple")){i=f.select2("data");i.push(g.new_link);f.select2("data",i);h.results.empty();h.opts.populateResults.call(h,h.results,g.links,{term:""})}else{f.select2("data",[g.new_link]);h.results.empty();h.opts.populateResults.call(h,h.results,g.links,{term:""});f.val(g.new_link.id)}},refreshContainer:function(h){var f=c('tr[data-ams-element-name="'+h.object_name+'"]');var g=c("span.count",c("div.action.links",f));if(h.nb_links>0){g.text("("+h.nb_links+")")}else{g.text("")}}},galleries:{refresh:function(g){if(typeof(g)==="string"){g=JSON.parse(g)}var f=c('select[name="form.widgets.galleries:list"]');var h=f.data("select2");c("<option></option>").attr("value",g.new_gallery.id).attr("selected","selected").text(g.new_gallery.text).appendTo(f);var i=f.select2("data");i.push(g.new_gallery);f.select2("data",i);h.results.empty();h.opts.populateResults.call(h,h.results,g.galleries,{term:""})},setOrder:function(h,i){if(i&&i.item.hasClass("already-dropped")){return}var f=i.item.parents(".gallery");var g=c(".image",f).listattr("data-ams-element-name");e.ajax.post(f.data("ams-location")+"/set-images-order.json",{images:JSON.stringify(g)})},removeFile:function(f){return function(){var g=c(this);e.skin.bigBox({title:e.i18n.WARNING,content:'<i class="text-danger fa fa-2x fa-bell shake animated"></i>&nbsp; '+e.i18n.DELETE_WARNING,buttons:e.i18n.BTN_OK_CANCEL},function(k){if(k===e.i18n.BTN_OK){var j=g.parents(".gallery");var i=j.data("ams-location");var l=g.parents(".image");var h=l.data("ams-element-name");e.ajax.post(i+"/delete-element.json",{object_name:h},function(m,n){l.remove()})}})}},refreshContainer:function(h){var f=c('tr[data-ams-element-name="'+h.object_name+'"]');var g=c("span.count",c("div.action.galleries",f));if(h.nb_galleries>0){g.text("("+h.nb_galleries+")")}else{g.text("")}}},imgmap:{init:function(){var f=c(this);e.ajax.check(c.fn.canvasAreaDraw,"/--static--/pyams_content/js/jquery-canvasAreaDraw"+e.devext+".js",function(){f.canvasAreaDraw({imageUrl:f.data("ams-image-url")})})},initSummary:function(){var f=c(this);e.ajax.check(c.fn.mapster,"/--static--/pyams_content/js/jquery-imagemapster-1.2.10"+e.devext+".js",function(){f.mapster({fillColor:"ff0000",fillOpacity:0.35,selected:true,highlight:true,staticState:true})})}},paragraphs:{switchVisibility:function(f){return function(){var i=c(this);var g=i.parents("tr");var h=g.parents("table");e.ajax.post(h.data("ams-location")+"/set-paragraph-visibility.json",{object_name:g.data("ams-element-name")},function(j,k){if(j.visible){c("i",i).attr("class","fa fa-fw fa-eye")}else{c("i",i).attr("class","fa fa-fw fa-eye-slash text-danger")}})}},refreshParagraph:function(h){var g=c('table[id="paragraphs_list"]');var f=c('tr[data-ams-element-name="'+h.object_name+'"]',g);if(h.visible){c("i",c("td.switcher",f)).removeClass("fa-eye-slash text-danger").addClass("fa-eye")}else{c("i",c("td.switcher",f)).removeClass("fa-eye").addClass("fa-eye-slash text-danger")}c("span.title",f).text(h.title||"--")},switchEditor:function(h){var k=c(this);var j=c("i",k);var l=k.parents("td");var i=c(".editor",l);var f=k.parents("tr");if(j.hasClass("fa-plus-square-o")){var g=f.parents("table");i.html('<h1 class="loading"><i class="fa fa-2x fa-gear fa-spin"></i></h1>');e.ajax.post(g.data("ams-location")+"/get-paragraph-editor.json",{object_name:f.data("ams-element-name")},function(m){i.html(m);if(m){e.initContent(i);j.removeClass("fa-plus-square-o").addClass("fa-minus-square-o");f.data("ams-disabled-handlers",true)}})}else{e.skin.cleanContainer(i);i.empty();j.removeClass("fa-minus-square-o").addClass("fa-plus-square-o");f.removeData("ams-disabled-handlers")}},switchAllEditors:function(g){var i=c(this);var h=c("i",i);var f=i.parents("table");if(h.hasClass("fa-plus-square-o")){h.removeClass("fa-plus-square-o").addClass("fa-cog fa-spin");e.ajax.post(f.data("ams-location")+"/get-paragraphs-editors.json",{},function(k){for(var l in k){if(!k.hasOwnProperty(l)){continue}var j=c('tr[data-ams-element-name="'+l+'"]',f);var m=c(".editor",j);if(m.is(":empty")){m.html(k[l]);e.initContent(m)}c(".fa-plus-square-o",j).removeClass("fa-plus-square-o").addClass("fa-minus-square-o");j.data("ams-disabled-handlers",true)}if(!c("i.fa-plus-square-o",c("tbody",f)).exists()){h.removeClass("fa-cog fa-spin").addClass("fa-minus-square-o")}})}else{c(".editor",f).each(function(){e.skin.cleanContainer(c(this));c(this).empty()});c(".fa-minus-square-o",f).removeClass("fa-minus-square-o").addClass("fa-plus-square-o");c("tr",f).removeData("ams-disabled-handlers")}}},themes:{initExtracts:function(h){var g=c('select[name="form.widgets.thesaurus_name:list"]',h);var f=g.val();var j=c('select[name="form.widgets.extract_name:list"]',h);var i=j.val();if(f){e.jsonrpc.post("getExtracts",{thesaurus_name:f},{url:"/api/thesaurus/json"},function(k){j.empty();c(k.result).each(function(){c("<option></option>").attr("value",this.id).attr("selected",this.id===i).text(this.text).appendTo(j)})})}j.attr("data-ams-events-handlers",'{"select2-open": "PyAMS_content.themes.getExtracts"}')},getExtracts:function(i){var f=c(i.currentTarget);var h=f.parents("form");var g=c('select[name="form.widgets.thesaurus_name:list"]',h).val();if(g){e.jsonrpc.post("getExtracts",{thesaurus_name:g},{url:"/api/thesaurus/json"},function(l){var k=c('select[name="form.widgets.extract_name:list"]',h);var j=k.data("select2");j.results.empty();j.opts.populateResults.call(j,j.results,l.result,{term:""})})}}},review:{timer:null,timer_duration:{general:30000,chat:5000},initComments:function(g){var f=c(".chat-body",g);f.animate({scrollTop:f[0].scrollHeight},1000);clearInterval(d.review.timer);d.review.timer=setInterval(d.review.updateComments,d.review.timer_duration.chat);e.skin.registerCleanCallback(d.review.cleanCommentsCallback)},cleanCommentsCallback:function(){clearInterval(d.review.timer);d.review.timer=setInterval(d.review.updateComments,d.review.timer_duration.general)},updateComments:function(){var f=c(".badge",'nav a[href="#review-comments.html"]'),h;var g=c(".chat-body",".widget-body");if(g.exists()){h=c(".message",g).length}else{h=parseInt(f.text())}e.ajax.post("get-last-review-comments.json",{count:h},function(i){if(g.exists()){f.removeClass("bg-color-danger").addClass("bg-color-info")}if(h!==i.count){f.text(i.count).removeClass("hidden");if(g.exists()){c(".messages",g).append(i.content);g.animate({scrollTop:g[0].scrollHeight},1000)}if(!g.exists()){f.removeClass("bg-color-info").addClass("bg-color-danger").animate({padding:"3px 12px 2px","margin-right":"9px"},"slow",function(){c(this).animate({padding:"3px 6px 2px","margin-right":"15px"},"slow")})}}})},initCommentData:function(f){var g=c(".chat-body",".widget-body");return{count:c(".message",g).length}},addCommentCallback:function(g){var h=c(this);var i=h.parents(".widget-body");c(".messages",i).append(g.content);c('textarea[name="comment"]',h).val("");var f=c(".chat-body",i);f.animate({scrollTop:f[0].scrollHeight},1000);c(".badge",'nav a[href="#review-comments.html"]').text(g.count).removeClass("hidden")}}};b.PyAMS_content=d;c(b.document).on("PyAMS_content.changed_item",function(g,f){switch(f.object_type){case"paragraph":d.paragraphs.refreshParagraph(f);break;case"extfiles_container":d.extfiles.refreshContainer(f);break;case"links_container":d.links.refreshContainer(f);break;case"galleries_container":d.galleries.refreshContainer(f);break;case"review_comments":d.review.updateComments();break}});var a=c(".badge",'nav a[href="#review-comments.html"]');if(a.exists()){d.review.timer=setInterval(d.review.updateComments,d.review.timer_duration.general)}})(jQuery,this);
\ No newline at end of file
+(function(c,b){var e=b.MyAMS;var d={TinyMCE:{initEditor:function(f){f.image_list=d.TinyMCE.getImagesList;f.link_list=d.TinyMCE.getLinksList;return f},getImagesList:function(i){var f=c(document.activeElement).parents("form");if(f.exists()){var g=f.attr("data-ams-form-handler")||f.attr("action");var h=g.substr(0,g.lastIndexOf("/")+1);return e.ajax.post(h+"get-images-list.json",{},i)}},getLinksList:function(i){var f=c(document.activeElement).parents("form");if(f.exists()){var g=f.attr("data-ams-form-handler")||f.attr("action");var h=g.substr(0,g.lastIndexOf("/")+1);return e.ajax.post(h+"get-links-list.json",{},i)}}},profile:{switchFavorite:function(){var g=c(this);var f=g.data("sequence-oid");e.ajax.post("switch-user-favorite.json",{oid:f},function(h,i){if(h.favorite){g.removeClass("fa-star-o").addClass("fa-star")}else{g.removeClass("fa-star").addClass("fa-star-o")}})}},galleries:{switchImageVisibility:function(f){return function(){var h=c(this);var i=h.parents(".image");var g=i.parents(".gallery");e.ajax.post(g.data("ams-location")+"/set-image-visibility.json",{object_name:i.data("ams-element-name")},function(j,k){if(j.visible){c("i",h).attr("class","fa fa-fw fa-eye")}else{c("i",h).attr("class","fa fa-fw fa-eye-slash text-danger")}})}},refresh:function(g){if(typeof(g)==="string"){g=JSON.parse(g)}var f=c('select[name="form.widgets.galleries:list"]');var h=f.data("select2");c("<option></option>").attr("value",g.new_gallery.id).attr("selected","selected").text(g.new_gallery.text).appendTo(f);var i=f.select2("data");i.push(g.new_gallery);f.select2("data",i);h.results.empty();h.opts.populateResults.call(h,h.results,g.galleries,{term:""})},setOrder:function(h,i){if(i&&i.item.hasClass("already-dropped")){return}var f=i.item.parents(".gallery");var g=c(".image",f).listattr("data-ams-element-name");e.ajax.post(f.data("ams-location")+"/set-images-order.json",{images:JSON.stringify(g)})},removeFile:function(f){return function(){var g=c(this);e.skin.bigBox({title:e.i18n.WARNING,content:'<i class="text-danger fa fa-2x fa-bell shake animated"></i>&nbsp; '+e.i18n.DELETE_WARNING,buttons:e.i18n.BTN_OK_CANCEL},function(k){if(k===e.i18n.BTN_OK){var j=g.parents(".gallery");var i=j.data("ams-location");var l=g.parents(".image");var h=l.data("ams-element-name");e.ajax.post(i+"/delete-element.json",{object_name:h},function(m,n){l.remove()})}})}},refreshContainer:function(h){var f=c('tr[data-ams-element-name="'+h.object_name+'"]');var g=c("span.count",c("div.action.galleries",f));if(h.nb_galleries>0){g.text("("+h.nb_galleries+")")}else{g.text("")}}},imgmap:{init:function(){var f=c(this);e.ajax.check(c.fn.canvasAreaDraw,"/--static--/pyams_content/js/jquery-canvasAreaDraw"+e.devext+".js",function(){f.canvasAreaDraw({imageUrl:f.data("ams-image-url")})})},initSummary:function(){var f=c(this);e.ajax.check(c.fn.mapster,"/--static--/pyams_content/js/jquery-imagemapster-1.2.10"+e.devext+".js",function(){f.mapster({fillColor:"ff0000",fillOpacity:0.35,selected:true,highlight:true,staticState:true})})}},paragraphs:{switchVisibility:function(f){return function(){var i=c(this);var g=i.parents("tr");var h=g.parents("table");e.ajax.post(h.data("ams-location")+"/set-paragraph-visibility.json",{object_name:g.data("ams-element-name")},function(j,k){if(j.visible){c("i",i).attr("class","fa fa-fw fa-eye")}else{c("i",i).attr("class","fa fa-fw fa-eye-slash text-danger")}})}},refreshParagraph:function(h){var g=c('table[id="paragraphs_list"]');var f=c('tr[data-ams-element-name="'+h.object_name+'"]',g);c("span.title",f).html(h.title||" - - - - - - - -")},switchEditor:function(h){var k=c(this);var j=c("i",k);var l=k.parents("td");var i=c(".editor",l);var f=k.parents("tr");if(j.hasClass("fa-plus-square-o")){var g=f.parents("table");i.html('<h1 class="loading"><i class="fa fa-2x fa-gear fa-spin"></i></h1>');e.ajax.post(g.data("ams-location")+"/get-paragraph-editor.json",{object_name:f.data("ams-element-name")},function(m){i.html(m);if(m){e.initContent(i);j.removeClass("fa-plus-square-o").addClass("fa-minus-square-o");f.data("ams-disabled-handlers",true)}})}else{e.skin.cleanContainer(i);i.empty();j.removeClass("fa-minus-square-o").addClass("fa-plus-square-o");f.removeData("ams-disabled-handlers")}},switchAllEditors:function(g){var i=c(this);var h=c("i",i);var f=i.parents("table");if(h.hasClass("fa-plus-square-o")){h.removeClass("fa-plus-square-o").addClass("fa-cog fa-spin");e.ajax.post(f.data("ams-location")+"/get-paragraphs-editors.json",{},function(k){for(var l in k){if(!k.hasOwnProperty(l)){continue}var j=c('tr[data-ams-element-name="'+l+'"]',f);var m=c(".editor",j);if(m.is(":empty")){m.html(k[l]);e.initContent(m)}c(".fa-plus-square-o",j).removeClass("fa-plus-square-o").addClass("fa-minus-square-o");j.data("ams-disabled-handlers",true)}if(!c("i.fa-plus-square-o",c("tbody",f)).exists()){h.removeClass("fa-cog fa-spin").addClass("fa-minus-square-o")}})}else{c(".editor",f).each(function(){e.skin.cleanContainer(c(this));c(this).empty()});c(".fa-minus-square-o",f).removeClass("fa-minus-square-o").addClass("fa-plus-square-o");c("tr",f).removeData("ams-disabled-handlers")}}},associations:{afterUpdateCallback:function(f){var h=c("#"+f.parent).parent(".ams-widget");h.replaceWith(c(f.table));h=c("#"+f.parent).parent(".ams-widget");e.initContent(h);var g=h.siblings("legend");if(g.parents("fieldset:first").hasClass("switched")){g.click()}},switchVisibility:function(f){return function(){var i=c(this);var h=i.parents("tr");var g=h.parents("table");e.ajax.post(g.data("ams-location")+"/set-association-visibility.json",{object_name:h.data("ams-element-name")},function(j,k){if(j.visible){c("i",i).attr("class","fa fa-fw fa-eye")}else{c("i",i).attr("class","fa fa-fw fa-eye-slash text-danger")}})}}},illustration:{afterUpdateCallback:function(f){var g=c("#"+f.parent);g.replaceWith(c(f.form));g=c("#"+f.parent);e.initContent(g)}},themes:{initExtracts:function(h){var g=c('select[name="form.widgets.thesaurus_name:list"]',h);var f=g.val();var j=c('select[name="form.widgets.extract_name:list"]',h);var i=j.val();if(f){e.jsonrpc.post("getExtracts",{thesaurus_name:f},{url:"/api/thesaurus/json"},function(k){j.empty();c(k.result).each(function(){c("<option></option>").attr("value",this.id).attr("selected",this.id===i).text(this.text).appendTo(j)})})}j.attr("data-ams-events-handlers",'{"select2-open": "PyAMS_content.themes.getExtracts"}')},getExtracts:function(i){var f=c(i.currentTarget);var h=f.parents("form");var g=c('select[name="form.widgets.thesaurus_name:list"]',h).val();if(g){e.jsonrpc.post("getExtracts",{thesaurus_name:g},{url:"/api/thesaurus/json"},function(l){var k=c('select[name="form.widgets.extract_name:list"]',h);var j=k.data("select2");j.results.empty();j.opts.populateResults.call(j,j.results,l.result,{term:""})})}}},review:{timer:null,timer_duration:{general:30000,chat:5000},initComments:function(g){var f=c(".chat-body",g);f.animate({scrollTop:f[0].scrollHeight},1000);clearInterval(d.review.timer);d.review.timer=setInterval(d.review.updateComments,d.review.timer_duration.chat);e.skin.registerCleanCallback(d.review.cleanCommentsCallback)},cleanCommentsCallback:function(){clearInterval(d.review.timer);d.review.timer=setInterval(d.review.updateComments,d.review.timer_duration.general)},updateComments:function(){var f=c(".badge",'nav a[href="#review-comments.html"]'),h;var g=c(".chat-body",".widget-body");if(g.exists()){h=c(".message",g).length}else{h=parseInt(f.text())}e.ajax.post("get-last-review-comments.json",{count:h},function(i){if(g.exists()){f.removeClass("bg-color-danger").addClass("bg-color-info")}if(h!==i.count){f.text(i.count).removeClass("hidden");if(g.exists()){c(".messages",g).append(i.content);g.animate({scrollTop:g[0].scrollHeight},1000)}if(!g.exists()){f.removeClass("bg-color-info").addClass("bg-color-danger").animate({padding:"3px 12px 2px","margin-right":"9px"},"slow",function(){c(this).animate({padding:"3px 6px 2px","margin-right":"15px"},"slow")})}}})},initCommentData:function(f){var g=c(".chat-body",".widget-body");return{count:c(".message",g).length}},addCommentCallback:function(g){var h=c(this);var i=h.parents(".widget-body");c(".messages",i).append(g.content);c('textarea[name="comment"]',h).val("");var f=c(".chat-body",i);f.animate({scrollTop:f[0].scrollHeight},1000);c(".badge",'nav a[href="#review-comments.html"]').text(g.count).removeClass("hidden")}}};b.PyAMS_content=d;c(b.document).on("PyAMS_content.changed_item",function(g,f){switch(f.object_type){case"paragraph":d.paragraphs.refreshParagraph(f);break;case"review_comments":d.review.updateComments();break}});var a=c(".badge",'nav a[href="#review-comments.html"]');if(a.exists()){d.review.timer=setInterval(d.review.updateComments,d.review.timer_duration.general)}})(jQuery,this);
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_content/workflow/zmi/__init__.py	Mon Sep 11 15:10:50 2017 +0200
@@ -0,0 +1,20 @@
+#
+# Copyright (c) 2008-2015 Thierry Florac <tflorac AT ulthar.net>
+# All Rights Reserved.
+#
+# This software is subject to the provisions of the Zope Public License,
+# Version 2.1 (ZPL).  A copy of the ZPL should accompany this distribution.
+# THIS SOFTWARE IS PROVIDED "AS IS" AND ANY AND ALL EXPRESS OR IMPLIED
+# WARRANTIES ARE DISCLAIMED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+# WARRANTIES OF TITLE, MERCHANTABILITY, AGAINST INFRINGEMENT, AND FITNESS
+# FOR A PARTICULAR PURPOSE.
+#
+
+__docformat__ = 'restructuredtext'
+
+
+# import standard library
+
+# import interfaces
+
+# import packages