Version 0.1.55 0.1.55
authorThierry Florac <tflorac@ulthar.net>
Wed, 16 Oct 2019 18:52:12 +0200
changeset 1371 865291f1616d
parent 1370 87bcbf37ad6d
child 1372 d99436198c5f
Version 0.1.55
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 Oct 16 18:41:45 2019 +0200
+++ b/buildout.cfg	Wed Oct 16 18:52:12 2019 +0200
@@ -85,4 +85,4 @@
 eggs = pyams_content [test]
 
 [versions]
-pyams_content = 0.1.54.2
+pyams_content = 0.1.55
--- a/docs/HISTORY.txt	Wed Oct 16 18:41:45 2019 +0200
+++ b/docs/HISTORY.txt	Wed Oct 16 18:52:12 2019 +0200
@@ -1,6 +1,10 @@
 History
 =======
 
+0.1.55
+------
+ - updated form's captcha and proxy management by adding default settings to forms manager
+
 0.1.54.2
 --------
  - define alternate owners list on contributors restrictions as not required
--- a/setup.py	Wed Oct 16 18:41:45 2019 +0200
+++ b/setup.py	Wed Oct 16 18:52:12 2019 +0200
@@ -24,7 +24,7 @@
 README = os.path.join(DOCS, 'README.txt')
 HISTORY = os.path.join(DOCS, 'HISTORY.txt')
 
-version = '0.1.54.2'
+version = '0.1.55'
 long_description = open(README).read() + '\n\n' + open(HISTORY).read()
 
 tests_require = []
--- a/src/pyams_content.egg-info/PKG-INFO	Wed Oct 16 18:41:45 2019 +0200
+++ b/src/pyams_content.egg-info/PKG-INFO	Wed Oct 16 18:52:12 2019 +0200
@@ -1,6 +1,6 @@
 Metadata-Version: 2.1
 Name: pyams-content
-Version: 0.1.54.2
+Version: 0.1.55
 Summary: PyAMS base content interfaces and classes
 Home-page: http://hg.ztfy.org/pyams/pyams_content
 Author: Thierry Florac
@@ -72,6 +72,10 @@
         History
         =======
         
+        0.1.55
+        ------
+         - updated form's captcha and proxy management by adding default settings to forms manager
+        
         0.1.54.2
         --------
          - define alternate owners list on contributors restrictions as not required
--- a/src/pyams_content.egg-info/SOURCES.txt	Wed Oct 16 18:41:45 2019 +0200
+++ b/src/pyams_content.egg-info/SOURCES.txt	Wed Oct 16 18:52:12 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/manager.py
 src/pyams_content/shared/form/zmi/paragraph.py
 src/pyams_content/shared/form/zmi/properties.py
 src/pyams_content/shared/imagemap/__init__.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 Oct 16 18:41:45 2019 +0200
+++ b/src/pyams_content/locales/fr/LC_MESSAGES/pyams_content.po	Wed Oct 16 18:52:12 2019 +0200
@@ -5,7 +5,7 @@
 msgid ""
 msgstr ""
 "Project-Id-Version: PACKAGE 1.0\n"
-"POT-Creation-Date: 2019-10-03 12:42+0200\n"
+"POT-Creation-Date: 2019-10-16 18:21+0200\n"
 "PO-Revision-Date: 2015-09-10 10:42+0200\n"
 "Last-Translator: Thierry Florac <tflorac@ulthar.net>\n"
 "Language-Team: French\n"
@@ -237,7 +237,7 @@
 #: 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:86
+#: src/pyams_content/shared/form/interfaces.py:148
 #: src/pyams_content/shared/site/interfaces.py:179
 msgid "Visible?"
 msgstr "Visible ?"
@@ -476,7 +476,7 @@
 #: 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:63
+#: src/pyams_content/shared/form/interfaces.py:125
 msgid "Description"
 msgstr "Description"
 
@@ -892,7 +892,7 @@
 msgstr "le contenu ciblé n'est pas publié"
 
 #: src/pyams_content/component/links/interfaces.py:32
-#: src/pyams_content/shared/form/interfaces.py:145
+#: src/pyams_content/shared/form/interfaces.py:207
 #: src/pyams_content/shared/imagemap/interfaces.py:55
 msgid "Alternate title"
 msgstr "Titre de substitution"
@@ -1312,7 +1312,7 @@
 #: 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/form/interfaces.py:180
 #: src/pyams_content/shared/imagemap/interfaces.py:101
 #: src/pyams_content/shared/logo/interfaces.py:94
 msgid "Presentation template used for this paragraph"
@@ -2346,7 +2346,7 @@
 #: 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:59
+#: src/pyams_content/shared/form/interfaces.py:121
 #: src/pyams_content/shared/form/zmi/field.py:166
 #: src/pyams_content/shared/common/interfaces/types.py:45
 msgid "Label"
@@ -4087,101 +4087,203 @@
 msgid "List"
 msgstr "Choix multiples dans une liste"
 
