Version 0.1.11 0.1.11
authorThierry Florac <thierry.florac@onf.fr>
Mon, 11 Jun 2018 17:38:55 +0200
changeset 99 29e2004100b3
parent 98 c2bd8816b93d
child 100 f250df771877
Version 0.1.11
.installed.cfg
buildout.cfg
docs/HISTORY.txt
src/pyams_portal.egg-info/PKG-INFO
src/pyams_portal.egg-info/SOURCES.txt
src/pyams_portal.egg-info/requires.txt
src/pyams_portal/locales/fr/LC_MESSAGES/pyams_portal.mo
src/pyams_portal/locales/fr/LC_MESSAGES/pyams_portal.po
src/pyams_portal/locales/fr/LC_MESSAGES/pyams_portal.po~
src/pyams_portal/locales/pyams_portal.pot
src/pyams_portal/views.py
--- a/.installed.cfg	Mon Jun 11 17:27:57 2018 +0200
+++ b/.installed.cfg	Mon Jun 11 17:38:55 2018 +0200
@@ -1,6 +1,8 @@
 [buildout]
-installed_develop_eggs = /home/tflorac/Dropbox/src/PyAMS/pyams_portal/develop-eggs/pyams-file.egg-link
-	/home/tflorac/Dropbox/src/PyAMS/pyams_portal/develop-eggs/tmpcy35oy48build
+installed_develop_eggs = /home/tflorac/Dropbox/src/PyAMS/pyams_portal/develop-eggs/pyams-media.egg-link
+	/home/tflorac/Dropbox/src/PyAMS/pyams_portal/develop-eggs/pyams-file.egg-link
+	/home/tflorac/Dropbox/src/PyAMS/pyams_portal/develop-eggs/pyams-sequence.egg-link
+	/home/tflorac/Dropbox/src/PyAMS/pyams_portal/develop-eggs/pyams-content.egg-link
 	/home/tflorac/Dropbox/src/PyAMS/pyams_portal/develop-eggs/lingua.egg-link
 	/home/tflorac/Dropbox/src/PyAMS/pyams_portal/develop-eggs/pyams-template.egg-link
 	/home/tflorac/Dropbox/src/PyAMS/pyams_portal/develop-eggs/pyams-default-theme.egg-link
@@ -10,23 +12,26 @@
 	/home/tflorac/Dropbox/src/PyAMS/pyams_portal/develop-eggs/pyams-pagelet.egg-link
 	/home/tflorac/Dropbox/src/PyAMS/pyams_portal/develop-eggs/pyams-viewlet.egg-link
 	/home/tflorac/Dropbox/src/PyAMS/pyams_portal/develop-eggs/pyams-i18n.egg-link
+	/home/tflorac/Dropbox/src/PyAMS/pyams_portal/develop-eggs/pyams-mail.egg-link
+	/home/tflorac/Dropbox/src/PyAMS/pyams_portal/develop-eggs/pyams-thesaurus.egg-link
 	/home/tflorac/Dropbox/src/PyAMS/pyams_portal/develop-eggs/pyams-portal.egg-link
 	/home/tflorac/Dropbox/src/PyAMS/pyams_portal/develop-eggs/pyams-zmi.egg-link
+	/home/tflorac/Dropbox/src/PyAMS/pyams_portal/develop-eggs/pyams-zmq.egg-link
 	/home/tflorac/Dropbox/src/PyAMS/pyams_portal/develop-eggs/pyams-catalog.egg-link
 	/home/tflorac/Dropbox/src/PyAMS/pyams_portal/develop-eggs/pyams-form.egg-link
 	/home/tflorac/Dropbox/src/PyAMS/pyams_portal/develop-eggs/pyams-utils.egg-link
 parts = package i18n pyflakes test
 
 [package]
-__buildout_installed__ = /home/tflorac/Dropbox/src/PyAMS/pyams_portal/bin/pcreate
-	/home/tflorac/Dropbox/src/PyAMS/pyams_portal/bin/proutes
+__buildout_installed__ = /home/tflorac/Dropbox/src/PyAMS/pyams_portal/bin/pdistreport
+	/home/tflorac/Dropbox/src/PyAMS/pyams_portal/bin/pcreate
+	/home/tflorac/Dropbox/src/PyAMS/pyams_portal/bin/prequest
 	/home/tflorac/Dropbox/src/PyAMS/pyams_portal/bin/pshell
 	/home/tflorac/Dropbox/src/PyAMS/pyams_portal/bin/pviews
+	/home/tflorac/Dropbox/src/PyAMS/pyams_portal/bin/ptweens
+	/home/tflorac/Dropbox/src/PyAMS/pyams_portal/bin/proutes
 	/home/tflorac/Dropbox/src/PyAMS/pyams_portal/bin/pserve
-	/home/tflorac/Dropbox/src/PyAMS/pyams_portal/bin/prequest
-	/home/tflorac/Dropbox/src/PyAMS/pyams_portal/bin/pdistreport
-	/home/tflorac/Dropbox/src/PyAMS/pyams_portal/bin/ptweens
-__buildout_signature__ = zc.recipe.egg-ed6891d89ed5dd1fe727e5a7c98200a1 zc.buildout-2.10.0-py3.5.egg setuptools-ed6891d89ed5dd1fe727e5a7c98200a1
+__buildout_signature__ = zc.recipe.egg-d45dd885254d7f32ab7887f3b58424fb zc.buildout-2.10.0-py3.5.egg setuptools-d45dd885254d7f32ab7887f3b58424fb
 _b = /home/tflorac/Dropbox/src/PyAMS/pyams_portal/bin
 _d = /home/tflorac/Dropbox/src/PyAMS/pyams_portal/develop-eggs
 _e = /var/local/env/pyams/eggs
@@ -44,7 +49,7 @@
 __buildout_installed__ = /home/tflorac/Dropbox/src/PyAMS/pyams_portal/bin/pybabel
 	/home/tflorac/Dropbox/src/PyAMS/pyams_portal/bin/polint
 	/home/tflorac/Dropbox/src/PyAMS/pyams_portal/bin/pot-create
-__buildout_signature__ = zc.recipe.egg-ed6891d89ed5dd1fe727e5a7c98200a1 zc.buildout-2.10.0-py3.5.egg setuptools-ed6891d89ed5dd1fe727e5a7c98200a1
+__buildout_signature__ = zc.recipe.egg-d45dd885254d7f32ab7887f3b58424fb zc.buildout-2.10.0-py3.5.egg setuptools-d45dd885254d7f32ab7887f3b58424fb
 _b = /home/tflorac/Dropbox/src/PyAMS/pyams_portal/bin
 _d = /home/tflorac/Dropbox/src/PyAMS/pyams_portal/develop-eggs
 _e = /var/local/env/pyams/eggs
@@ -59,7 +64,7 @@
 [pyflakes]
 __buildout_installed__ = /home/tflorac/Dropbox/src/PyAMS/pyams_portal/bin/pyflakes
 	/home/tflorac/Dropbox/src/PyAMS/pyams_portal/bin/pyflakes
-__buildout_signature__ = zc.recipe.egg-ed6891d89ed5dd1fe727e5a7c98200a1 zc.buildout-2.10.0-py3.5.egg setuptools-ed6891d89ed5dd1fe727e5a7c98200a1
+__buildout_signature__ = zc.recipe.egg-d45dd885254d7f32ab7887f3b58424fb zc.buildout-2.10.0-py3.5.egg setuptools-d45dd885254d7f32ab7887f3b58424fb
 _b = /home/tflorac/Dropbox/src/PyAMS/pyams_portal/bin
 _d = /home/tflorac/Dropbox/src/PyAMS/pyams_portal/develop-eggs
 _e = /var/local/env/pyams/eggs
@@ -76,7 +81,7 @@
 [test]
 __buildout_installed__ = /home/tflorac/Dropbox/src/PyAMS/pyams_portal/parts/test
 	/home/tflorac/Dropbox/src/PyAMS/pyams_portal/bin/test
-__buildout_signature__ = six-ed6891d89ed5dd1fe727e5a7c98200a1 zc.recipe.testrunner-ed6891d89ed5dd1fe727e5a7c98200a1 zc.recipe.egg-ed6891d89ed5dd1fe727e5a7c98200a1 zc.buildout-2.10.0-py3.5.egg zope.exceptions-ed6891d89ed5dd1fe727e5a7c98200a1 zope.interface-ed6891d89ed5dd1fe727e5a7c98200a1 zope.testrunner-ed6891d89ed5dd1fe727e5a7c98200a1 setuptools-ed6891d89ed5dd1fe727e5a7c98200a1
+__buildout_signature__ = six-d45dd885254d7f32ab7887f3b58424fb zc.recipe.testrunner-d45dd885254d7f32ab7887f3b58424fb zc.recipe.egg-d45dd885254d7f32ab7887f3b58424fb zc.buildout-2.10.0-py3.5.egg zope.exceptions-d45dd885254d7f32ab7887f3b58424fb zope.interface-d45dd885254d7f32ab7887f3b58424fb zope.testrunner-d45dd885254d7f32ab7887f3b58424fb setuptools-d45dd885254d7f32ab7887f3b58424fb
 _b = /home/tflorac/Dropbox/src/PyAMS/pyams_portal/bin
 _d = /home/tflorac/Dropbox/src/PyAMS/pyams_portal/develop-eggs
 _e = /var/local/env/pyams/eggs
