Updated contact paragraph
authorThierry Florac <thierry.florac@onf.fr>
Wed, 04 Apr 2018 15:35:44 +0200
changeset 515 a1d5eb955e54
parent 514 27a1c8d531b9
child 516 a3f26cfd3094
Updated contact paragraph
src/pyams_content/component/paragraph/contact.py
src/pyams_content/component/paragraph/interfaces/contact.py
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/src/pyams_content/component/paragraph/contact.py	Wed Apr 04 14:43:09 2018 +0200
+++ b/src/pyams_content/component/paragraph/contact.py	Wed Apr 04 15:35:44 2018 +0200
@@ -54,6 +54,8 @@
         gps_location = FieldProperty(IContactParagraph['gps_location'])
 
     address = FieldProperty(IContactParagraph['address'])
+    contact_email = FieldProperty(IContactParagraph['contact_email'])
+    contact_form = FieldProperty(IContactParagraph['contact_form'])
     renderer = FieldProperty(IContactParagraph['renderer'])
 
     @property
--- a/src/pyams_content/component/paragraph/interfaces/contact.py	Wed Apr 04 14:43:09 2018 +0200
+++ b/src/pyams_content/component/paragraph/interfaces/contact.py	Wed Apr 04 15:35:44 2018 +0200
@@ -12,11 +12,13 @@
 
 __docformat__ = 'restructuredtext'
 
+
 # import standard library
 
 # import interfaces
 from pyams_content.component.paragraph import IBaseParagraph
 from pyams_content.features.renderer import IRenderedContent
+from pyams_content.shared.form.interfaces import FORM_CONTENT_TYPE
 
 # import packages
 from pyams_file.schema import ImageField
@@ -27,6 +29,8 @@
 else:
     have_gis = True
 from pyams_i18n.schema import I18nTextLineField
+from pyams_sequence.schema import InternalReference
+from pyams_utils.schema import MailAddressField
 from zope.schema import TextLine, Text, Choice
 
 from pyams_content import _
@@ -63,6 +67,15 @@
     address = Text(title=_("Address"),
                    required=False)
 