-#: src/pyams_content/shared/form/handler.py:75
+#: src/pyams_content/shared/form/handler.py:79
 msgid "Direct mailto form handler"
 msgstr "Envoi direct des données par mail"
 
-#: src/pyams_content/shared/form/handler.py:39
+#: src/pyams_content/shared/form/handler.py:42
 msgid "No selected handler..."
 msgstr "Aucun gestionnaire sélectionné"
 
-#: src/pyams_content/shared/form/__init__.py:105
-#: src/pyams_content/shared/form/interfaces.py:110
+#: src/pyams_content/shared/form/__init__.py:124
+#: src/pyams_content/shared/form/interfaces.py:172
 msgid "Form fields"
 msgstr "Champs de saisie"
 
-#: src/pyams_content/shared/form/__init__.py:106
+#: src/pyams_content/shared/form/__init__.py:125
 msgid "no field defined"
 msgstr "aucun champ défini"
 
-#: src/pyams_content/shared/form/interfaces.py:32
+#: src/pyams_content/shared/form/interfaces.py:33
 msgid "Form"
 msgstr "Formulaire"
 
-#: src/pyams_content/shared/form/interfaces.py:50
+#: src/pyams_content/shared/form/interfaces.py:41
+msgid "Use captcha?"
+msgstr "Ajouter un captcha ?"
+
+#: src/pyams_content/shared/form/interfaces.py:42
+msgid "Set default captcha settings"
+msgstr "Paramétrage par défaut des captchas"
+
+#: src/pyams_content/shared/form/interfaces.py:46
+msgid "Default captcha site key"
+msgstr "Clé de site par défaut"
+
+#: src/pyams_content/shared/form/interfaces.py:47
+#: src/pyams_content/shared/form/interfaces.py:246
+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:51
+msgid "Default captcha secret key"
+msgstr "Clé serveur par défaut"
+
+#: src/pyams_content/shared/form/interfaces.py:52
+#: src/pyams_content/shared/form/interfaces.py:251
+msgid "This key is used to communicate with Google's reCaptcha services"
+msgstr ""
+"Cette clé secrète est utilisée par le serveur pour contacter le service "
+"Google de vérification du captcha"
+
+#: src/pyams_content/shared/form/interfaces.py:59
+msgid "Use proxy server?"
+msgstr "Utiliser un proxy ?"
+
+#: src/pyams_content/shared/form/interfaces.py:60
+msgid ""
+"If a proxy server is required to access recaptcha services, please set them "
+"here"
+msgstr ""
+"Si un serveur proxy est nécessaire pour accéder aux services de vérfication des captchas, "
+"veuillez indiquer ses caractéristiques"
+
+#: src/pyams_content/shared/form/interfaces.py:65
+msgid "Protocol"
+msgstr "Protocole"
+
+#: src/pyams_content/shared/form/interfaces.py:66
+msgid ""
+"If your server is behind a proxy, please set it's protocol here; HTTPS "
+"support is required for reCaptcha"
+msgstr ""
+"Protocole d'accès au proxy ; le support du HTTPS est nécessaire pour accéder au service de "
+"vérification des captchas"
+
+#: src/pyams_content/shared/form/interfaces.py:72
+msgid "Host name"
+msgstr "Nom d'hôte"
+
+#: src/pyams_content/shared/form/interfaces.py:73
+msgid ""
+"If your server is behind a proxy, please set it's address here; captcha "
+"verification requires HTTPS support..."
+msgstr ""
+"Nom DNS du serveur proxy"
+
+#: src/pyams_content/shared/form/interfaces.py:78
+msgid "Port number"
+msgstr "Numéro de port"
+
+#: src/pyams_content/shared/form/interfaces.py:79
+msgid "If your server is behind a proxy, plase set it's port number here"
+msgstr ""
+"Numéro de port utilisé pour l'accès au proxy"
+
+#: src/pyams_content/shared/form/interfaces.py:84
+msgid "Username"
+msgstr "Code utilisateur"
+
+#: src/pyams_content/shared/form/interfaces.py:85
+msgid "If your proxy server requires authentication, please set username here"
+msgstr "Code utilisateur utilisé pour l'accès au proxy, si nécessaire"
+
+#: src/pyams_content/shared/form/interfaces.py:89
+msgid "Password"
+msgstr "Mot de passe"
+
+#: src/pyams_content/shared/form/interfaces.py:90
+msgid "If your proxy server requires authentication, please set password here"
+msgstr "Mot de passe utilisé pour l'accès au proxy, si nécessaire"
+
+#: src/pyams_content/shared/form/interfaces.py:94
+msgid "Use proxy only from"
+msgstr "Seulement pour certains domaines"
+
+#: src/pyams_content/shared/form/interfaces.py:95
+msgid ""
+"If proxy usage is restricted to several domains names, you can set them "
+"here, separated by comas"
+msgstr ""
+"Si l'usage du proxy n'est nécessaire que pour certains noms de domaines, vous pouvez "
+"indiquer ces noms ici, séparés par des virgules"
+
+#: src/pyams_content/shared/form/interfaces.py:112
 msgid "Field name"
 msgstr "Nom du champ"
 