--- a/buildout.cfg	Mon Jun 11 17:27:57 2018 +0200
+++ b/buildout.cfg	Mon Jun 11 17:38:55 2018 +0200
@@ -21,18 +21,25 @@
 develop =
     .
     ../pyams_catalog
+    ../pyams_catalog
+    ../pyams_content
     ../pyams_default_theme
     ../pyams_file
     ../pyams_form
     ../pyams_i18n
+    ../pyams_mail
+    ../pyams_media
     ../pyams_pagelet
     ../pyams_security
+    ../pyams_sequence
     ../pyams_skin
     ../pyams_template
+    ../pyams_thesaurus
     ../pyams_utils
     ../pyams_viewlet
     ../pyams_workflow
     ../pyams_zmi
+    ../pyams_zmq
     ../ext/lingua
 
 parts =
--- a/docs/HISTORY.txt	Mon Jun 11 17:27:57 2018 +0200
+++ b/docs/HISTORY.txt	Mon Jun 11 17:38:55 2018 +0200
@@ -1,6 +1,13 @@
 History
 =======
 
+0.1.11
+------
+ - updated forms and widgets prefix
+ - updated groups management in forms
+ - updated annotations adapters
+ - improved errors management when portlets are no more registered
+
 0.1.10
 ------
  - renamed factories to use snake_case on functions
--- a/src/pyams_portal.egg-info/PKG-INFO	Mon Jun 11 17:27:57 2018 +0200
+++ b/src/pyams_portal.egg-info/PKG-INFO	Mon Jun 11 17:38:55 2018 +0200
@@ -1,6 +1,6 @@
 Metadata-Version: 1.1
 Name: pyams-portal
-Version: 0.1.10
+Version: 0.1.11
 Summary: PyAMS portal and portlets interfaces and classes
 Home-page: http://hg.ztfy.org/pyams/pyams_portal
 Author: Thierry Florac
@@ -99,6 +99,13 @@
         History
         =======
         
+        0.1.11
+        ------
+         - updated forms and widgets prefix
+         - updated groups management in forms
+         - updated annotations adapters
+         - improved errors management when portlets are no more registered
+        
         0.1.10
         ------
          - renamed factories to use snake_case on functions
--- a/src/pyams_portal.egg-info/SOURCES.txt	Mon Jun 11 17:27:57 2018 +0200
+++ b/src/pyams_portal.egg-info/SOURCES.txt	Mon Jun 11 17:38:55 2018 +0200
@@ -24,19 +24,16 @@
 src/pyams_portal/locales/fr/LC_MESSAGES/pyams_portal.mo
 src/pyams_portal/locales/fr/LC_MESSAGES/pyams_portal.po
 src/pyams_portal/portlets/__init__.py
-src/pyams_portal/portlets/content/__init__.py
-src/pyams_portal/portlets/content/content.pt
-src/pyams_portal/portlets/content/interfaces.py
-src/pyams_portal/portlets/content/zmi/__init__.py
-src/pyams_portal/portlets/content/zmi/preview.pt
 src/pyams_portal/portlets/html/__init__.py
-src/pyams_portal/portlets/html/html.pt
 src/pyams_portal/portlets/html/interfaces.py
+src/pyams_portal/portlets/html/skin/__init__.py
+src/pyams_portal/portlets/html/skin/html.pt
 src/pyams_portal/portlets/html/zmi/__init__.py
 src/pyams_portal/portlets/html/zmi/preview.pt
 src/pyams_portal/portlets/image/__init__.py
-src/pyams_portal/portlets/image/image.pt
 src/pyams_portal/portlets/image/interfaces.py
+src/pyams_portal/portlets/image/skin/__init__.py
+src/pyams_portal/portlets/image/skin/image.pt
 src/pyams_portal/portlets/image/zmi/__init__.py
 src/pyams_portal/portlets/image/zmi/preview.pt
 src/pyams_portal/resources/css/portal.css
--- a/src/pyams_portal.egg-info/requires.txt	Mon Jun 11 17:27:57 2018 +0200
+++ b/src/pyams_portal.egg-info/requires.txt	Mon Jun 11 17:38:55 2018 +0200
@@ -2,12 +2,12 @@
 fanstatic
 persistent
 pyams_default_theme
-pyams_form
+pyams_form>=0.1.13
 pyams_pagelet
 pyams_security
 pyams_skin
 pyams_template
-pyams_utils
+pyams_utils>=0.1.15
 pyams_viewlet
 pyams_workflow
 pyams_zmi
Binary file src/pyams_portal/locales/fr/LC_MESSAGES/pyams_portal.mo has changed
--- a/src/pyams_portal/locales/fr/LC_MESSAGES/pyams_portal.po	Mon Jun 11 17:27:57 2018 +0200
+++ b/src/pyams_portal/locales/fr/LC_MESSAGES/pyams_portal.po	Mon Jun 11 17:38:55 2018 +0200
@@ -5,7 +5,7 @@
 msgid ""
 msgstr ""
 "Project-Id-Version: PACKAGE 1.0\n"
-"POT-Creation-Date: 2018-05-03 11:36+0200\n"
+"POT-Creation-Date: 2018-06-10 03:34+0200\n"
 "PO-Revision-Date: 2015-05-12 12:10+0200\n"
 "Last-Translator: Thierry Florac <tflorac@ulthar.net>\n"
 "Language-Team: French <traduc@traduc.org>\n"
@@ -24,6 +24,50 @@
 msgid "Portal templates manager"
 msgstr "Gestionnaire des modèles"
 
+#: src/pyams_portal/portlets/image/interfaces.py:30
+msgid "Selected image"
+msgstr "Image sélectionnée"
+
+#: src/pyams_portal/portlets/image/__init__.py:56
+msgid "Image"
+msgstr "Image"
+
+#: src/pyams_portal/portlets/image/skin/__init__.py:37
+msgid "Responsive image renderer"
+msgstr "Image responsive (par défaut)"
+
+#: src/pyams_portal/portlets/html/interfaces.py:31
+msgid "Raw HTML code"
+msgstr "Code HTML"
+
+#: src/pyams_portal/portlets/html/interfaces.py:32
+msgid ""
+"This HTML code will be used 'as is', without any transformation. Use with "
+"care!!"
+msgstr ""
+"Ce code HTML sera utilisé 'en l'état', sans aucune vérification ni "
+"transformation. À utiliser donc avec précaution !!"
+
+#: src/pyams_portal/portlets/html/interfaces.py:40
+msgid "Body"
+msgstr "Contenu HTML"
+
+#: src/pyams_portal/portlets/html/__init__.py:49
+msgid "Raw HTML"
+msgstr "Code HTML"
+
+#: src/pyams_portal/portlets/html/__init__.py:75
+msgid "Rich text"
+msgstr "Texte enrichi"
+
+#: src/pyams_portal/portlets/html/skin/__init__.py:37
+msgid "Default code renderer"
+msgstr "Rendu de code HTML (par défaut)"
+
+#: src/pyams_portal/portlets/html/skin/__init__.py:45
+msgid "Default text renderer"
+msgstr "Rendu de code HTML (par défaut)"
+
 #: src/pyams_portal/zmi/portlet.py:50
 msgid "Edit portlet settings"
 msgstr "Propriétés du composant"
@@ -45,7 +89,31 @@
 msgid "Override parent settings"
 msgstr "Remplacer le paramétrage du parent"
 
-#: src/pyams_portal/zmi/page.py:67
+#: src/pyams_portal/zmi/container.py:78 src/pyams_portal/zmi/template.py:102
+msgid "Portal templates"
+msgstr "Modèles de présentation"
+
+#: src/pyams_portal/zmi/container.py:87
+msgid "Shared portal templates"
+msgstr "Modèles de présentation partagés"
+
+#: src/pyams_portal/zmi/container.py:124
+msgid "Delete template"
+msgstr "Supprimer le modèle"
+
+#: src/pyams_portal/zmi/container.py:174
+msgid "Selected portlets..."
+msgstr "Composants sélectionnés"
+
+#: src/pyams_portal/zmi/container.py:193
+msgid "Portal templates container"
+msgstr "Gestionnaire des modèles"
+
+#: src/pyams_portal/zmi/container.py:194
+msgid "Edit selected portlets"
+msgstr "Sélection des composants"
+
+#: src/pyams_portal/zmi/page.py:66
 msgid "Presentation"
 msgstr "Présentation"
 
