Version 0.1.7 0.1.7
authorThierry Florac <thierry.florac@onf.fr>
Tue, 19 Sep 2017 11:38:25 +0200
changeset 172 8a14864b8429
parent 171 13db231ca918
child 173 fd3b8d4c3168
Version 0.1.7
buildout.cfg
docs/HISTORY.txt
setup.py
src/pyams_content.egg-info/PKG-INFO
src/pyams_content.egg-info/SOURCES.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
--- a/buildout.cfg	Tue Sep 19 11:12:03 2017 +0200
+++ b/buildout.cfg	Tue Sep 19 11:38:25 2017 +0200
@@ -92,4 +92,4 @@
 eggs = pyams_content [test]
 
 [versions]
-pyams_content = 0.1.6
+pyams_content = 0.1.7
--- a/docs/HISTORY.txt	Tue Sep 19 11:12:03 2017 +0200
+++ b/docs/HISTORY.txt	Tue Sep 19 11:38:25 2017 +0200
@@ -1,6 +1,14 @@
 History
 =======
 
+0.1.7
+-----
+ - added illustration and gallery paragraphs summary
+ - added shared forms
+ - update 'archived' dashboards using new workflow 'archived_states' property
+ - move 'content.workflow' notification handler from PyAMS_notify package
+ - get mode from parent mode in inner illustration edit form
+
 0.1.6
 -----
  - added content archiver task
--- a/setup.py	Tue Sep 19 11:12:03 2017 +0200
+++ b/setup.py	Tue Sep 19 11:38:25 2017 +0200
@@ -22,7 +22,7 @@
 README = os.path.join(DOCS, 'README.txt')
 HISTORY = os.path.join(DOCS, 'HISTORY.txt')
 
-version = '0.1.6'
+version = '0.1.7'
 long_description = open(README).read() + '\n\n' + open(HISTORY).read()
 
 tests_require = []
--- a/src/pyams_content.egg-info/PKG-INFO	Tue Sep 19 11:12:03 2017 +0200
+++ b/src/pyams_content.egg-info/PKG-INFO	Tue Sep 19 11:38:25 2017 +0200
@@ -1,6 +1,6 @@
 Metadata-Version: 1.1
 Name: pyams-content
-Version: 0.1.6
+Version: 0.1.7
 Summary: PyAMS base content interfaces and classes
 Home-page: http://hg.ztfy.org/pyams/pyams_content
 Author: Thierry Florac
@@ -11,6 +11,14 @@
         History
         =======
         
+        0.1.7
+        -----
+         - added illustration and gallery paragraphs summary
+         - added shared forms
+         - update 'archived' dashboards using new workflow 'archived_states' property
+         - move 'content.workflow' notification handler from PyAMS_notify package
+         - get mode from parent mode in inner illustration edit form
+        
         0.1.6
         -----
          - added content archiver task
--- a/src/pyams_content.egg-info/SOURCES.txt	Tue Sep 19 11:12:03 2017 +0200
+++ b/src/pyams_content.egg-info/SOURCES.txt	Tue Sep 19 11:38:25 2017 +0200
@@ -22,7 +22,6 @@
 src/pyams_content/component/association/zmi/__init__.py
 src/pyams_content/component/association/zmi/interfaces.py
 src/pyams_content/component/association/zmi/paragraph.py
-src/pyams_content/component/association/zmi/templates/associations-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
@@ -37,7 +36,6 @@
 src/pyams_content/component/gallery/zmi/file.py
 src/pyams_content/component/gallery/zmi/interfaces.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/renderer-default.pt
 src/pyams_content/component/illustration/__init__.py
@@ -68,7 +66,6 @@
 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/paragraph-title-icon.pt
@@ -149,19 +146,28 @@
 src/pyams_content/shared/common/zmi/templates/wf-retiring-message.pt
 src/pyams_content/shared/common/zmi/templates/wf-transition-info.pt
 src/pyams_content/shared/form/__init__.py
+src/pyams_content/shared/form/field.py
+src/pyams_content/shared/form/handler.py
 src/pyams_content/shared/form/manager.py
 src/pyams_content/shared/form/interfaces/__init__.py
+src/pyams_content/shared/form/zmi/__init__.py
+src/pyams_content/shared/form/zmi/field.py
+src/pyams_content/shared/form/zmi/properties.py
+src/pyams_content/shared/form/zmi/summary.py
 src/pyams_content/shared/imagemap/__init__.py
 src/pyams_content/shared/imagemap/manager.py
+src/pyams_content/shared/imagemap/paragraph.py
 src/pyams_content/shared/imagemap/schema.py
 src/pyams_content/shared/imagemap/interfaces/__init__.py
 src/pyams_content/shared/imagemap/zmi/__init__.py
 src/pyams_content/shared/imagemap/zmi/area.py
 src/pyams_content/shared/imagemap/zmi/container.py
+src/pyams_content/shared/imagemap/zmi/paragraph.py
 src/pyams_content/shared/imagemap/zmi/properties.py
 src/pyams_content/shared/imagemap/zmi/summary.py
 src/pyams_content/shared/imagemap/zmi/widget.py
 src/pyams_content/shared/imagemap/zmi/templates/container.pt
+src/pyams_content/shared/imagemap/zmi/templates/paragraph-summary.pt
 src/pyams_content/shared/imagemap/zmi/templates/summary.pt
 src/pyams_content/shared/imagemap/zmi/templates/widget-input.pt
 src/pyams_content/shared/news/__init__.py
@@ -211,6 +217,7 @@
 src/pyams_content/tests/test_utilsdocstrings.py
 src/pyams_content/workflow/__init__.py
 src/pyams_content/workflow/interfaces.py
+src/pyams_content/workflow/notify.py
 src/pyams_content/workflow/task.py
 src/pyams_content/workflow/zmi/__init__.py
 src/pyams_content/workflow/zmi/task.py
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	Tue Sep 19 11:12:03 2017 +0200
+++ b/src/pyams_content/locales/fr/LC_MESSAGES/pyams_content.po	Tue Sep 19 11:38:25 2017 +0200
@@ -5,7 +5,7 @@
 msgid ""
 msgstr ""
 "Project-Id-Version: PACKAGE 1.0\n"
-"POT-Creation-Date: 2017-09-07 16:29+0200\n"
+"POT-Creation-Date: 2017-09-18 16:01+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,63 +16,63 @@
 "Generated-By: Lingua 3.10.dev0\n"
 "Plural-Forms: nplurals=2; plural=(n > 1);\n"
 
-#: src/pyams_content/__init__.py:36
+#: src/pyams_content/__init__.py:37
 msgid "Manage site root"
 msgstr "Gérer l'ensemble du site"
 
-#: src/pyams_content/__init__.py:38
+#: src/pyams_content/__init__.py:39
 msgid "Manage site"
 msgstr "Gérer un site"
 
-#: src/pyams_content/__init__.py:40
+#: src/pyams_content/__init__.py:41
 msgid "Manage tool"
 msgstr "Gérer un outil"
 
-#: src/pyams_content/__init__.py:42
+#: src/pyams_content/__init__.py:43
 msgid "Create content"
 msgstr "Créer un contenu"
 
-#: src/pyams_content/__init__.py:44
+#: src/pyams_content/__init__.py:45
 msgid "Manage content"
 msgstr "Gérer un contenu"
 
-#: src/pyams_content/__init__.py:46
+#: src/pyams_content/__init__.py:47
 msgid "Comment content"
 msgstr "Commenter un contenu"
 
-#: src/pyams_content/__init__.py:48 src/pyams_content/workflow/__init__.py:365
+#: src/pyams_content/__init__.py:49 src/pyams_content/workflow/__init__.py:368
 msgid "Publish content"
 msgstr "Publier le contenu"
 
-#: src/pyams_content/__init__.py:52
+#: src/pyams_content/__init__.py:53
 msgid "Webmaster (role)"
 msgstr "Webmestre (rôle)"
 
-#: src/pyams_content/__init__.py:61
+#: src/pyams_content/__init__.py:62
 msgid "Pilot (role)"
 msgstr "Pilote (rôle)"
 
-#: src/pyams_content/__init__.py:69
+#: src/pyams_content/__init__.py:70
 msgid "Manager (role)"
 msgstr "Responsable (rôle)"
 
-#: src/pyams_content/__init__.py:76
+#: src/pyams_content/__init__.py:77
 msgid "Owner (role)"
 msgstr "Propriétaire (rôle)"
 
-#: src/pyams_content/__init__.py:81
+#: src/pyams_content/__init__.py:82
 msgid "Contributor (role)"
 msgstr "Contributeur (rôle)"
 
-#: src/pyams_content/__init__.py:89
+#: src/pyams_content/__init__.py:90
 msgid "Reader (role)"
 msgstr "Relecteur (rôle)"
 
-#: src/pyams_content/__init__.py:95
+#: src/pyams_content/__init__.py:96
 msgid "Operator (role)"
 msgstr "Opérateur (rôle)"
 
-#: src/pyams_content/__init__.py:99
+#: src/pyams_content/__init__.py:100
 msgid "Guest user (role)"
 msgstr "Invité (rôle)"
 
@@ -83,7 +83,7 @@
 
 #: 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
+#: src/pyams_content/component/gallery/zmi/paragraph.py:172
 msgid "Add image(s)"
 msgstr "Ajouter des images"
 
@@ -122,19 +122,19 @@
 msgid "Add new gallery"
 msgstr "Ajout d'une galerie d'images"
 
-#: src/pyams_content/component/gallery/zmi/paragraph.py:107
+#: src/pyams_content/component/gallery/zmi/paragraph.py:103
 msgid "Edit gallery properties"
 msgstr "Propriétés de la galerie d'images"
 
-#: src/pyams_content/component/gallery/zmi/__init__.py:54
+#: src/pyams_content/component/gallery/zmi/__init__.py:53
 msgid "Update gallery properties"
 msgstr "Propriétés de la galerie d'images"
 
-#: src/pyams_content/component/gallery/zmi/__init__.py:89
+#: src/pyams_content/component/gallery/zmi/__init__.py:88
 msgid "Update gallery contents"
 msgstr "Contenu de la galerie d'images"
 
-#: src/pyams_content/component/gallery/zmi/__init__.py:162
+#: src/pyams_content/component/gallery/zmi/__init__.py:161
 msgid "Default gallery renderer"
 msgstr "Galerie par défaut"
 
@@ -213,6 +213,7 @@
 #: 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
+#: src/pyams_content/shared/form/interfaces/__init__.py:61
 msgid "Description"
 msgstr "Description"
 
@@ -289,7 +290,7 @@
 
 #: 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
+#: src/pyams_content/shared/imagemap/interfaces/__init__.py:61
 msgid "Image"
 msgstr "Image"
 
@@ -397,7 +398,7 @@
 
 #: 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
+#: src/pyams_content/component/illustration/zmi/__init__.py:96
 msgid "Illustration"
 msgstr "Illustration"
 
@@ -409,19 +410,19 @@
 msgid "Add new illustration"
 msgstr "Ajout d'une illustration"
 
-#: src/pyams_content/component/illustration/zmi/paragraph.py:110
+#: src/pyams_content/component/illustration/zmi/paragraph.py:106
 msgid "Edit illustration properties"
 msgstr "Propriétés de l'illustration"
 
-#: src/pyams_content/component/illustration/zmi/__init__.py:58
+#: src/pyams_content/component/illustration/zmi/__init__.py:59
 msgid "Centered illustration"
 msgstr "Illustration centrée"
 
-#: src/pyams_content/component/illustration/zmi/__init__.py:67
+#: src/pyams_content/component/illustration/zmi/__init__.py:68
 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
+#: src/pyams_content/component/illustration/zmi/__init__.py:77
 msgid "Small illustration on the right with zoom"
 msgstr "Petite illustration sur la droite avec zoom"
 
@@ -466,6 +467,7 @@
 msgstr "Ces paragraphes seront ajoutés automatiquement aux nouveaux contenus."
 
 #: src/pyams_content/component/paragraph/zmi/summary.py:46
+#: src/pyams_content/shared/form/zmi/summary.py:45
 #: src/pyams_content/shared/view/zmi/summary.py:44
 #: src/pyams_content/shared/imagemap/zmi/summary.py:44
 msgid "Quick preview"
@@ -475,44 +477,44 @@
 msgid "Paragraphs..."
 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:148
+#: src/pyams_content/component/paragraph/zmi/container.py:126
 msgid "Switch paragraph visibility"
 msgstr "Cliquez pour rendre le paragraphe visible ou non"
 
-#: src/pyams_content/component/paragraph/zmi/container.py:211
+#: src/pyams_content/component/paragraph/zmi/container.py:165
+msgid "Paragraphs list"
+msgstr "Liste des paragraphes"
+
+#: src/pyams_content/component/paragraph/zmi/container.py:198
 msgid "Show/hide all paragraphs"
 msgstr "Afficher/masquer tous les paragraphes"
 
-#: src/pyams_content/component/paragraph/zmi/container.py:271
+#: src/pyams_content/component/paragraph/zmi/container.py:258
 msgid "Links"
 msgstr "Liens"
 