-#: src/pyams_content/shared/form/interfaces.py:51
+#: src/pyams_content/shared/form/interfaces.py:113
 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:54
+#: src/pyams_content/shared/form/interfaces.py:116
 #: src/pyams_content/shared/form/zmi/field.py:177
 msgid "Field type"
 msgstr "Type de champ"
 
-#: src/pyams_content/shared/form/interfaces.py:55
+#: src/pyams_content/shared/form/interfaces.py:117
 msgid "Selected field type"
 msgstr "Type de champ proposé à l'internaute"
 
-#: src/pyams_content/shared/form/interfaces.py:60
+#: src/pyams_content/shared/form/interfaces.py:122
 msgid "User field label"
 msgstr "Libellé affiché à l'internaute"
 
-#: src/pyams_content/shared/form/interfaces.py:64
+#: src/pyams_content/shared/form/interfaces.py:126
 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:67
+#: src/pyams_content/shared/form/interfaces.py:129
 msgid "Placeholder"
 msgstr "Espace réservé"
 
-#: src/pyams_content/shared/form/interfaces.py:68
+#: src/pyams_content/shared/form/interfaces.py:130
 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:72
+#: src/pyams_content/shared/form/interfaces.py:134
 msgid "Optional values"
 msgstr "Liste de valeurs"
 
-#: src/pyams_content/shared/form/interfaces.py:73
+#: src/pyams_content/shared/form/interfaces.py:135
 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:77
+#: src/pyams_content/shared/form/interfaces.py:139
 msgid "Default value"
 msgstr "Valeur par défaut"
 
-#: src/pyams_content/shared/form/interfaces.py:78
+#: src/pyams_content/shared/form/interfaces.py:140
 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:81
+#: src/pyams_content/shared/form/interfaces.py:143
 msgid "Required?"
 msgstr "Obligatoire ?"
 
-#: src/pyams_content/shared/form/interfaces.py:82
+#: src/pyams_content/shared/form/interfaces.py:144
 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:87
+#: src/pyams_content/shared/form/interfaces.py:149
 msgid "Select 'no' to hide given field..."
 msgstr "Sélectionnez 'non' pour masquer ce champ"
 
-#: src/pyams_content/shared/form/interfaces.py:117
+#: src/pyams_content/shared/form/interfaces.py:179
 msgid "Form fields template"
 msgstr "Mode de rendu"
 
-#: src/pyams_content/shared/form/interfaces.py:146
+#: src/pyams_content/shared/form/interfaces.py:208
 msgid ""
 "If set, this title will be displayed in front-office instead of original "
 "title"
@@ -4189,105 +4291,83 @@
 "S'il est renseigné, ce titre sera affiché en front-office à la place du "
 "titre original"
 
-#: src/pyams_content/shared/form/interfaces.py:150
+#: src/pyams_content/shared/form/interfaces.py:212
 msgid "Form header"
 msgstr "En-tête du formulaire"
 
-#: src/pyams_content/shared/form/interfaces.py:151
+#: src/pyams_content/shared/form/interfaces.py:213
 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
+#: src/pyams_content/shared/form/interfaces.py:216
 msgid "Form title"
 msgstr "Titre du formulaire"
 
-#: src/pyams_content/shared/form/interfaces.py:155
+#: src/pyams_content/shared/form/interfaces.py:217
 msgid "If set, this title will be displayed above input fields"
 msgstr ""
 "S'il est renseigné, ce titre sera affiché en front-office au-dessus de la "
 "liste des champs de saisie"
 
-#: src/pyams_content/shared/form/interfaces.py:159
+#: src/pyams_content/shared/form/interfaces.py:221
 msgid "Authenticated only?"
 msgstr "Authentification requise ?"
 
-#: src/pyams_content/shared/form/interfaces.py:160
+#: src/pyams_content/shared/form/interfaces.py:222
 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:165
+#: src/pyams_content/shared/form/interfaces.py:227
 msgid "Submit button"
 msgstr "Libellé de soumission"
 
-#: src/pyams_content/shared/form/interfaces.py:166
+#: src/pyams_content/shared/form/interfaces.py:228
 msgid "Label of form submit button"
 msgstr "Libellé du bouton de soumission du formulaire"
 
-#: src/pyams_content/shared/form/interfaces.py:169
+#: src/pyams_content/shared/form/interfaces.py:231
 msgid "Submit message"
 msgstr "Message après soumission"
 
-#: src/pyams_content/shared/form/interfaces.py:170
+#: src/pyams_content/shared/form/interfaces.py:232
 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:174
+#: src/pyams_content/shared/form/interfaces.py:236
 msgid "Form handler"
 msgstr "Gestionnaire du formulaire"
 
-#: src/pyams_content/shared/form/interfaces.py:175
+#: src/pyams_content/shared/form/interfaces.py:237
 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:178