@@ -53,7 +121,7 @@
 msgid "Edit template configuration"
 msgstr "Choix du modèle de présentation"
 
-#: src/pyams_portal/zmi/page.py:201
+#: src/pyams_portal/zmi/page.py:194
 msgid ""
 "If you choose a shared template, you can only adjust settings of each "
 "portlet individually but can't change portlets list or page configuration.\n"
@@ -71,42 +139,42 @@
 "ATTENTION : si vous choisissez d'hériter du modèle du parent, les autres "
 "paramètres modifiés ici seront sans effet !!!"
 
-#: src/pyams_portal/zmi/page.py:217
+#: src/pyams_portal/zmi/page.py:210
 msgid "Template properties"
 msgstr "Configuration du modèle"
 
-#: src/pyams_portal/zmi/page.py:93 src/pyams_portal/zmi/page.py:156
+#: src/pyams_portal/zmi/page.py:92 src/pyams_portal/zmi/page.py:155
 msgid "Use shared template"
 msgstr "Utiliser un modèle de présentation partagé"
 
-#: src/pyams_portal/zmi/page.py:110 src/pyams_portal/zmi/page.py:172
+#: src/pyams_portal/zmi/page.py:109 src/pyams_portal/zmi/page.py:180
 msgid "You must choose to use a local template or select a shared one!"
 msgstr ""
 "Vous devez choisir un modèle de présentation partagé lorsque vous "
 "n'appliquez pas de modèle local !"
 
-#: src/pyams_portal/zmi/page.py:146
+#: src/pyams_portal/zmi/page.py:145
 msgid "Override parent template"
 msgstr "Ne pas hériter du modèle de présentation du parent"
 
-#: src/pyams_portal/zmi/template.py:84
+#: src/pyams_portal/zmi/template.py:54
+msgid "Portal template"
+msgstr "Modèle de présentation"
+
+#: src/pyams_portal/zmi/template.py:90
 msgid "Add template"
 msgstr "Ajouter un modèle"
 
-#: src/pyams_portal/zmi/template.py:94 src/pyams_portal/zmi/container.py:78
-msgid "Portal templates"
-msgstr "Modèles de présentation"
-
-#: src/pyams_portal/zmi/template.py:95
+#: src/pyams_portal/zmi/template.py:103
 msgid "Add shared template"
 msgstr "Ajout d'un modèle de présentation"
 
-#: src/pyams_portal/zmi/template.py:119 src/pyams_portal/zmi/layout.py:247
+#: src/pyams_portal/zmi/template.py:127 src/pyams_portal/zmi/layout.py:262
 msgid "Specified name is already used!"
 msgstr "Le nom indiqué est déjà utilisé !"
 
-#: src/pyams_portal/zmi/template.py:63 src/pyams_portal/zmi/layout.py:220
-#: src/pyams_portal/zmi/layout.py:393
+#: src/pyams_portal/zmi/template.py:69 src/pyams_portal/zmi/layout.py:226
+#: src/pyams_portal/zmi/layout.py:388
 #, python-format
 msgid "« {0} »  portal template"
 msgstr "Modèle de présentation « {0} »"
@@ -115,28 +183,27 @@
 msgid "Properties"
 msgstr "Propriétés"
 
-#: src/pyams_portal/zmi/layout.py:164
+#: src/pyams_portal/zmi/layout.py:168
 msgid "Add row..."
 msgstr "Ajouter une ligne"
 
-#: src/pyams_portal/zmi/layout.py:206
+#: src/pyams_portal/zmi/layout.py:210
 msgid "Add slot..."
 msgstr "Ajouter un panneau"
 
-#: src/pyams_portal/zmi/layout.py:222
-#: src/pyams_portal/zmi/templates/layout.pt:27
+#: src/pyams_portal/zmi/layout.py:228
 msgid "Add slot"
-msgstr "Ajout d'un panneau"
+msgstr "Ajouter un panneau"
 
 #: src/pyams_portal/zmi/layout.py:310
 msgid "Edit slot properties"
 msgstr "Propriétés d'un panneau"
 
-#: src/pyams_portal/zmi/layout.py:379
+#: src/pyams_portal/zmi/layout.py:372
 msgid "Add portlet..."
 msgstr "Ajouter un composant"
 
-#: src/pyams_portal/zmi/layout.py:395
+#: src/pyams_portal/zmi/layout.py:390
 msgid "Add portlet"
 msgstr "Ajouter un composant"
 
@@ -152,6 +219,10 @@
 msgid "Local template configuration"
 msgstr "Configuration d'un modèle local"
 
+#: src/pyams_portal/zmi/layout.py:137
+msgid "{{ missing portlet }}"
+msgstr "{{ composant indisponible }}"
+
 #: src/pyams_portal/zmi/layout.py:307
 #, python-format
 msgid "« {0} »  portal template - {1} slot"
@@ -162,25 +233,70 @@
 msgid "Shared template configuration ({0})"
 msgstr "Configuration d'un modèle partagé ({0})"
 
-#: src/pyams_portal/zmi/container.py:87
-msgid "Shared portal templates"
-msgstr "Modèles de présentation partagés"
+#: src/pyams_portal/zmi/templates/layout.pt:24
+msgid "Add row<br />Drag and drop button to page template to position new row"
+msgstr ""
+"Ajouter une ligne<br />Faire un lisser/déposer du bouton dans le modèle de "
+"présentation pour positionner la nouvelle ligne."
+
+#: src/pyams_portal/zmi/templates/layout.pt:29
+msgid ""
+"Add slot<br />Drag and drop button to page template to position new slot"
+msgstr ""
+"Ajouter un panneau<br />Faire un glisser/déposer du bouton dans le modèle de "
+"présentation pour positionner le nouveau panneau."
 
-#: src/pyams_portal/zmi/container.py:124
-msgid "Delete template"
-msgstr "Supprimer le modèle"
+#: src/pyams_portal/zmi/templates/layout.pt:49
+msgid "Add another portlet..."
+msgstr "Ajouter un composant"
+
+#: src/pyams_portal/zmi/templates/layout.pt:56
+msgid "Selected display:"
+msgstr "Type de périphérique sélectionné :"
+
+#: src/pyams_portal/zmi/templates/layout.pt:61
+msgid "Current device"
+msgstr "Périphérique actuel"
+
+#: src/pyams_portal/zmi/templates/layout.pt:62
+msgid "Extra small device (phone)"
+msgstr "Très petits périphériques (téléphone)"
 
-#: src/pyams_portal/zmi/container.py:174
-msgid "Selected portlets..."
-msgstr "Composants sélectionnés"
+#: src/pyams_portal/zmi/templates/layout.pt:63
+msgid "Small device (tablet)"
+msgstr "Petits périphériques (tablette)"
+
+#: src/pyams_portal/zmi/templates/layout.pt:64
+msgid "Medium desktop device (> 970px)"
+msgstr "Écrans de taille moyenne (> 970 px)"
+
+#: src/pyams_portal/zmi/templates/layout.pt:65
+msgid "Large desktop device (> 1170px)"
+msgstr "Écrans de grande taille (> 1170 px)"
+
+#: src/pyams_portal/zmi/templates/layout.pt:115
+msgid "Override parent or template settings"
+msgstr "Remplacer le paramétrage du parent ou du modèle"
 
-#: src/pyams_portal/zmi/container.py:192
-msgid "Portal templates container"
-msgstr "Gestionnaire des modèles"
+#: src/pyams_portal/zmi/templates/layout.pt:134
+msgid "Delete row..."
+msgstr "Supprimer la ligne"
+
+#: src/pyams_portal/zmi/templates/layout.pt:143
+msgid "Edit slot properties..."
+msgstr "Propriétés"
 
-#: src/pyams_portal/zmi/container.py:193
-msgid "Edit selected portlets"
-msgstr "Sélection des composants"
+#: src/pyams_portal/zmi/templates/layout.pt:150
+msgid "Delete slot..."
+msgstr "Supprimer le panneau"
+
+#: src/pyams_portal/zmi/templates/layout.pt:158
+msgid "Edit portlet properties..."
+msgstr "Propriétés"
+
+#: src/pyams_portal/zmi/templates/layout.pt:166
+msgid "Delete portlet..."
+msgstr "Supprimer le composant"
 
 #: src/pyams_portal/zmi/templates/portlet.pt:134
 msgid "Title"
@@ -194,114 +310,6 @@
 msgid "Tab label"
 msgstr "Libellé de l'onglet"
 