-#: src/pyams_content/component/paragraph/zmi/container.py:287
+#: src/pyams_content/component/paragraph/zmi/container.py:274
 msgid "External files"
 msgstr "Fichiers"
 
-#: src/pyams_content/component/paragraph/zmi/container.py:360
-#: src/pyams_content/component/association/zmi/__init__.py:93
+#: src/pyams_content/component/paragraph/zmi/container.py:347
+#: src/pyams_content/component/association/zmi/__init__.py:92
 msgid "Associations..."
 msgstr "Associations"
 
-#: src/pyams_content/component/paragraph/zmi/container.py:372
+#: src/pyams_content/component/paragraph/zmi/container.py:359
 msgid "Paragraphs associations"
 msgstr "Associations par paragraphe"
 
-#: src/pyams_content/component/paragraph/zmi/container.py:129
+#: src/pyams_content/component/paragraph/zmi/container.py:107
 msgid "No currently defined paragraph."
 msgstr "Aucun paragraphe associé à ce contenu."
 
-#: src/pyams_content/component/paragraph/zmi/container.py:221
+#: src/pyams_content/component/paragraph/zmi/container.py:208
 msgid "Click to open/close all paragraphs editors"
 msgstr "Afficher/masquer tous les paragraphes"
 
-#: src/pyams_content/component/paragraph/zmi/container.py:232
+#: src/pyams_content/component/paragraph/zmi/container.py:219
 msgid "Click to open/close paragraph editor"
 msgstr "Afficher/masquer ce paragraphe"
 
@@ -524,19 +526,19 @@
 msgid "Add new HTML paragraph"
 msgstr "Ajout d'un paragraphe HTML"
 
-#: src/pyams_content/component/paragraph/zmi/html.py:118
+#: src/pyams_content/component/paragraph/zmi/html.py:114
 msgid "Edit HTML paragraph properties"
 msgstr "Propriétés du paragraphe HTML"
 
-#: src/pyams_content/component/paragraph/zmi/header.py:56
+#: src/pyams_content/component/paragraph/zmi/header.py:55
 msgid "Add header paragraph..."
 msgstr "Chapô"
 
-#: src/pyams_content/component/paragraph/zmi/header.py:67
+#: src/pyams_content/component/paragraph/zmi/header.py:66
 msgid "Add new header paragraph"
 msgstr "Ajout d'un chapô"
 
-#: src/pyams_content/component/paragraph/zmi/header.py:106
+#: src/pyams_content/component/paragraph/zmi/header.py:101
 msgid "Edit header paragraph properties"
 msgstr "Propriétés du chapô"
 
@@ -547,6 +549,7 @@
 
 #: src/pyams_content/component/paragraph/interfaces/__init__.py:43
 #: src/pyams_content/component/association/interfaces/__init__.py:42
+#: src/pyams_content/shared/form/interfaces/__init__.py:82
 msgid "Visible?"
 msgstr "Visible ?"
 
@@ -598,39 +601,39 @@
 msgid "Associations paragraph"
 msgstr "Liens utiles"
 
-#: src/pyams_content/component/association/zmi/paragraph.py:58
+#: src/pyams_content/component/association/zmi/paragraph.py:57
 msgid "Add associations paragraph..."
 msgstr "Liens utiles"
 
-#: src/pyams_content/component/association/zmi/paragraph.py:69
+#: src/pyams_content/component/association/zmi/paragraph.py:68
 msgid "Add new association paragraph"
 msgstr "Ajout d'un paragraphe « liens utiles »"
 
-#: src/pyams_content/component/association/zmi/paragraph.py:103
+#: src/pyams_content/component/association/zmi/paragraph.py:98
 msgid "Edit association paragraph properties"
 msgstr "Propriétés du paragraphe « liens utiles »"
 
-#: src/pyams_content/component/association/zmi/__init__.py:105
+#: src/pyams_content/component/association/zmi/__init__.py:164
+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:215
+msgid "Public title"
+msgstr "Libellé public"
+
+#: src/pyams_content/component/association/zmi/__init__.py:229
+msgid "Inner title"
+msgstr "Contenu interne"
+
+#: src/pyams_content/component/association/zmi/__init__.py:244
+msgid "Size"
+msgstr "Taille"
+
+#: src/pyams_content/component/association/zmi/__init__.py:266
 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
+#: src/pyams_content/component/association/zmi/__init__.py:63
 msgid "Association was correctly added."
 msgstr "L'association a été ajoutée."
 
@@ -642,15 +645,15 @@
 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
+#: src/pyams_content/component/links/__init__.py:86
 msgid "Internal link"
 msgstr "Lien interne"
 
-#: src/pyams_content/component/links/__init__.py:160
+#: src/pyams_content/component/links/__init__.py:143
 msgid "External link"
 msgstr "Lien externe"
 
-#: src/pyams_content/component/links/__init__.py:201
+#: src/pyams_content/component/links/__init__.py:184
 msgid "Mailto link"
 msgstr "Lien « mailto »"
 
@@ -699,7 +702,7 @@
 msgstr "Liens internes vers ce contenu"
 
 #: src/pyams_content/component/links/interfaces/__init__.py:34
-#: src/pyams_content/shared/imagemap/interfaces/__init__.py:47
+#: src/pyams_content/shared/imagemap/interfaces/__init__.py:49
 msgid "Alternate title"
 msgstr "Titre de substitution"
 
@@ -714,6 +717,7 @@
 msgstr "Description du lien, affichée en front-office"
 
 #: src/pyams_content/component/links/interfaces/__init__.py:49
+#: src/pyams_content/shared/imagemap/interfaces/__init__.py:81
 msgid "Internal reference"
 msgstr "Référence interne"
 
@@ -740,34 +744,34 @@
 "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
+#: src/pyams_content/component/links/interfaces/__init__.py:75
 msgid "Target address"
 msgstr "Adresse mail"
 
-#: src/pyams_content/component/links/interfaces/__init__.py:79
+#: src/pyams_content/component/links/interfaces/__init__.py:76
 msgid "Target email address"
 msgstr "Adresse de messagerie \"stricte\", soit uniquement \"xxx@yyy.com\""
 
-#: src/pyams_content/component/links/interfaces/__init__.py:83
+#: src/pyams_content/component/links/interfaces/__init__.py:79
 msgid "Address name"
 msgstr "Nom de messagerie"
 
-#: src/pyams_content/component/links/interfaces/__init__.py:84
+#: src/pyams_content/component/links/interfaces/__init__.py:80
 msgid "Address as displayed in address book"
 msgstr ""
 "Nom de la boîte aux lettres, tel qu'il sera affiché dans l'application de "
 "messagerie."
 
-#: src/pyams_content/component/links/interfaces/__init__.py:95
+#: src/pyams_content/component/links/interfaces/__init__.py:91
 msgid "Internal references"
 msgstr "Références internes"
 
-#: src/pyams_content/component/links/interfaces/__init__.py:96
+#: src/pyams_content/component/links/interfaces/__init__.py:92
 msgid "List of internal references"
 msgstr "Liste de références internes imposées dans la vue"
 
-#: src/pyams_content/shared/common/__init__.py:126
-#: src/pyams_content/shared/common/__init__.py:134
+#: src/pyams_content/shared/common/__init__.py:127
+#: src/pyams_content/shared/common/__init__.py:135
 #, python-format
 msgid "{date} by {principal}"
 msgstr "{date} par {principal}"
@@ -787,7 +791,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
+#: src/pyams_content/shared/common/zmi/dashboard.py:964
 msgid "Advanced search"
 msgstr "Recherche avancée"
 
@@ -796,7 +800,7 @@
 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:203
+#: src/pyams_content/shared/common/zmi/dashboard.py:207
 msgid "Owner"
 msgstr "Propriétaire"
 
@@ -868,7 +872,7 @@
 msgstr "Le commentaire est obligatoire"
 
 #: src/pyams_content/shared/common/zmi/workflow.py:201
-#: src/pyams_content/workflow/__init__.py:307
+#: src/pyams_content/workflow/__init__.py:310
 msgid "Cancel publication request"
 msgstr "Annuler la demande de publication"
 
@@ -893,7 +897,7 @@
 msgstr "Retirer"
 
 #: src/pyams_content/shared/common/zmi/workflow.py:535
-#: src/pyams_content/workflow/__init__.py:426
+#: src/pyams_content/workflow/__init__.py:429
 msgid "Request archive"
 msgstr "Demander l'archivage"
 
@@ -906,16 +910,16 @@
 msgstr "Archiver"
 
 #: 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
+#: src/pyams_content/workflow/__init__.py:494
+#: src/pyams_content/workflow/__init__.py:506
+#: src/pyams_content/workflow/__init__.py:518
+#: src/pyams_content/workflow/__init__.py:530
+#: src/pyams_content/workflow/__init__.py:542
 msgid "Create new version"
 msgstr "Créer une nouvelle version"
 
 #: src/pyams_content/shared/common/zmi/workflow.py:727
-#: src/pyams_content/workflow/__init__.py:551
+#: src/pyams_content/workflow/__init__.py:554
 msgid "Delete version"
 msgstr "Supprimer cette version"
 
@@ -938,8 +942,8 @@
 msgstr "{state} | par {principal}"
 
 #: src/pyams_content/shared/common/zmi/workflow.py:76
-#: src/pyams_content/workflow/__init__.py:607
-#: src/pyams_content/workflow/__init__.py:630
+#: src/pyams_content/workflow/__init__.py:610
+#: src/pyams_content/workflow/__init__.py:633
 #, python-format
 msgid "{state} {date}"
 msgstr "{state} {date}"
@@ -998,7 +1002,7 @@
 msgstr "Commentaire associé"
 
 #: src/pyams_content/shared/common/zmi/summary.py:153
-#: src/pyams_content/shared/common/zmi/dashboard.py:179
+#: src/pyams_content/shared/common/zmi/dashboard.py:181
 msgid "Version"
 msgstr "Version"
 
@@ -1091,262 +1095,262 @@
 msgid "Status date"
 msgstr "En date du"
 
-#: src/pyams_content/shared/common/zmi/dashboard.py:190
+#: src/pyams_content/shared/common/zmi/dashboard.py:192
 msgid "Status principal"
 msgstr "Intervenant"
 
-#: src/pyams_content/shared/common/zmi/dashboard.py:215
+#: src/pyams_content/shared/common/zmi/dashboard.py:221
 msgid "Last modification"
 msgstr "Dernière modification"
 
-#: src/pyams_content/shared/common/zmi/dashboard.py:233
+#: src/pyams_content/shared/common/zmi/dashboard.py:239
 #: src/pyams_content/root/zmi/__init__.py:89
 msgid "Dashboard"
 msgstr "Tableau de bord"
 
-#: src/pyams_content/shared/common/zmi/dashboard.py:243
+#: src/pyams_content/shared/common/zmi/dashboard.py:249
 msgid "Contents dashboard"
 msgstr "Mon tableau de bord"
 
-#: src/pyams_content/shared/common/zmi/dashboard.py:277
+#: src/pyams_content/shared/common/zmi/dashboard.py:283
 #: 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:278
+#: src/pyams_content/shared/common/zmi/dashboard.py:284
 #: 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:317
+#: src/pyams_content/shared/common/zmi/dashboard.py:323
 #: 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:318
+#: src/pyams_content/shared/common/zmi/dashboard.py:324
 #: 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:348
+#: src/pyams_content/shared/common/zmi/dashboard.py:354
 #: 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:387
+#: src/pyams_content/shared/common/zmi/dashboard.py:393
 #: src/pyams_content/root/zmi/__init__.py:256
 msgid "My contents"
 msgstr "Tous mes contenus"
 
-#: src/pyams_content/shared/common/zmi/dashboard.py:402
+#: src/pyams_content/shared/common/zmi/dashboard.py:408
 #: src/pyams_content/root/zmi/__init__.py:271
 msgid "My favorites"
 msgstr "Mes favoris"
 
-#: src/pyams_content/shared/common/zmi/dashboard.py:411
+#: src/pyams_content/shared/common/zmi/dashboard.py:417
 #: 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:412
+#: src/pyams_content/shared/common/zmi/dashboard.py:418
 #: 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:424
+#: src/pyams_content/shared/common/zmi/dashboard.py:430
 #: 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:485
+#: src/pyams_content/shared/common/zmi/dashboard.py:491
 #: src/pyams_content/root/zmi/__init__.py:317
 msgid "Your favorites"
 msgstr "Mes favoris"
 
-#: src/pyams_content/shared/common/zmi/dashboard.py:498
+#: src/pyams_content/shared/common/zmi/dashboard.py:504
 #: src/pyams_content/root/zmi/__init__.py:330
 msgid "My preparations"
 msgstr "Mes préparations"
 
-#: src/pyams_content/shared/common/zmi/dashboard.py:507
+#: src/pyams_content/shared/common/zmi/dashboard.py:513
 #: 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:508
+#: src/pyams_content/shared/common/zmi/dashboard.py:514
 #: 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:546
+#: src/pyams_content/shared/common/zmi/dashboard.py:552
 #: 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:559