-msgid "Use captcha?"
-msgstr "Ajouter un captcha ?"
-
-#: 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:183
+#: src/pyams_content/shared/form/interfaces.py:240
+msgid "Override captcha settings?"
+msgstr "Remplacer le paramétrage par défaut des captchas"
+
+#: src/pyams_content/shared/form/interfaces.py:241
+msgid "If 'yes', you can define custom captcha keys here"
+msgstr "Si 'oui', vous pouvez indiquer des paramètres spécifiques ici"
+
+#: src/pyams_content/shared/form/interfaces.py:245
 msgid "Site key"
 msgstr "Clé du site"
 
-#: 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:188
+#: src/pyams_content/shared/form/interfaces.py:250
 msgid "Secret key"
-msgstr "Clé secrète"
-
-#: 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:193
-msgid "Recaptcha proxy"
-msgstr "Proxy HTTPS"
-
-#: 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:199
+msgstr "Clé serveur"
+
+#: src/pyams_content/shared/form/interfaces.py:258
 msgid "Required RGPD consent?"
 msgstr "Consentement RGPD ?"
 
-#: src/pyams_content/shared/form/interfaces.py:200
+#: src/pyams_content/shared/form/interfaces.py:259
 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 "
@@ -4297,23 +4377,23 @@
 "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
+#: src/pyams_content/shared/form/interfaces.py:266
 msgid "RGPD consent text"
 msgstr "Texte de consentement"
 
-#: src/pyams_content/shared/form/interfaces.py:208
+#: src/pyams_content/shared/form/interfaces.py:267
 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é de façon claire "
-"et explicite..."
-
-#: src/pyams_content/shared/form/interfaces.py:213
+"Le consentement de l'utilisateur doit être explicité de façon claire et "
+"explicite..."
+
+#: src/pyams_content/shared/form/interfaces.py:272
 msgid "RGPD user rights"
 msgstr "Droits de la personne"
 
-#: src/pyams_content/shared/form/interfaces.py:214
+#: src/pyams_content/shared/form/interfaces.py:273
 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 "
@@ -4322,37 +4402,37 @@
 "L'internaute doit facilement pouvoir retirer son consentement par la suite ; "
 "il convient donc de lui indiquer la façon de procéder."
 
-#: src/pyams_content/shared/form/interfaces.py:259
+#: src/pyams_content/shared/form/interfaces.py:318
 msgid "Source address"
 msgstr "Adresse source"
 
-#: src/pyams_content/shared/form/interfaces.py:260
+#: src/pyams_content/shared/form/interfaces.py:319
 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:263
+#: src/pyams_content/shared/form/interfaces.py:322
 msgid "Source name"
 msgstr "Nom de la source"
 
-#: src/pyams_content/shared/form/interfaces.py:264
+#: src/pyams_content/shared/form/interfaces.py:323
 msgid "Name of mail data sender"
 msgstr "Nom de l'émetteur des messages envoyés"
 
-#: src/pyams_content/shared/form/interfaces.py:267
+#: src/pyams_content/shared/form/interfaces.py:326
 msgid "Recipient address"
 msgstr "Adresse de destination"
 
-#: src/pyams_content/shared/form/interfaces.py:268
+#: src/pyams_content/shared/form/interfaces.py:327
 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:271
+#: src/pyams_content/shared/form/interfaces.py:330
 msgid "Recipient name"
 msgstr "Nom du destinataire"
 
-#: src/pyams_content/shared/form/interfaces.py:272
+#: src/pyams_content/shared/form/interfaces.py:331
 msgid "Name of data recipient"
 msgstr "Nom du destinataire des messages"
 
@@ -4365,8 +4445,8 @@
 msgstr "Paramètres du gestionnaire"
 
 #: src/pyams_content/shared/form/zmi/properties.py:102
-msgid "Add captcha"
-msgstr "Intégrer un captcha"
+msgid "Override default captcha settings"
+msgstr "Remplacer le paramétrage par défaut du captcha"
 
 #: src/pyams_content/shared/form/zmi/properties.py:110
 msgid "Add RGPD warning"
@@ -4446,6 +4526,28 @@
 msgid "Specified name is already used!"
 msgstr "Le nom indiqué pour ce champ est déjà utilisé !"
 
+#: src/pyams_content/shared/form/zmi/manager.py:41
+msgid "Captcha settings"
+msgstr "Paramétrage par défaut des captchas"
+
+#: src/pyams_content/shared/form/zmi/manager.py:88
+msgid "You must define client and server key to activate a captcha"
+msgstr ""
+"Vous devez indiquer la clé du site et la clé secrète du serveur pour pouvoir "
+"activer un captcha"
+
+#: src/pyams_content/shared/form/zmi/manager.py:91
+msgid "You must define hostname to use a proxy"
+msgstr "Vous devez au moins définir le nom du serveur pour pouvoir utiliser un proxy"
+
+#: src/pyams_content/shared/form/zmi/manager.py:64
+msgid "Use captcha"
+msgstr "Intégrer un captcha"
+
+#: src/pyams_content/shared/form/zmi/manager.py:74
+msgid "Use proxy server"
+msgstr "Utiliser un serveur proxy"
+
 #: src/pyams_content/shared/form/zmi/__init__.py:44
 msgid "This form"
 msgstr "Ce formulaire"