-#: src/pyams_portal/zmi/templates/layout.pt:23
-msgid "Add row"
-msgstr "Ajouter une ligne"
-
-#: src/pyams_portal/zmi/templates/layout.pt:47
-msgid "Add another portlet..."
-msgstr "Ajouter un composant"
-
-#: src/pyams_portal/zmi/templates/layout.pt:54
-msgid "Selected display:"
-msgstr "Type de périphérique sélectionné :"
-
-#: src/pyams_portal/zmi/templates/layout.pt:59
-msgid "Current device"
-msgstr "Périphérique actuel"
-
-#: src/pyams_portal/zmi/templates/layout.pt:60
-msgid "Extra small device (phone)"
-msgstr "Très petits périphériques (téléphone)"
-
-#: src/pyams_portal/zmi/templates/layout.pt:61
-msgid "Small device (tablet)"
-msgstr "Petits périphériques (tablette)"
-
-#: src/pyams_portal/zmi/templates/layout.pt:62
-msgid "Medium desktop device (> 970px)"
-msgstr "Écrans de taille moyenne (> 970 px)"
-
-#: src/pyams_portal/zmi/templates/layout.pt:63
-msgid "Large desktop device (> 1170px)"
-msgstr "Écrans de grande taille (> 1170 px)"
-
-#: src/pyams_portal/zmi/templates/layout.pt:110
-msgid "Override parent or template settings"
-msgstr "Remplacer le paramétrage du parent ou du modèle"
-
-#: src/pyams_portal/zmi/templates/layout.pt:129
-msgid "Delete row..."
-msgstr "Supprimer la ligne"
-
-#: src/pyams_portal/zmi/templates/layout.pt:138
-msgid "Edit slot properties..."
-msgstr "Propriétés"
-
-#: src/pyams_portal/zmi/templates/layout.pt:145
-msgid "Delete slot..."
-msgstr "Supprimer le panneau"
-
-#: src/pyams_portal/zmi/templates/layout.pt:153
-msgid "Edit portlet properties..."
-msgstr "Propriétés"
-
-#: src/pyams_portal/zmi/templates/layout.pt:161
-msgid "Delete portlet..."
-msgstr "Supprimer le composant"
-
-#: src/pyams_portal/portlets/image/__init__.py:60
-msgid "Image"
-msgstr "Image"
-
-#: src/pyams_portal/portlets/image/__init__.py:73
-msgid "Responsive image renderer"
-msgstr "Image responsive (par défaut)"
-
-#: src/pyams_portal/portlets/image/interfaces.py:30
-msgid "Selected image"
-msgstr "Image sélectionnée"
-
-#: src/pyams_portal/portlets/content/__init__.py:46
-msgid "Context content"
-msgstr "Contenu du contexte"
-
-#: src/pyams_portal/portlets/content/__init__.py:56
-msgid "Default content renderer"
-msgstr "Rendu de contenu (par défaut)"
-
-#: src/pyams_portal/portlets/html/__init__.py:53
-msgid "Raw HTML"
-msgstr "Code HTML"
-
-#: src/pyams_portal/portlets/html/__init__.py:65
-msgid "Default code renderer"
-msgstr "Rendu de code HTML (par défaut)"
-
-#: src/pyams_portal/portlets/html/__init__.py:87
-msgid "Rich text"
-msgstr "Texte enrichi"
-
-#: src/pyams_portal/portlets/html/__init__.py:99
-msgid "Default text renderer"
-msgstr "Rendu de code HTML (par défaut)"
-
-#: src/pyams_portal/portlets/html/interfaces.py:31
-msgid "Raw HTML code"
-msgstr "Code HTML"
-
-#: src/pyams_portal/portlets/html/interfaces.py:32
-msgid ""
-"This HTML code will be used 'as is', without any transformation. Use with "
-"care!!"
-msgstr ""
-"Ce code HTML sera utilisé 'en l'état', sans aucune vérification ni transformation. "
-"À utiliser donc avec précaution !!"
-
-#: src/pyams_portal/portlets/html/interfaces.py:40
-msgid "Body"
-msgstr "Contenu HTML"
-
 #: src/pyams_portal/interfaces/__init__.py:65
 msgid "Portlet"
 msgstr "Composant"
@@ -483,3 +491,12 @@
 #: src/pyams_portal/interfaces/__init__.py:422
 msgid "Template used for this page"
 msgstr "Modèle de présentation utilisé pour cette page"
+
+#~ msgid "Add row"
+#~ msgstr "Ajouter une ligne"
+
+#~ msgid "Context content"
+#~ msgstr "Contenu du contexte"
+
+#~ msgid "Default content renderer"
+#~ msgstr "Rendu de contenu (par défaut)"
--- a/src/pyams_portal/locales/fr/LC_MESSAGES/pyams_portal.po~	Mon Jun 11 17:27:57 2018 +0200
+++ b/src/pyams_portal/locales/fr/LC_MESSAGES/pyams_portal.po~	Mon Jun 11 17:38:55 2018 +0200
@@ -5,7 +5,7 @@
 msgid ""
 msgstr ""
 "Project-Id-Version: PACKAGE 1.0\n"
-"POT-Creation-Date: 2016-01-06 11:55+0100\n"
+"POT-Creation-Date: 2018-06-10 03:17+0200\n"
 "PO-Revision-Date: 2015-05-12 12:10+0200\n"
 "Last-Translator: Thierry Florac <tflorac@ulthar.net>\n"
 "Language-Team: French <traduc@traduc.org>\n"
@@ -16,99 +16,199 @@
 "Generated-By: Lingua 3.10.dev0\n"
 "Plural-Forms: nplurals=2; plural=(n > 1);\n"
 
-#: src/pyams_portal/__init__.py:34
+#: src/pyams_portal/__init__.py:43
 msgid "Manage portal templates"
 msgstr "Gérer les modèles de présentation"
 
-#: src/pyams_portal/__init__.py:38
+#: src/pyams_portal/__init__.py:47
 msgid "Portal templates manager"
 msgstr "Gestionnaire des modèles"
 
-#: src/pyams_portal/zmi/portlet.py:49
+#: src/pyams_portal/portlets/image/interfaces.py:30
+msgid "Selected image"
+msgstr "Image sélectionnée"
+
+#: src/pyams_portal/portlets/image/__init__.py:56
+msgid "Image"
+msgstr "Image"
+
+#: src/pyams_portal/portlets/image/skin/__init__.py:37
+msgid "Responsive image renderer"
+msgstr "Image responsive (par défaut)"
+
+#: src/pyams_portal/portlets/html/interfaces.py:31
+msgid "Raw HTML code"
+msgstr "Code HTML"
+
+#: src/pyams_portal/portlets/html/interfaces.py:32
+msgid ""
+"This HTML code will be used 'as is', without any transformation. Use with "
+"care!!"
+msgstr ""
+"Ce code HTML sera utilisé 'en l'état', sans aucune vérification ni "
+"transformation. À utiliser donc avec précaution !!"
+
+#: src/pyams_portal/portlets/html/interfaces.py:40
+msgid "Body"
+msgstr "Contenu HTML"
+
+#: src/pyams_portal/portlets/html/__init__.py:49
+msgid "Raw HTML"
+msgstr "Code HTML"
+
+#: src/pyams_portal/portlets/html/__init__.py:75
+msgid "Rich text"
+msgstr "Texte enrichi"
+
+#: src/pyams_portal/portlets/html/skin/__init__.py:37
+msgid "Default code renderer"
+msgstr "Rendu de code HTML (par défaut)"
+
+#: src/pyams_portal/portlets/html/skin/__init__.py:45
+msgid "Default text renderer"
+msgstr "Rendu de code HTML (par défaut)"
+
+#: src/pyams_portal/zmi/portlet.py:50
 msgid "Edit portlet settings"
 msgstr "Propriétés du composant"
 
-#: src/pyams_portal/zmi/portlet.py:85
+#: src/pyams_portal/zmi/portlet.py:92
 msgid "Main properties"
 msgstr "Propriétés"
 
-#: src/pyams_portal/zmi/portlet.py:64
-msgid "Override parent settings"
-msgstr "Remplacer le paramétrage du parent"
-
-#: src/pyams_portal/zmi/portlet.py:66
+#: src/pyams_portal/zmi/portlet.py:66 src/pyams_portal/zmi/portlet.py:72
 msgid "Override template settings"
 msgstr "Remplacer le paramétrage du modèle"
 
-#: src/pyams_portal/zmi/portlet.py:46
+#: src/pyams_portal/zmi/portlet.py:47
 #, python-format
 msgid "« {0} »  portal template - {1}"
 msgstr "Modèle de présentation « {0} »  - {1}"
 