+#: src/pyams_content/shared/common/zmi/dashboard.py:565
 #: src/pyams_content/root/zmi/__init__.py:390
 msgid "My submissions"
 msgstr "Mes soumissions"
 
-#: src/pyams_content/shared/common/zmi/dashboard.py:568
+#: src/pyams_content/shared/common/zmi/dashboard.py:574
 #: 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:569
+#: src/pyams_content/shared/common/zmi/dashboard.py:575
 #: 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:607
+#: src/pyams_content/shared/common/zmi/dashboard.py:613
 #: 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:620
+#: src/pyams_content/shared/common/zmi/dashboard.py:626
 #: src/pyams_content/root/zmi/__init__.py:450
 msgid "My publications"
 msgstr "Mes publications"
 
-#: src/pyams_content/shared/common/zmi/dashboard.py:629
+#: src/pyams_content/shared/common/zmi/dashboard.py:635
 #: 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:630
+#: src/pyams_content/shared/common/zmi/dashboard.py:636
 #: 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:668
+#: src/pyams_content/shared/common/zmi/dashboard.py:674
 #: 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:681
+#: src/pyams_content/shared/common/zmi/dashboard.py:687
 #: 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:690
+#: src/pyams_content/shared/common/zmi/dashboard.py:696
 #: 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:691
+#: src/pyams_content/shared/common/zmi/dashboard.py:697
 #: 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:730
+#: src/pyams_content/shared/common/zmi/dashboard.py:736
 #: 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:743
+#: src/pyams_content/shared/common/zmi/dashboard.py:749
 #: 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:752
+#: src/pyams_content/shared/common/zmi/dashboard.py:758
 #: 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:753
+#: src/pyams_content/shared/common/zmi/dashboard.py:759
 #: 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:798
+#: src/pyams_content/shared/common/zmi/dashboard.py:804
 #: 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:812
+#: src/pyams_content/shared/common/zmi/dashboard.py:818
 #: src/pyams_content/root/zmi/__init__.py:639
 msgid "Other interventions"
 msgstr "Toutes les interventions"
 
-#: src/pyams_content/shared/common/zmi/dashboard.py:827
+#: src/pyams_content/shared/common/zmi/dashboard.py:833
 #: src/pyams_content/root/zmi/__init__.py:654
 msgid "Last publications"
 msgstr "Dernières publications"
 
-#: src/pyams_content/shared/common/zmi/dashboard.py:836
+#: src/pyams_content/shared/common/zmi/dashboard.py:842
 #: 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:881
+#: src/pyams_content/shared/common/zmi/dashboard.py:887
 #: 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:894
+#: src/pyams_content/shared/common/zmi/dashboard.py:900
 #: src/pyams_content/root/zmi/__init__.py:720
 msgid "Last updates"
 msgstr "Dernières modifications"
 
-#: src/pyams_content/shared/common/zmi/dashboard.py:903
+#: src/pyams_content/shared/common/zmi/dashboard.py:909
 #: 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:946
+#: src/pyams_content/shared/common/zmi/dashboard.py:952
 #: 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:353
+#: src/pyams_content/shared/common/zmi/dashboard.py:359
 #: 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:355
+#: src/pyams_content/shared/common/zmi/dashboard.py:361
 #: 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:841
+#: src/pyams_content/shared/common/zmi/dashboard.py:847
 #: 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:843
+#: src/pyams_content/shared/common/zmi/dashboard.py:849
 #: 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:908
+#: src/pyams_content/shared/common/zmi/dashboard.py:914
 #: 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:910
+#: src/pyams_content/shared/common/zmi/dashboard.py:916
 #: 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"
@@ -1988,10 +1992,269 @@
 msgid "Given site name doesn't exist!"
 msgstr "Le nom de site indiqué n'existe pas !"
 
-#: src/pyams_content/shared/form/interfaces/__init__.py:27
+#: src/pyams_content/shared/form/handler.py:85
+msgid "Mailto form handler"
+msgstr "Envoi des données par mail"
+
+#: src/pyams_content/shared/form/handler.py:45
+msgid "No selected handler..."
+msgstr "Aucun gestionnaire sélectionné"
+
+#: src/pyams_content/shared/form/field.py:148
+msgid "Text"
+msgstr "Texte simple"
+
+#: src/pyams_content/shared/form/field.py:158
+msgid "Multi-lines text"
+msgstr "Texte multi-lignes"
+
+#: src/pyams_content/shared/form/field.py:168
+msgid "Boolean"
+msgstr "Booléen"
+
+#: src/pyams_content/shared/form/field.py:178
+msgid "Integer"
+msgstr "Nombre entier"
+
+#: src/pyams_content/shared/form/field.py:188
+msgid "Decimal"
+msgstr "Nombre décimal"
+
+#: src/pyams_content/shared/form/field.py:198
+msgid "E-mail address"
+msgstr "Adresse de messagerie"
+
+#: src/pyams_content/shared/form/field.py:208
+msgid "URI"
+msgstr "URI"
+
+#: src/pyams_content/shared/form/field.py:218
+msgid "Date"
+msgstr "Date"
+
+#: src/pyams_content/shared/form/field.py:232
+msgid "Choice"
+msgstr "Choix unique dans une liste"
+
+#: src/pyams_content/shared/form/field.py:252
+msgid "List"
+msgstr "Choix multiples dans une liste"
+
+#: src/pyams_content/shared/form/zmi/properties.py:39
+msgid "Main form settings"
+msgstr "Paramètres du formulaire"
+
+#: src/pyams_content/shared/form/zmi/properties.py:64
+msgid "Form handler settings"
+msgstr "Paramètres du gestionnaire"
+
+#: src/pyams_content/shared/form/zmi/__init__.py:44
+msgid "This form"
+msgstr "Ce formulaire"
+
+#: src/pyams_content/shared/form/zmi/__init__.py:63
+#: src/pyams_content/shared/form/zmi/__init__.py:74
+msgid "Add form"
+msgstr "Ajouter un formulaire"
+
+#: src/pyams_content/shared/form/zmi/__init__.py:54
+#, python-format
+msgid "Form « {title} »"
+msgstr "Formulaire « {title} »"
+
+#: src/pyams_content/shared/form/zmi/field.py:65
+msgid "Form fields..."
+msgstr "Champs de saisie"
+
+#: src/pyams_content/shared/form/zmi/field.py:127
+msgid "Switch field visibility"
+msgstr "Cliquez pour rendre le champ visible ou non"
+
+#: src/pyams_content/shared/form/zmi/field.py:158
+msgid "Name"
+msgstr "Nom"
+
+#: src/pyams_content/shared/form/zmi/field.py:169
+#: src/pyams_content/shared/form/interfaces/__init__.py:57
+msgid "Label"
+msgstr "Libellé"
+
+#: src/pyams_content/shared/form/zmi/field.py:180
+#: src/pyams_content/shared/form/interfaces/__init__.py:52
+msgid "Field type"
+msgstr "Type de champ"
+
+#: src/pyams_content/shared/form/zmi/field.py:213
+msgid "Form fields list"
+msgstr "Liste des champs du formulaire"
+
+#: src/pyams_content/shared/form/zmi/field.py:249
+#: src/pyams_content/shared/form/zmi/field.py:260
+msgid "Add form field"
+msgstr "Ajouter un champ"
+
+#: src/pyams_content/shared/form/zmi/field.py:306
+msgid "Edit form field properties"
+msgstr "Propriétés du champ"
+
+#: src/pyams_content/shared/form/zmi/field.py:189
+msgid "-- unknown field type --"
+msgstr "-- type de champ inconnu --"
+
+#: src/pyams_content/shared/form/zmi/field.py:108
+msgid "No currently defined form field."
+msgstr "Ce formulaire ne comporte aucun champ."
+
+#: src/pyams_content/shared/form/zmi/field.py:285
+msgid "Specified name is already used!"
+msgstr "Le nom indiqué pour ce champ est déjà utilisé !"
+
+#: src/pyams_content/shared/form/interfaces/__init__.py:34
 msgid "Form"
 msgstr "Formulaire"
 
+#: src/pyams_content/shared/form/interfaces/__init__.py:48
+msgid "Field name"
+msgstr "Nom du champ"
+
+#: src/pyams_content/shared/form/interfaces/__init__.py:49
+msgid "Field internal name; must be unique for a given form"
+msgstr ""
+"Nom interne du champ ; ce nom doit être unique pour un formulaire donné"
+
+#: src/pyams_content/shared/form/interfaces/__init__.py:53
+msgid "Selected field type"
+msgstr "Type de champ proposé à l'internaute"
+
+#: src/pyams_content/shared/form/interfaces/__init__.py:58
+msgid "User field label"
+msgstr "Libellé affiché à l'internaute"
+
+#: src/pyams_content/shared/form/interfaces/__init__.py:62
+msgid "Field description can be displayed as hint"
+msgstr ""
+"Description du champ, qui pourra être affichée sous la forme d'une info-bulle"
+
+#: src/pyams_content/shared/form/interfaces/__init__.py:65
+msgid "Placeholder"
+msgstr "Espace réservé"
+
+#: src/pyams_content/shared/form/interfaces/__init__.py:66
+msgid "Some field types like textline can display a placeholder"
+msgstr ""
+"Certains champs tels que les zones de texte peuvent afficher ce texte tant "
+"qu'aucune valeur n'y a été saisie"
+
+#: src/pyams_content/shared/form/interfaces/__init__.py:69
+msgid "Optional values"
+msgstr "Liste de valeurs"
+
+#: src/pyams_content/shared/form/interfaces/__init__.py:70
+msgid "List of available values (for 'choice' and 'list' field types)"
+msgstr ""
+"Liste des valeurs disponibles (pour les champs de types 'Sélection simple' "
+"ou 'Sélection multiple')"
+
+#: src/pyams_content/shared/form/interfaces/__init__.py:73
+msgid "Default value"
+msgstr "Valeur par défaut"
+
+#: src/pyams_content/shared/form/interfaces/__init__.py:74
+msgid "Give default value if field type can use it"
+msgstr ""
+"Donner la valeur par défaut du champ ; attention, tous les types de champs "
+"ne peuvent pas utiliser une valeur par défaut !"
+
+#: src/pyams_content/shared/form/interfaces/__init__.py:77
+msgid "Required?"
+msgstr "Obligatoire ?"
+
+#: src/pyams_content/shared/form/interfaces/__init__.py:78
+msgid "Select 'yes' to set field as mandatory"
+msgstr "Sélectionnez 'oui' pour que la saisie de ce champ soit obligatoire"
+
+#: src/pyams_content/shared/form/interfaces/__init__.py:83
+msgid "Select 'no' to hide given field..."
+msgstr "Sélectionnez 'non' pour masquer ce champ"
+
+#: src/pyams_content/shared/form/interfaces/__init__.py:117
+msgid "Form title"
+msgstr "Titre du formulaire"
+
+#: src/pyams_content/shared/form/interfaces/__init__.py:120
+msgid "Form header"
+msgstr "En-tête du formulaire"
+
+#: src/pyams_content/shared/form/interfaces/__init__.py:123
+msgid "Form handler"
+msgstr "Gestionnaire du formulaire"
+
+#: src/pyams_content/shared/form/interfaces/__init__.py:124
+msgid "Select how form data is transmitted"
+msgstr ""
+"Le gestionnaire sélectionné détermine la façon dont les données saisies par "
+"les internautes seront stockées ou envoyées"
+
+#: src/pyams_content/shared/form/interfaces/__init__.py:127
+msgid "Authenticated only?"
+msgstr "Authentification requise ?"
+
+#: src/pyams_content/shared/form/interfaces/__init__.py:128
+msgid "If 'yes', only authenticated users will be able to see and submit form"
+msgstr ""
+"Si 'oui', seuls les utilisateurs authentifiés pourront saisir des données "
+"dans le formulaire et les soumettre"
+
+#: src/pyams_content/shared/form/interfaces/__init__.py:132
+msgid "Use captcha?"
+msgstr "Ajouter un captcha ?"
+
+#: src/pyams_content/shared/form/interfaces/__init__.py:133
+msgid "If 'yes', a captcha will be added automatically to the form"
+msgstr "Si 'oui', un captcha sera ajouté automatiquement au formulaire"
+
+#: src/pyams_content/shared/form/interfaces/__init__.py:137
+msgid "Submit label"
+msgstr "Libellé de soumission"
+
+#: src/pyams_content/shared/form/interfaces/__init__.py:138
+msgid "Label of form submit button"
+msgstr "Libellé du bouton de soumission du formulaire"
+
+#: src/pyams_content/shared/form/interfaces/__init__.py:171
+msgid "Source address"
+msgstr "Adresse source"
+
+#: src/pyams_content/shared/form/interfaces/__init__.py:172
+msgid "Mail address from which form data is sent"
+msgstr "Adresse de messagerie émettrice des données"
+
+#: src/pyams_content/shared/form/interfaces/__init__.py:175
+msgid "Source name"
+msgstr "Nom de la source"
+
+#: src/pyams_content/shared/form/interfaces/__init__.py:176
+msgid "Name of mail data sender"
+msgstr "Nom de l'émetteur des données"
+
+#: src/pyams_content/shared/form/interfaces/__init__.py:179
+msgid "Recipient address"
+msgstr "Adresse de destination"
+
+#: src/pyams_content/shared/form/interfaces/__init__.py:180
+msgid "Mail address to which form data is sent"
+msgstr ""
+"Adresse d'envoi des données; vous pouvez indiquer plusieurs adresses en les "
+"séparant par des point-virgules"
+
+#: src/pyams_content/shared/form/interfaces/__init__.py:183
+msgid "Recipient name"
+msgstr "Nom du destinataire"
+
+#: src/pyams_content/shared/form/interfaces/__init__.py:184
+msgid "Name of data recipient"
+msgstr "Nom du destinataire des messages"
+
 #: src/pyams_content/shared/news/zmi/__init__.py:44
 msgid "This news topic"
 msgstr "Cette brève"