@@ -5249,7 +5351,7 @@
 msgstr "ID utilisateur"
 
 #: src/pyams_content/shared/common/interfaces/__init__.py:301
-#: src/pyams_content/shared/common/interfaces/__init__.py:334
+#: src/pyams_content/shared/common/interfaces/__init__.py:335
 msgid "Publication checks"
 msgstr "Activer le tunnel de publication"
 
@@ -5271,7 +5373,7 @@
 "Le contributeur aura accès, en plus de ses propres contenus, aux contenus "
 "dont ces utilisateurs sont propriétaires"
 
-#: src/pyams_content/shared/common/interfaces/__init__.py:335
+#: src/pyams_content/shared/common/interfaces/__init__.py:336
 msgid ""
 "If 'yes', this manager will have to confirm that contents have been "
 "previewed and checked before publishing a content"
@@ -5279,11 +5381,11 @@
 "Si 'oui', ce responsable devra confirmer qu'il a bien prévisualisé et audité "
 "chaque contenu avant de pouvoir effectuer une publication"
 
-#: src/pyams_content/shared/common/interfaces/__init__.py:341
+#: src/pyams_content/shared/common/interfaces/__init__.py:342
 msgid "Restricted contents"
 msgstr "Accès restreints"
 
-#: src/pyams_content/shared/common/interfaces/__init__.py:342
+#: src/pyams_content/shared/common/interfaces/__init__.py:343
 msgid ""
 "If 'yes', this manager will get restricted access to manage contents based "
 "on selected settings"
@@ -5291,11 +5393,11 @@
 "Si 'oui', ce responsable n'aura qu'un accès restreint à certains contenus en "
 "fonction de paramètres spécifiques"
 
-#: src/pyams_content/shared/common/interfaces/__init__.py:347
+#: src/pyams_content/shared/common/interfaces/__init__.py:348
 msgid "Selected owners"
 msgstr "Propriétaires"
 
-#: src/pyams_content/shared/common/interfaces/__init__.py:348
+#: src/pyams_content/shared/common/interfaces/__init__.py:349
 msgid "Manager will have access to contents owned by these principals"
 msgstr ""
 "Le responsable n'aura accès qu'aux contenus dont ces utilisateurs sont "
@@ -7163,6 +7265,15 @@
 msgid "Published version {0}"
 msgstr "Version {0} publiée"
 
+#~ msgid "If 'yes', a captcha will be added automatically to the form"
+#~ msgstr "Si 'oui', un captcha sera ajouté automatiquement au formulaire"
+
+#~ msgid "Recaptcha proxy"
+#~ msgstr "Proxy HTTPS"
+
+#~ msgid "Add captcha"
+#~ msgstr "Intégrer un captcha"
+
 #~ msgid "Relevance (on user search)"
 #~ msgstr "Pertinence (si recherche lancée par l'utilisateur)"
 
--- a/src/pyams_content/locales/pyams_content.pot	Wed Oct 16 18:41:45 2019 +0200
+++ b/src/pyams_content/locales/pyams_content.pot	Wed Oct 16 18:52:12 2019 +0200
@@ -6,7 +6,7 @@
 msgid ""
 msgstr ""
 "Project-Id-Version: PACKAGE 1.0\n"
-"POT-Creation-Date: 2019-10-03 12:42+0200\n"
+"POT-Creation-Date: 2019-10-16 18:21+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"
@@ -234,7 +234,7 @@
 #: ./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:86
+#: ./src/pyams_content/shared/form/interfaces.py:148
 #: ./src/pyams_content/shared/site/interfaces.py:179
 msgid "Visible?"
 msgstr ""
@@ -460,7 +460,7 @@
 #: ./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:63
+#: ./src/pyams_content/shared/form/interfaces.py:125
 msgid "Description"
 msgstr ""
 
@@ -850,7 +850,7 @@
 msgstr ""
 
 #: ./src/pyams_content/component/links/interfaces.py:32
-#: ./src/pyams_content/shared/form/interfaces.py:145
+#: ./src/pyams_content/shared/form/interfaces.py:207
 #: ./src/pyams_content/shared/imagemap/interfaces.py:55
 msgid "Alternate title"
 msgstr ""
@@ -1242,7 +1242,7 @@
 #: ./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/form/interfaces.py:180
 #: ./src/pyams_content/shared/imagemap/interfaces.py:101
 #: ./src/pyams_content/shared/logo/interfaces.py:94
 msgid "Presentation template used for this paragraph"
@@ -2207,7 +2207,7 @@
 #: ./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:59
+#: ./src/pyams_content/shared/form/interfaces.py:121
 #: ./src/pyams_content/shared/form/zmi/field.py:166
 #: ./src/pyams_content/shared/common/interfaces/types.py:45
 msgid "Label"