-#: src/pyams_portal/zmi/page.py:60
+#: src/pyams_portal/zmi/portlet.py:70
+msgid "Override parent settings"
+msgstr "Remplacer le paramétrage du parent"
+
+#: src/pyams_portal/zmi/container.py:78 src/pyams_portal/zmi/template.py:102
+msgid "Portal templates"
+msgstr "Modèles de présentation"
+
+#: src/pyams_portal/zmi/container.py:87
+msgid "Shared portal templates"
+msgstr "Modèles de présentation partagés"
+
+#: src/pyams_portal/zmi/container.py:124
+msgid "Delete template"
+msgstr "Supprimer le modèle"
+
+#: src/pyams_portal/zmi/container.py:174
+msgid "Selected portlets..."
+msgstr "Composants sélectionnés"
+
+#: src/pyams_portal/zmi/container.py:193
+msgid "Portal templates container"
+msgstr "Gestionnaire des modèles"
+
+#: src/pyams_portal/zmi/container.py:194
+msgid "Edit selected portlets"
+msgstr "Sélection des composants"
+
+#: src/pyams_portal/zmi/page.py:66
 msgid "Presentation"
 msgstr "Présentation"
 
-#: src/pyams_portal/zmi/page.py:75
+#: src/pyams_portal/zmi/page.py:124
 msgid "Edit template configuration"
 msgstr "Choix du modèle de présentation"
 
-#: src/pyams_portal/zmi/page.py:119
+#: src/pyams_portal/zmi/page.py:194
+msgid ""
+"If you choose a shared template, you can only adjust settings of each "
+"portlet individually but can't change portlets list or page configuration.\n"
+"If you use a local template, you can define a whole custom configuration but "
+"the template definition can't be reused anywhere..."
+msgstr ""
+"Si vous choisissez d'utiliser un modèle de présentation partagé, vous "
+"pourrez ajuster les paramètres de chaque composant mais ne pourrez pas "
+"modifier la liste des composants ou leur position et la configuration de la "
+"page.\n"
+"Si vous choisissez d'utiliser un modèle de présentation local, vous pourrez "
+"définir l'ensemble de la configuration mais le modèle de présentation ne "
+"pourra pas être réutilisé en dehors des sous-niveaux qui pourront en "
+"hériter...\n"
+"ATTENTION : si vous choisissez d'hériter du modèle du parent, les autres "
+"paramètres modifiés ici seront sans effet !!!"
+
+#: src/pyams_portal/zmi/page.py:210
 msgid "Template properties"
 msgstr "Configuration du modèle"
 
-#: src/pyams_portal/zmi/template.py:83
+#: src/pyams_portal/zmi/page.py:92 src/pyams_portal/zmi/page.py:155
+msgid "Use shared template"
+msgstr "Utiliser un modèle de présentation partagé"
+
+#: src/pyams_portal/zmi/page.py:109 src/pyams_portal/zmi/page.py:180
+msgid "You must choose to use a local template or select a shared one!"
+msgstr ""
+"Vous devez choisir un modèle de présentation partagé lorsque vous "
+"n'appliquez pas de modèle local !"
+
+#: src/pyams_portal/zmi/page.py:145
+msgid "Override parent template"
+msgstr "Ne pas hériter du modèle de présentation du parent"
+
+#: src/pyams_portal/zmi/template.py:54
+msgid "Portal template"
+msgstr "Modèle de présentation"
+
+#: src/pyams_portal/zmi/template.py:90
 msgid "Add template"
 msgstr "Ajouter un modèle"
 
-#: src/pyams_portal/zmi/template.py:93 src/pyams_portal/zmi/container.py:78
-msgid "Portal templates"
-msgstr "Modèles de présentation"
-
-#: src/pyams_portal/zmi/template.py:94
+#: src/pyams_portal/zmi/template.py:103
 msgid "Add shared template"
 msgstr "Ajout d'un modèle de présentation"
 
-#: src/pyams_portal/zmi/template.py:118 src/pyams_portal/zmi/layout.py:246
+#: src/pyams_portal/zmi/template.py:127 src/pyams_portal/zmi/layout.py:262
 msgid "Specified name is already used!"
 msgstr "Le nom indiqué est déjà utilisé !"
 
-#: src/pyams_portal/zmi/template.py:62 src/pyams_portal/zmi/layout.py:220
-#: src/pyams_portal/zmi/layout.py:382
+#: src/pyams_portal/zmi/template.py:69 src/pyams_portal/zmi/layout.py:226
+#: src/pyams_portal/zmi/layout.py:388
 #, python-format
 msgid "« {0} »  portal template"
 msgstr "Modèle de présentation « {0} »"
 
-#: src/pyams_portal/zmi/layout.py:78
+#: src/pyams_portal/zmi/layout.py:77
 msgid "Properties"
 msgstr "Propriétés"
 
-#: src/pyams_portal/zmi/layout.py:164
+#: src/pyams_portal/zmi/layout.py:168
 msgid "Add row..."
-msgstr "Ajouter une ligne..."
+msgstr "Ajouter une ligne"
 
-#: src/pyams_portal/zmi/layout.py:206
+#: src/pyams_portal/zmi/layout.py:210
 msgid "Add slot..."
-msgstr "Ajouter un panneau..."
+msgstr "Ajouter un panneau"
 
-#: src/pyams_portal/zmi/layout.py:222
+#: src/pyams_portal/zmi/layout.py:228
 #: src/pyams_portal/zmi/templates/layout.pt:27
 msgid "Add slot"
-msgstr "Ajout d'un panneau"
+msgstr "Ajouter un panneau"
 
-#: src/pyams_portal/zmi/layout.py:303
+#: src/pyams_portal/zmi/layout.py:310
 msgid "Edit slot properties"
 msgstr "Propriétés d'un panneau"
 
-#: src/pyams_portal/zmi/layout.py:368
+#: src/pyams_portal/zmi/layout.py:372
 msgid "Add portlet..."
-msgstr "Ajouter un composant..."
+msgstr "Ajouter un composant"
 
-#: src/pyams_portal/zmi/layout.py:384
+#: src/pyams_portal/zmi/layout.py:390
 msgid "Add portlet"
 msgstr "Ajouter un composant"
 
-#: src/pyams_portal/zmi/layout.py:68
+#: src/pyams_portal/zmi/layout.py:67
 msgid "Template management"
 msgstr "Ce modèle"
 
@@ -120,7 +220,11 @@
 msgid "Local template configuration"
 msgstr "Configuration d'un modèle local"
 
-#: src/pyams_portal/zmi/layout.py:300
+#: src/pyams_portal/zmi/layout.py:137
+msgid "{{ missing portlet }}"
+msgstr "{{ composant indisponible }}"
+
+#: src/pyams_portal/zmi/layout.py:307
 #, python-format
 msgid "« {0} »  portal template - {1} slot"
 msgstr "Modèle de présentation « {0} » - Panneau {1}"
@@ -130,42 +234,13 @@
 msgid "Shared template configuration ({0})"
 msgstr "Configuration d'un modèle partagé ({0})"
 
-#: src/pyams_portal/zmi/container.py:87
-msgid "Shared portal templates"
-msgstr "Modèles de présentation partagés"
-
-#: src/pyams_portal/zmi/container.py:127
-msgid "Delete template"
-msgstr "Supprimer le modèle"
-
-#: src/pyams_portal/zmi/container.py:170
-msgid "Selected portlets..."
-msgstr "Composants sélectionnés..."
-
-#: src/pyams_portal/zmi/container.py:186
-msgid "Portal templates container"
-msgstr "Gestionnaire des modèles"
-
-#: src/pyams_portal/zmi/container.py:187
-msgid "Edit selected portlets"
-msgstr "Sélection des composants"
-
-#: src/pyams_portal/zmi/templates/portlet.pt:129
-#: src/pyams_portal/zmi/templates/portlet.pt:144
-msgid "Title"
-msgstr "Titre"
-
-#: src/pyams_portal/zmi/templates/portlet.pt:159
-msgid "Tab label"
-msgstr "Libellé de l'onglet"
-
 #: src/pyams_portal/zmi/templates/layout.pt:23
 msgid "Add row"
-msgstr "Ajouter une ligne..."
+msgstr "Ajouter une ligne"
 
 #: src/pyams_portal/zmi/templates/layout.pt:47
 msgid "Add another portlet..."
-msgstr "Ajouter un composant..."
+msgstr "Ajouter un composant"
 
 #: src/pyams_portal/zmi/templates/layout.pt:54
 msgid "Selected display:"
@@ -191,44 +266,48 @@
 msgid "Large desktop device (> 1170px)"
 msgstr "Écrans de grande taille (> 1170 px)"
 
-#: src/pyams_portal/zmi/templates/layout.pt:123
-msgid "Delete row..."
-msgstr "Supprimer la ligne..."
+#: src/pyams_portal/zmi/templates/layout.pt:113
+msgid "Override parent or template settings"
+msgstr "Remplacer le paramétrage du parent ou du modèle"
 
 #: src/pyams_portal/zmi/templates/layout.pt:132
+msgid "Delete row..."
+msgstr "Supprimer la ligne"
+
+#: src/pyams_portal/zmi/templates/layout.pt:141
 msgid "Edit slot properties..."