@@ -2146,6 +2409,24 @@
 msgid "Other terms"
 msgstr "Autres thèmes"
 
+#: src/pyams_content/shared/imagemap/paragraph.py:37
+#: src/pyams_content/shared/imagemap/paragraph.py:49
+#: src/pyams_content/shared/imagemap/interfaces/__init__.py:34
+msgid "Image map"
+msgstr "Image cliquable"
+
+#: src/pyams_content/shared/imagemap/zmi/paragraph.py:56
+msgid "Add image map..."
+msgstr "Image cliquable"
+
+#: src/pyams_content/shared/imagemap/zmi/paragraph.py:67
+msgid "Add new image map"
+msgstr "Ajout d'une image cliquable"
+
+#: src/pyams_content/shared/imagemap/zmi/paragraph.py:97
+msgid "Edit paragraph properties"
+msgstr "Propriétés de l'image cliquable"
+
 #: src/pyams_content/shared/imagemap/zmi/properties.py:38
 msgid "Background image"
 msgstr "Image de fond"
@@ -2172,12 +2453,12 @@
 msgstr "Zones de l'image"
 
 #: src/pyams_content/shared/imagemap/zmi/container.py:65
-#: src/pyams_content/shared/imagemap/interfaces/__init__.py:63
+#: src/pyams_content/shared/imagemap/interfaces/__init__.py:65
 msgid "Image map areas"
 msgstr "Zones cliquables de l'images"
 
 #: src/pyams_content/shared/imagemap/zmi/container.py:136
-#: src/pyams_content/shared/imagemap/interfaces/__init__.py:42
+#: src/pyams_content/shared/imagemap/interfaces/__init__.py:44
 msgid "Link target"
 msgstr "Cible du lien"
 
@@ -2213,34 +2494,36 @@
 msgid "Image areas preview"
 msgstr "Aperçu des zones de l'image"
 
-#: src/pyams_content/shared/imagemap/interfaces/__init__.py:32
-msgid "Image map"
-msgstr "Image cliquable"
-
-#: src/pyams_content/shared/imagemap/interfaces/__init__.py:43
+#: src/pyams_content/shared/imagemap/interfaces/__init__.py:45
 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
+#: src/pyams_content/shared/imagemap/interfaces/__init__.py:50
 msgid "Alternate label associated with this area"
 msgstr "Libellé de substitution associé à cette zone"
 
-#: src/pyams_content/shared/imagemap/interfaces/__init__.py:51
+#: src/pyams_content/shared/imagemap/interfaces/__init__.py:53
 msgid "Map area coordinates"
 msgstr "Coordonnées"
 
-#: src/pyams_content/shared/imagemap/interfaces/__init__.py:52
+#: src/pyams_content/shared/imagemap/interfaces/__init__.py:54
 msgid "List of coordinates of image area"
 msgstr "Positionnement de la zone cliquable sur l'image"
 
-#: src/pyams_content/shared/imagemap/interfaces/__init__.py:60
+#: src/pyams_content/shared/imagemap/interfaces/__init__.py:62
 msgid "Image supporting map areas"
 msgstr "Sélection de l'image qui supportera les zones cliquables"
 
-#: src/pyams_content/shared/imagemap/interfaces/__init__.py:64
+#: src/pyams_content/shared/imagemap/interfaces/__init__.py:66
 msgid "List of defined map areas"
 msgstr "Liste des zones cliquables définies sur l'image"
 
+#: src/pyams_content/shared/imagemap/interfaces/__init__.py:82
+msgid "Reference to image map object"
+msgstr ""
+"Référence de l'image cliquable ; vous pouvez rechercher la cible à partir de "
+"son titre ou de son numéro interne (précédé de « + »)"
+
 #: src/pyams_content/shared/blog/zmi/__init__.py:50
 msgid "This blog post"
 msgstr "Cet article"
@@ -2346,96 +2629,96 @@
 msgid "Create new content"
 msgstr "Créer un nouveau contenu"
 
-#: src/pyams_content/workflow/__init__.py:69
+#: src/pyams_content/workflow/__init__.py:70
 msgid "Draft"
 msgstr "Brouillon"
 
-#: src/pyams_content/workflow/__init__.py:70
-msgid "Proposed"
-msgstr "Publication demandée"
-
 #: src/pyams_content/workflow/__init__.py:71
-msgid "Canceled"
-msgstr "Annulé"
+msgid "Proposed"
+msgstr "Publication demandée"
 
 #: src/pyams_content/workflow/__init__.py:72
+msgid "Canceled"
+msgstr "Annulé"
+
+#: src/pyams_content/workflow/__init__.py:73
 msgid "Refused"
 msgstr "Refusé"
 
-#: src/pyams_content/workflow/__init__.py:73
-msgid "Published"
-msgstr "Publié"
-
 #: src/pyams_content/workflow/__init__.py:74
-msgid "Retiring"
-msgstr "Retrait demandé"
+msgid "Published"
+msgstr "Publié"
 
 #: src/pyams_content/workflow/__init__.py:75
+msgid "Retiring"
+msgstr "Retrait demandé"
+
+#: src/pyams_content/workflow/__init__.py:76
 msgid "Retired"
 msgstr "Retiré"
 
-#: src/pyams_content/workflow/__init__.py:76
+#: src/pyams_content/workflow/__init__.py:77
 msgid "Archiving"
 msgstr "Archivage demandé"
 
-#: src/pyams_content/workflow/__init__.py:77
+#: src/pyams_content/workflow/__init__.py:78
 msgid "Archived"
 msgstr "Archivé"
 
-#: src/pyams_content/workflow/__init__.py:78
+#: src/pyams_content/workflow/__init__.py:79
 msgid "Deleted"
 msgstr "Supprimé"
 
-#: src/pyams_content/workflow/__init__.py:83
-msgid "draft created"
-msgstr "brouillon créé"
-
 #: src/pyams_content/workflow/__init__.py:84
-msgid "publication requested"
-msgstr "publication demandée"
+msgid "draft created"
+msgstr "brouillon créé"
 
 #: src/pyams_content/workflow/__init__.py:85
+msgid "publication requested"
+msgstr "publication demandée"
+
+#: src/pyams_content/workflow/__init__.py:86
 msgid "published"
 msgstr "publié"
 
-#: src/pyams_content/workflow/__init__.py:86
+#: src/pyams_content/workflow/__init__.py:87
 msgid "retiring requested"
 msgstr "retrait demandé"
 
-#: src/pyams_content/workflow/__init__.py:87
+#: src/pyams_content/workflow/__init__.py:88
 msgid "retired"
 msgstr "retiré"
 
-#: src/pyams_content/workflow/__init__.py:88
+#: src/pyams_content/workflow/__init__.py:89
 msgid "archiving requested"
 msgstr "archivage demandé"
 
-#: src/pyams_content/workflow/__init__.py:89
+#: src/pyams_content/workflow/__init__.py:90
 msgid "archived"
 msgstr "archivé"
 
-#: src/pyams_content/workflow/__init__.py:271
+#: src/pyams_content/workflow/__init__.py:274
 msgid "Initialize"
 msgstr "Création"
 
-#: src/pyams_content/workflow/__init__.py:274
-msgid "Draft creation"
-msgstr "Création du brouillon"
-
 #: src/pyams_content/workflow/__init__.py:277
-#: src/pyams_content/workflow/__init__.py:292
+msgid "Draft creation"
+msgstr "Création du brouillon"
+
+#: src/pyams_content/workflow/__init__.py:280
+#: src/pyams_content/workflow/__init__.py:295
 msgid "Propose publication"
 msgstr "Demander la publication"
 
-#: src/pyams_content/workflow/__init__.py:284
-#: src/pyams_content/workflow/__init__.py:299
+#: src/pyams_content/workflow/__init__.py:287
+#: src/pyams_content/workflow/__init__.py:302
 msgid "Publication request"
 msgstr "Demande de publication"
 
-#: 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
+#: src/pyams_content/workflow/__init__.py:288
+#: src/pyams_content/workflow/__init__.py:303
+#: src/pyams_content/workflow/__init__.py:389
+#: src/pyams_content/workflow/__init__.py:436
 msgid ""
 "content managers authorized to take charge of your content are going to be "
 "notified of your request."
@@ -2443,203 +2726,203 @@
 "les responsables habilités à prendre en charge votre demande vont être "
 "sollicités."
 
-#: src/pyams_content/workflow/__init__.py:288
+#: src/pyams_content/workflow/__init__.py:291
 #, 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:303
+#: src/pyams_content/workflow/__init__.py:306
 #, 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:314
+#: src/pyams_content/workflow/__init__.py:317
 msgid "Publication request canceled"
 msgstr "Annulation de la demande de publication"
 
-#: src/pyams_content/workflow/__init__.py:316
+#: src/pyams_content/workflow/__init__.py:319
 #, 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:320
+#: src/pyams_content/workflow/__init__.py:323
 msgid "Reset canceled publication to draft"
 msgstr "Retour automatique en statut 'brouillon'"
 
-#: src/pyams_content/workflow/__init__.py:324
-#: src/pyams_content/workflow/__init__.py:353
+#: src/pyams_content/workflow/__init__.py:327
+#: src/pyams_content/workflow/__init__.py:356
 msgid "State reset to 'draft' (automatic)"
 msgstr "Retour automatique en statut 'brouillon'"
 
-#: src/pyams_content/workflow/__init__.py:328
+#: src/pyams_content/workflow/__init__.py:331
 msgid "Reset canceled publication to retired"
 msgstr "Retour automatique en statut 'retiré'"
 
-#: src/pyams_content/workflow/__init__.py:332
+#: src/pyams_content/workflow/__init__.py:335
 msgid "State reset to 'retired' (automatic)"
 msgstr "Retour automatique en statut 'retiré'"
 
-#: src/pyams_content/workflow/__init__.py:336
+#: src/pyams_content/workflow/__init__.py:339
 msgid "Refuse publication"
 msgstr "Refuser la publication"
 
-#: src/pyams_content/workflow/__init__.py:343
+#: src/pyams_content/workflow/__init__.py:346
 msgid "Publication refused"
 msgstr "Refus de publication"
 
-#: src/pyams_content/workflow/__init__.py:345
+#: src/pyams_content/workflow/__init__.py:348
 #, 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:349
+#: src/pyams_content/workflow/__init__.py:352
 msgid "Reset refused publication to draft"
 msgstr "Publication refusée"
 
-#: src/pyams_content/workflow/__init__.py:357
+#: src/pyams_content/workflow/__init__.py:360
 msgid "Reset refused publication to retired"
 msgstr "Publication refusée"
 
-#: src/pyams_content/workflow/__init__.py:361
+#: src/pyams_content/workflow/__init__.py:364
 msgid "State reset to 'refused' (automatic)"
 msgstr "Retour automatique en status 'refusé'"
 
-#: src/pyams_content/workflow/__init__.py:373
+#: src/pyams_content/workflow/__init__.py:376
 msgid "Content published"
 msgstr "Publication"
 
-#: src/pyams_content/workflow/__init__.py:375
+#: src/pyams_content/workflow/__init__.py:378
 #, python-format
 msgid "The content « {0} » has been published"
 msgstr "Le contenu « {0} » a été publié"
 
-#: src/pyams_content/workflow/__init__.py:379
+#: src/pyams_content/workflow/__init__.py:382
 msgid "Request retiring"
 msgstr "Demander le retrait"
 
-#: src/pyams_content/workflow/__init__.py:385
+#: src/pyams_content/workflow/__init__.py:388
 msgid "Retire request"
 msgstr "Demande de retrait"
 
-#: src/pyams_content/workflow/__init__.py:389
+#: src/pyams_content/workflow/__init__.py:392
 #, 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:393
+#: src/pyams_content/workflow/__init__.py:396
 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 "Content retired after passed expiration date"
+msgstr "Retrait automatique après la date de fin de publication"
+
+#: src/pyams_content/workflow/__init__.py:403
 msgid "Cancel retiring request"
 msgstr "Annuler la demande de retrait"
 
-#: src/pyams_content/workflow/__init__.py:407
+#: src/pyams_content/workflow/__init__.py:410
 msgid "Retire request canceled"
 msgstr "Annulation de la demande de retrait"
 
-#: src/pyams_content/workflow/__init__.py:409
+#: src/pyams_content/workflow/__init__.py:412
 #, 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:413
