Version 0.1.53 0.1.53
authorThierry Florac <tflorac@ulthar.net>
Thu, 26 Sep 2019 12:02:24 +0200
changeset 1355 81d85c23a445
parent 1354 1816388f2887
child 1356 d40f66f6bb55
Version 0.1.53
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	Wed Sep 25 17:21:20 2019 +0200
+++ b/buildout.cfg	Thu Sep 26 12:02:24 2019 +0200
@@ -85,4 +85,4 @@
 eggs = pyams_content [test]
 
 [versions]
-pyams_content = 0.1.52
+pyams_content = 0.1.53
--- a/docs/HISTORY.txt	Wed Sep 25 17:21:20 2019 +0200
+++ b/docs/HISTORY.txt	Thu Sep 26 12:02:24 2019 +0200
@@ -1,6 +1,18 @@
 History
 =======
 
+0.1.53
+------
+ - added interfaces and subscribers to be able to provide additional information to an internal
+   link based on link's target class
+ - updated search results portlet API so that results pages can have custom length
+ - updated shared forms management (added RGPD consent management properties, updated
+ - small refactoring in shared contents properties edit forms
+ - added IInternalReferencesList support to logos paragraph
+ - added option in shared data types definition to allow display of data type as content's tag
+ - force full reload when shared content's title is modified so that breadcrumbs are correctly updated
+ - added data type criteria in advanced search form
+
 0.1.52
 ------
  - updated label dor draft contents using standard workflow
--- a/setup.py	Wed Sep 25 17:21:20 2019 +0200
+++ b/setup.py	Thu Sep 26 12:02:24 2019 +0200
@@ -24,7 +24,7 @@
 README = os.path.join(DOCS, 'README.txt')
 HISTORY = os.path.join(DOCS, 'HISTORY.txt')
 
-version = '0.1.52'
+version = '0.1.53'
 long_description = open(README).read() + '\n\n' + open(HISTORY).read()
 
 tests_require = []
--- a/src/pyams_content.egg-info/PKG-INFO	Wed Sep 25 17:21:20 2019 +0200
+++ b/src/pyams_content.egg-info/PKG-INFO	Thu Sep 26 12:02:24 2019 +0200
@@ -1,6 +1,6 @@
 Metadata-Version: 2.1
 Name: pyams-content
-Version: 0.1.52
+Version: 0.1.53
 Summary: PyAMS base content interfaces and classes
 Home-page: http://hg.ztfy.org/pyams/pyams_content
 Author: Thierry Florac
@@ -72,6 +72,18 @@
         History
         =======
         
+        0.1.53
+        ------
+         - added interfaces and subscribers to be able to provide additional information to an internal
+           link based on link's target class
+         - updated search results portlet API so that results pages can have custom length
+         - updated shared forms management (added RGPD consent management properties, updated
+         - small refactoring in shared contents properties edit forms
+         - added IInternalReferencesList support to logos paragraph
+         - added option in shared data types definition to allow display of data type as content's tag
+         - force full reload when shared content's title is modified so that breadcrumbs are correctly updated
+         - added data type criteria in advanced search form
+        
         0.1.52
         ------
          - updated label dor draft contents using standard workflow
--- a/src/pyams_content.egg-info/SOURCES.txt	Wed Sep 25 17:21:20 2019 +0200
+++ b/src/pyams_content.egg-info/SOURCES.txt	Thu Sep 26 12:02:24 2019 +0200
@@ -346,6 +346,7 @@
 src/pyams_content/shared/form/manager.py
 src/pyams_content/shared/form/zmi/__init__.py
 src/pyams_content/shared/form/zmi/field.py
+src/pyams_content/shared/form/zmi/paragraph.py
 src/pyams_content/shared/form/zmi/properties.py
 src/pyams_content/shared/imagemap/__init__.py
 src/pyams_content/shared/imagemap/interfaces.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	Wed Sep 25 17:21:20 2019 +0200
+++ b/src/pyams_content/locales/fr/LC_MESSAGES/pyams_content.po	Thu Sep 26 12:02:24 2019 +0200
@@ -5,7 +5,7 @@
 msgid ""
 msgstr ""
 "Project-Id-Version: PACKAGE 1.0\n"
-"POT-Creation-Date: 2019-07-26 12:53+0200\n"
+"POT-Creation-Date: 2019-09-25 17:04+0200\n"
 "PO-Revision-Date: 2015-09-10 10:42+0200\n"
 "Last-Translator: Thierry Florac <tflorac@ulthar.net>\n"
 "Language-Team: French\n"
@@ -191,9 +191,9 @@
 #: src/pyams_content/reference/pictograms/zmi/__init__.py:150
 #: src/pyams_content/component/keynumber/portlet/interfaces.py:31
 #: src/pyams_content/component/gallery/interfaces.py:107
-#: src/pyams_content/component/paragraph/interfaces/milestone.py:40
+#: src/pyams_content/component/paragraph/interfaces/milestone.py:42
 #: src/pyams_content/component/paragraph/zmi/container.py:266
-#: src/pyams_content/component/paragraph/zmi/milestone.py:221
+#: src/pyams_content/component/paragraph/zmi/milestone.py:238
 #: src/pyams_content/interfaces/__init__.py:101
 #: src/pyams_content/features/menu/portlet/navigation/interfaces/simple.py:31
 #: src/pyams_content/features/menu/portlet/navigation/interfaces/double.py:31
@@ -202,7 +202,7 @@
 #: src/pyams_content/shared/view/portlet/interfaces.py:52
 #: src/pyams_content/shared/common/zmi/dashboard.py:122
 #: src/pyams_content/shared/common/zmi/reverse.py:73
-#: src/pyams_content/shared/common/zmi/templates/advanced-search.pt:200
+#: src/pyams_content/shared/common/zmi/templates/advanced-search.pt:223
 #: src/pyams_content/shared/site/portlet/interfaces.py:24
 #: src/pyams_content/shared/site/zmi/folder.py:66
 #: src/pyams_content/shared/imagemap/zmi/container.py:123
@@ -232,12 +232,12 @@
 
 #: src/pyams_content/component/keynumber/interfaces.py:40
 #: src/pyams_content/component/paragraph/interfaces/pictogram.py:41
-#: src/pyams_content/component/paragraph/interfaces/milestone.py:35
+#: src/pyams_content/component/paragraph/interfaces/milestone.py:37
 #: src/pyams_content/component/paragraph/interfaces/__init__.py:39
 #: src/pyams_content/component/association/interfaces.py:37
 #: src/pyams_content/features/alert/interfaces.py:54
 #: src/pyams_content/features/menu/interfaces.py:62
-#: src/pyams_content/shared/form/interfaces.py:83
+#: src/pyams_content/shared/form/interfaces.py:86
 #: src/pyams_content/shared/site/interfaces.py:179
 msgid "Visible?"
 msgstr "Visible ?"
@@ -283,7 +283,7 @@
 #: src/pyams_content/component/video/interfaces.py:46
 #: src/pyams_content/component/paragraph/interfaces/video.py:50
 #: src/pyams_content/component/paragraph/interfaces/pictogram.py:58
-#: src/pyams_content/component/paragraph/interfaces/milestone.py:80
+#: src/pyams_content/component/paragraph/interfaces/milestone.py:90
 #: src/pyams_content/component/paragraph/zmi/pictogram.py:259
 #: src/pyams_content/component/illustration/interfaces.py:62
 msgid "Associated text"
@@ -472,11 +472,11 @@
 msgstr "Titre de la galerie présenté aux internautes"
 
 #: src/pyams_content/component/gallery/interfaces.py:111
-#: src/pyams_content/component/links/interfaces.py:39
+#: src/pyams_content/component/links/interfaces.py:36
 #: src/pyams_content/component/paragraph/interfaces/audio.py:50
 #: src/pyams_content/component/extfile/interfaces.py:36
 #: src/pyams_content/features/search/interfaces.py:45
-#: src/pyams_content/shared/form/interfaces.py:62
+#: src/pyams_content/shared/form/interfaces.py:63
 msgid "Description"
 msgstr "Description"
 
@@ -874,60 +874,62 @@
 msgid "Other settings"
 msgstr "Autres paramètres"
 
-#: src/pyams_content/component/links/__init__.py:140
+#: src/pyams_content/component/links/__init__.py:146
 msgid "Internal link"
 msgstr "Lien interne"
 
-#: src/pyams_content/component/links/__init__.py:223
+#: src/pyams_content/component/links/__init__.py:265
 #: src/pyams_content/features/redirect/zmi/container.py:278
 msgid "External link"
 msgstr "Lien externe"
 
-#: src/pyams_content/component/links/__init__.py:269
+#: src/pyams_content/component/links/__init__.py:311
 msgid "Mailto link"
 msgstr "Lien mailto"
 
-#: src/pyams_content/component/links/__init__.py:210
+#: src/pyams_content/component/links/__init__.py:252
 msgid "target is not published"
 msgstr "le contenu ciblé n'est pas publié"
 
-#: src/pyams_content/component/links/interfaces.py:35
+#: src/pyams_content/component/links/interfaces.py:32
+#: src/pyams_content/shared/form/interfaces.py:145
 #: src/pyams_content/shared/imagemap/interfaces.py:55
 msgid "Alternate title"
 msgstr "Titre de substitution"
 
-#: src/pyams_content/component/links/interfaces.py:36
+#: src/pyams_content/component/links/interfaces.py:33
 msgid "Link title, as shown in front-office"
 msgstr ""
 "Le contexte d'utilisation de ce lien peut nécessiter de modifier son titre "
 "d'origine. Ce titre de substitution sera alors présenté aux internautes."
 
-#: src/pyams_content/component/links/interfaces.py:40
+#: src/pyams_content/component/links/interfaces.py:37
 msgid "Link description displayed by front-office template"
 msgstr "Description du lien, présentée aux internautes"
 
-#: src/pyams_content/component/links/interfaces.py:43
+#: src/pyams_content/component/links/interfaces.py:41
 #: src/pyams_content/component/paragraph/interfaces/pictogram.py:46
+#: src/pyams_content/component/paragraph/interfaces/milestone.py:51
 #: src/pyams_content/features/share/interfaces.py:75
 #: src/pyams_content/features/menu/interfaces.py:84
-#: src/pyams_content/shared/common/interfaces/types.py:59
+#: src/pyams_content/shared/common/interfaces/types.py:62
 msgid "Pictogram"
 msgstr "Pictogramme"
 
-#: src/pyams_content/component/links/interfaces.py:44
+#: src/pyams_content/component/links/interfaces.py:42
 msgid "Name of the pictogram associated with this link"
 msgstr ""
 "Pictogramme à associer à ce lien. ATTENTION: ce pictogramme n'est affiché "
 "que par certains modes de rendu !!"
 
-#: src/pyams_content/component/links/interfaces.py:57
-#: src/pyams_content/features/search/portlet/interfaces.py:38
+#: src/pyams_content/component/links/interfaces.py:55
+#: src/pyams_content/features/search/portlet/interfaces.py:41
 #: src/pyams_content/shared/view/portlet/interfaces.py:99
 msgid "Force canonical URL?"
 msgstr "Imposer l'URL canonique"
 
-#: src/pyams_content/component/links/interfaces.py:58
-#: src/pyams_content/features/search/portlet/interfaces.py:39
+#: src/pyams_content/component/links/interfaces.py:56
+#: src/pyams_content/features/search/portlet/interfaces.py:42
 #: src/pyams_content/shared/view/portlet/interfaces.py:100
 msgid ""
 "By default, internal links use a \"relative\" URL, which tries to display "
@@ -940,14 +942,26 @@
 "\"canonique\", l'URL générée permet de consulter le contenu dans le contexte "
 "de sa rubrique ou de son site de rattachement, s'ils existent"
 
-#: src/pyams_content/component/links/interfaces.py:68
+#: src/pyams_content/component/links/interfaces.py:77
+msgid ""
+"Marker interface provided by links directed to contents supporting this "
+"interface"
+msgstr ""
+"Interface de marquage fournie par les liens internes qui pointent vers un "
+"gabarit supportant cette interface"
+
+#: src/pyams_content/component/links/interfaces.py:89
+msgid "Info properties interface"
+msgstr "Interface des propriétés"
+
+#: src/pyams_content/component/links/interfaces.py:98
 #: src/pyams_content/features/redirect/interfaces.py:68
 #: src/pyams_content/shared/site/interfaces.py:192
 #: src/pyams_content/shared/logo/interfaces.py:50
 msgid "Target URL"
 msgstr "URL cible"
 
-#: src/pyams_content/component/links/interfaces.py:69
+#: src/pyams_content/component/links/interfaces.py:99
 #: src/pyams_content/shared/site/interfaces.py:193
 #: src/pyams_content/shared/logo/interfaces.py:51
 msgid "URL used to access external resource"
@@ -955,80 +969,84 @@
 "URL utilisée pour accéder à cette ressource externe. Doit comprendre le "
 "protocole d'accès au site, comme « http:// » ou « https:// »."
 
-#: src/pyams_content/component/links/interfaces.py:72
+#: src/pyams_content/component/links/interfaces.py:102
 #: src/pyams_content/component/extfile/interfaces.py:44
 msgid "Language"
 msgstr "Langue"
 
-#: src/pyams_content/component/links/interfaces.py:73
+#: src/pyams_content/component/links/interfaces.py:103
 msgid "Language used in this remote resource"
 msgstr ""
 "Langue utilisée par cette ressource extene ; à préciser lorsqu'il ne s'agit "
 "pas de la langue par défaut du site."
 
-#: src/pyams_content/component/links/interfaces.py:81
+#: src/pyams_content/component/links/interfaces.py:111
 msgid "Target address"
 msgstr "Adresse mail"
 
-#: src/pyams_content/component/links/interfaces.py:82
+#: src/pyams_content/component/links/interfaces.py:112
 msgid "Target email address"
 msgstr "Adresse de messagerie \"stricte\", soit uniquement \"xxx@yyy.com\""
 
-#: src/pyams_content/component/links/interfaces.py:85
+#: src/pyams_content/component/links/interfaces.py:115
 msgid "Address name"
 msgstr "Nom de messagerie"
 
-#: src/pyams_content/component/links/interfaces.py:86
+#: src/pyams_content/component/links/interfaces.py:116
 msgid "Address as displayed in address book"
 msgstr ""
 "Nom de la boîte aux lettres, tel qu'il sera affiché dans l'application de "
 "messagerie."
 
-#: src/pyams_content/component/links/zmi/__init__.py:54
+#: src/pyams_content/component/links/zmi/__init__.py:63
 msgid "Internal links"
 msgstr "Liens internes"
 
-#: src/pyams_content/component/links/zmi/__init__.py:69
+#: src/pyams_content/component/links/zmi/__init__.py:78
 msgid "Add internal link"
 msgstr "Lien interne"
 
-#: src/pyams_content/component/links/zmi/__init__.py:83
+#: src/pyams_content/component/links/zmi/__init__.py:92
 msgid "Add new internal link"
 msgstr "Ajout d'un lien interne"
 
-#: src/pyams_content/component/links/zmi/__init__.py:116
+#: src/pyams_content/component/links/zmi/__init__.py:128
 msgid "Edit internal link properties"
 msgstr "Propriétés du lien interne"
 
-#: src/pyams_content/component/links/zmi/__init__.py:146
+#: src/pyams_content/component/links/zmi/__init__.py:158
+msgid "Custom target properties"
+msgstr "Propriétés de la cible du lien"
+
+#: src/pyams_content/component/links/zmi/__init__.py:189
 msgid "External links"
 msgstr "Liens externes"
 
-#: src/pyams_content/component/links/zmi/__init__.py:161
+#: src/pyams_content/component/links/zmi/__init__.py:204
 msgid "Add external link"
 msgstr "Lien externe"
 
-#: src/pyams_content/component/links/zmi/__init__.py:175
+#: src/pyams_content/component/links/zmi/__init__.py:218
 msgid "Add new external link"
 msgstr "Ajout d'un lien externe"
 
-#: src/pyams_content/component/links/zmi/__init__.py:206
+#: src/pyams_content/component/links/zmi/__init__.py:252
 msgid "Edit external link properties"
 msgstr "Propriétés du lien externe"
 
-#: src/pyams_content/component/links/zmi/__init__.py:234
+#: src/pyams_content/component/links/zmi/__init__.py:282
 msgid "Mailto links"
 msgstr "Liens mailto"
 
-#: src/pyams_content/component/links/zmi/__init__.py:249
+#: src/pyams_content/component/links/zmi/__init__.py:297
 msgid "Add mailto link"
 msgstr "Lien mailto"
 
-#: src/pyams_content/component/links/zmi/__init__.py:263
+#: src/pyams_content/component/links/zmi/__init__.py:311
 msgid "Add new mailto link"
 msgstr "Ajout d'un lien « mailto »"
 
-#: src/pyams_content/component/links/zmi/__init__.py:294
+#: src/pyams_content/component/links/zmi/__init__.py:345
 msgid "Edit mailto link properties"
 msgstr "Propriétés du lien « mailto »"
 
@@ -1048,11 +1066,11 @@
 msgid "Selected pictogram is missing"
 msgstr "le pictogramme sélectionné est introuvable"
 
-#: src/pyams_content/component/paragraph/milestone.py:141
+#: src/pyams_content/component/paragraph/milestone.py:164
 msgid "Selected paragraph is missing"
 msgstr "le bloc sélectionné est introuvable"
 
-#: src/pyams_content/component/paragraph/milestone.py:144
+#: src/pyams_content/component/paragraph/milestone.py:167
 msgid "Selected paragraph is not visible"
 msgstr "le bloc sélectionné n'est pas visible"
 
@@ -1119,7 +1137,7 @@
 msgstr "Référence d'un formulaire de contact"
 
 #: src/pyams_content/component/paragraph/interfaces/contact.py:69
-#: src/pyams_content/shared/form/field.py:207
+#: src/pyams_content/shared/form/field.py:212
 msgid "Phone number"
 msgstr "Téléphone"
 
@@ -1211,48 +1229,54 @@
 msgid "Presentation template used for pictograms"
 msgstr "Modèle de présentation utilisé par ce bloc de contenu"
 
-#: src/pyams_content/component/paragraph/interfaces/milestone.py:73
-#: src/pyams_content/component/paragraph/zmi/milestone.py:274
+#: src/pyams_content/component/paragraph/interfaces/milestone.py:83
+#: src/pyams_content/component/paragraph/zmi/milestone.py:296
 msgid "Milestones"
 msgstr "Chronologie"
 
-#: src/pyams_content/component/paragraph/interfaces/milestone.py:36
+#: src/pyams_content/component/paragraph/interfaces/milestone.py:38
 msgid "Is this milestone visible in front-office?"
 msgstr "Si 'non', ce jalon ne sera pas présenté aux internautes"
 
-#: src/pyams_content/component/paragraph/interfaces/milestone.py:41
+#: src/pyams_content/component/paragraph/interfaces/milestone.py:43
 msgid "Milestone title"
 msgstr "Libellé associé au jalon"
 
-#: src/pyams_content/component/paragraph/interfaces/milestone.py:44
-#: src/pyams_content/component/paragraph/zmi/milestone.py:233
+#: src/pyams_content/component/paragraph/interfaces/milestone.py:46
+#: src/pyams_content/component/paragraph/zmi/milestone.py:252
 msgid "Associated label"
 msgstr "Information associée"
 
-#: src/pyams_content/component/paragraph/interfaces/milestone.py:45
+#: src/pyams_content/component/paragraph/interfaces/milestone.py:47
 msgid "The way this label will be rendered depends on presentation template"
 msgstr ""
 "La présentation de cette information peut varier en fonction du mode de "
 "rendu choisi"
 
-#: src/pyams_content/component/paragraph/interfaces/milestone.py:48
-#: src/pyams_content/component/paragraph/zmi/milestone.py:245
+#: src/pyams_content/component/paragraph/interfaces/milestone.py:52
+msgid "Name of the pictogram associated with this milestone"
+msgstr ""
+"Pictogramme à associer à ce jalon. ATTENTION: ce pictogramme n'est affiché "
+"que par certains modes de rendu !!"
+
+#: src/pyams_content/component/paragraph/interfaces/milestone.py:58
+#: src/pyams_content/component/paragraph/zmi/milestone.py:265
 msgid "Anchor"
 msgstr "Ancre"
 
-#: src/pyams_content/component/paragraph/interfaces/milestone.py:49
+#: src/pyams_content/component/paragraph/interfaces/milestone.py:59
 msgid "Paragraph to which this milestone should lead"
 msgstr "Bloc de contenu vers lequel ce jalon doit conduire"
 
-#: src/pyams_content/component/paragraph/interfaces/milestone.py:81
+#: src/pyams_content/component/paragraph/interfaces/milestone.py:91
 msgid "Additional text associated to this milestone paragraph"
 msgstr "Texte complémentaire associé à ce bloc"
 
-#: src/pyams_content/component/paragraph/interfaces/milestone.py:84
+#: src/pyams_content/component/paragraph/interfaces/milestone.py:94
 msgid "Milestones template"
 msgstr "Mode de rendu"
 
-#: src/pyams_content/component/paragraph/interfaces/milestone.py:85
+#: src/pyams_content/component/paragraph/interfaces/milestone.py:95
 msgid "Presentation template used for milestones"
 msgstr "Modèle de présentation utilisé par ce bloc de contenu"
 
@@ -1260,7 +1284,7 @@
 msgid "Raw source"
 msgstr "Code source"
 
-#: src/pyams_content/component/paragraph/interfaces/html.py:52
+#: src/pyams_content/component/paragraph/interfaces/html.py:53
 msgid "Rich text"
 msgstr "Texte enrichi"
 
@@ -1279,25 +1303,26 @@
 "donc avec précaution !!<br />Utilisez les touches &lt;CTRL&gt;+&lt;,&gt; "
 "pour afficher les options de l'éditeur...</span>"
 
-#: src/pyams_content/component/paragraph/interfaces/html.py:41
+#: src/pyams_content/component/paragraph/interfaces/html.py:42
 msgid "Source code template"
 msgstr "Mode de rendu"
 
-#: src/pyams_content/component/paragraph/interfaces/html.py:42
-#: src/pyams_content/component/paragraph/interfaces/html.py:63
+#: src/pyams_content/component/paragraph/interfaces/html.py:43
+#: src/pyams_content/component/paragraph/interfaces/html.py:64
 #: src/pyams_content/component/paragraph/interfaces/verbatim.py:53
 #: src/pyams_content/component/paragraph/interfaces/keypoint.py:45
 #: src/pyams_content/component/paragraph/interfaces/frame.py:44
+#: src/pyams_content/shared/form/interfaces.py:118
 #: src/pyams_content/shared/imagemap/interfaces.py:101
 #: src/pyams_content/shared/logo/interfaces.py:94
 msgid "Presentation template used for this paragraph"
 msgstr "Mode de rendu utilisé par ce bloc de contenu"
 
-#: src/pyams_content/component/paragraph/interfaces/html.py:59
+#: src/pyams_content/component/paragraph/interfaces/html.py:60
 msgid "Body"
 msgstr "Contenu HTML"
 
-#: src/pyams_content/component/paragraph/interfaces/html.py:62
+#: src/pyams_content/component/paragraph/interfaces/html.py:63
 msgid "Body template"
 msgstr "Mode de rendu"
 
@@ -1648,59 +1673,59 @@
 msgid "You must select a pictogram!"
 msgstr "Vous devez sélectionner un pictogramme !"
 
-#: src/pyams_content/component/paragraph/zmi/milestone.py:72
+#: src/pyams_content/component/paragraph/zmi/milestone.py:78
 msgid "Milestones..."
 msgstr "Chronologie"
 
-#: src/pyams_content/component/paragraph/zmi/milestone.py:85
+#: src/pyams_content/component/paragraph/zmi/milestone.py:93
 msgid "Add new milestone paragraph"
 msgstr "Ajout d'une chronologie"
 
-#: src/pyams_content/component/paragraph/zmi/milestone.py:104
+#: src/pyams_content/component/paragraph/zmi/milestone.py:112
 msgid "Edit milestone paragraph properties"
 msgstr "Propriétés de la chronologie"
 
-#: src/pyams_content/component/paragraph/zmi/milestone.py:289
+#: src/pyams_content/component/paragraph/zmi/milestone.py:312
 msgid "Add milestone"
 msgstr "Ajouter un jalon"
 
-#: src/pyams_content/component/paragraph/zmi/milestone.py:302
+#: src/pyams_content/component/paragraph/zmi/milestone.py:325
 msgid "Add new milestone"
 msgstr "Ajout d'un jalon"
 
-#: src/pyams_content/component/paragraph/zmi/milestone.py:334
+#: src/pyams_content/component/paragraph/zmi/milestone.py:361
 msgid "Edit milestone properties"
 msgstr "Propriétés du jalon"
 
-#: src/pyams_content/component/paragraph/zmi/milestone.py:322
+#: src/pyams_content/component/paragraph/zmi/milestone.py:347
 msgid "Milestone was correctly added"
 msgstr "Le jalon a été ajouté."
 
-#: src/pyams_content/component/paragraph/zmi/milestone.py:260
+#: src/pyams_content/component/paragraph/zmi/milestone.py:280
 msgid "(missing paragraph)"
 msgstr "(paragraphe supprimé)"
 
-#: src/pyams_content/component/paragraph/zmi/html.py:73
+#: src/pyams_content/component/paragraph/zmi/html.py:79
 msgid "Source code..."
 msgstr "Code source"
 
-#: src/pyams_content/component/paragraph/zmi/html.py:86
+#: src/pyams_content/component/paragraph/zmi/html.py:92
 msgid "Add new source code paragraph"
 msgstr "Ajout d'un paragraphe de code source"
 
-#: src/pyams_content/component/paragraph/zmi/html.py:114
+#: src/pyams_content/component/paragraph/zmi/html.py:120
 msgid "Edit source code paragraph properties"
 msgstr "Propriétés du paragraphe de code source"
 
-#: src/pyams_content/component/paragraph/zmi/html.py:155
+#: src/pyams_content/component/paragraph/zmi/html.py:162
 msgid "Rich text..."
 msgstr "Texte enrichi"
 
-#: src/pyams_content/component/paragraph/zmi/html.py:168
+#: src/pyams_content/component/paragraph/zmi/html.py:175
 msgid "Add new rich text paragraph"
 msgstr "Ajout d'un bloc de texte enrichi"
 
-#: src/pyams_content/component/paragraph/zmi/html.py:198
+#: src/pyams_content/component/paragraph/zmi/html.py:205
 msgid "Edit rich text paragraph properties"
 msgstr "Propriétés du texte enrichi"
 
@@ -1716,15 +1741,15 @@
 msgid "Edit verbatim paragraph properties"
 msgstr "Propriétés du verbatim"
 
-#: src/pyams_content/component/paragraph/zmi/__init__.py:64
+#: src/pyams_content/component/paragraph/zmi/__init__.py:67
 msgid "Content block types..."
 msgstr "Types de blocs de contenu"
 
-#: src/pyams_content/component/paragraph/zmi/__init__.py:78
+#: src/pyams_content/component/paragraph/zmi/__init__.py:81
 msgid "Content block types"
 msgstr "Types de blocs de contenu"
 
-#: src/pyams_content/component/paragraph/zmi/__init__.py:88
+#: src/pyams_content/component/paragraph/zmi/__init__.py:92
 msgid ""
 "You can define which types of paragraphs are allowed in this container.\n"
 "\n"
@@ -1743,15 +1768,15 @@
 "REMARQUE : supprimer des types de la liste des types de blocs autorisés sera "
 "sans effet sur les contenus existants."
 
-#: src/pyams_content/component/paragraph/zmi/__init__.py:247
-#: src/pyams_content/component/paragraph/zmi/__init__.py:260
+#: src/pyams_content/component/paragraph/zmi/__init__.py:257
+#: src/pyams_content/component/paragraph/zmi/__init__.py:270
 #: src/pyams_content/features/preview/zmi/__init__.py:46
 #: src/pyams_content/shared/common/zmi/templates/preview-input.pt:39
 msgid "Preview"
 msgstr "Aperçu"
 
-#: src/pyams_content/component/paragraph/zmi/__init__.py:252
-#: src/pyams_content/component/paragraph/zmi/__init__.py:265
+#: src/pyams_content/component/paragraph/zmi/__init__.py:262
+#: src/pyams_content/component/paragraph/zmi/__init__.py:275
 #: src/pyams_content/features/review/zmi/__init__.py:84
 #: src/pyams_content/shared/common/zmi/__init__.py:272
 #: src/pyams_content/shared/common/zmi/owner.py:73
@@ -1772,16 +1797,16 @@
 msgid "Cancel"
 msgstr "Annuler"
 
-#: src/pyams_content/component/paragraph/zmi/__init__.py:254
-#: src/pyams_content/component/paragraph/zmi/__init__.py:267
+#: src/pyams_content/component/paragraph/zmi/__init__.py:264
+#: src/pyams_content/component/paragraph/zmi/__init__.py:277
 msgid "Submit"
 msgstr "Enregistrer"
 
-#: src/pyams_content/component/paragraph/zmi/__init__.py:231
+#: src/pyams_content/component/paragraph/zmi/__init__.py:241
 msgid "Paragraph was correctly added."
 msgstr "Le bloc a été ajouté."
 
-#: src/pyams_content/component/paragraph/zmi/__init__.py:326
+#: src/pyams_content/component/paragraph/zmi/__init__.py:338
 msgid ""
 "You changed renderer selection. Don't omit to update new renderer "
 "properties..."
@@ -1837,7 +1862,7 @@
 msgid "Edit audio properties"
 msgstr "Propriétés de la bande son"
 
-#: src/pyams_content/component/association/container.py:86
+#: src/pyams_content/component/association/container.py:88
 #: src/pyams_content/component/association/interfaces.py:88
 #: src/pyams_content/component/association/zmi/__init__.py:313
 msgid "Associations"
@@ -2100,7 +2125,7 @@
 #: src/pyams_content/component/theme/zmi/portlet.py:40
 #: src/pyams_content/root/zmi/search.py:177
 #: src/pyams_content/root/zmi/templates/advanced-search.pt:181
-#: src/pyams_content/shared/common/zmi/search.py:188
+#: src/pyams_content/shared/common/zmi/search.py:194
 msgid "Tags"
 msgstr "Tags"
 
@@ -2108,7 +2133,7 @@
 #: src/pyams_content/component/theme/interfaces.py:114
 #: src/pyams_content/component/theme/interfaces.py:128
 #: src/pyams_content/component/theme/zmi/portlet.py:55
-#: src/pyams_content/shared/common/zmi/search.py:191
+#: src/pyams_content/shared/common/zmi/search.py:197
 msgid "Themes"
 msgstr "Thèmes"
 
@@ -2116,7 +2141,7 @@
 #: src/pyams_content/component/theme/interfaces.py:155
 #: src/pyams_content/component/theme/interfaces.py:169
 #: src/pyams_content/component/theme/zmi/portlet.py:70
-#: src/pyams_content/shared/common/zmi/search.py:194
+#: src/pyams_content/shared/common/zmi/search.py:200
 msgid "Collections"
 msgstr "Collections"
 
@@ -2321,9 +2346,9 @@
 #: src/pyams_content/features/share/interfaces.py:62
 #: src/pyams_content/features/share/zmi/container.py:155
 #: src/pyams_content/features/menu/zmi/__init__.py:217
-#: src/pyams_content/shared/form/interfaces.py:58
+#: src/pyams_content/shared/form/interfaces.py:59
 #: src/pyams_content/shared/form/zmi/field.py:166
-#: src/pyams_content/shared/common/interfaces/types.py:43
+#: src/pyams_content/shared/common/interfaces/types.py:45
 msgid "Label"
 msgstr "Libellé"
 
@@ -3285,7 +3310,7 @@
 "Types de contenus sélectionnés ; si cette sélection est vide, tous les "
 "contenus (typés ou non) seront pris en charge"
 
-#: src/pyams_content/features/search/portlet/__init__.py:95
+#: src/pyams_content/features/search/portlet/__init__.py:97
 msgid "Search results"
 msgstr "Résultats de la recherche"
 
@@ -3787,19 +3812,19 @@
 msgstr "TOUS CONTRIBUTEURS - Les {0} dernières modifications"
 
 #: src/pyams_content/root/zmi/search.py:90
-#: src/pyams_content/shared/common/zmi/search.py:92
+#: src/pyams_content/shared/common/zmi/search.py:94
 msgid "Quick search results"
 msgstr "Résultats de la recherche rapide"
 
 #: src/pyams_content/root/zmi/search.py:150
 #: src/pyams_content/root/zmi/search.py:186
-#: src/pyams_content/shared/common/zmi/search.py:161
-#: src/pyams_content/shared/common/zmi/search.py:203
+#: src/pyams_content/shared/common/zmi/search.py:163
+#: src/pyams_content/shared/common/zmi/search.py:209
 msgid "Advanced search"
 msgstr "Recherche avancée"
 
 #: src/pyams_content/root/zmi/search.py:278
-#: src/pyams_content/shared/common/zmi/search.py:331
+#: src/pyams_content/shared/common/zmi/search.py:341
 msgid "Advanced search results"
 msgstr "Résultats de la recherche avancée"
 
@@ -3809,28 +3834,28 @@
 
 #: src/pyams_content/root/zmi/search.py:162
 #: src/pyams_content/shared/common/zmi/dashboard.py:244
-#: src/pyams_content/shared/common/zmi/search.py:169
+#: src/pyams_content/shared/common/zmi/search.py:171
 #: src/pyams_content/shared/common/zmi/types/updater.py:65
 msgid "Owner"
 msgstr "Propriétaire"
 
 #: src/pyams_content/root/zmi/search.py:165
-#: src/pyams_content/shared/common/zmi/search.py:176
+#: src/pyams_content/shared/common/zmi/search.py:182
 msgid "Created after..."
 msgstr "Créé entre le"
 
 #: src/pyams_content/root/zmi/search.py:168
-#: src/pyams_content/shared/common/zmi/search.py:179
+#: src/pyams_content/shared/common/zmi/search.py:185
 msgid "Created before..."
 msgstr "et le"
 
 #: src/pyams_content/root/zmi/search.py:171
-#: src/pyams_content/shared/common/zmi/search.py:182
+#: src/pyams_content/shared/common/zmi/search.py:188
 msgid "Modified after..."
 msgstr "Modifié entre le"
 
 #: src/pyams_content/root/zmi/search.py:174
-#: src/pyams_content/shared/common/zmi/search.py:185
+#: src/pyams_content/shared/common/zmi/search.py:191
 msgid "Modified before..."
 msgstr "et le"
 
@@ -3858,24 +3883,24 @@
 msgstr "Vous n'êtes actuellement concerné par aucun contenu."
 
 #: src/pyams_content/root/zmi/templates/advanced-search.pt:130
-#: src/pyams_content/shared/common/zmi/templates/advanced-search.pt:130
+#: src/pyams_content/shared/common/zmi/templates/advanced-search.pt:153
 msgid "Created between"
 msgstr "Créé entre le"
 
 #: src/pyams_content/root/zmi/templates/advanced-search.pt:142
 #: src/pyams_content/root/zmi/templates/advanced-search.pt:168
-#: src/pyams_content/shared/common/zmi/templates/advanced-search.pt:142
-#: src/pyams_content/shared/common/zmi/templates/advanced-search.pt:168
+#: src/pyams_content/shared/common/zmi/templates/advanced-search.pt:165
+#: src/pyams_content/shared/common/zmi/templates/advanced-search.pt:191
 msgid "and"
 msgstr "et le"
 
 #: src/pyams_content/root/zmi/templates/advanced-search.pt:156
-#: src/pyams_content/shared/common/zmi/templates/advanced-search.pt:156
+#: src/pyams_content/shared/common/zmi/templates/advanced-search.pt:179
 msgid "Modified between"
 msgstr "Modifié entre le"
 
 #: src/pyams_content/root/zmi/templates/advanced-search.pt:211
-#: src/pyams_content/shared/common/zmi/templates/advanced-search.pt:214
+#: src/pyams_content/shared/common/zmi/templates/advanced-search.pt:237
 msgid "Tab label"
 msgstr "Libellé de l'onglet"
 
@@ -4022,43 +4047,43 @@
 msgid "Resource « {title} »"
 msgstr "Ressource « {title} »"
 
-#: src/pyams_content/shared/form/field.py:147
+#: src/pyams_content/shared/form/field.py:152
 msgid "Text"
 msgstr "Texte simple"
 
-#: src/pyams_content/shared/form/field.py:157
+#: src/pyams_content/shared/form/field.py:162
 msgid "Multi-lines text"
 msgstr "Texte multi-lignes"
 
-#: src/pyams_content/shared/form/field.py:167
+#: src/pyams_content/shared/form/field.py:172
 msgid "Boolean"
 msgstr "Booléen"
 
-#: src/pyams_content/shared/form/field.py:177
+#: src/pyams_content/shared/form/field.py:182
 msgid "Integer"
 msgstr "Nombre entier"
 
-#: src/pyams_content/shared/form/field.py:187
+#: src/pyams_content/shared/form/field.py:192
 msgid "Decimal"
 msgstr "Nombre décimal"
 
-#: src/pyams_content/shared/form/field.py:197
+#: src/pyams_content/shared/form/field.py:202
 msgid "Date"
 msgstr "Date"
 
-#: src/pyams_content/shared/form/field.py:217
+#: src/pyams_content/shared/form/field.py:222
 msgid "E-mail address"
 msgstr "Adresse de messagerie"
 
-#: src/pyams_content/shared/form/field.py:227
+#: src/pyams_content/shared/form/field.py:232
 msgid "URI"
 msgstr "URI"
 
-#: src/pyams_content/shared/form/field.py:241
+#: src/pyams_content/shared/form/field.py:246
 msgid "Choice"
 msgstr "Choix unique dans une liste"
 
-#: src/pyams_content/shared/form/field.py:261
+#: src/pyams_content/shared/form/field.py:266
 msgid "List"
 msgstr "Choix multiples dans une liste"
 
@@ -4070,220 +4095,312 @@
 msgid "No selected handler..."
 msgstr "Aucun gestionnaire sélectionné"
 
-#: src/pyams_content/shared/form/__init__.py:100
+#: src/pyams_content/shared/form/__init__.py:105
+#: src/pyams_content/shared/form/interfaces.py:110
 msgid "Form fields"
 msgstr "Champs de saisie"
 
-#: src/pyams_content/shared/form/__init__.py:101
+#: src/pyams_content/shared/form/__init__.py:106
 msgid "no field defined"
 msgstr "aucun champ défini"
 
-#: src/pyams_content/shared/form/interfaces.py:31
+#: src/pyams_content/shared/form/interfaces.py:32
 msgid "Form"
 msgstr "Formulaire"
 
-#: src/pyams_content/shared/form/interfaces.py:49
+#: src/pyams_content/shared/form/interfaces.py:50
 msgid "Field name"
 msgstr "Nom du champ"
 
-#: src/pyams_content/shared/form/interfaces.py:50
+#: src/pyams_content/shared/form/interfaces.py:51
 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.py:53
+#: src/pyams_content/shared/form/interfaces.py:54
 #: src/pyams_content/shared/form/zmi/field.py:177
 msgid "Field type"
 msgstr "Type de champ"
 
-#: src/pyams_content/shared/form/interfaces.py:54
+#: src/pyams_content/shared/form/interfaces.py:55
 msgid "Selected field type"
 msgstr "Type de champ proposé à l'internaute"
 
-#: src/pyams_content/shared/form/interfaces.py:59
+#: src/pyams_content/shared/form/interfaces.py:60
 msgid "User field label"
 msgstr "Libellé affiché à l'internaute"
 
-#: src/pyams_content/shared/form/interfaces.py:63
+#: src/pyams_content/shared/form/interfaces.py:64
 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.py:66
+#: src/pyams_content/shared/form/interfaces.py:67
 msgid "Placeholder"
 msgstr "Espace réservé"
 
-#: src/pyams_content/shared/form/interfaces.py:67
+#: src/pyams_content/shared/form/interfaces.py:68
 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.py:70
+#: src/pyams_content/shared/form/interfaces.py:72
 msgid "Optional values"
 msgstr "Liste de valeurs"
 
-#: src/pyams_content/shared/form/interfaces.py:71
+#: src/pyams_content/shared/form/interfaces.py:73
 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.py:74
+#: src/pyams_content/shared/form/interfaces.py:77
 msgid "Default value"
 msgstr "Valeur par défaut"
 
-#: src/pyams_content/shared/form/interfaces.py:75
+#: src/pyams_content/shared/form/interfaces.py:78
 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.py:78
+#: src/pyams_content/shared/form/interfaces.py:81
 msgid "Required?"
 msgstr "Obligatoire ?"
 
-#: src/pyams_content/shared/form/interfaces.py:79
+#: src/pyams_content/shared/form/interfaces.py:82
 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.py:84
+#: src/pyams_content/shared/form/interfaces.py:87
 msgid "Select 'no' to hide given field..."
 msgstr "Sélectionnez 'non' pour masquer ce champ"
 
-#: src/pyams_content/shared/form/interfaces.py:121
+#: src/pyams_content/shared/form/interfaces.py:117
+msgid "Form fields template"
+msgstr "Mode de rendu"
+
+#: src/pyams_content/shared/form/interfaces.py:146
+msgid ""
+"If set, this title will be displayed in front-office instead of original "
+"title"
+msgstr ""
+"S'il est rensigné, ce titre sera affiché en front-office à la place du titre "
+"original"
+
+#: src/pyams_content/shared/form/interfaces.py:150
+msgid "Form header"
+msgstr "En-tête du formulaire"
+
+#: src/pyams_content/shared/form/interfaces.py:151
+msgid "This header is displayed just above form fields"
+msgstr "Cet en-tête sera affiché au-dessus de la liste des champs de saisie"
+
+#: src/pyams_content/shared/form/interfaces.py:154
 msgid "Form title"
 msgstr "Titre du formulaire"
 
-#: src/pyams_content/shared/form/interfaces.py:124
+#: src/pyams_content/shared/form/interfaces.py:155
+msgid "If set, this title will be displayed above input fields"
+msgstr ""
+"S'il est rensigné, ce titre sera affiché en front-office au-dessus de la "
+"liste des champs de saisie"
+
+#: src/pyams_content/shared/form/interfaces.py:159
 msgid "Authenticated only?"
 msgstr "Authentification requise ?"
 
-#: src/pyams_content/shared/form/interfaces.py:125
+#: src/pyams_content/shared/form/interfaces.py:160
 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.py:129
-msgid "Form header"
-msgstr "En-tête du formulaire"
-
-#: src/pyams_content/shared/form/interfaces.py:130
-msgid "This header is displayed just above form fields"
-msgstr "Cet en-tête sera affiché au-dessus de la liste des champs de saisie"
-
-#: src/pyams_content/shared/form/interfaces.py:133
+#: src/pyams_content/shared/form/interfaces.py:165
 msgid "Submit button"
 msgstr "Libellé de soumission"
 
-#: src/pyams_content/shared/form/interfaces.py:134
+#: src/pyams_content/shared/form/interfaces.py:166
 msgid "Label of form submit button"
 msgstr "Libellé du bouton de soumission du formulaire"
 
-#: src/pyams_content/shared/form/interfaces.py:137
+#: src/pyams_content/shared/form/interfaces.py:169
 msgid "Submit message"
 msgstr "Message de soumission"
 
-#: src/pyams_content/shared/form/interfaces.py:138
+#: src/pyams_content/shared/form/interfaces.py:170
 msgid "This message will be displayed after form submission"
-msgstr "Ce message sera affiché à l'internaute lorsque les données du formulaire auront été soumises"
-
-#: src/pyams_content/shared/form/interfaces.py:141
+msgstr ""
+"Ce message sera affiché à l'internaute lorsque les données du formulaire "
+"auront été soumises"
+
+#: src/pyams_content/shared/form/interfaces.py:174
 msgid "Form handler"
 msgstr "Gestionnaire du formulaire"
 
-#: src/pyams_content/shared/form/interfaces.py:142
+#: src/pyams_content/shared/form/interfaces.py:175
 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.py:145
+#: src/pyams_content/shared/form/interfaces.py:178
 msgid "Use captcha?"
 msgstr "Ajouter un captcha ?"
 
-#: src/pyams_content/shared/form/interfaces.py:146
+#: src/pyams_content/shared/form/interfaces.py:179
 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.py:150
+#: src/pyams_content/shared/form/interfaces.py:183
 msgid "Site key"
 msgstr "Clé du site"
 
-#: src/pyams_content/shared/form/interfaces.py:151
+#: src/pyams_content/shared/form/interfaces.py:184
 msgid "This key is included into HTML code and submitted with form data"
 msgstr ""
 "Cette clé est intégrée dans le code HTML et soumise avec les autres données "
 "du formulaire"
 
-#: src/pyams_content/shared/form/interfaces.py:154
+#: src/pyams_content/shared/form/interfaces.py:188
 msgid "Secret key"
 msgstr "Clé secrète"
 
-#: src/pyams_content/shared/form/interfaces.py:155
+#: src/pyams_content/shared/form/interfaces.py:189
 msgid "This key is used to communicate with Google's reCaptcha services"
 msgstr "Cette clé est utilisée avec le service reCaptcha de Google"
 
-#: src/pyams_content/shared/form/interfaces.py:158
+#: src/pyams_content/shared/form/interfaces.py:193
 msgid "Recaptcha proxy"
 msgstr "Proxy HTTPS"
 
-#: src/pyams_content/shared/form/interfaces.py:159
+#: src/pyams_content/shared/form/interfaces.py:194
 msgid ""
 "If your server is behind a proxy, please set it's address here; captcha "
 "verification requires HTTPS support..."
 msgstr ""
-"Si le serveur qui reçoit les données du formulaire est situé derrière un proxy, vous devez l'indiquer ici "
-"pour permettre la vérification du captcha"
-
-#: src/pyams_content/shared/form/interfaces.py:197
+"Si le serveur qui reçoit les données du formulaire est situé derrière un "
+"proxy, vous devez l'indiquer ici pour permettre la vérification du captcha"
+
+#: src/pyams_content/shared/form/interfaces.py:199
+msgid "Required RGPD consent?"
+msgstr "Consentement RGPD ?"
+
+#: src/pyams_content/shared/form/interfaces.py:200
+msgid ""
+"If 'yes', an RGPD compliance warning will be displayed above form's submit "
+"button; form can't be submitted as long as the associated checkbox will not "
+"be checked explicitly by the user"
+msgstr ""
+"Si 'oui', un message de consentement sera affiché à l'internaute au-dessus "
+"du bouton de soumission du formulaire ; le formulaire ne peut pas être "
+"transmis tant que l'utilisateur ne donne pas explicitement son consentement"
+
+#: src/pyams_content/shared/form/interfaces.py:207
+msgid "RGPD consent text"
+msgstr "Texte de consentement"
+
+#: src/pyams_content/shared/form/interfaces.py:208
+msgid ""
+"User consent must be explicit, and user must be warned about usage which "
+"will be made of submitted data; text samples are given below"
+msgstr ""
+"Le consentement de l'utilisateur doit être explicité clairement ; ci-dessous "
+"figurent quelques exemples de formulations possibles"
+
+#: src/pyams_content/shared/form/interfaces.py:213
+msgid "RGPD user rights"
+msgstr "Droits de la personne"
+
+#: src/pyams_content/shared/form/interfaces.py:214
+msgid ""
+"The internet user must be able to easily revoke his consent later on, so it "
+"is important to inform him how to proceed; below are examples of possible "
+"formulations"
+msgstr ""
+"L'internaute doit facilement pouvoir retirer son consentement par la suite ; "
+"il convient donc de lui indiquer la façon de procéder. Ci-dessous figurent "
+"des exemples de formulations possibles"
+
+#: src/pyams_content/shared/form/interfaces.py:259
 msgid "Source address"
 msgstr "Adresse source"
 
-#: src/pyams_content/shared/form/interfaces.py:198
+#: src/pyams_content/shared/form/interfaces.py:260
 msgid "Mail address from which form data is sent"
 msgstr "Adresse de messagerie émettrice des messages envoyés"
 
-#: src/pyams_content/shared/form/interfaces.py:201
+#: src/pyams_content/shared/form/interfaces.py:263
 msgid "Source name"
 msgstr "Nom de la source"
 
-#: src/pyams_content/shared/form/interfaces.py:202
+#: src/pyams_content/shared/form/interfaces.py:264
 msgid "Name of mail data sender"
 msgstr "Nom de l'émetteur des messages envoyés"
 
-#: src/pyams_content/shared/form/interfaces.py:205
+#: src/pyams_content/shared/form/interfaces.py:267
 msgid "Recipient address"
 msgstr "Adresse de destination"
 
-#: src/pyams_content/shared/form/interfaces.py:206
+#: src/pyams_content/shared/form/interfaces.py:268
 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.py:209
+#: src/pyams_content/shared/form/interfaces.py:271
 msgid "Recipient name"
 msgstr "Nom du destinataire"
 
-#: src/pyams_content/shared/form/interfaces.py:210
+#: src/pyams_content/shared/form/interfaces.py:272
 msgid "Name of data recipient"
 msgstr "Nom du destinataire des messages"
 
-#: src/pyams_content/shared/form/zmi/properties.py:39
+#: src/pyams_content/shared/form/zmi/properties.py:56
 msgid "Main form settings"
 msgstr "Paramètres du formulaire"
 
-#: src/pyams_content/shared/form/zmi/properties.py:96
+#: src/pyams_content/shared/form/zmi/properties.py:162
 msgid "Form handler settings"
 msgstr "Paramètres du gestionnaire"
 
-#: src/pyams_content/shared/form/zmi/properties.py:56
+#: src/pyams_content/shared/form/zmi/properties.py:96
 msgid "Add captcha"
 msgstr "Intégrer un captcha"
 
-#: src/pyams_content/shared/form/zmi/properties.py:94
+#: src/pyams_content/shared/form/zmi/properties.py:104
+msgid "Add RGPD warning"
+msgstr "Conformité RGPD"
+
+#: src/pyams_content/shared/form/zmi/properties.py:76
+msgid ""
+"Text samples:<br />- By submitting this form, I agree that the information "
+"entered may be used for the purpose of my request and the business "
+"relationship that may result from it."
+msgstr ""
+"Formulations possibles :<br />- En soumettant ce formulaire, j'accepte que "
+"les informations saisies soient exploitées dans le cadre de ma demande et de "
+"la relation commerciale qui peut en découler."
+
+#: src/pyams_content/shared/form/zmi/properties.py:83
+msgid ""
+"Text samples:<br />- To know and enforce your rights, including the right to "
+"withdraw your consent to the use of the data collected by this form, please "
+"consult our privacy policy."
+msgstr ""
+"Formulations possibles :<br />- Pour connaître et exercer vos droits, "
+"notamment de retrait de votre consentement à l'utilisation des données "
+"collectées par ce formulaire, veuillez consulter notre politique de "
+"confidentialité."
+
+#: src/pyams_content/shared/form/zmi/properties.py:133
+msgid "You MUST set an RGPD consent text and RGPD user rights to enable RGPD!"
+msgstr ""
+"Vous devez indiquer un texte de consentement ainsi qu'un rapperl des droits "
+"de la personne pour être en conformité avec le RGPD !"
+
+#: src/pyams_content/shared/form/zmi/properties.py:159
 #, python-format
 msgid "« {handler} » form handler settings"
 msgstr "Paramètres du gestionnaire « {handler} »"
@@ -4293,7 +4410,7 @@
 msgstr "Champs de saisie"
 
 #: src/pyams_content/shared/form/zmi/field.py:155
-#: src/pyams_content/shared/common/interfaces/types.py:39
+#: src/pyams_content/shared/common/interfaces/types.py:41
 msgid "Name"
 msgstr "Nom"
 
@@ -4336,6 +4453,18 @@
 msgid "Form « {title} »"
 msgstr "Formulaire « {title} »"
 
+#: src/pyams_content/shared/form/zmi/paragraph.py:65
+msgid "Form: input fields..."
+msgstr "Champs de saisie"
+
+#: src/pyams_content/shared/form/zmi/paragraph.py:83
+msgid "Add new form fields paragraph"
+msgstr "Ajouter d'un bloc de champs de saisie"
+
+#: src/pyams_content/shared/form/zmi/paragraph.py:97
+msgid "Edit form fields paragraph properties"
+msgstr "Propriétés du bloc de champs de saisie"
+
 #: src/pyams_content/shared/view/merge.py:55
 msgid "Concatenate views items in order"
 msgstr "Concaténer les résultats de chaque vue dans l'ordre sélectionné"
@@ -4869,7 +4998,7 @@
 msgstr "Article « {title} »"
 
 #: src/pyams_content/shared/common/__init__.py:268
-#: src/pyams_content/shared/common/zmi/properties.py:65
+#: src/pyams_content/shared/common/zmi/properties.py:66
 #: src/pyams_content/shared/common/zmi/manager.py:96
 msgid "Properties"
 msgstr "Propriétés"
@@ -4891,15 +5020,15 @@
 msgid "Content specificities"
 msgstr "Spécificités du gabarit"
 
-#: src/pyams_content/shared/common/interfaces/types.py:40
+#: src/pyams_content/shared/common/interfaces/types.py:42
 msgid "Name of this data type; must be unique between all data types"
 msgstr "Nom de ce type de donnée ; doit être unique entre tous les types"
 
-#: src/pyams_content/shared/common/interfaces/types.py:46
+#: src/pyams_content/shared/common/interfaces/types.py:48
 msgid "Source folder"
 msgstr "Rubrique d'origine"
 
-#: src/pyams_content/shared/common/interfaces/types.py:47
+#: src/pyams_content/shared/common/interfaces/types.py:49
 msgid ""
 "Source folder (or search engine) to which content is attached; if this "
 "reference is set, canonical URL will be based on this object's URL"
@@ -4908,32 +5037,48 @@
 "être rattachés ; si elle est définie, cette rubrique déterminera l'URL "
 "canonique de ces contenus"
 
-#: src/pyams_content/shared/common/interfaces/types.py:55
+#: src/pyams_content/shared/common/interfaces/types.py:58
 msgid "Navigation label"
 msgstr "Libellé de navigation"
 
-#: src/pyams_content/shared/common/interfaces/types.py:56
+#: src/pyams_content/shared/common/interfaces/types.py:59
 msgid "Label used for navigation entries"
 msgstr "Libellé utilisé pour les entrées de navigation"
 
-#: src/pyams_content/shared/common/interfaces/types.py:60
+#: src/pyams_content/shared/common/interfaces/types.py:63
 msgid "Pictogram associated with this data type"
 msgstr "Pictogramme associé à ce type"
 
-#: src/pyams_content/shared/common/interfaces/types.py:74
+#: src/pyams_content/shared/common/interfaces/types.py:77
+msgid "Display as tag?"
+msgstr "Afficher comme étiquette ?"
+
+#: src/pyams_content/shared/common/interfaces/types.py:78
+msgid ""
+"Some portlets renderers can display a small tag above each content to show "
+"their content type; if this option is checked, data type label will be "
+"displayed instead of content type"
+msgstr ""
+"Certains modes de rendu peuvent afficher une étiquette au dessus de chaque "
+"résultat pour indiquer leur gabarit ; si cette option est sélectionnée, c'est le "
+"libellé de ce type qui sera affiché (lorsqu'il correspond au type du contenu) "
+"au lieu du nom du gabarit"
+
+#: src/pyams_content/shared/common/interfaces/types.py:85
 msgid "Field names"
 msgstr "Champs associés"
 
-#: src/pyams_content/shared/common/interfaces/types.py:75
+#: src/pyams_content/shared/common/interfaces/types.py:86
 msgid "List of fields associated with this data type"
 msgstr "Liste des champs de saisie associés à ce type"
 
-#: src/pyams_content/shared/common/interfaces/types.py:109
+#: src/pyams_content/shared/common/interfaces/types.py:120
+#: src/pyams_content/shared/common/zmi/search.py:178
 #: src/pyams_content/shared/topic/interfaces.py:41
 msgid "Data type"
 msgstr "Type du contenu"
 
-#: src/pyams_content/shared/common/interfaces/types.py:110
+#: src/pyams_content/shared/common/interfaces/types.py:121
 #: src/pyams_content/shared/topic/interfaces.py:42
 msgid "Type of content data"
 msgstr "Type du contenu associé à ce gabarit"
@@ -5236,11 +5381,11 @@
 msgid "Use tool default template"
 msgstr "Utiliser le modèle de présentation par défaut de ce gabarit"
 
-#: src/pyams_content/shared/common/zmi/properties.py:55
+#: src/pyams_content/shared/common/zmi/properties.py:56
 msgid "Composition"
 msgstr "Composition"
 
-#: src/pyams_content/shared/common/zmi/properties.py:78
+#: src/pyams_content/shared/common/zmi/properties.py:79
 msgid "Content properties"
 msgstr "Propriétés élémentaires"
 
@@ -5337,7 +5482,7 @@
 msgstr "N° IN"
 
 #: src/pyams_content/shared/common/zmi/dashboard.py:167
-#: src/pyams_content/shared/common/zmi/search.py:172
+#: src/pyams_content/shared/common/zmi/search.py:174
 msgid "Status"
 msgstr "Statut"
 
@@ -5866,7 +6011,7 @@
 msgid "Specified subtype name is already used!"
 msgstr "Le nom indiqué pour ce sous-type de contenu est déjà utilisé !"
 
-#: src/pyams_content/shared/common/zmi/types/__init__.py:436
+#: src/pyams_content/shared/common/zmi/types/__init__.py:425
 #, python-format
 msgid "Custom properties for type « {0} »"
 msgstr "Propriétés spécifiques au type « {0} »"
@@ -6612,21 +6757,21 @@
 msgid "Logos template"
 msgstr "Mode de rendu"
 
-#: src/pyams_content/shared/logo/paragraph.py:90
+#: src/pyams_content/shared/logo/paragraph.py:104
 msgid "no selected logo"
 msgstr "aucun logo sélectionné"
 
-#: src/pyams_content/shared/logo/paragraph.py:96
+#: src/pyams_content/shared/logo/paragraph.py:110
 #, python-format
 msgid "logo '{0}' can't be found"
 msgstr "le logo '{0}' est introuvable"
 
-#: src/pyams_content/shared/logo/paragraph.py:104
+#: src/pyams_content/shared/logo/paragraph.py:118
 #, python-format
 msgid "logo '{0}' is not published"
 msgstr "le logo '{0}' n'est pas publié"
 
-#: src/pyams_content/shared/logo/zmi/properties.py:60
+#: src/pyams_content/shared/logo/zmi/properties.py:61
 msgid "Main logo settings"
 msgstr "Autres propriétés"
 
--- a/src/pyams_content/locales/pyams_content.pot	Wed Sep 25 17:21:20 2019 +0200
+++ b/src/pyams_content/locales/pyams_content.pot	Thu Sep 26 12:02:24 2019 +0200
@@ -6,7 +6,7 @@
 msgid ""
 msgstr ""
 "Project-Id-Version: PACKAGE 1.0\n"
-"POT-Creation-Date: 2019-07-26 12:53+0200\n"
+"POT-Creation-Date: 2019-09-25 17:04+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"
@@ -188,9 +188,9 @@
 #: ./src/pyams_content/reference/pictograms/zmi/__init__.py:150
 #: ./src/pyams_content/component/keynumber/portlet/interfaces.py:31
 #: ./src/pyams_content/component/gallery/interfaces.py:107
-#: ./src/pyams_content/component/paragraph/interfaces/milestone.py:40
+#: ./src/pyams_content/component/paragraph/interfaces/milestone.py:42
 #: ./src/pyams_content/component/paragraph/zmi/container.py:266
-#: ./src/pyams_content/component/paragraph/zmi/milestone.py:221
+#: ./src/pyams_content/component/paragraph/zmi/milestone.py:238
 #: ./src/pyams_content/interfaces/__init__.py:101
 #: ./src/pyams_content/features/menu/portlet/navigation/interfaces/simple.py:31
 #: ./src/pyams_content/features/menu/portlet/navigation/interfaces/double.py:31
@@ -199,7 +199,7 @@
 #: ./src/pyams_content/shared/view/portlet/interfaces.py:52
 #: ./src/pyams_content/shared/common/zmi/dashboard.py:122
 #: ./src/pyams_content/shared/common/zmi/reverse.py:73
-#: ./src/pyams_content/shared/common/zmi/templates/advanced-search.pt:200
+#: ./src/pyams_content/shared/common/zmi/templates/advanced-search.pt:223
 #: ./src/pyams_content/shared/site/portlet/interfaces.py:24
 #: ./src/pyams_content/shared/site/zmi/folder.py:66
 #: ./src/pyams_content/shared/imagemap/zmi/container.py:123
@@ -229,12 +229,12 @@
 
 #: ./src/pyams_content/component/keynumber/interfaces.py:40
 #: ./src/pyams_content/component/paragraph/interfaces/pictogram.py:41
-#: ./src/pyams_content/component/paragraph/interfaces/milestone.py:35
+#: ./src/pyams_content/component/paragraph/interfaces/milestone.py:37
 #: ./src/pyams_content/component/paragraph/interfaces/__init__.py:39
 #: ./src/pyams_content/component/association/interfaces.py:37
 #: ./src/pyams_content/features/alert/interfaces.py:54
 #: ./src/pyams_content/features/menu/interfaces.py:62
-#: ./src/pyams_content/shared/form/interfaces.py:83
+#: ./src/pyams_content/shared/form/interfaces.py:86
 #: ./src/pyams_content/shared/site/interfaces.py:179
 msgid "Visible?"
 msgstr ""
@@ -279,7 +279,7 @@
 #: ./src/pyams_content/component/video/interfaces.py:46
 #: ./src/pyams_content/component/paragraph/interfaces/video.py:50
 #: ./src/pyams_content/component/paragraph/interfaces/pictogram.py:58
-#: ./src/pyams_content/component/paragraph/interfaces/milestone.py:80
+#: ./src/pyams_content/component/paragraph/interfaces/milestone.py:90
 #: ./src/pyams_content/component/paragraph/zmi/pictogram.py:259
 #: ./src/pyams_content/component/illustration/interfaces.py:62
 msgid "Associated text"
@@ -456,11 +456,11 @@
 msgstr ""
 
 #: ./src/pyams_content/component/gallery/interfaces.py:111
-#: ./src/pyams_content/component/links/interfaces.py:39
+#: ./src/pyams_content/component/links/interfaces.py:36
 #: ./src/pyams_content/component/paragraph/interfaces/audio.py:50
 #: ./src/pyams_content/component/extfile/interfaces.py:36
 #: ./src/pyams_content/features/search/interfaces.py:45
-#: ./src/pyams_content/shared/form/interfaces.py:62
+#: ./src/pyams_content/shared/form/interfaces.py:63
 msgid "Description"
 msgstr ""
 
@@ -832,56 +832,58 @@
 msgid "Other settings"
 msgstr ""
 
-#: ./src/pyams_content/component/links/__init__.py:140
+#: ./src/pyams_content/component/links/__init__.py:146
 msgid "Internal link"
 msgstr ""
 
-#: ./src/pyams_content/component/links/__init__.py:223
+#: ./src/pyams_content/component/links/__init__.py:265
 #: ./src/pyams_content/features/redirect/zmi/container.py:278
 msgid "External link"
 msgstr ""
 
-#: ./src/pyams_content/component/links/__init__.py:269
+#: ./src/pyams_content/component/links/__init__.py:311
 msgid "Mailto link"
 msgstr ""
 
-#: ./src/pyams_content/component/links/__init__.py:210
+#: ./src/pyams_content/component/links/__init__.py:252
 msgid "target is not published"
 msgstr ""
 
-#: ./src/pyams_content/component/links/interfaces.py:35
+#: ./src/pyams_content/component/links/interfaces.py:32
+#: ./src/pyams_content/shared/form/interfaces.py:145
 #: ./src/pyams_content/shared/imagemap/interfaces.py:55
 msgid "Alternate title"
 msgstr ""
 
-#: ./src/pyams_content/component/links/interfaces.py:36
+#: ./src/pyams_content/component/links/interfaces.py:33
 msgid "Link title, as shown in front-office"
 msgstr ""
 
-#: ./src/pyams_content/component/links/interfaces.py:40
+#: ./src/pyams_content/component/links/interfaces.py:37
 msgid "Link description displayed by front-office template"
 msgstr ""
 
-#: ./src/pyams_content/component/links/interfaces.py:43
+#: ./src/pyams_content/component/links/interfaces.py:41
 #: ./src/pyams_content/component/paragraph/interfaces/pictogram.py:46
+#: ./src/pyams_content/component/paragraph/interfaces/milestone.py:51
 #: ./src/pyams_content/features/share/interfaces.py:75
 #: ./src/pyams_content/features/menu/interfaces.py:84
-#: ./src/pyams_content/shared/common/interfaces/types.py:59
+#: ./src/pyams_content/shared/common/interfaces/types.py:62
 msgid "Pictogram"
 msgstr ""
 
-#: ./src/pyams_content/component/links/interfaces.py:44
+#: ./src/pyams_content/component/links/interfaces.py:42
 msgid "Name of the pictogram associated with this link"
 msgstr ""
 
-#: ./src/pyams_content/component/links/interfaces.py:57
-#: ./src/pyams_content/features/search/portlet/interfaces.py:38
+#: ./src/pyams_content/component/links/interfaces.py:55
+#: ./src/pyams_content/features/search/portlet/interfaces.py:41
 #: ./src/pyams_content/shared/view/portlet/interfaces.py:99
 msgid "Force canonical URL?"
 msgstr ""
 
-#: ./src/pyams_content/component/links/interfaces.py:58
-#: ./src/pyams_content/features/search/portlet/interfaces.py:39
+#: ./src/pyams_content/component/links/interfaces.py:56
+#: ./src/pyams_content/features/search/portlet/interfaces.py:42
 #: ./src/pyams_content/shared/view/portlet/interfaces.py:100
 msgid ""
 "By default, internal links use a \"relative\" URL, which tries to display "
@@ -889,89 +891,103 @@
 " target in it's attachment context (if defined)"
 msgstr ""
 
-#: ./src/pyams_content/component/links/interfaces.py:68
+#: ./src/pyams_content/component/links/interfaces.py:77
+msgid ""
+"Marker interface provided by links directed to contents supporting this "
+"interface"
+msgstr ""
+
+#: ./src/pyams_content/component/links/interfaces.py:89
+msgid "Info properties interface"
+msgstr ""
+
+#: ./src/pyams_content/component/links/interfaces.py:98
 #: ./src/pyams_content/features/redirect/interfaces.py:68
 #: ./src/pyams_content/shared/site/interfaces.py:192
 #: ./src/pyams_content/shared/logo/interfaces.py:50
 msgid "Target URL"
 msgstr ""
 
-#: ./src/pyams_content/component/links/interfaces.py:69
+#: ./src/pyams_content/component/links/interfaces.py:99
 #: ./src/pyams_content/shared/site/interfaces.py:193
 #: ./src/pyams_content/shared/logo/interfaces.py:51
 msgid "URL used to access external resource"
 msgstr ""
 
-#: ./src/pyams_content/component/links/interfaces.py:72
+#: ./src/pyams_content/component/links/interfaces.py:102
 #: ./src/pyams_content/component/extfile/interfaces.py:44
 msgid "Language"
 msgstr ""
 
-#: ./src/pyams_content/component/links/interfaces.py:73
+#: ./src/pyams_content/component/links/interfaces.py:103
 msgid "Language used in this remote resource"
 msgstr ""
 
-#: ./src/pyams_content/component/links/interfaces.py:81
+#: ./src/pyams_content/component/links/interfaces.py:111
 msgid "Target address"
 msgstr ""
 
-#: ./src/pyams_content/component/links/interfaces.py:82
+#: ./src/pyams_content/component/links/interfaces.py:112
 msgid "Target email address"
 msgstr ""
 
-#: ./src/pyams_content/component/links/interfaces.py:85
+#: ./src/pyams_content/component/links/interfaces.py:115
 msgid "Address name"
 msgstr ""
 
-#: ./src/pyams_content/component/links/interfaces.py:86
+#: ./src/pyams_content/component/links/interfaces.py:116
 msgid "Address as displayed in address book"
 msgstr ""
 
-#: ./src/pyams_content/component/links/zmi/__init__.py:54
+#: ./src/pyams_content/component/links/zmi/__init__.py:63
 msgid "Internal links"
 msgstr ""
 
-#: ./src/pyams_content/component/links/zmi/__init__.py:69
+#: ./src/pyams_content/component/links/zmi/__init__.py:78
 msgid "Add internal link"
 msgstr ""
 
-#: ./src/pyams_content/component/links/zmi/__init__.py:83
+#: ./src/pyams_content/component/links/zmi/__init__.py:92
 msgid "Add new internal link"
 msgstr ""
 
-#: ./src/pyams_content/component/links/zmi/__init__.py:116
+#: ./src/pyams_content/component/links/zmi/__init__.py:128
 msgid "Edit internal link properties"
 msgstr ""
 
-#: ./src/pyams_content/component/links/zmi/__init__.py:146
+#: ./src/pyams_content/component/links/zmi/__init__.py:158
+msgid "Custom target properties"
+msgstr ""
+
+#: ./src/pyams_content/component/links/zmi/__init__.py:189
 msgid "External links"
 msgstr ""
 
-#: ./src/pyams_content/component/links/zmi/__init__.py:161
+#: ./src/pyams_content/component/links/zmi/__init__.py:204
 msgid "Add external link"
 msgstr ""
 
-#: ./src/pyams_content/component/links/zmi/__init__.py:175
+#: ./src/pyams_content/component/links/zmi/__init__.py:218
 msgid "Add new external link"
 msgstr ""
 
-#: ./src/pyams_content/component/links/zmi/__init__.py:206
+#: ./src/pyams_content/component/links/zmi/__init__.py:252
 msgid "Edit external link properties"
 msgstr ""
 
-#: ./src/pyams_content/component/links/zmi/__init__.py:234
+#: ./src/pyams_content/component/links/zmi/__init__.py:282
 msgid "Mailto links"
 msgstr ""
 
-#: ./src/pyams_content/component/links/zmi/__init__.py:249
+#: ./src/pyams_content/component/links/zmi/__init__.py:297
 msgid "Add mailto link"
 msgstr ""
 
-#: ./src/pyams_content/component/links/zmi/__init__.py:263
+#: ./src/pyams_content/component/links/zmi/__init__.py:311
 msgid "Add new mailto link"
 msgstr ""
 
-#: ./src/pyams_content/component/links/zmi/__init__.py:294
+#: ./src/pyams_content/component/links/zmi/__init__.py:345
 msgid "Edit mailto link properties"
 msgstr ""
 
@@ -991,11 +1007,11 @@
 msgid "Selected pictogram is missing"
 msgstr ""
 
-#: ./src/pyams_content/component/paragraph/milestone.py:141
+#: ./src/pyams_content/component/paragraph/milestone.py:164
 msgid "Selected paragraph is missing"
 msgstr ""
 
-#: ./src/pyams_content/component/paragraph/milestone.py:144
+#: ./src/pyams_content/component/paragraph/milestone.py:167
 msgid "Selected paragraph is not visible"
 msgstr ""
 
@@ -1062,7 +1078,7 @@
 msgstr ""
 
 #: ./src/pyams_content/component/paragraph/interfaces/contact.py:69
-#: ./src/pyams_content/shared/form/field.py:207
+#: ./src/pyams_content/shared/form/field.py:212
 msgid "Phone number"
 msgstr ""
 
@@ -1151,46 +1167,50 @@
 msgid "Presentation template used for pictograms"
 msgstr ""
 
-#: ./src/pyams_content/component/paragraph/interfaces/milestone.py:73
-#: ./src/pyams_content/component/paragraph/zmi/milestone.py:274
+#: ./src/pyams_content/component/paragraph/interfaces/milestone.py:83
+#: ./src/pyams_content/component/paragraph/zmi/milestone.py:296
 msgid "Milestones"
 msgstr ""
 
-#: ./src/pyams_content/component/paragraph/interfaces/milestone.py:36
+#: ./src/pyams_content/component/paragraph/interfaces/milestone.py:38
 msgid "Is this milestone visible in front-office?"
 msgstr ""
 
-#: ./src/pyams_content/component/paragraph/interfaces/milestone.py:41
+#: ./src/pyams_content/component/paragraph/interfaces/milestone.py:43
 msgid "Milestone title"
 msgstr ""
 
-#: ./src/pyams_content/component/paragraph/interfaces/milestone.py:44
-#: ./src/pyams_content/component/paragraph/zmi/milestone.py:233
+#: ./src/pyams_content/component/paragraph/interfaces/milestone.py:46
+#: ./src/pyams_content/component/paragraph/zmi/milestone.py:252
 msgid "Associated label"
 msgstr ""
 
-#: ./src/pyams_content/component/paragraph/interfaces/milestone.py:45
+#: ./src/pyams_content/component/paragraph/interfaces/milestone.py:47
 msgid "The way this label will be rendered depends on presentation template"
 msgstr ""
 
-#: ./src/pyams_content/component/paragraph/interfaces/milestone.py:48
-#: ./src/pyams_content/component/paragraph/zmi/milestone.py:245
+#: ./src/pyams_content/component/paragraph/interfaces/milestone.py:52
+msgid "Name of the pictogram associated with this milestone"
+msgstr ""
+
+#: ./src/pyams_content/component/paragraph/interfaces/milestone.py:58
+#: ./src/pyams_content/component/paragraph/zmi/milestone.py:265
 msgid "Anchor"
 msgstr ""
 
-#: ./src/pyams_content/component/paragraph/interfaces/milestone.py:49
+#: ./src/pyams_content/component/paragraph/interfaces/milestone.py:59
 msgid "Paragraph to which this milestone should lead"
 msgstr ""
 
-#: ./src/pyams_content/component/paragraph/interfaces/milestone.py:81
+#: ./src/pyams_content/component/paragraph/interfaces/milestone.py:91
 msgid "Additional text associated to this milestone paragraph"
 msgstr ""
 
-#: ./src/pyams_content/component/paragraph/interfaces/milestone.py:84
+#: ./src/pyams_content/component/paragraph/interfaces/milestone.py:94
 msgid "Milestones template"
 msgstr ""
 
-#: ./src/pyams_content/component/paragraph/interfaces/milestone.py:85
+#: ./src/pyams_content/component/paragraph/interfaces/milestone.py:95
 msgid "Presentation template used for milestones"
 msgstr ""
 
@@ -1198,7 +1218,7 @@
 msgid "Raw source"
 msgstr ""
 
-#: ./src/pyams_content/component/paragraph/interfaces/html.py:52
+#: ./src/pyams_content/component/paragraph/interfaces/html.py:53
 msgid "Rich text"
 msgstr ""
 
@@ -1213,25 +1233,26 @@
 "display editor options...</span>"
 msgstr ""
 
-#: ./src/pyams_content/component/paragraph/interfaces/html.py:41
+#: ./src/pyams_content/component/paragraph/interfaces/html.py:42
 msgid "Source code template"
 msgstr ""
 
-#: ./src/pyams_content/component/paragraph/interfaces/html.py:42
-#: ./src/pyams_content/component/paragraph/interfaces/html.py:63
+#: ./src/pyams_content/component/paragraph/interfaces/html.py:43
+#: ./src/pyams_content/component/paragraph/interfaces/html.py:64
 #: ./src/pyams_content/component/paragraph/interfaces/verbatim.py:53
 #: ./src/pyams_content/component/paragraph/interfaces/keypoint.py:45
 #: ./src/pyams_content/component/paragraph/interfaces/frame.py:44
+#: ./src/pyams_content/shared/form/interfaces.py:118
 #: ./src/pyams_content/shared/imagemap/interfaces.py:101
 #: ./src/pyams_content/shared/logo/interfaces.py:94
 msgid "Presentation template used for this paragraph"
 msgstr ""
 
-#: ./src/pyams_content/component/paragraph/interfaces/html.py:59
+#: ./src/pyams_content/component/paragraph/interfaces/html.py:60
 msgid "Body"
 msgstr ""
 
-#: ./src/pyams_content/component/paragraph/interfaces/html.py:62
+#: ./src/pyams_content/component/paragraph/interfaces/html.py:63
 msgid "Body template"
 msgstr ""
 
@@ -1557,59 +1578,59 @@
 msgid "You must select a pictogram!"
 msgstr ""
 
-#: ./src/pyams_content/component/paragraph/zmi/milestone.py:72
+#: ./src/pyams_content/component/paragraph/zmi/milestone.py:78
 msgid "Milestones..."
 msgstr ""
 
-#: ./src/pyams_content/component/paragraph/zmi/milestone.py:85
+#: ./src/pyams_content/component/paragraph/zmi/milestone.py:93
 msgid "Add new milestone paragraph"
 msgstr ""
 
-#: ./src/pyams_content/component/paragraph/zmi/milestone.py:104
+#: ./src/pyams_content/component/paragraph/zmi/milestone.py:112
 msgid "Edit milestone paragraph properties"
 msgstr ""
 
-#: ./src/pyams_content/component/paragraph/zmi/milestone.py:289
+#: ./src/pyams_content/component/paragraph/zmi/milestone.py:312
 msgid "Add milestone"
 msgstr ""
 
-#: ./src/pyams_content/component/paragraph/zmi/milestone.py:302
+#: ./src/pyams_content/component/paragraph/zmi/milestone.py:325
 msgid "Add new milestone"
 msgstr ""
 
-#: ./src/pyams_content/component/paragraph/zmi/milestone.py:334
+#: ./src/pyams_content/component/paragraph/zmi/milestone.py:361
 msgid "Edit milestone properties"
 msgstr ""
 
-#: ./src/pyams_content/component/paragraph/zmi/milestone.py:322
+#: ./src/pyams_content/component/paragraph/zmi/milestone.py:347
 msgid "Milestone was correctly added"
 msgstr ""
 
-#: ./src/pyams_content/component/paragraph/zmi/milestone.py:260
+#: ./src/pyams_content/component/paragraph/zmi/milestone.py:280
 msgid "(missing paragraph)"
 msgstr ""
 
-#: ./src/pyams_content/component/paragraph/zmi/html.py:73
+#: ./src/pyams_content/component/paragraph/zmi/html.py:79
 msgid "Source code..."
 msgstr ""
 
-#: ./src/pyams_content/component/paragraph/zmi/html.py:86
+#: ./src/pyams_content/component/paragraph/zmi/html.py:92
 msgid "Add new source code paragraph"
 msgstr ""
 
-#: ./src/pyams_content/component/paragraph/zmi/html.py:114
+#: ./src/pyams_content/component/paragraph/zmi/html.py:120
 msgid "Edit source code paragraph properties"
 msgstr ""
 
-#: ./src/pyams_content/component/paragraph/zmi/html.py:155
+#: ./src/pyams_content/component/paragraph/zmi/html.py:162
 msgid "Rich text..."
 msgstr ""
 
-#: ./src/pyams_content/component/paragraph/zmi/html.py:168
+#: ./src/pyams_content/component/paragraph/zmi/html.py:175
 msgid "Add new rich text paragraph"
 msgstr ""
 
-#: ./src/pyams_content/component/paragraph/zmi/html.py:198
+#: ./src/pyams_content/component/paragraph/zmi/html.py:205
 msgid "Edit rich text paragraph properties"
 msgstr ""
 
@@ -1625,15 +1646,15 @@
 msgid "Edit verbatim paragraph properties"
 msgstr ""
 
-#: ./src/pyams_content/component/paragraph/zmi/__init__.py:64
+#: ./src/pyams_content/component/paragraph/zmi/__init__.py:67
 msgid "Content block types..."
 msgstr ""
 
-#: ./src/pyams_content/component/paragraph/zmi/__init__.py:78
+#: ./src/pyams_content/component/paragraph/zmi/__init__.py:81
 msgid "Content block types"
 msgstr ""
 
-#: ./src/pyams_content/component/paragraph/zmi/__init__.py:88
+#: ./src/pyams_content/component/paragraph/zmi/__init__.py:92
 msgid ""
 "You can define which types of paragraphs are allowed in this container.\n"
 "\n"
@@ -1642,15 +1663,15 @@
 "NOTICE: removing types from allowed types list will have no effect on already created contents!"
 msgstr ""
 
-#: ./src/pyams_content/component/paragraph/zmi/__init__.py:247
-#: ./src/pyams_content/component/paragraph/zmi/__init__.py:260
+#: ./src/pyams_content/component/paragraph/zmi/__init__.py:257
+#: ./src/pyams_content/component/paragraph/zmi/__init__.py:270
 #: ./src/pyams_content/features/preview/zmi/__init__.py:46
 #: ./src/pyams_content/shared/common/zmi/templates/preview-input.pt:39
 msgid "Preview"
 msgstr ""
 
-#: ./src/pyams_content/component/paragraph/zmi/__init__.py:252
-#: ./src/pyams_content/component/paragraph/zmi/__init__.py:265
+#: ./src/pyams_content/component/paragraph/zmi/__init__.py:262
+#: ./src/pyams_content/component/paragraph/zmi/__init__.py:275
 #: ./src/pyams_content/features/review/zmi/__init__.py:84
 #: ./src/pyams_content/shared/common/zmi/__init__.py:272
 #: ./src/pyams_content/shared/common/zmi/owner.py:73
@@ -1671,16 +1692,16 @@
 msgid "Cancel"
 msgstr ""
 
-#: ./src/pyams_content/component/paragraph/zmi/__init__.py:254
-#: ./src/pyams_content/component/paragraph/zmi/__init__.py:267
+#: ./src/pyams_content/component/paragraph/zmi/__init__.py:264
+#: ./src/pyams_content/component/paragraph/zmi/__init__.py:277
 msgid "Submit"
 msgstr ""
 
-#: ./src/pyams_content/component/paragraph/zmi/__init__.py:231
+#: ./src/pyams_content/component/paragraph/zmi/__init__.py:241
 msgid "Paragraph was correctly added."
 msgstr ""
 
-#: ./src/pyams_content/component/paragraph/zmi/__init__.py:326
+#: ./src/pyams_content/component/paragraph/zmi/__init__.py:338
 msgid ""
 "You changed renderer selection. Don't omit to update new renderer "
 "properties..."
@@ -1734,7 +1755,7 @@
 msgid "Edit audio properties"
 msgstr ""
 
-#: ./src/pyams_content/component/association/container.py:86
+#: ./src/pyams_content/component/association/container.py:88
 #: ./src/pyams_content/component/association/interfaces.py:88
 #: ./src/pyams_content/component/association/zmi/__init__.py:313
 msgid "Associations"
@@ -1980,7 +2001,7 @@
 #: ./src/pyams_content/component/theme/zmi/portlet.py:40
 #: ./src/pyams_content/root/zmi/search.py:177
 #: ./src/pyams_content/root/zmi/templates/advanced-search.pt:181
-#: ./src/pyams_content/shared/common/zmi/search.py:188
+#: ./src/pyams_content/shared/common/zmi/search.py:194
 msgid "Tags"
 msgstr ""
 
@@ -1988,7 +2009,7 @@
 #: ./src/pyams_content/component/theme/interfaces.py:114
 #: ./src/pyams_content/component/theme/interfaces.py:128
 #: ./src/pyams_content/component/theme/zmi/portlet.py:55
-#: ./src/pyams_content/shared/common/zmi/search.py:191
+#: ./src/pyams_content/shared/common/zmi/search.py:197
 msgid "Themes"
 msgstr ""
 
@@ -1996,7 +2017,7 @@
 #: ./src/pyams_content/component/theme/interfaces.py:155
 #: ./src/pyams_content/component/theme/interfaces.py:169
 #: ./src/pyams_content/component/theme/zmi/portlet.py:70
-#: ./src/pyams_content/shared/common/zmi/search.py:194
+#: ./src/pyams_content/shared/common/zmi/search.py:200
 msgid "Collections"
 msgstr ""
 
@@ -2186,9 +2207,9 @@
 #: ./src/pyams_content/features/share/interfaces.py:62
 #: ./src/pyams_content/features/share/zmi/container.py:155
 #: ./src/pyams_content/features/menu/zmi/__init__.py:217
-#: ./src/pyams_content/shared/form/interfaces.py:58
+#: ./src/pyams_content/shared/form/interfaces.py:59
 #: ./src/pyams_content/shared/form/zmi/field.py:166
-#: ./src/pyams_content/shared/common/interfaces/types.py:43
+#: ./src/pyams_content/shared/common/interfaces/types.py:45
 msgid "Label"
 msgstr ""
 
@@ -3019,7 +3040,7 @@
 msgid "Searched data types; leave empty for all"
 msgstr ""
 
-#: ./src/pyams_content/features/search/portlet/__init__.py:95
+#: ./src/pyams_content/features/search/portlet/__init__.py:97
 msgid "Search results"
 msgstr ""
 
@@ -3515,19 +3536,19 @@
 msgstr ""
 
 #: ./src/pyams_content/root/zmi/search.py:90
-#: ./src/pyams_content/shared/common/zmi/search.py:92
+#: ./src/pyams_content/shared/common/zmi/search.py:94
 msgid "Quick search results"
 msgstr ""
 
 #: ./src/pyams_content/root/zmi/search.py:150
 #: ./src/pyams_content/root/zmi/search.py:186
-#: ./src/pyams_content/shared/common/zmi/search.py:161
-#: ./src/pyams_content/shared/common/zmi/search.py:203
+#: ./src/pyams_content/shared/common/zmi/search.py:163
+#: ./src/pyams_content/shared/common/zmi/search.py:209
 msgid "Advanced search"
 msgstr ""
 
 #: ./src/pyams_content/root/zmi/search.py:278
-#: ./src/pyams_content/shared/common/zmi/search.py:331
+#: ./src/pyams_content/shared/common/zmi/search.py:341
 msgid "Advanced search results"
 msgstr ""
 
@@ -3537,28 +3558,28 @@
 
 #: ./src/pyams_content/root/zmi/search.py:162
 #: ./src/pyams_content/shared/common/zmi/dashboard.py:244
-#: ./src/pyams_content/shared/common/zmi/search.py:169
+#: ./src/pyams_content/shared/common/zmi/search.py:171
 #: ./src/pyams_content/shared/common/zmi/types/updater.py:65
 msgid "Owner"
 msgstr ""
 
 #: ./src/pyams_content/root/zmi/search.py:165
-#: ./src/pyams_content/shared/common/zmi/search.py:176
+#: ./src/pyams_content/shared/common/zmi/search.py:182
 msgid "Created after..."
 msgstr ""
 
 #: ./src/pyams_content/root/zmi/search.py:168
-#: ./src/pyams_content/shared/common/zmi/search.py:179
+#: ./src/pyams_content/shared/common/zmi/search.py:185
 msgid "Created before..."
 msgstr ""
 
 #: ./src/pyams_content/root/zmi/search.py:171
-#: ./src/pyams_content/shared/common/zmi/search.py:182
+#: ./src/pyams_content/shared/common/zmi/search.py:188
 msgid "Modified after..."
 msgstr ""
 
 #: ./src/pyams_content/root/zmi/search.py:174
-#: ./src/pyams_content/shared/common/zmi/search.py:185
+#: ./src/pyams_content/shared/common/zmi/search.py:191
 msgid "Modified before..."
 msgstr ""
 
@@ -3586,24 +3607,24 @@
 msgstr ""
 
 #: ./src/pyams_content/root/zmi/templates/advanced-search.pt:130
-#: ./src/pyams_content/shared/common/zmi/templates/advanced-search.pt:130
+#: ./src/pyams_content/shared/common/zmi/templates/advanced-search.pt:153
 msgid "Created between"
 msgstr ""
 
 #: ./src/pyams_content/root/zmi/templates/advanced-search.pt:142
 #: ./src/pyams_content/root/zmi/templates/advanced-search.pt:168
-#: ./src/pyams_content/shared/common/zmi/templates/advanced-search.pt:142
-#: ./src/pyams_content/shared/common/zmi/templates/advanced-search.pt:168
+#: ./src/pyams_content/shared/common/zmi/templates/advanced-search.pt:165
+#: ./src/pyams_content/shared/common/zmi/templates/advanced-search.pt:191
 msgid "and"
 msgstr ""
 
 #: ./src/pyams_content/root/zmi/templates/advanced-search.pt:156
-#: ./src/pyams_content/shared/common/zmi/templates/advanced-search.pt:156
+#: ./src/pyams_content/shared/common/zmi/templates/advanced-search.pt:179
 msgid "Modified between"
 msgstr ""
 
 #: ./src/pyams_content/root/zmi/templates/advanced-search.pt:211
-#: ./src/pyams_content/shared/common/zmi/templates/advanced-search.pt:214
+#: ./src/pyams_content/shared/common/zmi/templates/advanced-search.pt:237
 msgid "Tab label"
 msgstr ""
 
@@ -3749,43 +3770,43 @@
 msgid "Resource « {title} »"
 msgstr ""
 
-#: ./src/pyams_content/shared/form/field.py:147
+#: ./src/pyams_content/shared/form/field.py:152
 msgid "Text"
 msgstr ""
 
-#: ./src/pyams_content/shared/form/field.py:157
+#: ./src/pyams_content/shared/form/field.py:162
 msgid "Multi-lines text"
 msgstr ""
 
-#: ./src/pyams_content/shared/form/field.py:167
+#: ./src/pyams_content/shared/form/field.py:172
 msgid "Boolean"
 msgstr ""
 
-#: ./src/pyams_content/shared/form/field.py:177
+#: ./src/pyams_content/shared/form/field.py:182
 msgid "Integer"
 msgstr ""
 
-#: ./src/pyams_content/shared/form/field.py:187
+#: ./src/pyams_content/shared/form/field.py:192
 msgid "Decimal"
 msgstr ""
 
-#: ./src/pyams_content/shared/form/field.py:197
+#: ./src/pyams_content/shared/form/field.py:202
 msgid "Date"
 msgstr ""
 
-#: ./src/pyams_content/shared/form/field.py:217
+#: ./src/pyams_content/shared/form/field.py:222
 msgid "E-mail address"
 msgstr ""
 
-#: ./src/pyams_content/shared/form/field.py:227
+#: ./src/pyams_content/shared/form/field.py:232
 msgid "URI"
 msgstr ""
 
-#: ./src/pyams_content/shared/form/field.py:241
+#: ./src/pyams_content/shared/form/field.py:246
 msgid "Choice"
 msgstr ""
 
-#: ./src/pyams_content/shared/form/field.py:261
+#: ./src/pyams_content/shared/form/field.py:266
 msgid "List"
 msgstr ""
 
@@ -3797,202 +3818,271 @@
 msgid "No selected handler..."
 msgstr ""
 
-#: ./src/pyams_content/shared/form/__init__.py:100
+#: ./src/pyams_content/shared/form/__init__.py:105
+#: ./src/pyams_content/shared/form/interfaces.py:110
 msgid "Form fields"
 msgstr ""
 
-#: ./src/pyams_content/shared/form/__init__.py:101
+#: ./src/pyams_content/shared/form/__init__.py:106
 msgid "no field defined"
 msgstr ""
 
-#: ./src/pyams_content/shared/form/interfaces.py:31
+#: ./src/pyams_content/shared/form/interfaces.py:32
 msgid "Form"
 msgstr ""
 
-#: ./src/pyams_content/shared/form/interfaces.py:49
-msgid "Field name"
-msgstr ""
-
 #: ./src/pyams_content/shared/form/interfaces.py:50
+msgid "Field name"
+msgstr ""
+
+#: ./src/pyams_content/shared/form/interfaces.py:51
 msgid "Field internal name; must be unique for a given form"
 msgstr ""
 
-#: ./src/pyams_content/shared/form/interfaces.py:53
-#: ./src/pyams_content/shared/form/zmi/field.py:177
-msgid "Field type"
-msgstr ""
-
 #: ./src/pyams_content/shared/form/interfaces.py:54
+#: ./src/pyams_content/shared/form/zmi/field.py:177
+msgid "Field type"
+msgstr ""
+
+#: ./src/pyams_content/shared/form/interfaces.py:55
 msgid "Selected field type"
 msgstr ""
 
-#: ./src/pyams_content/shared/form/interfaces.py:59
+#: ./src/pyams_content/shared/form/interfaces.py:60
 msgid "User field label"
 msgstr ""
 
-#: ./src/pyams_content/shared/form/interfaces.py:63
+#: ./src/pyams_content/shared/form/interfaces.py:64
 msgid "Field description can be displayed as hint"
 msgstr ""
 
-#: ./src/pyams_content/shared/form/interfaces.py:66
-msgid "Placeholder"
-msgstr ""
-
 #: ./src/pyams_content/shared/form/interfaces.py:67
+msgid "Placeholder"
+msgstr ""
+
+#: ./src/pyams_content/shared/form/interfaces.py:68
 msgid "Some field types like textline can display a placeholder"
 msgstr ""
 
-#: ./src/pyams_content/shared/form/interfaces.py:70
+#: ./src/pyams_content/shared/form/interfaces.py:72
 msgid "Optional values"
 msgstr ""
 
-#: ./src/pyams_content/shared/form/interfaces.py:71
+#: ./src/pyams_content/shared/form/interfaces.py:73
 msgid "List of available values (for 'choice' and 'list' field types)"
 msgstr ""
 
-#: ./src/pyams_content/shared/form/interfaces.py:74
+#: ./src/pyams_content/shared/form/interfaces.py:77
 msgid "Default value"
 msgstr ""
 
-#: ./src/pyams_content/shared/form/interfaces.py:75
-msgid "Give default value if field type can use it"
-msgstr ""
-
 #: ./src/pyams_content/shared/form/interfaces.py:78
+msgid "Give default value if field type can use it"
+msgstr ""
+
+#: ./src/pyams_content/shared/form/interfaces.py:81
 msgid "Required?"
 msgstr ""
 
-#: ./src/pyams_content/shared/form/interfaces.py:79
+#: ./src/pyams_content/shared/form/interfaces.py:82
 msgid "Select 'yes' to set field as mandatory"
 msgstr ""
 
-#: ./src/pyams_content/shared/form/interfaces.py:84
+#: ./src/pyams_content/shared/form/interfaces.py:87
 msgid "Select 'no' to hide given field..."
 msgstr ""
 
-#: ./src/pyams_content/shared/form/interfaces.py:121
-msgid "Form title"
-msgstr ""
-
-#: ./src/pyams_content/shared/form/interfaces.py:124
-msgid "Authenticated only?"
-msgstr ""
-
-#: ./src/pyams_content/shared/form/interfaces.py:125
-msgid "If 'yes', only authenticated users will be able to see and submit form"
-msgstr ""
-
-#: ./src/pyams_content/shared/form/interfaces.py:129
-msgid "Form header"
-msgstr ""
-
-#: ./src/pyams_content/shared/form/interfaces.py:130
-msgid "This header is displayed just above form fields"
-msgstr ""
-
-#: ./src/pyams_content/shared/form/interfaces.py:133
-msgid "Submit button"
-msgstr ""
-
-#: ./src/pyams_content/shared/form/interfaces.py:134
-msgid "Label of form submit button"
-msgstr ""
-
-#: ./src/pyams_content/shared/form/interfaces.py:137
-msgid "Submit message"
-msgstr ""
-
-#: ./src/pyams_content/shared/form/interfaces.py:138
-msgid "This message will be displayed after form submission"
-msgstr ""
-
-#: ./src/pyams_content/shared/form/interfaces.py:141
-msgid "Form handler"
-msgstr ""
-
-#: ./src/pyams_content/shared/form/interfaces.py:142
-msgid "Select how form data is transmitted"
-msgstr ""
-
-#: ./src/pyams_content/shared/form/interfaces.py:145
-msgid "Use captcha?"
+#: ./src/pyams_content/shared/form/interfaces.py:117
+msgid "Form fields template"
 msgstr ""
 
 #: ./src/pyams_content/shared/form/interfaces.py:146
-msgid "If 'yes', a captcha will be added automatically to the form"
+msgid ""
+"If set, this title will be displayed in front-office instead of original "
+"title"
 msgstr ""
 
 #: ./src/pyams_content/shared/form/interfaces.py:150
-msgid "Site key"
+msgid "Form header"
 msgstr ""
 
 #: ./src/pyams_content/shared/form/interfaces.py:151
-msgid "This key is included into HTML code and submitted with form data"
+msgid "This header is displayed just above form fields"
 msgstr ""
 
 #: ./src/pyams_content/shared/form/interfaces.py:154
-msgid "Secret key"
+msgid "Form title"
 msgstr ""
 
 #: ./src/pyams_content/shared/form/interfaces.py:155
-msgid "This key is used to communicate with Google's reCaptcha services"
-msgstr ""
-
-#: ./src/pyams_content/shared/form/interfaces.py:158
-msgid "Recaptcha proxy"
+msgid "If set, this title will be displayed above input fields"
 msgstr ""
 
 #: ./src/pyams_content/shared/form/interfaces.py:159
+msgid "Authenticated only?"
+msgstr ""
+
+#: ./src/pyams_content/shared/form/interfaces.py:160
+msgid "If 'yes', only authenticated users will be able to see and submit form"
+msgstr ""
+
+#: ./src/pyams_content/shared/form/interfaces.py:165
+msgid "Submit button"
+msgstr ""
+
+#: ./src/pyams_content/shared/form/interfaces.py:166
+msgid "Label of form submit button"
+msgstr ""
+
+#: ./src/pyams_content/shared/form/interfaces.py:169
+msgid "Submit message"
+msgstr ""
+
+#: ./src/pyams_content/shared/form/interfaces.py:170
+msgid "This message will be displayed after form submission"
+msgstr ""
+
+#: ./src/pyams_content/shared/form/interfaces.py:174
+msgid "Form handler"
+msgstr ""
+
+#: ./src/pyams_content/shared/form/interfaces.py:175
+msgid "Select how form data is transmitted"
+msgstr ""
+
+#: ./src/pyams_content/shared/form/interfaces.py:178
+msgid "Use captcha?"
+msgstr ""
+
+#: ./src/pyams_content/shared/form/interfaces.py:179
+msgid "If 'yes', a captcha will be added automatically to the form"
+msgstr ""
+
+#: ./src/pyams_content/shared/form/interfaces.py:183
+msgid "Site key"
+msgstr ""
+
+#: ./src/pyams_content/shared/form/interfaces.py:184
+msgid "This key is included into HTML code and submitted with form data"
+msgstr ""
+
+#: ./src/pyams_content/shared/form/interfaces.py:188
+msgid "Secret key"
+msgstr ""
+
+#: ./src/pyams_content/shared/form/interfaces.py:189
+msgid "This key is used to communicate with Google's reCaptcha services"
+msgstr ""
+
+#: ./src/pyams_content/shared/form/interfaces.py:193
+msgid "Recaptcha proxy"
+msgstr ""
+
+#: ./src/pyams_content/shared/form/interfaces.py:194
 msgid ""
 "If your server is behind a proxy, please set it's address here; captcha "
 "verification requires HTTPS support..."
 msgstr ""
 
-#: ./src/pyams_content/shared/form/interfaces.py:197
+#: ./src/pyams_content/shared/form/interfaces.py:199
+msgid "Required RGPD consent?"
+msgstr ""
+
+#: ./src/pyams_content/shared/form/interfaces.py:200
+msgid ""
+"If 'yes', an RGPD compliance warning will be displayed above form's submit "
+"button; form can't be submitted as long as the associated checkbox will not "
+"be checked explicitly by the user"
+msgstr ""
+
+#: ./src/pyams_content/shared/form/interfaces.py:207
+msgid "RGPD consent text"
+msgstr ""
+
+#: ./src/pyams_content/shared/form/interfaces.py:208
+msgid ""
+"User consent must be explicit, and user must be warned about usage which will"
+" be made of submitted data; text samples are given below"
+msgstr ""
+
+#: ./src/pyams_content/shared/form/interfaces.py:213
+msgid "RGPD user rights"
+msgstr ""
+
+#: ./src/pyams_content/shared/form/interfaces.py:214
+msgid ""
+"The internet user must be able to easily revoke his consent later on, so it "
+"is important to inform him how to proceed; below are examples of possible "
+"formulations"
+msgstr ""
+
+#: ./src/pyams_content/shared/form/interfaces.py:259
 msgid "Source address"
 msgstr ""
 
-#: ./src/pyams_content/shared/form/interfaces.py:198
+#: ./src/pyams_content/shared/form/interfaces.py:260
 msgid "Mail address from which form data is sent"
 msgstr ""
 
-#: ./src/pyams_content/shared/form/interfaces.py:201
+#: ./src/pyams_content/shared/form/interfaces.py:263
 msgid "Source name"
 msgstr ""
 
-#: ./src/pyams_content/shared/form/interfaces.py:202
+#: ./src/pyams_content/shared/form/interfaces.py:264
 msgid "Name of mail data sender"
 msgstr ""
 
-#: ./src/pyams_content/shared/form/interfaces.py:205
+#: ./src/pyams_content/shared/form/interfaces.py:267
 msgid "Recipient address"
 msgstr ""
 
-#: ./src/pyams_content/shared/form/interfaces.py:206
+#: ./src/pyams_content/shared/form/interfaces.py:268
 msgid "Mail address to which form data is sent"
 msgstr ""
 
-#: ./src/pyams_content/shared/form/interfaces.py:209
+#: ./src/pyams_content/shared/form/interfaces.py:271
 msgid "Recipient name"
 msgstr ""
 
-#: ./src/pyams_content/shared/form/interfaces.py:210
+#: ./src/pyams_content/shared/form/interfaces.py:272
 msgid "Name of data recipient"
 msgstr ""
 
-#: ./src/pyams_content/shared/form/zmi/properties.py:39
+#: ./src/pyams_content/shared/form/zmi/properties.py:56
 msgid "Main form settings"
 msgstr ""
 
+#: ./src/pyams_content/shared/form/zmi/properties.py:162
+msgid "Form handler settings"
+msgstr ""
+
 #: ./src/pyams_content/shared/form/zmi/properties.py:96
-msgid "Form handler settings"
-msgstr ""
-
-#: ./src/pyams_content/shared/form/zmi/properties.py:56
 msgid "Add captcha"
 msgstr ""
 
-#: ./src/pyams_content/shared/form/zmi/properties.py:94
+#: ./src/pyams_content/shared/form/zmi/properties.py:104
+msgid "Add RGPD warning"
+msgstr ""
+
+#: ./src/pyams_content/shared/form/zmi/properties.py:76
+msgid ""
+"Text samples:<br />- By submitting this form, I agree that the information "
+"entered may be used for the purpose of my request and the business "
+"relationship that may result from it."
+msgstr ""
+
+#: ./src/pyams_content/shared/form/zmi/properties.py:83
+msgid ""
+"Text samples:<br />- To know and enforce your rights, including the right to "
+"withdraw your consent to the use of the data collected by this form, please "
+"consult our privacy policy."
+msgstr ""
+
+#: ./src/pyams_content/shared/form/zmi/properties.py:133
+msgid "You MUST set an RGPD consent text and RGPD user rights to enable RGPD!"
+msgstr ""
+
+#: ./src/pyams_content/shared/form/zmi/properties.py:159
 #, python-format
 msgid "« {handler} » form handler settings"
 msgstr ""
@@ -4002,7 +4092,7 @@
 msgstr ""
 
 #: ./src/pyams_content/shared/form/zmi/field.py:155
-#: ./src/pyams_content/shared/common/interfaces/types.py:39
+#: ./src/pyams_content/shared/common/interfaces/types.py:41
 msgid "Name"
 msgstr ""
 
@@ -4045,6 +4135,18 @@
 msgid "Form « {title} »"
 msgstr ""
 
+#: ./src/pyams_content/shared/form/zmi/paragraph.py:65
+msgid "Form: input fields..."
+msgstr ""
+
+#: ./src/pyams_content/shared/form/zmi/paragraph.py:83
+msgid "Add new form fields paragraph"
+msgstr ""
+
+#: ./src/pyams_content/shared/form/zmi/paragraph.py:97
+msgid "Edit form fields paragraph properties"
+msgstr ""
+
 #: ./src/pyams_content/shared/view/merge.py:55
 msgid "Concatenate views items in order"
 msgstr ""
@@ -4494,7 +4596,7 @@
 msgstr ""
 
 #: ./src/pyams_content/shared/common/__init__.py:268
-#: ./src/pyams_content/shared/common/zmi/properties.py:65
+#: ./src/pyams_content/shared/common/zmi/properties.py:66
 #: ./src/pyams_content/shared/common/zmi/manager.py:96
 msgid "Properties"
 msgstr ""
@@ -4515,46 +4617,58 @@
 msgid "Content specificities"
 msgstr ""
 
-#: ./src/pyams_content/shared/common/interfaces/types.py:40
+#: ./src/pyams_content/shared/common/interfaces/types.py:42
 msgid "Name of this data type; must be unique between all data types"
 msgstr ""
 
-#: ./src/pyams_content/shared/common/interfaces/types.py:46
+#: ./src/pyams_content/shared/common/interfaces/types.py:48
 msgid "Source folder"
 msgstr ""
 
-#: ./src/pyams_content/shared/common/interfaces/types.py:47
+#: ./src/pyams_content/shared/common/interfaces/types.py:49
 msgid ""
 "Source folder (or search engine) to which content is attached; if this "
 "reference is set, canonical URL will be based on this object's URL"
 msgstr ""
 
-#: ./src/pyams_content/shared/common/interfaces/types.py:55
+#: ./src/pyams_content/shared/common/interfaces/types.py:58
 msgid "Navigation label"
 msgstr ""
 
-#: ./src/pyams_content/shared/common/interfaces/types.py:56
+#: ./src/pyams_content/shared/common/interfaces/types.py:59
 msgid "Label used for navigation entries"
 msgstr ""
 
-#: ./src/pyams_content/shared/common/interfaces/types.py:60
+#: ./src/pyams_content/shared/common/interfaces/types.py:63
 msgid "Pictogram associated with this data type"
 msgstr ""
 
-#: ./src/pyams_content/shared/common/interfaces/types.py:74
+#: ./src/pyams_content/shared/common/interfaces/types.py:77
+msgid "Display as tag?"
+msgstr ""
+
+#: ./src/pyams_content/shared/common/interfaces/types.py:78
+msgid ""
+"Some portlets renderers can display a small tag above each content to show "
+"their content type; if this option is checked, data type label will be "
+"displayed instead of content type"
+msgstr ""
+
+#: ./src/pyams_content/shared/common/interfaces/types.py:85
 msgid "Field names"
 msgstr ""
 
-#: ./src/pyams_content/shared/common/interfaces/types.py:75
+#: ./src/pyams_content/shared/common/interfaces/types.py:86
 msgid "List of fields associated with this data type"
 msgstr ""
 
-#: ./src/pyams_content/shared/common/interfaces/types.py:109
+#: ./src/pyams_content/shared/common/interfaces/types.py:120
+#: ./src/pyams_content/shared/common/zmi/search.py:178
 #: ./src/pyams_content/shared/topic/interfaces.py:41
 msgid "Data type"
 msgstr ""
 
-#: ./src/pyams_content/shared/common/interfaces/types.py:110
+#: ./src/pyams_content/shared/common/interfaces/types.py:121
 #: ./src/pyams_content/shared/topic/interfaces.py:42
 msgid "Type of content data"
 msgstr ""
@@ -4808,11 +4922,11 @@
 msgid "Use tool default template"
 msgstr ""
 
-#: ./src/pyams_content/shared/common/zmi/properties.py:55
+#: ./src/pyams_content/shared/common/zmi/properties.py:56
 msgid "Composition"
 msgstr ""
 
-#: ./src/pyams_content/shared/common/zmi/properties.py:78
+#: ./src/pyams_content/shared/common/zmi/properties.py:79
 msgid "Content properties"
 msgstr ""
 
@@ -4902,7 +5016,7 @@
 msgstr ""
 
 #: ./src/pyams_content/shared/common/zmi/dashboard.py:167
-#: ./src/pyams_content/shared/common/zmi/search.py:172
+#: ./src/pyams_content/shared/common/zmi/search.py:174
 msgid "Status"
 msgstr ""
 
@@ -5410,7 +5524,7 @@
 msgid "Specified subtype name is already used!"
 msgstr ""
 
-#: ./src/pyams_content/shared/common/zmi/types/__init__.py:436
+#: ./src/pyams_content/shared/common/zmi/types/__init__.py:425
 #, python-format
 msgid "Custom properties for type « {0} »"
 msgstr ""
@@ -6083,21 +6197,21 @@
 msgid "Logos template"
 msgstr ""
 
-#: ./src/pyams_content/shared/logo/paragraph.py:90
+#: ./src/pyams_content/shared/logo/paragraph.py:104
 msgid "no selected logo"
 msgstr ""
 
-#: ./src/pyams_content/shared/logo/paragraph.py:96
+#: ./src/pyams_content/shared/logo/paragraph.py:110
 #, python-format
 msgid "logo '{0}' can't be found"
 msgstr ""
 
-#: ./src/pyams_content/shared/logo/paragraph.py:104
+#: ./src/pyams_content/shared/logo/paragraph.py:118
 #, python-format
 msgid "logo '{0}' is not published"
 msgstr ""
 
-#: ./src/pyams_content/shared/logo/zmi/properties.py:60
+#: ./src/pyams_content/shared/logo/zmi/properties.py:61
 msgid "Main logo settings"
 msgstr ""