-msgstr "Propriétés..."
+msgstr "Propriétés"
 
-#: src/pyams_portal/zmi/templates/layout.pt:139
+#: src/pyams_portal/zmi/templates/layout.pt:148
 msgid "Delete slot..."
-msgstr "Supprimer le panneau..."
+msgstr "Supprimer le panneau"
 
-#: src/pyams_portal/zmi/templates/layout.pt:147
+#: src/pyams_portal/zmi/templates/layout.pt:156
 msgid "Edit portlet properties..."
-msgstr "Propriétés..."
+msgstr "Propriétés"
 
-#: src/pyams_portal/zmi/templates/layout.pt:155
+#: src/pyams_portal/zmi/templates/layout.pt:164
 msgid "Delete portlet..."
-msgstr "Supprimer le composant..."
+msgstr "Supprimer le composant"
 
-#: src/pyams_portal/portlets/image/__init__.py:49
-msgid "Image"
-msgstr "Image"
+#: src/pyams_portal/zmi/templates/portlet.pt:134
+msgid "Title"
+msgstr "Titre"
 
-#: src/pyams_portal/portlets/image/interfaces.py:30
-msgid "Selected image"
-msgstr "Image sélectionnée"
+#: src/pyams_portal/zmi/templates/portlet.pt:149
+msgid "Legend"
+msgstr "Légende"
 
-#: src/pyams_portal/portlets/content/__init__.py:46
-msgid "Context content"
-msgstr "Contenu du contexte"
+#: src/pyams_portal/zmi/templates/portlet.pt:164
+msgid "Tab label"
+msgstr "Libellé de l'onglet"
 
 #: src/pyams_portal/interfaces/__init__.py:65
 msgid "Portlet"
 msgstr "Composant"
 
 #: src/pyams_portal/interfaces/__init__.py:68
-#: src/pyams_portal/interfaces/__init__.py:171
+#: src/pyams_portal/interfaces/__init__.py:181
 msgid "Slot name"
 msgstr "Nom du panneau"
 
@@ -244,11 +323,19 @@
 msgid "Select 'no' to hide this portlet..."
 msgstr "Sélectionnez 'non' pour masquer ce composant..."
 
-#: src/pyams_portal/interfaces/__init__.py:109
+#: src/pyams_portal/interfaces/__init__.py:87
+msgid "Portlet renderer"
+msgstr "Mode de rendu"
+
+#: src/pyams_portal/interfaces/__init__.py:88
+msgid "Name of renderer used to render this portlet"
+msgstr "Mode de rendu utilisé pour restituer ce composant"
+
+#: src/pyams_portal/interfaces/__init__.py:115
 msgid "Inherit parent configuration?"
 msgstr "Hériter de la configuration du parent ?"
 
-#: src/pyams_portal/interfaces/__init__.py:110
+#: src/pyams_portal/interfaces/__init__.py:116
 msgid ""
 "This option is only available if context's parent is using the same "
 "template..."
@@ -256,27 +343,27 @@
 "Cette option n'est disponible que si le parent utilise le même modèle de "
 "présentation..."
 
-#: src/pyams_portal/interfaces/__init__.py:172
+#: src/pyams_portal/interfaces/__init__.py:182
 msgid "This name must be unique in a given template"
 msgstr "Ce nom doit être unique au sein d'un modèle de présentation"
 
-#: src/pyams_portal/interfaces/__init__.py:175
+#: src/pyams_portal/interfaces/__init__.py:185
 msgid "Row ID"
 msgstr "ID de la ligne"
 
-#: src/pyams_portal/interfaces/__init__.py:189
+#: src/pyams_portal/interfaces/__init__.py:199
 msgid "Visible slot?"
 msgstr "Panneau visible ?"
 
-#: src/pyams_portal/interfaces/__init__.py:190
+#: src/pyams_portal/interfaces/__init__.py:200
 msgid "Select 'no' to hide this slot..."
 msgstr "Choisir 'non' pour masquer ce panneau..."
 
-#: src/pyams_portal/interfaces/__init__.py:194
+#: src/pyams_portal/interfaces/__init__.py:204
 msgid "Extra small device width"
 msgstr "Largeur sur très petits périphériques"
 
-#: src/pyams_portal/interfaces/__init__.py:195
+#: src/pyams_portal/interfaces/__init__.py:205
 msgid ""
 "Slot width, in columns count, on extra small devices (phones...); set to 0 "
 "to hide the portlet"
@@ -284,11 +371,11 @@
 "Largeur du panneau, en nombre de colonnes, sur les très petits périphériques "
 "(téléphones...) ; indiquez une valeur de 0 pour masquer ce composant"
 
-#: src/pyams_portal/interfaces/__init__.py:201
+#: src/pyams_portal/interfaces/__init__.py:211
 msgid "Small device width"
 msgstr "Largeur sur petits périphériques"
 
-#: src/pyams_portal/interfaces/__init__.py:202
+#: src/pyams_portal/interfaces/__init__.py:212
 msgid ""
 "Slot width, in columns count, on small devices (tablets...); set to 0 to "
 "hide the portlet"
@@ -296,11 +383,11 @@
 "Largeur du panneau, en nombre de colonnes, sur les petits périphériques "
 "(tablettes...) ; indiquez une valeur de 0 pour masquer ce composant"
 
-#: src/pyams_portal/interfaces/__init__.py:208
+#: src/pyams_portal/interfaces/__init__.py:218
 msgid "Medium devices width"
 msgstr "Largeur sur périphériques moyens"
 
-#: src/pyams_portal/interfaces/__init__.py:209
+#: src/pyams_portal/interfaces/__init__.py:219
 msgid ""
 "Slot width, in columns count, on medium desktop devices (>= 992 pixels); set "
 "to 0 to hide the portlet"
@@ -308,11 +395,11 @@
 "Largeur du panneau, en nombre de colonnes, sur les périphériques moyens (>= "
 "992 pixels) ; indiquez une valeur de 0 pour masquer ce composant"
 
-#: src/pyams_portal/interfaces/__init__.py:215
+#: src/pyams_portal/interfaces/__init__.py:225
 msgid "Large devices width"
 msgstr "Largeur sur grands périphériques"
 
-#: src/pyams_portal/interfaces/__init__.py:216
+#: src/pyams_portal/interfaces/__init__.py:226
 msgid ""
 "Slot width, in columns count, on large desktop devices (>= 1200 pixels); set "
 "to 0 to hide the portlet"
@@ -320,27 +407,27 @@
 "Largeur du panneau, en nombre de colonnes, sur les grands périphériques (>= "
 "1200 pixels) ; indiquez une valeur de 0 pour masquer ce composant"
 
-#: src/pyams_portal/interfaces/__init__.py:222
+#: src/pyams_portal/interfaces/__init__.py:232
 msgid "CSS class"
 msgstr "Class CSS"
 
-#: src/pyams_portal/interfaces/__init__.py:223
+#: src/pyams_portal/interfaces/__init__.py:233
 msgid "CSS class applied to this slot"
 msgstr "Classe CSS spécifique appliquée à ce panneau"
 
-#: src/pyams_portal/interfaces/__init__.py:334
+#: src/pyams_portal/interfaces/__init__.py:346
 msgid "Template name"
 msgstr "Nom du modèle"
 
-#: src/pyams_portal/interfaces/__init__.py:335
+#: src/pyams_portal/interfaces/__init__.py:347
 msgid "Two registered templates can't share the same name..."
 msgstr "Deux modèles partagés ne peuvent pas utiliser le même nom..."
 
-#: src/pyams_portal/interfaces/__init__.py:356
+#: src/pyams_portal/interfaces/__init__.py:368
 msgid "Toolbar portlets"
 msgstr "Composants de la barre d'outils"
 
-#: src/pyams_portal/interfaces/__init__.py:357
+#: src/pyams_portal/interfaces/__init__.py:369
 msgid ""
 "These portlets will be directly available in templates configuration page "
 "toolbar"
@@ -348,39 +435,57 @@
 "Ces composants seront directement accessibles dans la page de configuration "
 "des modèles de présentation sous la forme d'une barre d'icônes"
 
-#: src/pyams_portal/interfaces/__init__.py:383
+#: src/pyams_portal/interfaces/__init__.py:395
 msgid "Inherit parent template?"
 msgstr "Hériter du modèle du parent ?"
 
-#: src/pyams_portal/interfaces/__init__.py:384
+#: src/pyams_portal/interfaces/__init__.py:396
 msgid "Should we reuse parent template?"
 msgstr "Doit-on ré-utiliser le modèle du parent ?"
 