+#: src/pyams_content/workflow/__init__.py:416
 msgid "Retire content"
 msgstr "Retirer"
 
-#: src/pyams_content/workflow/__init__.py:420
+#: src/pyams_content/workflow/__init__.py:423
 msgid "Content retired"
 msgstr "Retrait"
 
-#: src/pyams_content/workflow/__init__.py:422
+#: src/pyams_content/workflow/__init__.py:425
 #, python-format
 msgid "The content « {0} » has been retired"
 msgstr "Le contenu « {0} » a été retiré"
 
-#: src/pyams_content/workflow/__init__.py:432
+#: src/pyams_content/workflow/__init__.py:435
 msgid "Archive request"
 msgstr "Demande d'archivage"
 
-#: src/pyams_content/workflow/__init__.py:436
+#: src/pyams_content/workflow/__init__.py:439
 #, 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:440
+#: src/pyams_content/workflow/__init__.py:443
 msgid "Cancel archiving request"
 msgstr "Annuler la demande d'archivage"
 
-#: src/pyams_content/workflow/__init__.py:447
+#: src/pyams_content/workflow/__init__.py:450
 msgid "Archive request canceled"
 msgstr "Annulation de la demande d'archivage"
 
-#: src/pyams_content/workflow/__init__.py:449
+#: src/pyams_content/workflow/__init__.py:452
 #, 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:453
+#: src/pyams_content/workflow/__init__.py:456
 msgid "Archive content"
 msgstr "Archiver"
 
-#: src/pyams_content/workflow/__init__.py:461
+#: src/pyams_content/workflow/__init__.py:464
 msgid "Content archived"
 msgstr "Archivage"
 
-#: src/pyams_content/workflow/__init__.py:463
+#: src/pyams_content/workflow/__init__.py:466
 #, python-format
 msgid "The content « {0} » has been archived"
 msgstr "Le contenu « {0} » a été archivé"
 
-#: src/pyams_content/workflow/__init__.py:467
+#: src/pyams_content/workflow/__init__.py:470
 msgid "Archive published content"
 msgstr "Archivage automatique d'un contenu publié"
 
-#: src/pyams_content/workflow/__init__.py:471
-#: src/pyams_content/workflow/__init__.py:479
-#: src/pyams_content/workflow/__init__.py:487
+#: src/pyams_content/workflow/__init__.py:474
+#: src/pyams_content/workflow/__init__.py:482
+#: src/pyams_content/workflow/__init__.py:490
 msgid "Content archived after version publication"
 msgstr "Archivage automatique après publication"
 
-#: src/pyams_content/workflow/__init__.py:475
+#: src/pyams_content/workflow/__init__.py:478
 msgid "Archive retiring content"
 msgstr "Archivage automatique d'un contenu en attente de retrait"
 
-#: src/pyams_content/workflow/__init__.py:483
+#: src/pyams_content/workflow/__init__.py:486
 msgid "Archive retired content"
 msgstr "Archivage automatique d'un contenu retiré"
 
-#: 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
+#: src/pyams_content/workflow/__init__.py:502
+#: src/pyams_content/workflow/__init__.py:514
+#: src/pyams_content/workflow/__init__.py:526
+#: src/pyams_content/workflow/__init__.py:538
+#: src/pyams_content/workflow/__init__.py:550
 msgid "New version created"
 msgstr "Création d'une nouvelle version"
 
-#: src/pyams_content/workflow/__init__.py:559
+#: src/pyams_content/workflow/__init__.py:562
 msgid "Version deleted"
 msgstr "Version supprimée"
 
-#: src/pyams_content/workflow/__init__.py:628
+#: src/pyams_content/workflow/__init__.py:631
 msgid "publication refused"
 msgstr "publication refusée"
 
-#: src/pyams_content/workflow/__init__.py:626
+#: src/pyams_content/workflow/__init__.py:629
 msgid "new version created"
 msgstr "nouvelle version en préparation"
 
-#: src/pyams_content/workflow/__init__.py:241
+#: src/pyams_content/workflow/__init__.py:244
 #, python-format
 msgid "Published version {0}"
 msgstr "Version {0} publiée"
 
-#: src/pyams_content/workflow/task.py:57
+#: src/pyams_content/workflow/task.py:59
 msgid "Automatic contents withdrawal:\n"
 msgstr ""
 "Retrait automatique des contenus après la date de fin de publication :\n"
@@ -2748,12 +3031,6 @@
 #~ 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"
 
--- a/src/pyams_content/locales/pyams_content.pot	Tue Sep 19 11:12:03 2017 +0200
+++ b/src/pyams_content/locales/pyams_content.pot	Tue Sep 19 11:38:25 2017 +0200
@@ -6,7 +6,7 @@
 msgid ""
 msgstr ""
 "Project-Id-Version: PACKAGE 1.0\n"
-"POT-Creation-Date: 2017-09-07 16:29+0200\n"
+"POT-Creation-Date: 2017-09-18 16:01+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,64 +16,64 @@
 "Content-Transfer-Encoding: 8bit\n"
 "Generated-By: Lingua 3.10.dev0\n"
 
-#: ./src/pyams_content/__init__.py:36
+#: ./src/pyams_content/__init__.py:37
 msgid "Manage site root"
 msgstr ""
 
-#: ./src/pyams_content/__init__.py:38
+#: ./src/pyams_content/__init__.py:39
 msgid "Manage site"
 msgstr ""
 
-#: ./src/pyams_content/__init__.py:40
+#: ./src/pyams_content/__init__.py:41
 msgid "Manage tool"
 msgstr ""
 
-#: ./src/pyams_content/__init__.py:42
+#: ./src/pyams_content/__init__.py:43
 msgid "Create content"
 msgstr ""
 
-#: ./src/pyams_content/__init__.py:44
+#: ./src/pyams_content/__init__.py:45
 msgid "Manage content"
 msgstr ""
 
-#: ./src/pyams_content/__init__.py:46
+#: ./src/pyams_content/__init__.py:47
 msgid "Comment content"
 msgstr ""
 
-#: ./src/pyams_content/__init__.py:48
-#: ./src/pyams_content/workflow/__init__.py:365
+#: ./src/pyams_content/__init__.py:49
+#: ./src/pyams_content/workflow/__init__.py:368
 msgid "Publish content"
 msgstr ""
 
-#: ./src/pyams_content/__init__.py:52
+#: ./src/pyams_content/__init__.py:53
 msgid "Webmaster (role)"
 msgstr ""
 
-#: ./src/pyams_content/__init__.py:61
+#: ./src/pyams_content/__init__.py:62
 msgid "Pilot (role)"
 msgstr ""
 
-#: ./src/pyams_content/__init__.py:69
+#: ./src/pyams_content/__init__.py:70
 msgid "Manager (role)"
 msgstr ""
 
-#: ./src/pyams_content/__init__.py:76
+#: ./src/pyams_content/__init__.py:77
 msgid "Owner (role)"
 msgstr ""
 
-#: ./src/pyams_content/__init__.py:81
+#: ./src/pyams_content/__init__.py:82
 msgid "Contributor (role)"
 msgstr ""
 
-#: ./src/pyams_content/__init__.py:89
+#: ./src/pyams_content/__init__.py:90
 msgid "Reader (role)"
 msgstr ""
 
-#: ./src/pyams_content/__init__.py:95
+#: ./src/pyams_content/__init__.py:96
 msgid "Operator (role)"
 msgstr ""
 
-#: ./src/pyams_content/__init__.py:99
+#: ./src/pyams_content/__init__.py:100
 msgid "Guest user (role)"
 msgstr ""
 
@@ -84,7 +84,7 @@
 
 #: ./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
+#: ./src/pyams_content/component/gallery/zmi/paragraph.py:172
 msgid "Add image(s)"
 msgstr ""
 
@@ -123,19 +123,19 @@
 msgid "Add new gallery"
 msgstr ""
 
-#: ./src/pyams_content/component/gallery/zmi/paragraph.py:107
+#: ./src/pyams_content/component/gallery/zmi/paragraph.py:103
 msgid "Edit gallery properties"
 msgstr ""
 
-#: ./src/pyams_content/component/gallery/zmi/__init__.py:54
+#: ./src/pyams_content/component/gallery/zmi/__init__.py:53
 msgid "Update gallery properties"
 msgstr ""
 
-#: ./src/pyams_content/component/gallery/zmi/__init__.py:89
+#: ./src/pyams_content/component/gallery/zmi/__init__.py:88
 msgid "Update gallery contents"
 msgstr ""
 
-#: ./src/pyams_content/component/gallery/zmi/__init__.py:162
+#: ./src/pyams_content/component/gallery/zmi/__init__.py:161
 msgid "Default gallery renderer"
 msgstr ""
 
@@ -207,6 +207,7 @@
 #: ./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
+#: ./src/pyams_content/shared/form/interfaces/__init__.py:61
 msgid "Description"
 msgstr ""
 
@@ -282,7 +283,7 @@
 
 #: ./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
+#: ./src/pyams_content/shared/imagemap/interfaces/__init__.py:61
 msgid "Image"
 msgstr ""
 
@@ -387,7 +388,7 @@
 
 #: ./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
+#: ./src/pyams_content/component/illustration/zmi/__init__.py:96
 msgid "Illustration"
 msgstr ""
 
@@ -399,19 +400,19 @@
 msgid "Add new illustration"
 msgstr ""
 
-#: ./src/pyams_content/component/illustration/zmi/paragraph.py:110
+#: ./src/pyams_content/component/illustration/zmi/paragraph.py:106
 msgid "Edit illustration properties"
 msgstr ""
 
-#: ./src/pyams_content/component/illustration/zmi/__init__.py:58
+#: ./src/pyams_content/component/illustration/zmi/__init__.py:59
 msgid "Centered illustration"
 msgstr ""
 
-#: ./src/pyams_content/component/illustration/zmi/__init__.py:67
+#: ./src/pyams_content/component/illustration/zmi/__init__.py:68
 msgid "Small illustration on the left with zoom"
 msgstr ""
 
-#: ./src/pyams_content/component/illustration/zmi/__init__.py:76
+#: ./src/pyams_content/component/illustration/zmi/__init__.py:77
 msgid "Small illustration on the right with zoom"
 msgstr ""
 
@@ -456,6 +457,7 @@
 msgstr ""
 
 #: ./src/pyams_content/component/paragraph/zmi/summary.py:46
+#: ./src/pyams_content/shared/form/zmi/summary.py:45
 #: ./src/pyams_content/shared/view/zmi/summary.py:44
 #: ./src/pyams_content/shared/imagemap/zmi/summary.py:44
 msgid "Quick preview"
@@ -465,44 +467,44 @@
 msgid "Paragraphs..."
 msgstr ""
 
-#: ./src/pyams_content/component/paragraph/zmi/container.py:80
-msgid "Paragraphs list"
-msgstr ""
-
-#: ./src/pyams_content/component/paragraph/zmi/container.py:148
+#: ./src/pyams_content/component/paragraph/zmi/container.py:126
 msgid "Switch paragraph visibility"
 msgstr ""
 
-#: ./src/pyams_content/component/paragraph/zmi/container.py:211
+#: ./src/pyams_content/component/paragraph/zmi/container.py:165
+msgid "Paragraphs list"
+msgstr ""
+
+#: ./src/pyams_content/component/paragraph/zmi/container.py:198
 msgid "Show/hide all paragraphs"
 msgstr ""
 
-#: ./src/pyams_content/component/paragraph/zmi/container.py:271
+#: ./src/pyams_content/component/paragraph/zmi/container.py:258
 msgid "Links"
 msgstr ""
 
-#: ./src/pyams_content/component/paragraph/zmi/container.py:287
+#: ./src/pyams_content/component/paragraph/zmi/container.py:274
 msgid "External files"
 msgstr ""
 
-#: ./src/pyams_content/component/paragraph/zmi/container.py:360
-#: ./src/pyams_content/component/association/zmi/__init__.py:93
+#: ./src/pyams_content/component/paragraph/zmi/container.py:347
+#: ./src/pyams_content/component/association/zmi/__init__.py:92
 msgid "Associations..."
 msgstr ""
 
-#: ./src/pyams_content/component/paragraph/zmi/container.py:372
+#: ./src/pyams_content/component/paragraph/zmi/container.py:359
 msgid "Paragraphs associations"
 msgstr ""
 
-#: ./src/pyams_content/component/paragraph/zmi/container.py:129
+#: ./src/pyams_content/component/paragraph/zmi/container.py:107
 msgid "No currently defined paragraph."
 msgstr ""
 
-#: ./src/pyams_content/component/paragraph/zmi/container.py:221
+#: ./src/pyams_content/component/paragraph/zmi/container.py:208
 msgid "Click to open/close all paragraphs editors"
 msgstr ""
 
-#: ./src/pyams_content/component/paragraph/zmi/container.py:232
+#: ./src/pyams_content/component/paragraph/zmi/container.py:219
 msgid "Click to open/close paragraph editor"
 msgstr ""
 
@@ -514,19 +516,19 @@
 msgid "Add new HTML paragraph"
 msgstr ""
 