@@ -3810,241 +3810,313 @@
 msgid "List"
 msgstr ""
 
-#: ./src/pyams_content/shared/form/handler.py:75
+#: ./src/pyams_content/shared/form/handler.py:79
 msgid "Direct mailto form handler"
 msgstr ""
 
-#: ./src/pyams_content/shared/form/handler.py:39
+#: ./src/pyams_content/shared/form/handler.py:42
 msgid "No selected handler..."
 msgstr ""
 
-#: ./src/pyams_content/shared/form/__init__.py:105
-#: ./src/pyams_content/shared/form/interfaces.py:110
+#: ./src/pyams_content/shared/form/__init__.py:124
+#: ./src/pyams_content/shared/form/interfaces.py:172
 msgid "Form fields"
 msgstr ""
 
-#: ./src/pyams_content/shared/form/__init__.py:106
+#: ./src/pyams_content/shared/form/__init__.py:125
 msgid "no field defined"
 msgstr ""
 
-#: ./src/pyams_content/shared/form/interfaces.py:32
+#: ./src/pyams_content/shared/form/interfaces.py:33
 msgid "Form"
 msgstr ""
 
-#: ./src/pyams_content/shared/form/interfaces.py:50
-msgid "Field name"
+#: ./src/pyams_content/shared/form/interfaces.py:41
+msgid "Use captcha?"
+msgstr ""
+
+#: ./src/pyams_content/shared/form/interfaces.py:42
+msgid "Set default captcha settings"
+msgstr ""
+
+#: ./src/pyams_content/shared/form/interfaces.py:46
+msgid "Default captcha site key"
+msgstr ""
+
+#: ./src/pyams_content/shared/form/interfaces.py:47
+#: ./src/pyams_content/shared/form/interfaces.py:246
+msgid "This key is included into HTML code and submitted with form data"
 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: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"
+msgid "Default captcha secret key"
+msgstr ""
+
+#: ./src/pyams_content/shared/form/interfaces.py:52
+#: ./src/pyams_content/shared/form/interfaces.py:251
+msgid "This key is used to communicate with Google's reCaptcha services"
+msgstr ""
+
+#: ./src/pyams_content/shared/form/interfaces.py:59
+msgid "Use proxy server?"
 msgstr ""
 
 #: ./src/pyams_content/shared/form/interfaces.py:60
-msgid "User field label"
-msgstr ""
-
-#: ./src/pyams_content/shared/form/interfaces.py:64
-msgid "Field description can be displayed as hint"
-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"
+msgid ""
+"If a proxy server is required to access recaptcha services, please set them "
+"here"
+msgstr ""
+
+#: ./src/pyams_content/shared/form/interfaces.py:65
+msgid "Protocol"
+msgstr ""
+
+#: ./src/pyams_content/shared/form/interfaces.py:66
+msgid ""
+"If your server is behind a proxy, please set it's protocol here; HTTPS "
+"support is required for reCaptcha"
 msgstr ""
 
 #: ./src/pyams_content/shared/form/interfaces.py:72
-msgid "Optional values"
+msgid "Host name"
 msgstr ""
 
 #: ./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:77
-msgid "Default value"
+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: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:82
-msgid "Select 'yes' to set field as mandatory"
-msgstr ""
-
-#: ./src/pyams_content/shared/form/interfaces.py:87
-msgid "Select 'no' to hide given field..."
+msgid "Port number"
+msgstr ""
+
+#: ./src/pyams_content/shared/form/interfaces.py:79
+msgid "If your server is behind a proxy, plase set it's port number here"
+msgstr ""
+
+#: ./src/pyams_content/shared/form/interfaces.py:84
+msgid "Username"
+msgstr ""
+
+#: ./src/pyams_content/shared/form/interfaces.py:85
+msgid "If your proxy server requires authentication, please set username here"
+msgstr ""
+
+#: ./src/pyams_content/shared/form/interfaces.py:89
+msgid "Password"
+msgstr ""
+
+#: ./src/pyams_content/shared/form/interfaces.py:90
+msgid "If your proxy server requires authentication, please set password here"
+msgstr ""
+
+#: ./src/pyams_content/shared/form/interfaces.py:94
+msgid "Use proxy only from"
+msgstr ""
+
+#: ./src/pyams_content/shared/form/interfaces.py:95
+msgid ""
+"If proxy usage is restricted to several domains names, you can set them here,"
+" separated by comas"
+msgstr ""
+
+#: ./src/pyams_content/shared/form/interfaces.py:112
+msgid "Field name"
+msgstr ""
+
+#: ./src/pyams_content/shared/form/interfaces.py:113
+msgid "Field internal name; must be unique for a given form"
+msgstr ""
+
+#: ./src/pyams_content/shared/form/interfaces.py:116
+#: ./src/pyams_content/shared/form/zmi/field.py:177
+msgid "Field type"
 msgstr ""
 
 #: ./src/pyams_content/shared/form/interfaces.py:117