+    contact_email = MailAddressField(title=_("Email address"),
+                                     description=_("Contact email address"),
+                                     required=False)
+
+    contact_form = InternalReference(title=_("Contact form"),
+                                     description=_("Reference of contact form"),
+                                     required=False,
+                                     content_type=FORM_CONTENT_TYPE)
+
     renderer = Choice(title=_("Contact template"),
                       description=_("Presentation template used for this contact"),
                       vocabulary=CONTACT_PARAGRAPH_RENDERERS,
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 Apr 04 14:43:09 2018 +0200
+++ b/src/pyams_content/locales/fr/LC_MESSAGES/pyams_content.po	Wed Apr 04 15:35:44 2018 +0200
@@ -5,7 +5,7 @@
 msgid ""
 msgstr ""
 "Project-Id-Version: PACKAGE 1.0\n"
-"POT-Creation-Date: 2018-04-03 14:35+0200\n"
+"POT-Creation-Date: 2018-04-04 15:32+0200\n"
 "PO-Revision-Date: 2015-09-10 10:42+0200\n"
 "Last-Translator: Thierry Florac <tflorac@ulthar.net>\n"
 "Language-Team: French\n"
@@ -108,7 +108,7 @@
 msgstr "Contenu audio associé"
 
 #: src/pyams_content/component/gallery/zmi/file.py:258
-#: src/pyams_content/component/paragraph/zmi/milestone.py:349
+#: src/pyams_content/component/paragraph/zmi/milestone.py:357
 #: src/pyams_content/component/paragraph/zmi/pictogram.py:363
 #: src/pyams_content/component/association/zmi/__init__.py:288
 #: src/pyams_content/shared/common/zmi/types.py:208
@@ -150,7 +150,7 @@
 #: src/pyams_content/component/illustration/interfaces/__init__.py:52
 #: src/pyams_content/component/paragraph/interfaces/video.py:48
 #: src/pyams_content/component/paragraph/interfaces/verbatim.py:44
-#: src/pyams_content/component/video/interfaces/__init__.py:48
+#: src/pyams_content/component/video/interfaces/__init__.py:50
 msgid "Author"
 msgstr "Auteur"
 
@@ -158,7 +158,7 @@
 #: src/pyams_content/component/gallery/interfaces/__init__.py:62
 #: src/pyams_content/component/extfile/interfaces/__init__.py:45
 #: src/pyams_content/component/paragraph/interfaces/video.py:49
-#: src/pyams_content/component/video/interfaces/__init__.py:49
+#: src/pyams_content/component/video/interfaces/__init__.py:51
 msgid "Name of document's author"
 msgstr "Sous la forme \"Prénom Nom / Organisme\""
 
@@ -183,15 +183,15 @@
 "Vous pouvez déposer les médias un par un, ou en nombre en les réunissant au "
 "préalable dans un fichier ZIP"
 
-#: src/pyams_content/component/gallery/zmi/templates/gallery-medias.pt:10
+#: src/pyams_content/component/gallery/zmi/templates/gallery-medias.pt:11
 msgid "Gallery medias"
 msgstr "Contenu de la galerie"
 
-#: src/pyams_content/component/gallery/zmi/templates/gallery-medias.pt:15
+#: src/pyams_content/component/gallery/zmi/templates/gallery-medias.pt:17
 msgid "Download medias"
 msgstr "Télécharger tous les médias"
 
-#: src/pyams_content/component/gallery/zmi/templates/gallery-medias.pt:39
+#: src/pyams_content/component/gallery/zmi/templates/gallery-medias.pt:41
 msgid "Zoom image"
 msgstr "Agrandir l'image"
 
@@ -234,7 +234,7 @@
 #: src/pyams_content/component/illustration/interfaces/__init__.py:48
 #: src/pyams_content/component/paragraph/interfaces/video.py:44
 #: src/pyams_content/component/links/interfaces/__init__.py:37
-#: src/pyams_content/component/video/interfaces/__init__.py:44
+#: src/pyams_content/component/video/interfaces/__init__.py:46
 #: src/pyams_content/shared/common/interfaces/__init__.py:136
 #: src/pyams_content/shared/form/interfaces/__init__.py:65
 msgid "Description"
@@ -289,8 +289,8 @@
 
 #: src/pyams_content/component/gallery/interfaces/__init__.py:94
 #: src/pyams_content/component/extfile/interfaces/__init__.py:36
-#: src/pyams_content/component/paragraph/zmi/milestone.py:300
-#: src/pyams_content/component/paragraph/zmi/container.py:224
+#: src/pyams_content/component/paragraph/zmi/milestone.py:301
+#: src/pyams_content/component/paragraph/zmi/container.py:225
 #: src/pyams_content/component/paragraph/interfaces/milestone.py:46
 #: src/pyams_content/component/links/zmi/reverse.py:71
 #: src/pyams_content/shared/common/zmi/dashboard.py:109
@@ -421,7 +421,7 @@
 
 #: src/pyams_content/component/extfile/interfaces/__init__.py:41
 #: src/pyams_content/component/paragraph/interfaces/video.py:45
-#: src/pyams_content/component/video/interfaces/__init__.py:45
+#: src/pyams_content/component/video/interfaces/__init__.py:47
 msgid "File description displayed by front-office template"
 msgstr "Description du fichier, présentée aux internautes"
 
@@ -566,7 +566,7 @@
 
 #: src/pyams_content/component/paragraph/keypoint.py:62
 msgid "Key points paragraph"
-msgstr "Points-clés"
+msgstr "Points clés"
 
 #: src/pyams_content/component/paragraph/container.py:82
 #: src/pyams_content/component/paragraph/zmi/templates/paragraphs.pt:6
@@ -624,7 +624,7 @@
 msgstr "Texte enrichi"
 
 #: src/pyams_content/component/paragraph/contact.py:47
-#: src/pyams_content/component/paragraph/contact.py:74
+#: src/pyams_content/component/paragraph/contact.py:76
 msgid "Contact card"
 msgstr "Fiche contact"
 
@@ -639,64 +639,64 @@
 msgid "Header paragraph"
 msgstr "Chapô"
 
-#: src/pyams_content/component/paragraph/zmi/milestone.py:79
+#: src/pyams_content/component/paragraph/zmi/milestone.py:80
 msgid "Milestones..."
 msgstr "Chronologie"
 
-#: src/pyams_content/component/paragraph/zmi/milestone.py:90
+#: src/pyams_content/component/paragraph/zmi/milestone.py:91
 msgid "Add new milestone paragraph"
 msgstr "Ajout d'une chronologie"
 
-#: src/pyams_content/component/paragraph/zmi/milestone.py:120
+#: src/pyams_content/component/paragraph/zmi/milestone.py:121
 msgid "Edit milestone paragraph properties"
 msgstr "Propriétés de la chronologie"
 
-#: src/pyams_content/component/paragraph/zmi/milestone.py:264
+#: src/pyams_content/component/paragraph/zmi/milestone.py:265
 msgid "Switch milestone visibility"
 msgstr "Cliquez pour rendre le jalon visible ou non"
 
-#: src/pyams_content/component/paragraph/zmi/milestone.py:309
+#: src/pyams_content/component/paragraph/zmi/milestone.py:310
 #: src/pyams_content/component/paragraph/interfaces/milestone.py:50
 msgid "Associated label"
 msgstr "Information associée"
 
-#: src/pyams_content/component/paragraph/zmi/milestone.py:318
+#: src/pyams_content/component/paragraph/zmi/milestone.py:319
 #: src/pyams_content/component/paragraph/interfaces/milestone.py:54
 msgid "Anchor"
 msgstr "Ancre"
 
-#: src/pyams_content/component/paragraph/zmi/milestone.py:393
+#: src/pyams_content/component/paragraph/zmi/milestone.py:401
 msgid "Add milestone"
 msgstr "Ajouter un jalon"
 
-#: src/pyams_content/component/paragraph/zmi/milestone.py:404
+#: src/pyams_content/component/paragraph/zmi/milestone.py:412
 msgid "Add new milestone"
 msgstr "Ajout d'un jalon"
 
-#: src/pyams_content/component/paragraph/zmi/milestone.py:444
+#: src/pyams_content/component/paragraph/zmi/milestone.py:452
 msgid "Edit milestone properties"
 msgstr "Propriétés du jalon"
 
-#: src/pyams_content/component/paragraph/zmi/milestone.py:428
+#: src/pyams_content/component/paragraph/zmi/milestone.py:436
 msgid "Milestone was correctly added"
 msgstr "Le jalon a été ajouté."
 
-#: src/pyams_content/component/paragraph/zmi/milestone.py:357
+#: src/pyams_content/component/paragraph/zmi/milestone.py:365
 #: src/pyams_content/component/association/zmi/__init__.py:292
 msgid "Given association name doesn't exist!"
 msgstr "Le nom d'association indiqué n'existe pas !"
 
 #: src/pyams_content/component/paragraph/zmi/keypoint.py:52
 msgid "Key points..."
-msgstr "Points-clés"
+msgstr "Points clés"
 
 #: src/pyams_content/component/paragraph/zmi/keypoint.py:63
 msgid "Add new key points paragraph"
-msgstr "Ajout de points-clés"
+msgstr "Ajout de points clés"
 
 #: src/pyams_content/component/paragraph/zmi/keypoint.py:93
 msgid "Edit key points paragraph properties"
-msgstr "Propriétés des points-clés"
+msgstr "Propriétés des points clés"
 
 #: src/pyams_content/component/paragraph/zmi/__init__.py:61
 msgid "Paragraphs types..."
@@ -738,57 +738,57 @@
 msgstr "Ajout d'une vidéo"
 
 #: src/pyams_content/component/paragraph/zmi/video.py:109
-#: src/pyams_content/component/video/zmi/paragraph.py:174
+#: src/pyams_content/component/video/zmi/paragraph.py:182
 msgid "Edit video properties"
 msgstr "Propriétés de la vidéo"
 
 #: src/pyams_content/component/paragraph/zmi/video.py:83
 #: src/pyams_content/component/paragraph/zmi/video.py:128
 #: src/pyams_content/component/video/zmi/paragraph.py:87
-#: src/pyams_content/component/video/zmi/paragraph.py:197
+#: src/pyams_content/component/video/zmi/paragraph.py:205
 msgid "HTML content"
 msgstr "Contenu HTML"
 
-#: src/pyams_content/component/paragraph/zmi/container.py:70
+#: src/pyams_content/component/paragraph/zmi/container.py:71
 msgid "Paragraphs..."
 msgstr "Paragraphes"
 
-#: src/pyams_content/component/paragraph/zmi/container.py:162
+#: src/pyams_content/component/paragraph/zmi/container.py:163
 msgid "Switch paragraph visibility"
 msgstr "Cliquez pour rendre le paragraphe visible ou non"
 
-#: src/pyams_content/component/paragraph/zmi/container.py:240
+#: src/pyams_content/component/paragraph/zmi/container.py:241
 msgid "Show/hide all paragraphs"
 msgstr "Afficher/masquer tous les paragraphes"
 
-#: src/pyams_content/component/paragraph/zmi/container.py:286
-#: src/pyams_content/component/paragraph/zmi/container.py:295
+#: src/pyams_content/component/paragraph/zmi/container.py:287
+#: src/pyams_content/component/paragraph/zmi/container.py:296
 msgid "Paragraphs list"
 msgstr "Liste des paragraphes"
 
-#: src/pyams_content/component/paragraph/zmi/container.py:394
+#: src/pyams_content/component/paragraph/zmi/container.py:395
 #: src/pyams_content/component/association/zmi/paragraph.py:55
 #: src/pyams_content/component/association/zmi/__init__.py:104
 msgid "Associations..."
 msgstr "Associations"
 
-#: src/pyams_content/component/paragraph/zmi/container.py:406
+#: src/pyams_content/component/paragraph/zmi/container.py:407
 msgid "Paragraphs associations"
 msgstr "Associations par paragraphe"
 
-#: src/pyams_content/component/paragraph/zmi/container.py:121
+#: src/pyams_content/component/paragraph/zmi/container.py:122
 msgid "No currently defined paragraph."
 msgstr "Aucun paragraphe associé à ce contenu."
 
-#: src/pyams_content/component/paragraph/zmi/container.py:249
+#: src/pyams_content/component/paragraph/zmi/container.py:250
 msgid "Click to open/close all paragraphs editors"
 msgstr "Afficher/masquer tous les paragraphes"
 
-#: src/pyams_content/component/paragraph/zmi/container.py:262
+#: src/pyams_content/component/paragraph/zmi/container.py:263
 msgid "Click to open/close paragraph editor"
 msgstr "Afficher/masquer ce paragraphe"
 
-#: src/pyams_content/component/paragraph/zmi/container.py:127
+#: src/pyams_content/component/paragraph/zmi/container.py:128
 msgid "Check allowed paragraph types to be able to create new paragraphs."
 msgstr ""
 "Vérifiez le paramétrage des types de paragraphes autorisés pour ajouter de "
@@ -820,7 +820,7 @@
 #: src/pyams_content/component/paragraph/zmi/pictogram.py:336
 #: src/pyams_content/component/paragraph/interfaces/video.py:41
 #: src/pyams_content/component/paragraph/interfaces/html.py:53
-#: src/pyams_content/component/video/interfaces/__init__.py:69
+#: src/pyams_content/component/video/interfaces/__init__.py:71
 msgid "Body"
 msgstr "Contenu HTML"
 
@@ -941,7 +941,7 @@
 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 pour le paragraphe"
+"rendu choisi"
 
 #: src/pyams_content/component/paragraph/interfaces/milestone.py:55
 msgid "Paragraph to which this milestone should lead"
@@ -958,8 +958,8 @@
 #: src/pyams_content/component/paragraph/interfaces/keypoint.py:41
 msgid "Enter one key point by line, without hyphen or prefix"
 msgstr ""
-"Indiquez un point-clé par ligne, sans tiret. Passez à la ligne entre chaque "
-"point-clé, la mise en forme sera effectuée automatiquement."
+"Indiquez un point clé par ligne, sans tiret. Passez à la ligne entre chaque "
+"point clé, la mise en forme sera effectuée automatiquement."
 
 #: src/pyams_content/component/paragraph/interfaces/keypoint.py:44
 msgid "Presentation template"
@@ -1075,7 +1075,7 @@
 msgstr "Nom de l'auteur de la citation"
 
 #: src/pyams_content/component/paragraph/interfaces/verbatim.py:48
-#: src/pyams_content/component/paragraph/interfaces/contact.py:50
+#: src/pyams_content/component/paragraph/interfaces/contact.py:54
 msgid "In charge of"
 msgstr "Fonction"
 
@@ -1099,43 +1099,59 @@
 "Ce code HTML sera utilisé en l'état et intégré dans les pages sans "
 "modification. À utiliser avec précaution !!!"
 
-#: src/pyams_content/component/paragraph/interfaces/contact.py:46
+#: src/pyams_content/component/paragraph/interfaces/contact.py:50
 msgid "Contact identity"
 msgstr "Nom du contact"
 
-#: src/pyams_content/component/paragraph/interfaces/contact.py:47
-msgid "Name of the contact"
-msgstr "Nom complet du contact"
-
 #: src/pyams_content/component/paragraph/interfaces/contact.py:51
+msgid "Name of the contact"
+msgstr "Nom complet du contact"
+
+#: src/pyams_content/component/paragraph/interfaces/contact.py:55
 msgid "Label of contact function"
 msgstr "Fonction du contact"
 
-#: src/pyams_content/component/paragraph/interfaces/contact.py:54
+#: src/pyams_content/component/paragraph/interfaces/contact.py:58
 msgid "Photo"
 msgstr "Photo"
 
-#: src/pyams_content/component/paragraph/interfaces/contact.py:55
+#: src/pyams_content/component/paragraph/interfaces/contact.py:59
 msgid "Use 'browse' button to select contact picture"
 msgstr "Utilisez le bouton 'Parcourir' pour sélectionner la photo du contact"
 
-#: src/pyams_content/component/paragraph/interfaces/contact.py:63
+#: src/pyams_content/component/paragraph/interfaces/contact.py:67
 msgid "Address"
 msgstr "Adresse"
 
-#: src/pyams_content/component/paragraph/interfaces/contact.py:66
+#: src/pyams_content/component/paragraph/interfaces/contact.py:70
+msgid "Email address"
+msgstr "Adresse de messagerie"
+
+#: src/pyams_content/component/paragraph/interfaces/contact.py:71
+msgid "Contact email address"
+msgstr "Adresse de messagerie \"stricte\", soit uniquement \"xxx@yyy.com\""
+
+#: src/pyams_content/component/paragraph/interfaces/contact.py:74
+msgid "Contact form"
+msgstr "Formulaire de contact"
+
+#: src/pyams_content/component/paragraph/interfaces/contact.py:75
+msgid "Reference of contact form"
+msgstr "Référence d'un formulaire de contact"
+
+#: src/pyams_content/component/paragraph/interfaces/contact.py:79
 msgid "Contact template"
 msgstr "Mode de rendu"
 
-#: src/pyams_content/component/paragraph/interfaces/contact.py:67
+#: src/pyams_content/component/paragraph/interfaces/contact.py:80
 msgid "Presentation template used for this contact"
 msgstr "Modèle de présentation utilisé pour ce contact"
 
-#: src/pyams_content/component/paragraph/interfaces/contact.py:59
+#: src/pyams_content/component/paragraph/interfaces/contact.py:63
 msgid "GPS location"
 msgstr "Position GPS"
 
-#: src/pyams_content/component/paragraph/interfaces/contact.py:60
+#: src/pyams_content/component/paragraph/interfaces/contact.py:64
 msgid "GPS coordinates used to locate contact"
 msgstr "Coordonnées GPS de situation du contact"
 
@@ -1469,7 +1485,7 @@
 #: src/pyams_content/component/video/provider/interfaces.py:133
 msgid "If 'no', video title and information won't be displayed"
 msgstr ""
-"Si 'non', le titre et les informations de la vidéo ne sont pas affichées"
+"Si 'non', le titre et les informations de la vidéo ne sont pas affichés"
 
 #: src/pyams_content/component/video/provider/interfaces.py:74
 #: src/pyams_content/component/video/provider/interfaces.py:137
@@ -1516,7 +1532,7 @@
 
 #: src/pyams_content/component/video/provider/interfaces.py:95
 msgid "If 'yes', video player can't be controlled via keyboard shortcuts"
-msgstr "Si 'oui', le lecteur vidéo ne peut pas être controllé avec le clavier"
+msgstr "Si 'oui', le lecteur vidéo ne peut pas être contrôlé avec le clavier"
 
 #: src/pyams_content/component/video/provider/interfaces.py:104
 msgid ""
@@ -1611,15 +1627,19 @@
 msgstr "Le nom du fournisseur est obligatoire"
 
 #: src/pyams_content/component/video/zmi/paragraph.py:161
-#: src/pyams_content/component/video/zmi/paragraph.py:210
+#: src/pyams_content/component/video/zmi/paragraph.py:220
 msgid "Video provider settings"
 msgstr "Paramètres liés au fournisseur"
 
-#: src/pyams_content/component/video/interfaces/__init__.py:52
+#: src/pyams_content/component/video/zmi/paragraph.py:170
+msgid "Other settings"
+msgstr "Autres paramètres"
+
+#: src/pyams_content/component/video/interfaces/__init__.py:54
 msgid "Video provider"
 msgstr "Fournisseur"
 
-#: src/pyams_content/component/video/interfaces/__init__.py:53
+#: src/pyams_content/component/video/interfaces/__init__.py:55
 msgid "Name of external platform providing selected video"
 msgstr "Nom de la plate-forme externe fournissant la vidéo à afficher"
 
@@ -4331,7 +4351,9 @@
 
 #: src/pyams_content/features/alert/interfaces.py:87
 msgid "First date at which alert should be displayed"
-msgstr "Première date à laquelle l'alerte sera affichée. Laissez la zone vide pour qu'elle soit affichée immédiatement."
+msgstr ""
+"Première date à laquelle l'alerte sera affichée. Laissez la zone vide pour "
+"qu'elle soit affichée immédiatement."
 
 #: src/pyams_content/features/alert/interfaces.py:90
 msgid "Display end date"
@@ -4339,7 +4361,9 @@
 
 #: src/pyams_content/features/alert/interfaces.py:91
 msgid "Last date at which alert should be displayed"
-msgstr "Dernière date à laquelle l'alerte sera affichée. Laissez la zone vide pour qu'elle ne soit pas retirée."
+msgstr ""
+"Dernière date à laquelle l'alerte sera affichée. Laissez la zone vide pour "
+"qu'elle ne soit pas retirée."
 
 #: src/pyams_content/features/alert/interfaces.py:94
 msgid "Maximum interval"
@@ -4350,8 +4374,9 @@
 "Maximum interval between alert displays on a given device, given in hours; "
 "set to 0 to always display the alert"
 msgstr ""
-"Cet intervalle est donnée en heures ; passé ce délai, pour un internaute donné, l'alerte apparaîtra à nouveau. "
-"Si aucun intervalle n'est indiqué, l'alerte s'affichera en permanence."
+"Cet intervalle est donnée en heures ; passé ce délai, pour un internaute "
+"donné, l'alerte apparaîtra à nouveau. Si aucun intervalle n'est indiqué, "
+"l'alerte s'affichera en permanence."
 
 #: src/pyams_content/features/alert/zmi/__init__.py:45
 msgid "Add alert"
--- a/src/pyams_content/locales/pyams_content.pot	Wed Apr 04 14:43:09 2018 +0200
+++ b/src/pyams_content/locales/pyams_content.pot	Wed Apr 04 15:35:44 2018 +0200
@@ -6,7 +6,7 @@
 msgid ""
 msgstr ""
 "Project-Id-Version: PACKAGE 1.0\n"
-"POT-Creation-Date: 2018-04-03 14:35+0200\n"
+"POT-Creation-Date: 2018-04-04 15:32+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"
@@ -109,7 +109,7 @@
 msgstr ""
 
 #: ./src/pyams_content/component/gallery/zmi/file.py:258
-#: ./src/pyams_content/component/paragraph/zmi/milestone.py:349
+#: ./src/pyams_content/component/paragraph/zmi/milestone.py:357
 #: ./src/pyams_content/component/paragraph/zmi/pictogram.py:363
 #: ./src/pyams_content/component/association/zmi/__init__.py:288
 #: ./src/pyams_content/shared/common/zmi/types.py:208
@@ -151,7 +151,7 @@
 #: ./src/pyams_content/component/illustration/interfaces/__init__.py:52
 #: ./src/pyams_content/component/paragraph/interfaces/video.py:48
 #: ./src/pyams_content/component/paragraph/interfaces/verbatim.py:44
-#: ./src/pyams_content/component/video/interfaces/__init__.py:48
+#: ./src/pyams_content/component/video/interfaces/__init__.py:50
 msgid "Author"
 msgstr ""
 
@@ -159,7 +159,7 @@
 #: ./src/pyams_content/component/gallery/interfaces/__init__.py:62
 #: ./src/pyams_content/component/extfile/interfaces/__init__.py:45
 #: ./src/pyams_content/component/paragraph/interfaces/video.py:49
-#: ./src/pyams_content/component/video/interfaces/__init__.py:49
+#: ./src/pyams_content/component/video/interfaces/__init__.py:51
 msgid "Name of document's author"
 msgstr ""
 
@@ -180,15 +180,15 @@
 msgid "You can upload a single file or choose to upload a whole ZIP archive"
 msgstr ""
 
-#: ./src/pyams_content/component/gallery/zmi/templates/gallery-medias.pt:10
+#: ./src/pyams_content/component/gallery/zmi/templates/gallery-medias.pt:11
 msgid "Gallery medias"
 msgstr ""
 
-#: ./src/pyams_content/component/gallery/zmi/templates/gallery-medias.pt:15
+#: ./src/pyams_content/component/gallery/zmi/templates/gallery-medias.pt:17
 msgid "Download medias"
 msgstr ""
 
-#: ./src/pyams_content/component/gallery/zmi/templates/gallery-medias.pt:39
+#: ./src/pyams_content/component/gallery/zmi/templates/gallery-medias.pt:41
 msgid "Zoom image"
 msgstr ""
 
@@ -226,7 +226,7 @@
 #: ./src/pyams_content/component/illustration/interfaces/__init__.py:48
 #: ./src/pyams_content/component/paragraph/interfaces/video.py:44
 #: ./src/pyams_content/component/links/interfaces/__init__.py:37
-#: ./src/pyams_content/component/video/interfaces/__init__.py:44
+#: ./src/pyams_content/component/video/interfaces/__init__.py:46
 #: ./src/pyams_content/shared/common/interfaces/__init__.py:136
 #: ./src/pyams_content/shared/form/interfaces/__init__.py:65
 msgid "Description"
@@ -279,8 +279,8 @@
 
 #: ./src/pyams_content/component/gallery/interfaces/__init__.py:94
 #: ./src/pyams_content/component/extfile/interfaces/__init__.py:36
-#: ./src/pyams_content/component/paragraph/zmi/milestone.py:300
-#: ./src/pyams_content/component/paragraph/zmi/container.py:224
+#: ./src/pyams_content/component/paragraph/zmi/milestone.py:301
+#: ./src/pyams_content/component/paragraph/zmi/container.py:225
 #: ./src/pyams_content/component/paragraph/interfaces/milestone.py:46
 #: ./src/pyams_content/component/links/zmi/reverse.py:71
 #: ./src/pyams_content/shared/common/zmi/dashboard.py:109
@@ -408,7 +408,7 @@
 
 #: ./src/pyams_content/component/extfile/interfaces/__init__.py:41
 #: ./src/pyams_content/component/paragraph/interfaces/video.py:45
-#: ./src/pyams_content/component/video/interfaces/__init__.py:45
+#: ./src/pyams_content/component/video/interfaces/__init__.py:47
 msgid "File description displayed by front-office template"
 msgstr ""
 
@@ -597,7 +597,7 @@
 msgstr ""
 
 #: ./src/pyams_content/component/paragraph/contact.py:47
-#: ./src/pyams_content/component/paragraph/contact.py:74
+#: ./src/pyams_content/component/paragraph/contact.py:76
 msgid "Contact card"
 msgstr ""
 
@@ -612,49 +612,49 @@
 msgid "Header paragraph"
 msgstr ""
 
-#: ./src/pyams_content/component/paragraph/zmi/milestone.py:79
+#: ./src/pyams_content/component/paragraph/zmi/milestone.py:80
 msgid "Milestones..."
 msgstr ""
 
-#: ./src/pyams_content/component/paragraph/zmi/milestone.py:90
+#: ./src/pyams_content/component/paragraph/zmi/milestone.py:91
 msgid "Add new milestone paragraph"
 msgstr ""
 
-#: ./src/pyams_content/component/paragraph/zmi/milestone.py:120
+#: ./src/pyams_content/component/paragraph/zmi/milestone.py:121
 msgid "Edit milestone paragraph properties"
 msgstr ""
 
-#: ./src/pyams_content/component/paragraph/zmi/milestone.py:264
+#: ./src/pyams_content/component/paragraph/zmi/milestone.py:265
 msgid "Switch milestone visibility"
 msgstr ""
 
-#: ./src/pyams_content/component/paragraph/zmi/milestone.py:309
+#: ./src/pyams_content/component/paragraph/zmi/milestone.py:310
 #: ./src/pyams_content/component/paragraph/interfaces/milestone.py:50
 msgid "Associated label"
 msgstr ""
 
-#: ./src/pyams_content/component/paragraph/zmi/milestone.py:318
+#: ./src/pyams_content/component/paragraph/zmi/milestone.py:319
 #: ./src/pyams_content/component/paragraph/interfaces/milestone.py:54
 msgid "Anchor"
 msgstr ""
 
-#: ./src/pyams_content/component/paragraph/zmi/milestone.py:393
+#: ./src/pyams_content/component/paragraph/zmi/milestone.py:401
 msgid "Add milestone"
 msgstr ""
 
-#: ./src/pyams_content/component/paragraph/zmi/milestone.py:404
+#: ./src/pyams_content/component/paragraph/zmi/milestone.py:412
 msgid "Add new milestone"
 msgstr ""
 
-#: ./src/pyams_content/component/paragraph/zmi/milestone.py:444
+#: ./src/pyams_content/component/paragraph/zmi/milestone.py:452
 msgid "Edit milestone properties"
 msgstr ""
 
-#: ./src/pyams_content/component/paragraph/zmi/milestone.py:428
+#: ./src/pyams_content/component/paragraph/zmi/milestone.py:436
 msgid "Milestone was correctly added"
 msgstr ""
 
-#: ./src/pyams_content/component/paragraph/zmi/milestone.py:357
+#: ./src/pyams_content/component/paragraph/zmi/milestone.py:365
 #: ./src/pyams_content/component/association/zmi/__init__.py:292
 msgid "Given association name doesn't exist!"
 msgstr ""
@@ -701,57 +701,57 @@
 msgstr ""
 
 #: ./src/pyams_content/component/paragraph/zmi/video.py:109
-#: ./src/pyams_content/component/video/zmi/paragraph.py:174
+#: ./src/pyams_content/component/video/zmi/paragraph.py:182
 msgid "Edit video properties"
 msgstr ""
 
 #: ./src/pyams_content/component/paragraph/zmi/video.py:83
 #: ./src/pyams_content/component/paragraph/zmi/video.py:128
 #: ./src/pyams_content/component/video/zmi/paragraph.py:87
-#: ./src/pyams_content/component/video/zmi/paragraph.py:197
+#: ./src/pyams_content/component/video/zmi/paragraph.py:205
 msgid "HTML content"
 msgstr ""
 
-#: ./src/pyams_content/component/paragraph/zmi/container.py:70
+#: ./src/pyams_content/component/paragraph/zmi/container.py:71
 msgid "Paragraphs..."
 msgstr ""
 
-#: ./src/pyams_content/component/paragraph/zmi/container.py:162
+#: ./src/pyams_content/component/paragraph/zmi/container.py:163
 msgid "Switch paragraph visibility"
 msgstr ""
 
-#: ./src/pyams_content/component/paragraph/zmi/container.py:240
+#: ./src/pyams_content/component/paragraph/zmi/container.py:241
 msgid "Show/hide all paragraphs"
 msgstr ""
 
-#: ./src/pyams_content/component/paragraph/zmi/container.py:286
-#: ./src/pyams_content/component/paragraph/zmi/container.py:295
+#: ./src/pyams_content/component/paragraph/zmi/container.py:287
+#: ./src/pyams_content/component/paragraph/zmi/container.py:296
 msgid "Paragraphs list"
 msgstr ""
 
-#: ./src/pyams_content/component/paragraph/zmi/container.py:394
+#: ./src/pyams_content/component/paragraph/zmi/container.py:395
 #: ./src/pyams_content/component/association/zmi/paragraph.py:55
 #: ./src/pyams_content/component/association/zmi/__init__.py:104
 msgid "Associations..."
 msgstr ""
 
-#: ./src/pyams_content/component/paragraph/zmi/container.py:406
+#: ./src/pyams_content/component/paragraph/zmi/container.py:407
 msgid "Paragraphs associations"
 msgstr ""
 
-#: ./src/pyams_content/component/paragraph/zmi/container.py:121
+#: ./src/pyams_content/component/paragraph/zmi/container.py:122
 msgid "No currently defined paragraph."
 msgstr ""
 
-#: ./src/pyams_content/component/paragraph/zmi/container.py:249
+#: ./src/pyams_content/component/paragraph/zmi/container.py:250
 msgid "Click to open/close all paragraphs editors"
 msgstr ""
 
-#: ./src/pyams_content/component/paragraph/zmi/container.py:262
+#: ./src/pyams_content/component/paragraph/zmi/container.py:263
 msgid "Click to open/close paragraph editor"
 msgstr ""
 
-#: ./src/pyams_content/component/paragraph/zmi/container.py:127
+#: ./src/pyams_content/component/paragraph/zmi/container.py:128
 msgid "Check allowed paragraph types to be able to create new paragraphs."
 msgstr ""
 
@@ -781,7 +781,7 @@
 #: ./src/pyams_content/component/paragraph/zmi/pictogram.py:336
 #: ./src/pyams_content/component/paragraph/interfaces/video.py:41
 #: ./src/pyams_content/component/paragraph/interfaces/html.py:53
-#: ./src/pyams_content/component/video/interfaces/__init__.py:69
+#: ./src/pyams_content/component/video/interfaces/__init__.py:71
 msgid "Body"
 msgstr ""
 
@@ -1028,7 +1028,7 @@
 msgstr ""
 
 #: ./src/pyams_content/component/paragraph/interfaces/verbatim.py:48
-#: ./src/pyams_content/component/paragraph/interfaces/contact.py:50
+#: ./src/pyams_content/component/paragraph/interfaces/contact.py:54
 msgid "In charge of"
 msgstr ""
 
@@ -1050,43 +1050,59 @@
 "care!!"
 msgstr ""
 
-#: ./src/pyams_content/component/paragraph/interfaces/contact.py:46
+#: ./src/pyams_content/component/paragraph/interfaces/contact.py:50
 msgid "Contact identity"
 msgstr ""
 
-#: ./src/pyams_content/component/paragraph/interfaces/contact.py:47
-msgid "Name of the contact"
-msgstr ""
-
 #: ./src/pyams_content/component/paragraph/interfaces/contact.py:51
-msgid "Label of contact function"
-msgstr ""
-
-#: ./src/pyams_content/component/paragraph/interfaces/contact.py:54
-msgid "Photo"
+msgid "Name of the contact"
 msgstr ""
 
 #: ./src/pyams_content/component/paragraph/interfaces/contact.py:55
+msgid "Label of contact function"
+msgstr ""
+
+#: ./src/pyams_content/component/paragraph/interfaces/contact.py:58
+msgid "Photo"
+msgstr ""
+
+#: ./src/pyams_content/component/paragraph/interfaces/contact.py:59
 msgid "Use 'browse' button to select contact picture"
 msgstr ""
 
+#: ./src/pyams_content/component/paragraph/interfaces/contact.py:67
+msgid "Address"
+msgstr ""
+
+#: ./src/pyams_content/component/paragraph/interfaces/contact.py:70
+msgid "Email address"
+msgstr ""
+
+#: ./src/pyams_content/component/paragraph/interfaces/contact.py:71
+msgid "Contact email address"
+msgstr ""
+
+#: ./src/pyams_content/component/paragraph/interfaces/contact.py:74
+msgid "Contact form"
+msgstr ""
+
+#: ./src/pyams_content/component/paragraph/interfaces/contact.py:75
+msgid "Reference of contact form"
+msgstr ""
+
+#: ./src/pyams_content/component/paragraph/interfaces/contact.py:79
+msgid "Contact template"
+msgstr ""
+
+#: ./src/pyams_content/component/paragraph/interfaces/contact.py:80
+msgid "Presentation template used for this contact"
+msgstr ""
+
 #: ./src/pyams_content/component/paragraph/interfaces/contact.py:63
-msgid "Address"
-msgstr ""
-
-#: ./src/pyams_content/component/paragraph/interfaces/contact.py:66
-msgid "Contact template"
-msgstr ""
-
-#: ./src/pyams_content/component/paragraph/interfaces/contact.py:67
-msgid "Presentation template used for this contact"
-msgstr ""
-
-#: ./src/pyams_content/component/paragraph/interfaces/contact.py:59
 msgid "GPS location"
 msgstr ""
 
-#: ./src/pyams_content/component/paragraph/interfaces/contact.py:60
+#: ./src/pyams_content/component/paragraph/interfaces/contact.py:64
 msgid "GPS coordinates used to locate contact"
 msgstr ""
 
@@ -1533,15 +1549,19 @@
 msgstr ""
 
 #: ./src/pyams_content/component/video/zmi/paragraph.py:161
-#: ./src/pyams_content/component/video/zmi/paragraph.py:210
+#: ./src/pyams_content/component/video/zmi/paragraph.py:220
 msgid "Video provider settings"
 msgstr ""
 
-#: ./src/pyams_content/component/video/interfaces/__init__.py:52
+#: ./src/pyams_content/component/video/zmi/paragraph.py:170
+msgid "Other settings"
+msgstr ""
+
+#: ./src/pyams_content/component/video/interfaces/__init__.py:54
 msgid "Video provider"
 msgstr ""
 
-#: ./src/pyams_content/component/video/interfaces/__init__.py:53
+#: ./src/pyams_content/component/video/interfaces/__init__.py:55
 msgid "Name of external platform providing selected video"
 msgstr ""