-#: ./src/pyams_content/component/paragraph/zmi/html.py:118
+#: ./src/pyams_content/component/paragraph/zmi/html.py:114
 msgid "Edit HTML paragraph properties"
 msgstr ""
 
-#: ./src/pyams_content/component/paragraph/zmi/header.py:56
+#: ./src/pyams_content/component/paragraph/zmi/header.py:55
 msgid "Add header paragraph..."
 msgstr ""
 
-#: ./src/pyams_content/component/paragraph/zmi/header.py:67
+#: ./src/pyams_content/component/paragraph/zmi/header.py:66
 msgid "Add new header paragraph"
 msgstr ""
 
-#: ./src/pyams_content/component/paragraph/zmi/header.py:106
+#: ./src/pyams_content/component/paragraph/zmi/header.py:101
 msgid "Edit header paragraph properties"
 msgstr ""
 
@@ -537,6 +539,7 @@
 
 #: ./src/pyams_content/component/paragraph/interfaces/__init__.py:43
 #: ./src/pyams_content/component/association/interfaces/__init__.py:42
+#: ./src/pyams_content/shared/form/interfaces/__init__.py:82
 msgid "Visible?"
 msgstr ""
 
@@ -587,39 +590,39 @@
 msgid "Associations paragraph"
 msgstr ""
 
-#: ./src/pyams_content/component/association/zmi/paragraph.py:58
+#: ./src/pyams_content/component/association/zmi/paragraph.py:57
 msgid "Add associations paragraph..."
 msgstr ""
 
-#: ./src/pyams_content/component/association/zmi/paragraph.py:69
+#: ./src/pyams_content/component/association/zmi/paragraph.py:68
 msgid "Add new association paragraph"
 msgstr ""
 
-#: ./src/pyams_content/component/association/zmi/paragraph.py:103
+#: ./src/pyams_content/component/association/zmi/paragraph.py:98
 msgid "Edit association paragraph properties"
 msgstr ""
 
-#: ./src/pyams_content/component/association/zmi/__init__.py:105
+#: ./src/pyams_content/component/association/zmi/__init__.py:164
+msgid "Switch association visibility"
+msgstr ""
+
+#: ./src/pyams_content/component/association/zmi/__init__.py:215
+msgid "Public title"
+msgstr ""
+
+#: ./src/pyams_content/component/association/zmi/__init__.py:229
+msgid "Inner title"
+msgstr ""
+
+#: ./src/pyams_content/component/association/zmi/__init__.py:244
+msgid "Size"
+msgstr ""
+
+#: ./src/pyams_content/component/association/zmi/__init__.py:266
 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
+#: ./src/pyams_content/component/association/zmi/__init__.py:63
 msgid "Association was correctly added."
 msgstr ""
 
@@ -631,15 +634,15 @@
 msgid "Is this item visible in front-office?"
 msgstr ""
 
-#: ./src/pyams_content/component/links/__init__.py:91
+#: ./src/pyams_content/component/links/__init__.py:86
 msgid "Internal link"
 msgstr ""
 
-#: ./src/pyams_content/component/links/__init__.py:160
+#: ./src/pyams_content/component/links/__init__.py:143
 msgid "External link"
 msgstr ""
 
-#: ./src/pyams_content/component/links/__init__.py:201
+#: ./src/pyams_content/component/links/__init__.py:184
 msgid "Mailto link"
 msgstr ""
 
@@ -688,7 +691,7 @@
 msgstr ""
 
 #: ./src/pyams_content/component/links/interfaces/__init__.py:34
-#: ./src/pyams_content/shared/imagemap/interfaces/__init__.py:47
+#: ./src/pyams_content/shared/imagemap/interfaces/__init__.py:49
 msgid "Alternate title"
 msgstr ""
 
@@ -701,6 +704,7 @@
 msgstr ""
 
 #: ./src/pyams_content/component/links/interfaces/__init__.py:49
+#: ./src/pyams_content/shared/imagemap/interfaces/__init__.py:81
 msgid "Internal reference"
 msgstr ""
 
@@ -722,32 +726,32 @@
 msgid "Language used in this remote resource"
 msgstr ""
 
-#: ./src/pyams_content/component/links/interfaces/__init__.py:78
+#: ./src/pyams_content/component/links/interfaces/__init__.py:75
 msgid "Target address"
 msgstr ""
 
+#: ./src/pyams_content/component/links/interfaces/__init__.py:76
+msgid "Target email address"
+msgstr ""
+
 #: ./src/pyams_content/component/links/interfaces/__init__.py:79
-msgid "Target email address"
-msgstr ""
-
-#: ./src/pyams_content/component/links/interfaces/__init__.py:83
 msgid "Address name"
 msgstr ""
 
-#: ./src/pyams_content/component/links/interfaces/__init__.py:84
+#: ./src/pyams_content/component/links/interfaces/__init__.py:80
 msgid "Address as displayed in address book"
 msgstr ""
 
-#: ./src/pyams_content/component/links/interfaces/__init__.py:95
+#: ./src/pyams_content/component/links/interfaces/__init__.py:91
 msgid "Internal references"
 msgstr ""
 
-#: ./src/pyams_content/component/links/interfaces/__init__.py:96
+#: ./src/pyams_content/component/links/interfaces/__init__.py:92
 msgid "List of internal references"
 msgstr ""
 
-#: ./src/pyams_content/shared/common/__init__.py:126
-#: ./src/pyams_content/shared/common/__init__.py:134
+#: ./src/pyams_content/shared/common/__init__.py:127
+#: ./src/pyams_content/shared/common/__init__.py:135
 #, python-format
 msgid "{date} by {principal}"
 msgstr ""
@@ -767,7 +771,7 @@
 msgstr ""
 
 #: ./src/pyams_content/shared/common/zmi/search.py:143
-#: ./src/pyams_content/shared/common/zmi/dashboard.py:958
+#: ./src/pyams_content/shared/common/zmi/dashboard.py:964
 msgid "Advanced search"
 msgstr ""
 
@@ -776,7 +780,7 @@
 msgstr ""
 
 #: ./src/pyams_content/shared/common/zmi/search.py:118
-#: ./src/pyams_content/shared/common/zmi/dashboard.py:203
+#: ./src/pyams_content/shared/common/zmi/dashboard.py:207
 msgid "Owner"
 msgstr ""
 
@@ -848,7 +852,7 @@
 msgstr ""
 
 #: ./src/pyams_content/shared/common/zmi/workflow.py:201
-#: ./src/pyams_content/workflow/__init__.py:307
+#: ./src/pyams_content/workflow/__init__.py:310
 msgid "Cancel publication request"
 msgstr ""
 
@@ -873,7 +877,7 @@
 msgstr ""
 
 #: ./src/pyams_content/shared/common/zmi/workflow.py:535
-#: ./src/pyams_content/workflow/__init__.py:426
+#: ./src/pyams_content/workflow/__init__.py:429
 msgid "Request archive"
 msgstr ""
 
@@ -886,16 +890,16 @@
 msgstr ""
 
 #: ./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
+#: ./src/pyams_content/workflow/__init__.py:494
+#: ./src/pyams_content/workflow/__init__.py:506
+#: ./src/pyams_content/workflow/__init__.py:518
+#: ./src/pyams_content/workflow/__init__.py:530
+#: ./src/pyams_content/workflow/__init__.py:542
 msgid "Create new version"
 msgstr ""
 
 #: ./src/pyams_content/shared/common/zmi/workflow.py:727
-#: ./src/pyams_content/workflow/__init__.py:551
+#: ./src/pyams_content/workflow/__init__.py:554
 msgid "Delete version"
 msgstr ""
 
@@ -918,8 +922,8 @@
 msgstr ""
 
 #: ./src/pyams_content/shared/common/zmi/workflow.py:76
-#: ./src/pyams_content/workflow/__init__.py:607
-#: ./src/pyams_content/workflow/__init__.py:630
+#: ./src/pyams_content/workflow/__init__.py:610
+#: ./src/pyams_content/workflow/__init__.py:633
 #, python-format
 msgid "{state} {date}"
 msgstr ""
@@ -978,7 +982,7 @@
 msgstr ""
 
 #: ./src/pyams_content/shared/common/zmi/summary.py:153
-#: ./src/pyams_content/shared/common/zmi/dashboard.py:179
+#: ./src/pyams_content/shared/common/zmi/dashboard.py:181
 msgid "Version"
 msgstr ""
 
@@ -1062,262 +1066,262 @@
 msgid "Status date"
 msgstr ""
 
-#: ./src/pyams_content/shared/common/zmi/dashboard.py:190
+#: ./src/pyams_content/shared/common/zmi/dashboard.py:192
 msgid "Status principal"
 msgstr ""
 
-#: ./src/pyams_content/shared/common/zmi/dashboard.py:215
+#: ./src/pyams_content/shared/common/zmi/dashboard.py:221
 msgid "Last modification"
 msgstr ""
 
-#: ./src/pyams_content/shared/common/zmi/dashboard.py:233
+#: ./src/pyams_content/shared/common/zmi/dashboard.py:239
 #: ./src/pyams_content/root/zmi/__init__.py:89
 msgid "Dashboard"
 msgstr ""
 
-#: ./src/pyams_content/shared/common/zmi/dashboard.py:243
+#: ./src/pyams_content/shared/common/zmi/dashboard.py:249
 msgid "Contents dashboard"
 msgstr ""
 
-#: ./src/pyams_content/shared/common/zmi/dashboard.py:277
+#: ./src/pyams_content/shared/common/zmi/dashboard.py:283
 #: ./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:278
+#: ./src/pyams_content/shared/common/zmi/dashboard.py:284
 #: ./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:317
+#: ./src/pyams_content/shared/common/zmi/dashboard.py:323
 #: ./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:318
+#: ./src/pyams_content/shared/common/zmi/dashboard.py:324
 #: ./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:348
+#: ./src/pyams_content/shared/common/zmi/dashboard.py:354
 #: ./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/shared/common/zmi/dashboard.py:393
 #: ./src/pyams_content/root/zmi/__init__.py:256
 msgid "My contents"
 msgstr ""
 
-#: ./src/pyams_content/shared/common/zmi/dashboard.py:402
+#: ./src/pyams_content/shared/common/zmi/dashboard.py:408
 #: ./src/pyams_content/root/zmi/__init__.py:271
 msgid "My favorites"
 msgstr ""
 
-#: ./src/pyams_content/shared/common/zmi/dashboard.py:411
+#: ./src/pyams_content/shared/common/zmi/dashboard.py:417
 #: ./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/shared/common/zmi/dashboard.py:418
 #: ./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/dashboard.py:430
 #: ./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/shared/common/zmi/dashboard.py:491
 #: ./src/pyams_content/root/zmi/__init__.py:317
 msgid "Your favorites"
 msgstr ""
 
-#: ./src/pyams_content/shared/common/zmi/dashboard.py:498
+#: ./src/pyams_content/shared/common/zmi/dashboard.py:504
 #: ./src/pyams_content/root/zmi/__init__.py:330
 msgid "My preparations"
 msgstr ""
 
-#: ./src/pyams_content/shared/common/zmi/dashboard.py:507
+#: ./src/pyams_content/shared/common/zmi/dashboard.py:513
 #: ./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/shared/common/zmi/dashboard.py:514
 #: ./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/shared/common/zmi/dashboard.py:552
 #: ./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/shared/common/zmi/dashboard.py:565
 #: ./src/pyams_content/root/zmi/__init__.py:390
 msgid "My submissions"
 msgstr ""
 
-#: ./src/pyams_content/shared/common/zmi/dashboard.py:568
+#: ./src/pyams_content/shared/common/zmi/dashboard.py:574
 #: ./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/shared/common/zmi/dashboard.py:575
 #: ./src/pyams_content/root/zmi/__init__.py:400
 #, python-format
 msgid "CONTRIBUTOR - {0} submitted contents"
 msgstr ""
 
-#: ./src/pyams_content/shared/common/zmi/dashboard.py:607
+#: ./src/pyams_content/shared/common/zmi/dashboard.py:613
 #: ./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/shared/common/zmi/dashboard.py:626
 #: ./src/pyams_content/root/zmi/__init__.py:450
 msgid "My publications"
 msgstr ""
 
-#: ./src/pyams_content/shared/common/zmi/dashboard.py:629
+#: ./src/pyams_content/shared/common/zmi/dashboard.py:635
 #: ./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/shared/common/zmi/dashboard.py:636
 #: ./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/shared/common/zmi/dashboard.py:674
 #: ./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/shared/common/zmi/dashboard.py:687
 #: ./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/shared/common/zmi/dashboard.py:696
 #: ./src/pyams_content/root/zmi/__init__.py:519
 #, python-format
 msgid "CONTRIBUTOR - {0} retired content"
 msgstr ""
 
-#: ./src/pyams_content/shared/common/zmi/dashboard.py:691
+#: ./src/pyams_content/shared/common/zmi/dashboard.py:697
 #: ./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/shared/common/zmi/dashboard.py:736
 #: ./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/shared/common/zmi/dashboard.py:749
 #: ./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/shared/common/zmi/dashboard.py:758
 #: ./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/shared/common/zmi/dashboard.py:759
 #: ./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/shared/common/zmi/dashboard.py:804
 #: ./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/shared/common/zmi/dashboard.py:818
 #: ./src/pyams_content/root/zmi/__init__.py:639
 msgid "Other interventions"
 msgstr ""
 