+msgid "Selected field type"
+msgstr ""
+
+#: ./src/pyams_content/shared/form/interfaces.py:122
+msgid "User field label"
+msgstr ""
+
+#: ./src/pyams_content/shared/form/interfaces.py:126
+msgid "Field description can be displayed as hint"
+msgstr ""
+
+#: ./src/pyams_content/shared/form/interfaces.py:129
+msgid "Placeholder"
+msgstr ""
+
+#: ./src/pyams_content/shared/form/interfaces.py:130
+msgid "Some field types like textline can display a placeholder"
+msgstr ""
+
+#: ./src/pyams_content/shared/form/interfaces.py:134
+msgid "Optional values"
+msgstr ""
+
+#: ./src/pyams_content/shared/form/interfaces.py:135
+msgid "List of available values (for 'choice' and 'list' field types)"
+msgstr ""
+
+#: ./src/pyams_content/shared/form/interfaces.py:139
+msgid "Default value"
+msgstr ""
+
+#: ./src/pyams_content/shared/form/interfaces.py:140
+msgid "Give default value if field type can use it"
+msgstr ""
+
+#: ./src/pyams_content/shared/form/interfaces.py:143
+msgid "Required?"
+msgstr ""
+
+#: ./src/pyams_content/shared/form/interfaces.py:144
+msgid "Select 'yes' to set field as mandatory"
+msgstr ""
+
+#: ./src/pyams_content/shared/form/interfaces.py:149
+msgid "Select 'no' to hide given field..."
+msgstr ""
+
+#: ./src/pyams_content/shared/form/interfaces.py:179
 msgid "Form fields template"
 msgstr ""
 
-#: ./src/pyams_content/shared/form/interfaces.py:146
+#: ./src/pyams_content/shared/form/interfaces.py:208
 msgid ""
 "If set, this title will be displayed in front-office instead of original "
 "title"
 msgstr ""
 
-#: ./src/pyams_content/shared/form/interfaces.py:150
+#: ./src/pyams_content/shared/form/interfaces.py:212
 msgid "Form header"
 msgstr ""
 
-#: ./src/pyams_content/shared/form/interfaces.py:151
+#: ./src/pyams_content/shared/form/interfaces.py:213
 msgid "This header is displayed just above form fields"
 msgstr ""
 
-#: ./src/pyams_content/shared/form/interfaces.py:154
+#: ./src/pyams_content/shared/form/interfaces.py:216
 msgid "Form title"
 msgstr ""
 
-#: ./src/pyams_content/shared/form/interfaces.py:155
+#: ./src/pyams_content/shared/form/interfaces.py:217
 msgid "If set, this title will be displayed above input fields"
 msgstr ""
 
-#: ./src/pyams_content/shared/form/interfaces.py:159
+#: ./src/pyams_content/shared/form/interfaces.py:221
 msgid "Authenticated only?"
 msgstr ""
 
-#: ./src/pyams_content/shared/form/interfaces.py:160
+#: ./src/pyams_content/shared/form/interfaces.py:222
 msgid "If 'yes', only authenticated users will be able to see and submit form"
 msgstr ""
 
-#: ./src/pyams_content/shared/form/interfaces.py:165
+#: ./src/pyams_content/shared/form/interfaces.py:227
 msgid "Submit button"
 msgstr ""
 
-#: ./src/pyams_content/shared/form/interfaces.py:166
+#: ./src/pyams_content/shared/form/interfaces.py:228
 msgid "Label of form submit button"
 msgstr ""
 
-#: ./src/pyams_content/shared/form/interfaces.py:169
+#: ./src/pyams_content/shared/form/interfaces.py:231
 msgid "Submit message"
 msgstr ""
 
-#: ./src/pyams_content/shared/form/interfaces.py:170
+#: ./src/pyams_content/shared/form/interfaces.py:232
 msgid "This message will be displayed after form submission"
 msgstr ""
 
-#: ./src/pyams_content/shared/form/interfaces.py:174
+#: ./src/pyams_content/shared/form/interfaces.py:236
 msgid "Form handler"
 msgstr ""
 
-#: ./src/pyams_content/shared/form/interfaces.py:175
+#: ./src/pyams_content/shared/form/interfaces.py:237
 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
+#: ./src/pyams_content/shared/form/interfaces.py:240
+msgid "Override captcha settings?"
+msgstr ""
+
+#: ./src/pyams_content/shared/form/interfaces.py:241
+msgid "If 'yes', you can define custom captcha keys here"
+msgstr ""
+
+#: ./src/pyams_content/shared/form/interfaces.py:245
 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
+#: ./src/pyams_content/shared/form/interfaces.py:250
 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:199
+#: ./src/pyams_content/shared/form/interfaces.py:258
 msgid "Required RGPD consent?"
 msgstr ""
 
-#: ./src/pyams_content/shared/form/interfaces.py:200
+#: ./src/pyams_content/shared/form/interfaces.py:259
 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