-#: src/pyams_portal/interfaces/__init__.py:388
+#: src/pyams_portal/interfaces/__init__.py:400
+msgid "Override parent template?"
+msgstr "Ne pas hériter du modèle du parent ?"
+
+#: src/pyams_portal/interfaces/__init__.py:401
+msgid "Should we override parent template?"
+msgstr "Doit-on remplacer le modèle de présentation du parent ?"
+
+#: src/pyams_portal/interfaces/__init__.py:405
 msgid "Use local template?"
 msgstr "Utiliser un modèle local ?"
 
-#: src/pyams_portal/interfaces/__init__.py:389
+#: src/pyams_portal/interfaces/__init__.py:406
 msgid ""
 "If 'yes', you can define a custom local template instead of a shared template"
 msgstr ""
 "Si 'oui', vous pouvez définir un modèle de présentation local au lieu d'un "
 "modèle partagé"
 
-#: src/pyams_portal/interfaces/__init__.py:394
+#: src/pyams_portal/interfaces/__init__.py:411
+msgid "Local template"
+msgstr "Modèle local"
+
+#: src/pyams_portal/interfaces/__init__.py:416
+msgid "Use shared template?"
+msgstr "Utiliser un modèle partagé"
+
+#: src/pyams_portal/interfaces/__init__.py:417
+msgid "If 'yes', you can select a shared template"
+msgstr ""
+"Si 'oui', vous pouvez sélectionner un modèle de présentation partagé au lieu "
+"d'un modèle local"
+
+#: src/pyams_portal/interfaces/__init__.py:421
 msgid "Page template"
 msgstr "Modèle de page"
 
-#: src/pyams_portal/interfaces/__init__.py:395
+#: src/pyams_portal/interfaces/__init__.py:422
 msgid "Template used for this page"
 msgstr "Modèle de présentation utilisé pour cette page"
 
-#: src/pyams_portal/interfaces/__init__.py:404
-msgid "Local template"
-msgstr "Modèle local"
+#~ msgid "Context content"
+#~ msgstr "Contenu du contexte"
 
-#: src/pyams_portal/interfaces/__init__.py:402
-msgid "You must choose to use a local template or select a shared one!"
-msgstr ""
-"Vous devez choisir un modèle de présentation partagé lorsque vous "
-"n'appliquez pas de modèle local !"
+#~ msgid "Default content renderer"
+#~ msgstr "Rendu de contenu (par défaut)"
--- a/src/pyams_portal/locales/pyams_portal.pot	Mon Jun 11 17:27:57 2018 +0200
+++ b/src/pyams_portal/locales/pyams_portal.pot	Mon Jun 11 17:38:55 2018 +0200
@@ -6,7 +6,7 @@
 msgid ""
 msgstr ""
 "Project-Id-Version: PACKAGE 1.0\n"
-"POT-Creation-Date: 2018-05-03 11:36+0200\n"
+"POT-Creation-Date: 2018-06-10 03:34+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"
@@ -24,6 +24,48 @@
 msgid "Portal templates manager"
 msgstr ""
 
+#: ./src/pyams_portal/portlets/image/interfaces.py:30
+msgid "Selected image"
+msgstr ""
+
+#: ./src/pyams_portal/portlets/image/__init__.py:56
+msgid "Image"
+msgstr ""
+
+#: ./src/pyams_portal/portlets/image/skin/__init__.py:37
+msgid "Responsive image renderer"
+msgstr ""
+
+#: ./src/pyams_portal/portlets/html/interfaces.py:31
+msgid "Raw HTML code"
+msgstr ""
+
+#: ./src/pyams_portal/portlets/html/interfaces.py:32
+msgid ""
+"This HTML code will be used 'as is', without any transformation. Use with "
+"care!!"
+msgstr ""
+
+#: ./src/pyams_portal/portlets/html/interfaces.py:40
+msgid "Body"
+msgstr ""
+
+#: ./src/pyams_portal/portlets/html/__init__.py:49
+msgid "Raw HTML"
+msgstr ""
+
+#: ./src/pyams_portal/portlets/html/__init__.py:75
+msgid "Rich text"
+msgstr ""
+
+#: ./src/pyams_portal/portlets/html/skin/__init__.py:37
+msgid "Default code renderer"
+msgstr ""
+
+#: ./src/pyams_portal/portlets/html/skin/__init__.py:45
+msgid "Default text renderer"
+msgstr ""
+
 #: ./src/pyams_portal/zmi/portlet.py:50
 msgid "Edit portlet settings"
 msgstr ""
@@ -45,7 +87,32 @@
 msgid "Override parent settings"
 msgstr ""
 
-#: ./src/pyams_portal/zmi/page.py:67
+#: ./src/pyams_portal/zmi/container.py:78
+#: ./src/pyams_portal/zmi/template.py:102
+msgid "Portal templates"
+msgstr ""
+
+#: ./src/pyams_portal/zmi/container.py:87
+msgid "Shared portal templates"
+msgstr ""
+
+#: ./src/pyams_portal/zmi/container.py:124
+msgid "Delete template"
+msgstr ""
+
+#: ./src/pyams_portal/zmi/container.py:174
+msgid "Selected portlets..."
+msgstr ""
+
+#: ./src/pyams_portal/zmi/container.py:193
+msgid "Portal templates container"
+msgstr ""
+
+#: ./src/pyams_portal/zmi/container.py:194
+msgid "Edit selected portlets"
+msgstr ""
+
+#: ./src/pyams_portal/zmi/page.py:66
 msgid "Presentation"
 msgstr ""
 
@@ -53,46 +120,46 @@
 msgid "Edit template configuration"
 msgstr ""
 
-#: ./src/pyams_portal/zmi/page.py:201
+#: ./src/pyams_portal/zmi/page.py:194
 msgid ""
 "If you choose a shared template, you can only adjust settings of each portlet individually but can't change portlets list or page configuration.\n"
 "If you use a local template, you can define a whole custom configuration but the template definition can't be reused anywhere..."
 msgstr ""
 
-#: ./src/pyams_portal/zmi/page.py:217
+#: ./src/pyams_portal/zmi/page.py:210
 msgid "Template properties"
 msgstr ""
 
-#: ./src/pyams_portal/zmi/page.py:93 ./src/pyams_portal/zmi/page.py:156
+#: ./src/pyams_portal/zmi/page.py:92 ./src/pyams_portal/zmi/page.py:155
 msgid "Use shared template"
 msgstr ""
 
-#: ./src/pyams_portal/zmi/page.py:110 ./src/pyams_portal/zmi/page.py:172
+#: ./src/pyams_portal/zmi/page.py:109 ./src/pyams_portal/zmi/page.py:180
 msgid "You must choose to use a local template or select a shared one!"
 msgstr ""
 
-#: ./src/pyams_portal/zmi/page.py:146
+#: ./src/pyams_portal/zmi/page.py:145
 msgid "Override parent template"
 msgstr ""
 
-#: ./src/pyams_portal/zmi/template.py:84
+#: ./src/pyams_portal/zmi/template.py:54
+msgid "Portal template"
+msgstr ""
+
+#: ./src/pyams_portal/zmi/template.py:90
 msgid "Add template"
 msgstr ""
 
-#: ./src/pyams_portal/zmi/template.py:94 ./src/pyams_portal/zmi/container.py:78
-msgid "Portal templates"
-msgstr ""
-
-#: ./src/pyams_portal/zmi/template.py:95
+#: ./src/pyams_portal/zmi/template.py:103
 msgid "Add shared template"
 msgstr ""
 
-#: ./src/pyams_portal/zmi/template.py:119 ./src/pyams_portal/zmi/layout.py:247
+#: ./src/pyams_portal/zmi/template.py:127 ./src/pyams_portal/zmi/layout.py:262
 msgid "Specified name is already used!"
 msgstr ""
 
-#: ./src/pyams_portal/zmi/template.py:63 ./src/pyams_portal/zmi/layout.py:220
-#: ./src/pyams_portal/zmi/layout.py:393
+#: ./src/pyams_portal/zmi/template.py:69 ./src/pyams_portal/zmi/layout.py:226
+#: ./src/pyams_portal/zmi/layout.py:388
 #, python-format
 msgid "« {0} »  portal template"
 msgstr ""
@@ -101,16 +168,15 @@
 msgid "Properties"
 msgstr ""
 
-#: ./src/pyams_portal/zmi/layout.py:164
+#: ./src/pyams_portal/zmi/layout.py:168
 msgid "Add row..."
 msgstr ""
 
-#: ./src/pyams_portal/zmi/layout.py:206
+#: ./src/pyams_portal/zmi/layout.py:210
 msgid "Add slot..."
 msgstr ""
 
-#: ./src/pyams_portal/zmi/layout.py:222
-#: ./src/pyams_portal/zmi/templates/layout.pt:27
+#: ./src/pyams_portal/zmi/layout.py:228
 msgid "Add slot"
 msgstr ""
 
@@ -118,11 +184,11 @@
 msgid "Edit slot properties"
 msgstr ""
 