-#: ./src/pyams_content/shared/common/zmi/dashboard.py:827
+#: ./src/pyams_content/shared/common/zmi/dashboard.py:833
 #: ./src/pyams_content/root/zmi/__init__.py:654
 msgid "Last publications"
 msgstr ""
 
-#: ./src/pyams_content/shared/common/zmi/dashboard.py:836
+#: ./src/pyams_content/shared/common/zmi/dashboard.py:842
 #: ./src/pyams_content/root/zmi/__init__.py:663
 #, python-format
 msgid "CONTRIBUTORS - {0} published content"
 msgstr ""
 
-#: ./src/pyams_content/shared/common/zmi/dashboard.py:881
+#: ./src/pyams_content/shared/common/zmi/dashboard.py:887
 #: ./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/shared/common/zmi/dashboard.py:900
 #: ./src/pyams_content/root/zmi/__init__.py:720
 msgid "Last updates"
 msgstr ""
 
-#: ./src/pyams_content/shared/common/zmi/dashboard.py:903
+#: ./src/pyams_content/shared/common/zmi/dashboard.py:909
 #: ./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/shared/common/zmi/dashboard.py:952
 #: ./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/shared/common/zmi/dashboard.py:359
 #: ./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/shared/common/zmi/dashboard.py:361
 #: ./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/shared/common/zmi/dashboard.py:847
 #: ./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/shared/common/zmi/dashboard.py:849
 #: ./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/shared/common/zmi/dashboard.py:914
 #: ./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:910
+#: ./src/pyams_content/shared/common/zmi/dashboard.py:916
 #: ./src/pyams_content/root/zmi/__init__.py:736
 msgid "CONTRIBUTORS - Last updated contents (in the limit of 50)"
 msgstr ""
@@ -1874,10 +1878,255 @@
 msgid "Given site name doesn't exist!"
 msgstr ""
 
-#: ./src/pyams_content/shared/form/interfaces/__init__.py:27
+#: ./src/pyams_content/shared/form/handler.py:85
+msgid "Mailto form handler"
+msgstr ""
+
+#: ./src/pyams_content/shared/form/handler.py:45
+msgid "No selected handler..."
+msgstr ""
+
+#: ./src/pyams_content/shared/form/field.py:148
+msgid "Text"
+msgstr ""
+
+#: ./src/pyams_content/shared/form/field.py:158
+msgid "Multi-lines text"
+msgstr ""
+
+#: ./src/pyams_content/shared/form/field.py:168
+msgid "Boolean"
+msgstr ""
+
+#: ./src/pyams_content/shared/form/field.py:178
+msgid "Integer"
+msgstr ""
+
+#: ./src/pyams_content/shared/form/field.py:188
+msgid "Decimal"
+msgstr ""
+
+#: ./src/pyams_content/shared/form/field.py:198
+msgid "E-mail address"
+msgstr ""
+
+#: ./src/pyams_content/shared/form/field.py:208
+msgid "URI"
+msgstr ""
+
+#: ./src/pyams_content/shared/form/field.py:218
+msgid "Date"
+msgstr ""
+
+#: ./src/pyams_content/shared/form/field.py:232
+msgid "Choice"
+msgstr ""
+
+#: ./src/pyams_content/shared/form/field.py:252
+msgid "List"
+msgstr ""
+
+#: ./src/pyams_content/shared/form/zmi/properties.py:39
+msgid "Main form settings"
+msgstr ""
+
+#: ./src/pyams_content/shared/form/zmi/properties.py:64
+msgid "Form handler settings"
+msgstr ""
+
+#: ./src/pyams_content/shared/form/zmi/__init__.py:44
+msgid "This form"
+msgstr ""
+
+#: ./src/pyams_content/shared/form/zmi/__init__.py:63
+#: ./src/pyams_content/shared/form/zmi/__init__.py:74
+msgid "Add form"
+msgstr ""
+
+#: ./src/pyams_content/shared/form/zmi/__init__.py:54
+#, python-format
+msgid "Form « {title} »"
+msgstr ""
+
+#: ./src/pyams_content/shared/form/zmi/field.py:65
+msgid "Form fields..."
+msgstr ""
+
+#: ./src/pyams_content/shared/form/zmi/field.py:127
+msgid "Switch field visibility"
+msgstr ""
+
+#: ./src/pyams_content/shared/form/zmi/field.py:158
+msgid "Name"
+msgstr ""
+
+#: ./src/pyams_content/shared/form/zmi/field.py:169
+#: ./src/pyams_content/shared/form/interfaces/__init__.py:57
+msgid "Label"
+msgstr ""
+
+#: ./src/pyams_content/shared/form/zmi/field.py:180
+#: ./src/pyams_content/shared/form/interfaces/__init__.py:52
+msgid "Field type"
+msgstr ""
+
+#: ./src/pyams_content/shared/form/zmi/field.py:213
+msgid "Form fields list"
+msgstr ""
+
+#: ./src/pyams_content/shared/form/zmi/field.py:249
+#: ./src/pyams_content/shared/form/zmi/field.py:260
+msgid "Add form field"
+msgstr ""
+
+#: ./src/pyams_content/shared/form/zmi/field.py:306
+msgid "Edit form field properties"
+msgstr ""
+
+#: ./src/pyams_content/shared/form/zmi/field.py:189
+msgid "-- unknown field type --"
+msgstr ""
+
+#: ./src/pyams_content/shared/form/zmi/field.py:108
+msgid "No currently defined form field."
+msgstr ""
+
+#: ./src/pyams_content/shared/form/zmi/field.py:285
+msgid "Specified name is already used!"
+msgstr ""
+
+#: ./src/pyams_content/shared/form/interfaces/__init__.py:34
 msgid "Form"
 msgstr ""
 
+#: ./src/pyams_content/shared/form/interfaces/__init__.py:48
+msgid "Field name"
+msgstr ""
+
+#: ./src/pyams_content/shared/form/interfaces/__init__.py:49
+msgid "Field internal name; must be unique for a given form"
+msgstr ""
+
+#: ./src/pyams_content/shared/form/interfaces/__init__.py:53
+msgid "Selected field type"
+msgstr ""
+
+#: ./src/pyams_content/shared/form/interfaces/__init__.py:58
+msgid "User field label"
+msgstr ""
+
+#: ./src/pyams_content/shared/form/interfaces/__init__.py:62
+msgid "Field description can be displayed as hint"
+msgstr ""
+
+#: ./src/pyams_content/shared/form/interfaces/__init__.py:65
+msgid "Placeholder"
+msgstr ""
+
+#: ./src/pyams_content/shared/form/interfaces/__init__.py:66
+msgid "Some field types like textline can display a placeholder"
+msgstr ""
+
+#: ./src/pyams_content/shared/form/interfaces/__init__.py:69
+msgid "Optional values"
+msgstr ""
+
+#: ./src/pyams_content/shared/form/interfaces/__init__.py:70
+msgid "List of available values (for 'choice' and 'list' field types)"
+msgstr ""
+
+#: ./src/pyams_content/shared/form/interfaces/__init__.py:73
+msgid "Default value"
+msgstr ""
+
+#: ./src/pyams_content/shared/form/interfaces/__init__.py:74
+msgid "Give default value if field type can use it"
+msgstr ""
+
+#: ./src/pyams_content/shared/form/interfaces/__init__.py:77
+msgid "Required?"
+msgstr ""
+
+#: ./src/pyams_content/shared/form/interfaces/__init__.py:78
+msgid "Select 'yes' to set field as mandatory"
+msgstr ""
+
+#: ./src/pyams_content/shared/form/interfaces/__init__.py:83
+msgid "Select 'no' to hide given field..."
+msgstr ""
+
+#: ./src/pyams_content/shared/form/interfaces/__init__.py:117
+msgid "Form title"
+msgstr ""
+
+#: ./src/pyams_content/shared/form/interfaces/__init__.py:120
+msgid "Form header"
+msgstr ""
+
+#: ./src/pyams_content/shared/form/interfaces/__init__.py:123
+msgid "Form handler"
+msgstr ""
+
+#: ./src/pyams_content/shared/form/interfaces/__init__.py:124
+msgid "Select how form data is transmitted"
+msgstr ""
+
+#: ./src/pyams_content/shared/form/interfaces/__init__.py:127
+msgid "Authenticated only?"
+msgstr ""
+
+#: ./src/pyams_content/shared/form/interfaces/__init__.py:128
+msgid "If 'yes', only authenticated users will be able to see and submit form"
+msgstr ""
+
+#: ./src/pyams_content/shared/form/interfaces/__init__.py:132
+msgid "Use captcha?"
+msgstr ""
+
+#: ./src/pyams_content/shared/form/interfaces/__init__.py:133
+msgid "If 'yes', a captcha will be added automatically to the form"
+msgstr ""
+
+#: ./src/pyams_content/shared/form/interfaces/__init__.py:137
+msgid "Submit label"
+msgstr ""
+
+#: ./src/pyams_content/shared/form/interfaces/__init__.py:138
+msgid "Label of form submit button"
+msgstr ""
+
+#: ./src/pyams_content/shared/form/interfaces/__init__.py:171
+msgid "Source address"
+msgstr ""
+
+#: ./src/pyams_content/shared/form/interfaces/__init__.py:172
+msgid "Mail address from which form data is sent"
+msgstr ""
+
+#: ./src/pyams_content/shared/form/interfaces/__init__.py:175
+msgid "Source name"
+msgstr ""
+
+#: ./src/pyams_content/shared/form/interfaces/__init__.py:176
+msgid "Name of mail data sender"
+msgstr ""
+
+#: ./src/pyams_content/shared/form/interfaces/__init__.py:179
+msgid "Recipient address"
+msgstr ""
+
+#: ./src/pyams_content/shared/form/interfaces/__init__.py:180
+msgid "Mail address to which form data is sent"
+msgstr ""
+
+#: ./src/pyams_content/shared/form/interfaces/__init__.py:183
+msgid "Recipient name"
+msgstr ""
+
+#: ./src/pyams_content/shared/form/interfaces/__init__.py:184
+msgid "Name of data recipient"
+msgstr ""
+
 #: ./src/pyams_content/shared/news/zmi/__init__.py:44
 msgid "This news topic"
 msgstr ""
@@ -2028,6 +2277,24 @@
 msgid "Other terms"
 msgstr ""
 
+#: ./src/pyams_content/shared/imagemap/paragraph.py:37
+#: ./src/pyams_content/shared/imagemap/paragraph.py:49
+#: ./src/pyams_content/shared/imagemap/interfaces/__init__.py:34
+msgid "Image map"
+msgstr ""
+
+#: ./src/pyams_content/shared/imagemap/zmi/paragraph.py:56
+msgid "Add image map..."
+msgstr ""
+
+#: ./src/pyams_content/shared/imagemap/zmi/paragraph.py:67
+msgid "Add new image map"
+msgstr ""
+
+#: ./src/pyams_content/shared/imagemap/zmi/paragraph.py:97
+msgid "Edit paragraph properties"
+msgstr ""
+
 #: ./src/pyams_content/shared/imagemap/zmi/properties.py:38
 msgid "Background image"
 msgstr ""
@@ -2054,12 +2321,12 @@
 msgstr ""
 
 #: ./src/pyams_content/shared/imagemap/zmi/container.py:65
-#: ./src/pyams_content/shared/imagemap/interfaces/__init__.py:63
+#: ./src/pyams_content/shared/imagemap/interfaces/__init__.py:65
 msgid "Image map areas"
 msgstr ""
 
 #: ./src/pyams_content/shared/imagemap/zmi/container.py:136
-#: ./src/pyams_content/shared/imagemap/interfaces/__init__.py:42
+#: ./src/pyams_content/shared/imagemap/interfaces/__init__.py:44
 msgid "Link target"
 msgstr ""
 
@@ -2095,34 +2362,34 @@
 msgid "Image areas preview"
 msgstr ""
 
-#: ./src/pyams_content/shared/imagemap/interfaces/__init__.py:32
-msgid "Image map"
-msgstr ""
-
-#: ./src/pyams_content/shared/imagemap/interfaces/__init__.py:43
+#: ./src/pyams_content/shared/imagemap/interfaces/__init__.py:45
 msgid "Internal or external link associated with this map area"
 msgstr ""
 
-#: ./src/pyams_content/shared/imagemap/interfaces/__init__.py:48
+#: ./src/pyams_content/shared/imagemap/interfaces/__init__.py:50
 msgid "Alternate label associated with this area"
 msgstr ""
 
-#: ./src/pyams_content/shared/imagemap/interfaces/__init__.py:51
+#: ./src/pyams_content/shared/imagemap/interfaces/__init__.py:53
 msgid "Map area coordinates"
 msgstr ""
 
-#: ./src/pyams_content/shared/imagemap/interfaces/__init__.py:52
+#: ./src/pyams_content/shared/imagemap/interfaces/__init__.py:54
 msgid "List of coordinates of image area"
 msgstr ""
 