+#: ./src/pyams_content/shared/form/interfaces.py:266
 msgid "RGPD consent text"
 msgstr ""
 
-#: ./src/pyams_content/shared/form/interfaces.py:208
+#: ./src/pyams_content/shared/form/interfaces.py:267
 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
+#: ./src/pyams_content/shared/form/interfaces.py:272
 msgid "RGPD user rights"
 msgstr ""
 
-#: ./src/pyams_content/shared/form/interfaces.py:214
+#: ./src/pyams_content/shared/form/interfaces.py:273
 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
+#: ./src/pyams_content/shared/form/interfaces.py:318
 msgid "Source address"
 msgstr ""
 
-#: ./src/pyams_content/shared/form/interfaces.py:260
+#: ./src/pyams_content/shared/form/interfaces.py:319
 msgid "Mail address from which form data is sent"
 msgstr ""
 
-#: ./src/pyams_content/shared/form/interfaces.py:263
+#: ./src/pyams_content/shared/form/interfaces.py:322
 msgid "Source name"
 msgstr ""
 
-#: ./src/pyams_content/shared/form/interfaces.py:264
+#: ./src/pyams_content/shared/form/interfaces.py:323
 msgid "Name of mail data sender"
 msgstr ""
 
-#: ./src/pyams_content/shared/form/interfaces.py:267
+#: ./src/pyams_content/shared/form/interfaces.py:326
 msgid "Recipient address"
 msgstr ""
 
-#: ./src/pyams_content/shared/form/interfaces.py:268
+#: ./src/pyams_content/shared/form/interfaces.py:327
 msgid "Mail address to which form data is sent"
 msgstr ""
 
-#: ./src/pyams_content/shared/form/interfaces.py:271
+#: ./src/pyams_content/shared/form/interfaces.py:330
 msgid "Recipient name"
 msgstr ""
 
-#: ./src/pyams_content/shared/form/interfaces.py:272
+#: ./src/pyams_content/shared/form/interfaces.py:331
 msgid "Name of data recipient"
 msgstr ""
 
@@ -4057,7 +4129,7 @@
 msgstr ""
 
 #: ./src/pyams_content/shared/form/zmi/properties.py:102
-msgid "Add captcha"
+msgid "Override default captcha settings"
 msgstr ""
 
 #: ./src/pyams_content/shared/form/zmi/properties.py:110
@@ -4127,6 +4199,26 @@
 msgid "Specified name is already used!"
 msgstr ""
 
+#: ./src/pyams_content/shared/form/zmi/manager.py:41
+msgid "Captcha settings"
+msgstr ""
+
+#: ./src/pyams_content/shared/form/zmi/manager.py:88
+msgid "You must define client and server key to activate a captcha"
+msgstr ""
+
+#: ./src/pyams_content/shared/form/zmi/manager.py:91
+msgid "You must define hostname to use a proxy"
+msgstr ""
+
+#: ./src/pyams_content/shared/form/zmi/manager.py:64
+msgid "Use captcha"
+msgstr ""
+
+#: ./src/pyams_content/shared/form/zmi/manager.py:74
+msgid "Use proxy server"
+msgstr ""
+
 #: ./src/pyams_content/shared/form/zmi/__init__.py:44
 msgid "This form"
 msgstr ""
@@ -4813,7 +4905,7 @@
 msgstr ""
 
 #: ./src/pyams_content/shared/common/interfaces/__init__.py:301
-#: ./src/pyams_content/shared/common/interfaces/__init__.py:334
+#: ./src/pyams_content/shared/common/interfaces/__init__.py:335
 msgid "Publication checks"
 msgstr ""
 
@@ -4831,27 +4923,27 @@
 msgid "Contributor will have access to contents owned by these principals"
 msgstr ""
 
-#: ./src/pyams_content/shared/common/interfaces/__init__.py:335
+#: ./src/pyams_content/shared/common/interfaces/__init__.py:336
 msgid ""
 "If 'yes', this manager will have to confirm that contents have been previewed"
 " and checked before publishing a content"
 msgstr ""
 
-#: ./src/pyams_content/shared/common/interfaces/__init__.py:341
-msgid "Restricted contents"
-msgstr ""
-
 #: ./src/pyams_content/shared/common/interfaces/__init__.py:342
+msgid "Restricted contents"
+msgstr ""
+
+#: ./src/pyams_content/shared/common/interfaces/__init__.py:343
 msgid ""
 "If 'yes', this manager will get restricted access to manage contents based on"
 " selected settings"
 msgstr ""
 
-#: ./src/pyams_content/shared/common/interfaces/__init__.py:347
+#: ./src/pyams_content/shared/common/interfaces/__init__.py:348
 msgid "Selected owners"
 msgstr ""
 
-#: ./src/pyams_content/shared/common/interfaces/__init__.py:348
+#: ./src/pyams_content/shared/common/interfaces/__init__.py:349
 msgid "Manager will have access to contents owned by these principals"
 msgstr ""