-#: ./src/pyams_portal/zmi/layout.py:379
+#: ./src/pyams_portal/zmi/layout.py:372
 msgid "Add portlet..."
 msgstr ""
 
-#: ./src/pyams_portal/zmi/layout.py:395
+#: ./src/pyams_portal/zmi/layout.py:390
 msgid "Add portlet"
 msgstr ""
 
@@ -138,6 +204,10 @@
 msgid "Local template configuration"
 msgstr ""
 
+#: ./src/pyams_portal/zmi/layout.py:137
+msgid "{{ missing portlet }}"
+msgstr ""
+
 #: ./src/pyams_portal/zmi/layout.py:307
 #, python-format
 msgid "« {0} »  portal template - {1} slot"
@@ -148,24 +218,65 @@
 msgid "Shared template configuration ({0})"
 msgstr ""
 
-#: ./src/pyams_portal/zmi/container.py:87
-msgid "Shared portal templates"
+#: ./src/pyams_portal/zmi/templates/layout.pt:24
+msgid "Add row<br />Drag and drop button to page template to position new row"
+msgstr ""
+
+#: ./src/pyams_portal/zmi/templates/layout.pt:29
+msgid ""
+"Add slot<br />Drag and drop button to page template to position new slot"
+msgstr ""
+
+#: ./src/pyams_portal/zmi/templates/layout.pt:49
+msgid "Add another portlet..."
 msgstr ""
 
-#: ./src/pyams_portal/zmi/container.py:124
-msgid "Delete template"
+#: ./src/pyams_portal/zmi/templates/layout.pt:56
+msgid "Selected display:"
+msgstr ""
+
+#: ./src/pyams_portal/zmi/templates/layout.pt:61
+msgid "Current device"
+msgstr ""
+
+#: ./src/pyams_portal/zmi/templates/layout.pt:62
+msgid "Extra small device (phone)"
+msgstr ""
+
+#: ./src/pyams_portal/zmi/templates/layout.pt:63
+msgid "Small device (tablet)"
 msgstr ""
 
-#: ./src/pyams_portal/zmi/container.py:174
-msgid "Selected portlets..."
+#: ./src/pyams_portal/zmi/templates/layout.pt:64
+msgid "Medium desktop device (> 970px)"
+msgstr ""
+
+#: ./src/pyams_portal/zmi/templates/layout.pt:65
+msgid "Large desktop device (> 1170px)"
+msgstr ""
+
+#: ./src/pyams_portal/zmi/templates/layout.pt:115
+msgid "Override parent or template settings"
 msgstr ""
 
-#: ./src/pyams_portal/zmi/container.py:192
-msgid "Portal templates container"
+#: ./src/pyams_portal/zmi/templates/layout.pt:134
+msgid "Delete row..."
+msgstr ""
+
+#: ./src/pyams_portal/zmi/templates/layout.pt:143
+msgid "Edit slot properties..."
 msgstr ""
 
-#: ./src/pyams_portal/zmi/container.py:193
-msgid "Edit selected portlets"
+#: ./src/pyams_portal/zmi/templates/layout.pt:150
+msgid "Delete slot..."
+msgstr ""
+
+#: ./src/pyams_portal/zmi/templates/layout.pt:158
+msgid "Edit portlet properties..."
+msgstr ""
+
+#: ./src/pyams_portal/zmi/templates/layout.pt:166
+msgid "Delete portlet..."
 msgstr ""
 
 #: ./src/pyams_portal/zmi/templates/portlet.pt:134
@@ -180,112 +291,6 @@
 msgid "Tab label"
 msgstr ""
 
-#: ./src/pyams_portal/zmi/templates/layout.pt:23
-msgid "Add row"
-msgstr ""
-
-#: ./src/pyams_portal/zmi/templates/layout.pt:47
-msgid "Add another portlet..."
-msgstr ""
-
-#: ./src/pyams_portal/zmi/templates/layout.pt:54
-msgid "Selected display:"
-msgstr ""
-
-#: ./src/pyams_portal/zmi/templates/layout.pt:59
-msgid "Current device"
-msgstr ""
-
-#: ./src/pyams_portal/zmi/templates/layout.pt:60
-msgid "Extra small device (phone)"
-msgstr ""
-
-#: ./src/pyams_portal/zmi/templates/layout.pt:61
-msgid "Small device (tablet)"
-msgstr ""
-
-#: ./src/pyams_portal/zmi/templates/layout.pt:62
-msgid "Medium desktop device (> 970px)"
-msgstr ""
-
-#: ./src/pyams_portal/zmi/templates/layout.pt:63
-msgid "Large desktop device (> 1170px)"
-msgstr ""
-
-#: ./src/pyams_portal/zmi/templates/layout.pt:110
-msgid "Override parent or template settings"
-msgstr ""
-
-#: ./src/pyams_portal/zmi/templates/layout.pt:129
-msgid "Delete row..."
-msgstr ""
-
-#: ./src/pyams_portal/zmi/templates/layout.pt:138
-msgid "Edit slot properties..."
-msgstr ""
-
-#: ./src/pyams_portal/zmi/templates/layout.pt:145
-msgid "Delete slot..."
-msgstr ""
-
-#: ./src/pyams_portal/zmi/templates/layout.pt:153
-msgid "Edit portlet properties..."
-msgstr ""
-
-#: ./src/pyams_portal/zmi/templates/layout.pt:161
-msgid "Delete portlet..."
-msgstr ""
-
-#: ./src/pyams_portal/portlets/image/__init__.py:60
-msgid "Image"
-msgstr ""
-
-#: ./src/pyams_portal/portlets/image/__init__.py:73
-msgid "Responsive image renderer"
-msgstr ""
-
-#: ./src/pyams_portal/portlets/image/interfaces.py:30
-msgid "Selected image"
-msgstr ""
-
-#: ./src/pyams_portal/portlets/content/__init__.py:46
-msgid "Context content"
-msgstr ""
-
-#: ./src/pyams_portal/portlets/content/__init__.py:56
-msgid "Default content renderer"
-msgstr ""
-
-#: ./src/pyams_portal/portlets/html/__init__.py:53
-msgid "Raw HTML"
-msgstr ""
-
-#: ./src/pyams_portal/portlets/html/__init__.py:65
-msgid "Default code renderer"
-msgstr ""
-
-#: ./src/pyams_portal/portlets/html/__init__.py:87
-msgid "Rich text"
-msgstr ""
-
-#: ./src/pyams_portal/portlets/html/__init__.py:99
-msgid "Default text renderer"
-msgstr ""
-
-#: ./src/pyams_portal/portlets/html/interfaces.py:31
-msgid "Raw HTML code"
-msgstr ""
-
-#: ./src/pyams_portal/portlets/html/interfaces.py:32
-msgid ""
-"This HTML code will be used 'as is', without any transformation. Use with "
-"care!!"
-msgstr ""
-
-#: ./src/pyams_portal/portlets/html/interfaces.py:40
-msgid "Body"
-msgstr ""
-
 #: ./src/pyams_portal/interfaces/__init__.py:65
 msgid "Portlet"
 msgstr ""
--- a/src/pyams_portal/views.py	Mon Jun 11 17:27:57 2018 +0200
+++ b/src/pyams_portal/views.py	Mon Jun 11 17:38:55 2018 +0200
@@ -16,9 +16,9 @@
 # import standard library
 
 # import interfaces
-from pyams_default_theme.layer import IPyAMSDefaultLayer
 from pyams_portal.interfaces import IPortalContext, IPortalPage, IPortalTemplateConfiguration, \
     IPortalPortletsConfiguration, IPortletRenderer, IPortlet
+from pyams_skin.layer import IPyAMSUserLayer
 from pyams_utils.interfaces import VIEW_SYSTEM_PERMISSION
 from pyams_workflow.interfaces import IWorkflowPublicationInfo
 
@@ -30,8 +30,8 @@
 from pyramid.exceptions import NotFound
 
 
-@pagelet_config(name='', context=IPortalContext, layer=IPyAMSDefaultLayer)
-@template_config(template='templates/pagelet.pt', layer=IPyAMSDefaultLayer)
+@pagelet_config(name='', context=IPortalContext, layer=IPyAMSUserLayer)
+@template_config(template='templates/pagelet.pt', layer=IPyAMSUserLayer)
 class PortalContextIndexPage(BaseIndexPage):
     """Portal context index page"""
 
@@ -67,7 +67,7 @@
             return ''
 
 
-@pagelet_config(name='preview.html', context=IPortalContext, layer=IPyAMSDefaultLayer,
+@pagelet_config(name='preview.html', context=IPortalContext, layer=IPyAMSUserLayer,
                 permission=VIEW_SYSTEM_PERMISSION)
 class PortalContextPreviewPage(PortalContextIndexPage):
     """Portal context preview page"""