-#: ./src/pyams_content/shared/imagemap/interfaces/__init__.py:60
+#: ./src/pyams_content/shared/imagemap/interfaces/__init__.py:62
 msgid "Image supporting map areas"
 msgstr ""
 
-#: ./src/pyams_content/shared/imagemap/interfaces/__init__.py:64
+#: ./src/pyams_content/shared/imagemap/interfaces/__init__.py:66
 msgid "List of defined map areas"
 msgstr ""
 
+#: ./src/pyams_content/shared/imagemap/interfaces/__init__.py:82
+msgid "Reference to image map object"
+msgstr ""
+
 #: ./src/pyams_content/shared/blog/zmi/__init__.py:50
 msgid "This blog post"
 msgstr ""
@@ -2226,297 +2493,297 @@
 msgid "Create new content"
 msgstr ""
 
-#: ./src/pyams_content/workflow/__init__.py:69
+#: ./src/pyams_content/workflow/__init__.py:70
 msgid "Draft"
 msgstr ""
 
-#: ./src/pyams_content/workflow/__init__.py:70
-msgid "Proposed"
-msgstr ""
-
 #: ./src/pyams_content/workflow/__init__.py:71
-msgid "Canceled"
+msgid "Proposed"
 msgstr ""
 
 #: ./src/pyams_content/workflow/__init__.py:72
-msgid "Refused"
+msgid "Canceled"
 msgstr ""
 
 #: ./src/pyams_content/workflow/__init__.py:73
-msgid "Published"
+msgid "Refused"
 msgstr ""
 
 #: ./src/pyams_content/workflow/__init__.py:74
-msgid "Retiring"
+msgid "Published"
 msgstr ""
 
 #: ./src/pyams_content/workflow/__init__.py:75
-msgid "Retired"
+msgid "Retiring"
 msgstr ""
 
 #: ./src/pyams_content/workflow/__init__.py:76
-msgid "Archiving"
+msgid "Retired"
 msgstr ""
 
 #: ./src/pyams_content/workflow/__init__.py:77
-msgid "Archived"
+msgid "Archiving"
 msgstr ""
 
 #: ./src/pyams_content/workflow/__init__.py:78
+msgid "Archived"
+msgstr ""
+
+#: ./src/pyams_content/workflow/__init__.py:79
 msgid "Deleted"
 msgstr ""
 
-#: ./src/pyams_content/workflow/__init__.py:83
-msgid "draft created"
-msgstr ""
-
 #: ./src/pyams_content/workflow/__init__.py:84
-msgid "publication requested"
+msgid "draft created"
 msgstr ""
 
 #: ./src/pyams_content/workflow/__init__.py:85
-msgid "published"
+msgid "publication requested"
 msgstr ""
 
 #: ./src/pyams_content/workflow/__init__.py:86
-msgid "retiring requested"
+msgid "published"
 msgstr ""
 
 #: ./src/pyams_content/workflow/__init__.py:87
-msgid "retired"
+msgid "retiring requested"
 msgstr ""
 
 #: ./src/pyams_content/workflow/__init__.py:88
-msgid "archiving requested"
+msgid "retired"
 msgstr ""
 
 #: ./src/pyams_content/workflow/__init__.py:89
+msgid "archiving requested"
+msgstr ""
+
+#: ./src/pyams_content/workflow/__init__.py:90
 msgid "archived"
 msgstr ""
 
-#: ./src/pyams_content/workflow/__init__.py:271
-msgid "Initialize"
-msgstr ""
-
 #: ./src/pyams_content/workflow/__init__.py:274
-msgid "Draft creation"
+msgid "Initialize"
 msgstr ""
 
 #: ./src/pyams_content/workflow/__init__.py:277
-#: ./src/pyams_content/workflow/__init__.py:292
+msgid "Draft creation"
+msgstr ""
+
+#: ./src/pyams_content/workflow/__init__.py:280
+#: ./src/pyams_content/workflow/__init__.py:295
 msgid "Propose publication"
 msgstr ""
 
-#: ./src/pyams_content/workflow/__init__.py:284
-#: ./src/pyams_content/workflow/__init__.py:299
+#: ./src/pyams_content/workflow/__init__.py:287
+#: ./src/pyams_content/workflow/__init__.py:302
 msgid "Publication request"
 msgstr ""
 
-#: ./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:288
+#: ./src/pyams_content/workflow/__init__.py:303
+#: ./src/pyams_content/workflow/__init__.py:389
+#: ./src/pyams_content/workflow/__init__.py:436
+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:291
 #, python-format
 msgid "A publication request has been submitted for content « {0} »"
 msgstr ""
 
-#: ./src/pyams_content/workflow/__init__.py:303
+#: ./src/pyams_content/workflow/__init__.py:306
 #, python-format
 msgid "A new publication request has been submitted for content « {0} »"
 msgstr ""
 
-#: ./src/pyams_content/workflow/__init__.py:314
+#: ./src/pyams_content/workflow/__init__.py:317
 msgid "Publication request canceled"
 msgstr ""
 
-#: ./src/pyams_content/workflow/__init__.py:316
+#: ./src/pyams_content/workflow/__init__.py:319
 #, python-format
 msgid "The publication request for content « {0} » has been cancelled"
 msgstr ""
 
-#: ./src/pyams_content/workflow/__init__.py:320
+#: ./src/pyams_content/workflow/__init__.py:323
 msgid "Reset canceled publication to draft"
 msgstr ""
 
-#: ./src/pyams_content/workflow/__init__.py:324
-#: ./src/pyams_content/workflow/__init__.py:353
+#: ./src/pyams_content/workflow/__init__.py:327
+#: ./src/pyams_content/workflow/__init__.py:356
 msgid "State reset to 'draft' (automatic)"
 msgstr ""
 
-#: ./src/pyams_content/workflow/__init__.py:328
+#: ./src/pyams_content/workflow/__init__.py:331
 msgid "Reset canceled publication to retired"
 msgstr ""
 
-#: ./src/pyams_content/workflow/__init__.py:332
+#: ./src/pyams_content/workflow/__init__.py:335
 msgid "State reset to 'retired' (automatic)"
 msgstr ""
 
-#: ./src/pyams_content/workflow/__init__.py:336
+#: ./src/pyams_content/workflow/__init__.py:339
 msgid "Refuse publication"
 msgstr ""
 
-#: ./src/pyams_content/workflow/__init__.py:343
+#: ./src/pyams_content/workflow/__init__.py:346
 msgid "Publication refused"
 msgstr ""
 
-#: ./src/pyams_content/workflow/__init__.py:345
+#: ./src/pyams_content/workflow/__init__.py:348
 #, python-format
 msgid "The publication request for content « {0} » has been refused"
 msgstr ""
 
-#: ./src/pyams_content/workflow/__init__.py:349
+#: ./src/pyams_content/workflow/__init__.py:352
 msgid "Reset refused publication to draft"
 msgstr ""
 
-#: ./src/pyams_content/workflow/__init__.py:357
+#: ./src/pyams_content/workflow/__init__.py:360
 msgid "Reset refused publication to retired"
 msgstr ""
 
-#: ./src/pyams_content/workflow/__init__.py:361
+#: ./src/pyams_content/workflow/__init__.py:364
 msgid "State reset to 'refused' (automatic)"
 msgstr ""
 
-#: ./src/pyams_content/workflow/__init__.py:373
+#: ./src/pyams_content/workflow/__init__.py:376
 msgid "Content published"
 msgstr ""
 
-#: ./src/pyams_content/workflow/__init__.py:375
+#: ./src/pyams_content/workflow/__init__.py:378
 #, python-format
 msgid "The content « {0} » has been published"
 msgstr ""
 
-#: ./src/pyams_content/workflow/__init__.py:379
+#: ./src/pyams_content/workflow/__init__.py:382
 msgid "Request retiring"
 msgstr ""
 
-#: ./src/pyams_content/workflow/__init__.py:385
+#: ./src/pyams_content/workflow/__init__.py:388
 msgid "Retire request"
 msgstr ""
 
-#: ./src/pyams_content/workflow/__init__.py:389
+#: ./src/pyams_content/workflow/__init__.py:392
 #, python-format
 msgid "A retire request has been submitted for content « {0} »"
 msgstr ""
 
-#: ./src/pyams_content/workflow/__init__.py:393
+#: ./src/pyams_content/workflow/__init__.py:396
 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 "Content retired after passed expiration date"
+msgstr ""
+
+#: ./src/pyams_content/workflow/__init__.py:403
 msgid "Cancel retiring request"
 msgstr ""
 
-#: ./src/pyams_content/workflow/__init__.py:407
+#: ./src/pyams_content/workflow/__init__.py:410
 msgid "Retire request canceled"
 msgstr ""
 
-#: ./src/pyams_content/workflow/__init__.py:409
+#: ./src/pyams_content/workflow/__init__.py:412
 #, python-format
 msgid "The retiring request for content « {0} » has been cancelled"
 msgstr ""
 
-#: ./src/pyams_content/workflow/__init__.py:413
+#: ./src/pyams_content/workflow/__init__.py:416
 msgid "Retire content"
 msgstr ""
 
-#: ./src/pyams_content/workflow/__init__.py:420
+#: ./src/pyams_content/workflow/__init__.py:423
 msgid "Content retired"
 msgstr ""
 
-#: ./src/pyams_content/workflow/__init__.py:422
+#: ./src/pyams_content/workflow/__init__.py:425
 #, python-format
 msgid "The content « {0} » has been retired"
 msgstr ""
 
-#: ./src/pyams_content/workflow/__init__.py:432
+#: ./src/pyams_content/workflow/__init__.py:435
 msgid "Archive request"
 msgstr ""
 
-#: ./src/pyams_content/workflow/__init__.py:436
+#: ./src/pyams_content/workflow/__init__.py:439
 #, python-format
 msgid "An archive request has been submitted for content « {0} »"
 msgstr ""
 
-#: ./src/pyams_content/workflow/__init__.py:440
+#: ./src/pyams_content/workflow/__init__.py:443
 msgid "Cancel archiving request"
 msgstr ""
 
-#: ./src/pyams_content/workflow/__init__.py:447
+#: ./src/pyams_content/workflow/__init__.py:450
 msgid "Archive request canceled"
 msgstr ""
 
-#: ./src/pyams_content/workflow/__init__.py:449
+#: ./src/pyams_content/workflow/__init__.py:452
 #, python-format
 msgid "The archive request for content « {0} » has been cancelled"
 msgstr ""
 
-#: ./src/pyams_content/workflow/__init__.py:453
+#: ./src/pyams_content/workflow/__init__.py:456
 msgid "Archive content"
 msgstr ""
 
-#: ./src/pyams_content/workflow/__init__.py:461
+#: ./src/pyams_content/workflow/__init__.py:464
 msgid "Content archived"
 msgstr ""
 
-#: ./src/pyams_content/workflow/__init__.py:463
+#: ./src/pyams_content/workflow/__init__.py:466
 #, python-format
 msgid "The content « {0} » has been archived"
 msgstr ""
 
-#: ./src/pyams_content/workflow/__init__.py:467
+#: ./src/pyams_content/workflow/__init__.py:470
 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
+#: ./src/pyams_content/workflow/__init__.py:474
+#: ./src/pyams_content/workflow/__init__.py:482
+#: ./src/pyams_content/workflow/__init__.py:490
 msgid "Content archived after version publication"
 msgstr ""
 
-#: ./src/pyams_content/workflow/__init__.py:475
+#: ./src/pyams_content/workflow/__init__.py:478
 msgid "Archive retiring content"
 msgstr ""
 
-#: ./src/pyams_content/workflow/__init__.py:483
+#: ./src/pyams_content/workflow/__init__.py:486
 msgid "Archive retired content"
 msgstr ""
 
-#: ./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
+#: ./src/pyams_content/workflow/__init__.py:502
+#: ./src/pyams_content/workflow/__init__.py:514
+#: ./src/pyams_content/workflow/__init__.py:526
+#: ./src/pyams_content/workflow/__init__.py:538
+#: ./src/pyams_content/workflow/__init__.py:550
 msgid "New version created"
 msgstr ""
 
-#: ./src/pyams_content/workflow/__init__.py:559
+#: ./src/pyams_content/workflow/__init__.py:562
 msgid "Version deleted"
 msgstr ""
 
-#: ./src/pyams_content/workflow/__init__.py:628
+#: ./src/pyams_content/workflow/__init__.py:631
 msgid "publication refused"
 msgstr ""
 
-#: ./src/pyams_content/workflow/__init__.py:626
+#: ./src/pyams_content/workflow/__init__.py:629
 msgid "new version created"
 msgstr ""
 
-#: ./src/pyams_content/workflow/__init__.py:241
+#: ./src/pyams_content/workflow/__init__.py:244
 #, python-format
 msgid "Published version {0}"
 msgstr ""
 
-#: ./src/pyams_content/workflow/task.py:57
+#: ./src/pyams_content/workflow/task.py:59
 msgid "Automatic contents withdrawal:\n"
 msgstr ""