Updated dashboards "Content type" column
authorThierry Florac <tflorac@ulthar.net>
Wed, 01 Jul 2020 18:05:38 +0200
changeset 1394 ed31bfceddda
parent 1393 9479901b53a5
child 1395 8184dadefc8b
Updated dashboards "Content type" column
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
src/pyams_content/root/zmi/__init__.py
src/pyams_content/shared/blog/zmi/manager.py
src/pyams_content/shared/common/interfaces/zmi.py
src/pyams_content/shared/common/zmi/__init__.py
src/pyams_content/shared/common/zmi/dashboard.py
src/pyams_content/shared/site/zmi/folder.py
src/pyams_content/shared/site/zmi/manager.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 Jul 01 14:10:50 2020 +0200
+++ b/src/pyams_content/locales/fr/LC_MESSAGES/pyams_content.po	Wed Jul 01 18:05:38 2020 +0200
@@ -5,7 +5,7 @@
 msgid ""
 msgstr ""
 "Project-Id-Version: PACKAGE 1.0\n"
-"POT-Creation-Date: 2020-06-24 12:02+0200\n"
+"POT-Creation-Date: 2020-07-01 16:13+0200\n"
 "PO-Revision-Date: 2015-09-10 10:42+0200\n"
 "Last-Translator: Thierry Florac <tflorac@ulthar.net>\n"
 "Language-Team: French\n"
@@ -200,11 +200,11 @@
 #: src/pyams_content/features/search/portlet/interfaces.py:25
 #: src/pyams_content/root/zmi/templates/advanced-search.pt:197
 #: src/pyams_content/shared/view/portlet/interfaces.py:52
-#: src/pyams_content/shared/common/zmi/dashboard.py:122
-#: src/pyams_content/shared/common/zmi/reverse.py:73
+#: src/pyams_content/shared/common/zmi/dashboard.py:128
+#: src/pyams_content/shared/common/zmi/reverse.py:69
 #: src/pyams_content/shared/common/zmi/templates/advanced-search.pt:223
 #: src/pyams_content/shared/site/portlet/interfaces.py:24
-#: src/pyams_content/shared/site/zmi/folder.py:66
+#: src/pyams_content/shared/site/zmi/folder.py:68
 #: src/pyams_content/shared/imagemap/portlet/interfaces.py:28
 #: src/pyams_content/shared/imagemap/zmi/container.py:123
 #: src/pyams_content/shared/logo/interfaces.py:42
@@ -476,7 +476,7 @@
 #: src/pyams_content/component/links/interfaces.py:36
 #: src/pyams_content/component/paragraph/interfaces/audio.py:50
 #: src/pyams_content/component/extfile/interfaces.py:36
-#: src/pyams_content/features/search/interfaces.py:45
+#: src/pyams_content/features/search/interfaces.py:50
 #: src/pyams_content/shared/form/interfaces.py:125
 msgid "Description"
 msgstr "Description"
@@ -1779,7 +1779,7 @@
 #: src/pyams_content/component/paragraph/zmi/__init__.py:262
 #: src/pyams_content/component/paragraph/zmi/__init__.py:275
 #: src/pyams_content/features/review/zmi/__init__.py:84
-#: src/pyams_content/shared/common/zmi/__init__.py:299
+#: src/pyams_content/shared/common/zmi/__init__.py:302
 #: src/pyams_content/shared/common/zmi/owner.py:73
 #: src/pyams_content/shared/common/zmi/workflow.py:119
 #: src/pyams_content/shared/common/zmi/workflow.py:206
@@ -2120,9 +2120,9 @@
 msgid "Add new illustration"
 msgstr "Ajout d'une illustration"
 
-#: src/pyams_content/component/theme/__init__.py:76
-#: src/pyams_content/component/theme/interfaces.py:74
-#: src/pyams_content/component/theme/interfaces.py:88
+#: src/pyams_content/component/theme/__init__.py:73
+#: src/pyams_content/component/theme/interfaces.py:57
+#: src/pyams_content/component/theme/interfaces.py:71
 #: src/pyams_content/component/theme/zmi/portlet.py:40
 #: src/pyams_content/root/zmi/search.py:177
 #: src/pyams_content/root/zmi/templates/advanced-search.pt:181
@@ -2130,160 +2130,100 @@
 msgid "Tags"
 msgstr "Tags"
 
-#: src/pyams_content/component/theme/__init__.py:126
-#: src/pyams_content/component/theme/interfaces.py:115
-#: src/pyams_content/component/theme/interfaces.py:129
+#: src/pyams_content/component/theme/__init__.py:124
+#: src/pyams_content/component/theme/interfaces.py:98
+#: src/pyams_content/component/theme/interfaces.py:112
 #: src/pyams_content/component/theme/zmi/portlet.py:55
 #: src/pyams_content/shared/common/zmi/search.py:197
 msgid "Themes"
 msgstr "Thèmes"
 
-#: src/pyams_content/component/theme/__init__.py:179
-#: src/pyams_content/component/theme/interfaces.py:175
-#: src/pyams_content/component/theme/interfaces.py:189
+#: src/pyams_content/component/theme/__init__.py:175
+#: src/pyams_content/component/theme/interfaces.py:139
+#: src/pyams_content/component/theme/interfaces.py:153
 #: src/pyams_content/component/theme/zmi/portlet.py:70
 #: src/pyams_content/shared/common/zmi/search.py:200
 msgid "Collections"
 msgstr "Collections"
 
-#: src/pyams_content/component/theme/__init__.py:85
+#: src/pyams_content/component/theme/__init__.py:83
 msgid "no defined tag"
 msgstr "aucun tag défini"
 
-#: src/pyams_content/component/theme/__init__.py:135
+#: src/pyams_content/component/theme/__init__.py:134
 msgid "no defined theme"
 msgstr "aucun thème défini"
 
-#: src/pyams_content/component/theme/__init__.py:188
+#: src/pyams_content/component/theme/__init__.py:185
 msgid "no defined collection"
 msgstr "aucune collection définie"
 
-#: src/pyams_content/component/theme/interfaces.py:36
-msgid "Enable search by tag?"
-msgstr "Activer la recherche par tag ?"
-
-#: src/pyams_content/component/theme/interfaces.py:37
-msgid ""
-"If 'yes', displayed tags will lead to a search engine displaying contents "
-"matching given tag"
-msgstr ""
-"Si 'oui', un clic sur un tag permet d'accéder à une page de résultat de "
-"recherche portant sur le tag sélectionné"
-
-#: src/pyams_content/component/theme/interfaces.py:42
-msgid "Tags search target"
-msgstr "Cible de la recherche"
-
-#: src/pyams_content/component/theme/interfaces.py:43
-msgid "Site or folder where tags search is displayed"
-msgstr "Site ou rubrique où la recherche par tags s'effectue"
-
-#: src/pyams_content/component/theme/interfaces.py:52
+#: src/pyams_content/component/theme/interfaces.py:35
 msgid "Enable glossary?"
 msgstr "Activer le glossaire ?"
 
-#: src/pyams_content/component/theme/interfaces.py:57
+#: src/pyams_content/component/theme/interfaces.py:40
 msgid "Glossary thesaurus name"
 msgstr "Thesaurus du glossaire"
 
-#: src/pyams_content/component/theme/interfaces.py:148
-msgid "Enable search by collection?"
-msgstr "Activer la recherche par collection ?"
-
-#: src/pyams_content/component/theme/interfaces.py:149
-msgid ""
-"If 'yes', displayed collections will lead to a search engine displaying "
-"contents matching given collection"
-msgstr ""
-"Si 'oui', un clic sur un nom de collection permet d'accéder à une page de résultat de "
-"recherche portant sur la collection sélectionnée"
-
-#: src/pyams_content/component/theme/interfaces.py:155
-msgid "Collections search target"
-msgstr "Cible de la recherche"
-
-#: src/pyams_content/component/theme/interfaces.py:156
-msgid "Site or folder where collections search is displayed"
-msgstr "Site ou rubrique où la recherche par collections s'effectue"
-
-#: src/pyams_content/component/theme/interfaces.py:50
-msgid "You must specify search target when activating search by tags!"
-msgstr ""
-"Vous devez indiquer la cible de la recherche lorsque vous activez la "
-"recherche par tags !"
-
-#: src/pyams_content/component/theme/interfaces.py:64
+#: src/pyams_content/component/theme/interfaces.py:47
 msgid "You must specify a glossary thesaurus to activate it!"
 msgstr ""
 "Vous devez indiquer le nom du thésaurus contenant les termes du glossaire "
 "pour pouvoir l'activer !"
 
-#: src/pyams_content/component/theme/interfaces.py:164
-msgid "You must specify search target when activating search by collections!"
-msgstr ""
-"Vous devez indiquer la cible de la recherche lorsque vous activez la "
-"recherche par collections !"
-
-#: src/pyams_content/component/theme/zmi/manager.py:46
+#: src/pyams_content/component/theme/zmi/manager.py:47
 msgid "Tags settings..."
 msgstr "Paramétrage des tags"
 
-#: src/pyams_content/component/theme/zmi/manager.py:60
+#: src/pyams_content/component/theme/zmi/manager.py:61
 msgid "Selected tags"
 msgstr "Tags sélectionnés"
 
-#: src/pyams_content/component/theme/zmi/manager.py:118
+#: src/pyams_content/component/theme/zmi/manager.py:111
 msgid "Themes settings..."
 msgstr "Paramétrage des thèmes"
 
-#: src/pyams_content/component/theme/zmi/manager.py:132
+#: src/pyams_content/component/theme/zmi/manager.py:125
 msgid "Selected themes"
 msgstr "Thèmes sélectionnés"
 
-#: src/pyams_content/component/theme/zmi/manager.py:169
+#: src/pyams_content/component/theme/zmi/manager.py:163
 msgid "Collections settings..."
 msgstr "Paramétrage des collections"
 
-#: src/pyams_content/component/theme/zmi/manager.py:183
+#: src/pyams_content/component/theme/zmi/manager.py:177
 msgid "Selected collections"
 msgstr "Collections sélectionnées"
 
 #: src/pyams_content/component/theme/zmi/manager.py:94
-msgid "Enable search by tag"
-msgstr "Activer la recherche par tag"
-
-#: src/pyams_content/component/theme/zmi/manager.py:101
 msgid "Enable glossary"
 msgstr "Activer le glossaire"
 
-#: src/pyams_content/component/theme/zmi/manager.py:217
-msgid "Enable search by collection"
-msgstr "Activer la recherche par collection"
-
-#: src/pyams_content/component/theme/zmi/__init__.py:55
+#: src/pyams_content/component/theme/zmi/__init__.py:51
 #: src/pyams_content/shared/view/zmi/theme.py:49
 msgid "Tags..."
 msgstr "Tags"
 
-#: src/pyams_content/component/theme/zmi/__init__.py:66
+#: src/pyams_content/component/theme/zmi/__init__.py:64
 msgid "Content tags"
 msgstr "Tags du contenu"
 
-#: src/pyams_content/component/theme/zmi/__init__.py:99
+#: src/pyams_content/component/theme/zmi/__init__.py:97
 #: src/pyams_content/shared/view/zmi/theme.py:95
 msgid "Themes..."
 msgstr "Thèmes"
 
-#: src/pyams_content/component/theme/zmi/__init__.py:107
+#: src/pyams_content/component/theme/zmi/__init__.py:105
 msgid "Content themes"
 msgstr "Thèmes du contenu"
 
-#: src/pyams_content/component/theme/zmi/__init__.py:159
+#: src/pyams_content/component/theme/zmi/__init__.py:157
 #: src/pyams_content/shared/view/zmi/theme.py:141
 msgid "Collections..."
 msgstr "Collections"
 
-#: src/pyams_content/component/theme/zmi/__init__.py:172
+#: src/pyams_content/component/theme/zmi/__init__.py:170
 msgid "Content collections"
 msgstr "Collections associées au contenu"
 
@@ -2301,7 +2241,7 @@
 "seront remplacées automatiquement."
 
 #: src/pyams_content/interfaces/__init__.py:102
-#: src/pyams_content/shared/site/zmi/folder.py:67
+#: src/pyams_content/shared/site/zmi/folder.py:69
 msgid "Visible label used to display content"
 msgstr "Le titre présenté aux internautes"
 
@@ -3209,11 +3149,11 @@
 msgid "Search folder"
 msgstr "Moteur de recherche"
 
-#: src/pyams_content/features/search/interfaces.py:35
+#: src/pyams_content/features/search/interfaces.py:37
 msgid "Main search engine"
 msgstr "Moteur de recherche principal"
 
-#: src/pyams_content/features/search/interfaces.py:36
+#: src/pyams_content/features/search/interfaces.py:38
 msgid ""
 "Search folder handling main site search. You can search a reference using "
 "'+' followed by internal number, of by entering text matching content title."
@@ -3223,25 +3163,65 @@
 "d'un '+') ; le titre d'origine peut être modifié en utilisant le titre de "
 "substitution."
 
-#: src/pyams_content/features/search/interfaces.py:41
+#: src/pyams_content/features/search/interfaces.py:46
 msgid "Search engine name"
 msgstr "Nom du moteur"
 
-#: src/pyams_content/features/search/interfaces.py:42
+#: src/pyams_content/features/search/interfaces.py:47
 msgid "Name given to the search engine"
 msgstr "Nom court donné au moteur de recherche"
 
-#: src/pyams_content/features/search/interfaces.py:46
+#: src/pyams_content/features/search/interfaces.py:51
 msgid "Description given to the search engine"
 msgstr "Description du moteur de recherche"
 
-#: src/pyams_content/features/search/interfaces.py:53
+#: src/pyams_content/features/search/interfaces.py:54
+msgid "Enable search by tag?"
+msgstr "Activer la recherche par tag ?"
+
+#: src/pyams_content/features/search/interfaces.py:55
+msgid ""
+"If 'yes', displayed tags will lead to a search engine displaying contents "
+"matching given tag"
+msgstr ""
+"Si 'oui', un clic sur un tag permet d'accéder à une page de résultat de "
+"recherche portant sur le tag sélectionné"
+
+#: src/pyams_content/features/search/interfaces.py:60
+msgid "Tags search target"
+msgstr "Cible de la recherche"
+
+#: src/pyams_content/features/search/interfaces.py:61
+msgid "Site or folder where tags search is displayed"
+msgstr "Site ou rubrique où la recherche par tags s'effectue"
+
+#: src/pyams_content/features/search/interfaces.py:72
+msgid "Enable search by collection?"
+msgstr "Activer la recherche par collection ?"
+
+#: src/pyams_content/features/search/interfaces.py:73
+msgid ""
+"If 'yes', displayed collections will lead to a search engine displaying "
+"contents matching given collection"
+msgstr ""
+"Si 'oui', un clic sur un nom de collection permet d'accéder à une page de "
+"résultat de recherche portant sur la collection sélectionnée"
+
+#: src/pyams_content/features/search/interfaces.py:79
+msgid "Collections search target"
+msgstr "Cible de la recherche"
+
+#: src/pyams_content/features/search/interfaces.py:80
+msgid "Site or folder where collections search is displayed"
+msgstr "Site ou rubrique où la recherche par collections s'effectue"
+
+#: src/pyams_content/features/search/interfaces.py:97
 #: src/pyams_content/shared/common/interfaces/__init__.py:53
 #: src/pyams_content/shared/common/interfaces/__init__.py:209
 msgid "Managers"
 msgstr "Responsables"
 
-#: src/pyams_content/features/search/interfaces.py:54
+#: src/pyams_content/features/search/interfaces.py:98
 #: src/pyams_content/shared/common/interfaces/__init__.py:54
 #: src/pyams_content/shared/common/interfaces/__init__.py:210
 msgid ""
@@ -3252,24 +3232,24 @@
 "(comme la publication ou le retrait des contenus), dans la limite des "
 "restrictions qui leur sont imposées"
 
-#: src/pyams_content/features/search/interfaces.py:59
+#: src/pyams_content/features/search/interfaces.py:103
 #: src/pyams_content/shared/common/interfaces/__init__.py:65
 #: src/pyams_content/shared/common/interfaces/__init__.py:221
 msgid "Designers"
 msgstr "Designers"
 
-#: src/pyams_content/features/search/interfaces.py:60
+#: src/pyams_content/features/search/interfaces.py:104
 #: src/pyams_content/shared/common/interfaces/__init__.py:66
 #: src/pyams_content/shared/common/interfaces/__init__.py:222
 msgid "Designers are users which are allowed to manage presentation templates"
 msgstr "Les designers sont autorisés à configurer les modèles de présentation"
 
-#: src/pyams_content/features/search/interfaces.py:64
+#: src/pyams_content/features/search/interfaces.py:109
 #: src/pyams_content/shared/common/interfaces/__init__.py:233
 msgid "Guests"
 msgstr "Invités"
 
-#: src/pyams_content/features/search/interfaces.py:65
+#: src/pyams_content/features/search/interfaces.py:110
 #: src/pyams_content/shared/common/interfaces/__init__.py:234
 msgid ""
 "Guests are users which are allowed to view contents with restricted access"
@@ -3277,12 +3257,12 @@
 "Les invités sont autorisés à consulter des contenus dont l'accès a été "
 "restreint"
 
-#: src/pyams_content/features/search/interfaces.py:73
+#: src/pyams_content/features/search/interfaces.py:119
 #: src/pyams_content/shared/view/interfaces.py:111
 msgid "Order by"
 msgstr "Ordre de tri"
 
-#: src/pyams_content/features/search/interfaces.py:74
+#: src/pyams_content/features/search/interfaces.py:120
 #: src/pyams_content/shared/view/interfaces.py:112
 msgid ""
 "Property to use to sort results; publication date can be different from "
@@ -3295,25 +3275,25 @@
 "différente (la première date de publication est dans ce cas égale à la date "
 "la plus en arrière dans le temps des deux)"
 
-#: src/pyams_content/features/search/interfaces.py:81
+#: src/pyams_content/features/search/interfaces.py:128
 #: src/pyams_content/shared/site/interfaces.py:97
 msgid "Visible in folders list"
 msgstr "Visible dans la liste des rubriques ?"
 
-#: src/pyams_content/features/search/interfaces.py:82
+#: src/pyams_content/features/search/interfaces.py:129
 #: src/pyams_content/shared/site/interfaces.py:98
 msgid "If 'no', folder will not be displayed into folders list"
 msgstr ""
 "Si 'non', cette rubrique ne sera pas affichée dans la liste des rubriques "
 "affichée par un composant de navigation"
 
-#: src/pyams_content/features/search/interfaces.py:86
+#: src/pyams_content/features/search/interfaces.py:134
 #: src/pyams_content/shared/site/interfaces.py:102
 #: src/pyams_content/shared/site/interfaces.py:171
 msgid "Navigation title"
 msgstr "Titre de navigation"
 
-#: src/pyams_content/features/search/interfaces.py:87
+#: src/pyams_content/features/search/interfaces.py:135
 #: src/pyams_content/shared/site/interfaces.py:103
 msgid ""
 "Folder's title displayed in navigation pages; original title will be used if "
@@ -3322,27 +3302,39 @@
 "Titre de substitution affiché dans les composants de navigation ; si rien "
 "n'est indiqué, le titre original de la rubrique sera utilisé"
 
-#: src/pyams_content/features/search/interfaces.py:91
+#: src/pyams_content/features/search/interfaces.py:140
 msgid "Selected content types"
 msgstr "Gabarits sélectionnés"
 
-#: src/pyams_content/features/search/interfaces.py:92
+#: src/pyams_content/features/search/interfaces.py:141
 msgid "Searched content types; leave empty for all"
 msgstr ""
 "Gabarits sélectionnés ; si cette sélection est vide, tous les gabarits "
 "seront pris en charge"
 
-#: src/pyams_content/features/search/interfaces.py:96
+#: src/pyams_content/features/search/interfaces.py:145
 msgid "Selected data types"
 msgstr "Types de contenus sélectionnés"
 
-#: src/pyams_content/features/search/interfaces.py:97
+#: src/pyams_content/features/search/interfaces.py:146
 msgid "Searched data types; leave empty for all"
 msgstr ""
 "Types de contenus sélectionnés ; si cette sélection est vide, tous les "
 "contenus (typés ou non) seront pris en charge"
 
-#: src/pyams_content/features/search/portlet/__init__.py:97
+#: src/pyams_content/features/search/interfaces.py:70
+msgid "You must specify search target when activating search by tags!"
+msgstr ""
+"Vous devez indiquer la cible de la recherche lorsque vous activez la "
+"recherche par tags !"
+
+#: src/pyams_content/features/search/interfaces.py:90
+msgid "You must specify search target when activating search by collections!"
+msgstr ""
+"Vous devez indiquer la cible de la recherche lorsque vous activez la "
+"recherche par collections !"
+
+#: src/pyams_content/features/search/portlet/__init__.py:99
 msgid "Search results"
 msgstr "Résultats de la recherche"
 
@@ -3381,18 +3373,26 @@
 msgstr "Paramètres de la recherche"
 
 #: src/pyams_content/features/search/zmi/properties.py:71
-#: src/pyams_content/shared/site/zmi/folder.py:203
+#: src/pyams_content/shared/site/zmi/folder.py:212
 msgid "Navigation properties"
 msgstr "Propriétés de navigation"
 
-#: src/pyams_content/features/search/zmi/manager.py:43
+#: src/pyams_content/features/search/zmi/manager.py:45
 msgid "Search settings..."
 msgstr "Moteur de recherche"
 
-#: src/pyams_content/features/search/zmi/manager.py:57
+#: src/pyams_content/features/search/zmi/manager.py:59
 msgid "Search engine settings"
 msgstr "Paramétrage du moteur de recherche"
 
+#: src/pyams_content/features/search/zmi/manager.py:74
+msgid "Enable search by tag"
+msgstr "Activer la recherche par tag"
+
+#: src/pyams_content/features/search/zmi/manager.py:82
+msgid "Enable search by collection"
+msgstr "Activer la recherche par collection"
+
 #: src/pyams_content/features/search/zmi/__init__.py:59
 msgid "This search folder"
 msgstr "Ce moteur de recherche"
@@ -3531,7 +3531,7 @@
 msgid "Admin. profile"
 msgstr "Profil intervenant"
 
-#: src/pyams_content/root/__init__.py:65
+#: src/pyams_content/root/__init__.py:69
 msgid "Site root"
 msgstr "Racine du site"
 
@@ -3594,252 +3594,247 @@
 msgstr "Accueil"
 
 #: src/pyams_content/root/zmi/__init__.py:110
-#: src/pyams_content/shared/common/zmi/dashboard.py:289
+#: src/pyams_content/shared/common/zmi/dashboard.py:304
 msgid "Dashboard"
 msgstr "Tableau de bord"
 
 #: src/pyams_content/root/zmi/__init__.py:159
-#: src/pyams_content/shared/common/zmi/dashboard.py:345
+#: src/pyams_content/shared/common/zmi/dashboard.py:364
 #, python-format
 msgid "MANAGER - {0} content waiting for your action"
 msgstr "RESPONSABLE - {0} contenu en attente de votre intervention"
 
 #: src/pyams_content/root/zmi/__init__.py:160
-#: src/pyams_content/shared/common/zmi/dashboard.py:346
+#: src/pyams_content/shared/common/zmi/dashboard.py:365
 #, python-format
 msgid "MANAGER - {0} contents waiting for your action"
 msgstr "RESPONSABLE - {0} contenus en attente de votre intervention"
 
 #: src/pyams_content/root/zmi/__init__.py:204
-#: src/pyams_content/shared/common/zmi/dashboard.py:387
+#: src/pyams_content/shared/common/zmi/dashboard.py:408
 #, python-format
 msgid "CONTRIBUTOR - {0} content waiting for action"
 msgstr "CONTRIBUTEUR - {0} contenu soumis à un responsable"
 
 #: src/pyams_content/root/zmi/__init__.py:205
-#: src/pyams_content/shared/common/zmi/dashboard.py:388
+#: src/pyams_content/shared/common/zmi/dashboard.py:409
 #, python-format
 msgid "CONTRIBUTOR - {0} contents waiting for action"
 msgstr "CONTRIBUTEUR - {0} contenus soumis à un responsable"
 
 #: src/pyams_content/root/zmi/__init__.py:240
-#: src/pyams_content/shared/common/zmi/dashboard.py:420
+#: src/pyams_content/shared/common/zmi/dashboard.py:443
 #, python-format
 msgid "CONTRIBUTOR - {0} modified content"
 msgstr "CONTRIBUTEUR - {0} contenu modifié"
 
 #: src/pyams_content/root/zmi/__init__.py:283
-#: src/pyams_content/shared/common/zmi/dashboard.py:461
+#: src/pyams_content/shared/common/zmi/dashboard.py:486
 msgid "My contents"
 msgstr "Mes contenus"
 
 #: src/pyams_content/root/zmi/__init__.py:298
 #: src/pyams_content/root/zmi/templates/dashboard.pt:8
-#: src/pyams_content/shared/common/zmi/dashboard.py:476
+#: src/pyams_content/shared/common/zmi/dashboard.py:501
 #: src/pyams_content/shared/common/zmi/templates/dashboard.pt:8
 msgid "My favorites"
 msgstr "Mes favoris"
 
 #: src/pyams_content/root/zmi/__init__.py:307
-#: src/pyams_content/shared/common/zmi/dashboard.py:485
+#: src/pyams_content/shared/common/zmi/dashboard.py:510
 #, python-format
 msgid "CONTRIBUTOR - {0} favorite"
 msgstr "CONTRIBUTEUR - {0} contenu favori"
 
 #: src/pyams_content/root/zmi/__init__.py:308
-#: src/pyams_content/shared/common/zmi/dashboard.py:486
+#: src/pyams_content/shared/common/zmi/dashboard.py:511
 #, python-format
 msgid "CONTRIBUTOR - {0} favorites"
 msgstr "CONTRIBUTEUR - {0} contenus favoris"
 
 #: src/pyams_content/root/zmi/__init__.py:346
-#: src/pyams_content/shared/common/zmi/dashboard.py:561
+#: src/pyams_content/shared/common/zmi/dashboard.py:588
 msgid "Your favorite contents"
 msgstr "Mes contenus favoris"
 
 #: src/pyams_content/root/zmi/__init__.py:359
-#: src/pyams_content/shared/common/zmi/dashboard.py:574
+#: src/pyams_content/shared/common/zmi/dashboard.py:601
 msgid "My drafts"
 msgstr "Mes brouillons"
 
 #: src/pyams_content/root/zmi/__init__.py:368
-#: src/pyams_content/shared/common/zmi/dashboard.py:583
+#: src/pyams_content/shared/common/zmi/dashboard.py:610
 #, python-format
 msgid "CONTRIBUTOR - {0} content in preparation"
 msgstr "CONTRIBUTEUR - {0} contenu en préparation"
 
 #: src/pyams_content/root/zmi/__init__.py:369
-#: src/pyams_content/shared/common/zmi/dashboard.py:584
+#: src/pyams_content/shared/common/zmi/dashboard.py:611
 #, python-format
 msgid "CONTRIBUTOR - {0} contents in preparation"
 msgstr "CONTRIBUTEUR - {0} contenus en préparation"
 
 #: src/pyams_content/root/zmi/__init__.py:408
-#: src/pyams_content/shared/common/zmi/dashboard.py:625
+#: src/pyams_content/shared/common/zmi/dashboard.py:654
 msgid "Your prepared contents"
 msgstr "Mes contenus en préparation"
 
 #: src/pyams_content/root/zmi/__init__.py:421
-#: src/pyams_content/shared/common/zmi/dashboard.py:638
+#: src/pyams_content/shared/common/zmi/dashboard.py:667
 msgid "My submissions"
 msgstr "Mes demandes"
 
 #: src/pyams_content/root/zmi/__init__.py:430
-#: src/pyams_content/shared/common/zmi/dashboard.py:647
+#: src/pyams_content/shared/common/zmi/dashboard.py:676
 #, python-format
 msgid "CONTRIBUTOR - {0} submitted content"
 msgstr "CONTRIBUTEUR - {0} contenu soumis à un responsable"
 
 #: src/pyams_content/root/zmi/__init__.py:431
-#: src/pyams_content/shared/common/zmi/dashboard.py:648
+#: src/pyams_content/shared/common/zmi/dashboard.py:677
 #, python-format
 msgid "CONTRIBUTOR - {0} submitted contents"
 msgstr "CONTRIBUTEUR - {0} contenus soumis à un responsable"
 
 #: src/pyams_content/root/zmi/__init__.py:470
-#: src/pyams_content/shared/common/zmi/dashboard.py:689
+#: src/pyams_content/shared/common/zmi/dashboard.py:720
 msgid "Your submitted contents"
 msgstr "Mes contenus soumis à un responsable"
 
 #: src/pyams_content/root/zmi/__init__.py:483
-#: src/pyams_content/shared/common/zmi/dashboard.py:702
+#: src/pyams_content/shared/common/zmi/dashboard.py:733
 msgid "My publications"
 msgstr "Mes publications"
 
 #: src/pyams_content/root/zmi/__init__.py:492
-#: src/pyams_content/shared/common/zmi/dashboard.py:711
+#: src/pyams_content/shared/common/zmi/dashboard.py:742
 #, python-format
 msgid "CONTRIBUTOR - {0} published content"
 msgstr "CONTRIBUTEUR - {0} contenu publié"
 
 #: src/pyams_content/root/zmi/__init__.py:493
-#: src/pyams_content/shared/common/zmi/dashboard.py:712
+#: src/pyams_content/shared/common/zmi/dashboard.py:743
 #, python-format
 msgid "CONTRIBUTOR - {0} published contents"
 msgstr "CONTRIBUTEUR - {0} contenus publiés"
 
 #: src/pyams_content/root/zmi/__init__.py:532
-#: src/pyams_content/shared/common/zmi/dashboard.py:753
+#: src/pyams_content/shared/common/zmi/dashboard.py:786
 msgid "Your published contents"
 msgstr "Mes contenus publiés"
 
 #: src/pyams_content/root/zmi/__init__.py:545
-#: src/pyams_content/shared/common/zmi/dashboard.py:766
+#: src/pyams_content/shared/common/zmi/dashboard.py:799
 msgid "My retired contents"
 msgstr "Mes contenus retirés"
 
 #: src/pyams_content/root/zmi/__init__.py:554
-#: src/pyams_content/shared/common/zmi/dashboard.py:775
+#: src/pyams_content/shared/common/zmi/dashboard.py:808
 #, python-format
 msgid "CONTRIBUTOR - {0} retired content"
 msgstr "CONTRIBUTEUR - {0} contenu retiré"
 
 #: src/pyams_content/root/zmi/__init__.py:555
-#: src/pyams_content/shared/common/zmi/dashboard.py:776
+#: src/pyams_content/shared/common/zmi/dashboard.py:809
 #, python-format
 msgid "CONTRIBUTOR - {0} retired contents"
 msgstr "CONTRIBUTEUR - {0} contenus retirés"
 
 #: src/pyams_content/root/zmi/__init__.py:595
-#: src/pyams_content/shared/common/zmi/dashboard.py:817
+#: src/pyams_content/shared/common/zmi/dashboard.py:852
 msgid "Your retired contents"
 msgstr "Mes contenus retirés"
 
 #: src/pyams_content/root/zmi/__init__.py:608
-#: src/pyams_content/shared/common/zmi/dashboard.py:830
+#: src/pyams_content/shared/common/zmi/dashboard.py:865
 msgid "My archived contents"
 msgstr "Mes contenus archivés"
 
 #: src/pyams_content/root/zmi/__init__.py:617
-#: src/pyams_content/shared/common/zmi/dashboard.py:839
+#: src/pyams_content/shared/common/zmi/dashboard.py:874
 #, python-format
 msgid "CONTRIBUTOR - {0} archived content"
 msgstr "CONTRIBUTEUR - {0} contenu archivé"
 
 #: src/pyams_content/root/zmi/__init__.py:618
-#: src/pyams_content/shared/common/zmi/dashboard.py:840
+#: src/pyams_content/shared/common/zmi/dashboard.py:875
 #, python-format
 msgid "CONTRIBUTOR - {0} archived contents"
 msgstr "CONTRIBUTEUR - {0} contenus archivés"
 
 #: src/pyams_content/root/zmi/__init__.py:664
-#: src/pyams_content/shared/common/zmi/dashboard.py:887
+#: src/pyams_content/shared/common/zmi/dashboard.py:924
 msgid "Your archived contents"
 msgstr "Mes contenus archivés"
 
 #: src/pyams_content/root/zmi/__init__.py:678
-#: src/pyams_content/shared/common/zmi/dashboard.py:901
+#: src/pyams_content/shared/common/zmi/dashboard.py:938
 msgid "Other interventions"
 msgstr "Toutes les interventions"
 
 #: src/pyams_content/root/zmi/__init__.py:693
-#: src/pyams_content/shared/common/zmi/dashboard.py:916
+#: src/pyams_content/shared/common/zmi/dashboard.py:953
 msgid "Last publications"
 msgstr "Dernières publications"
 
 #: src/pyams_content/root/zmi/__init__.py:702
-#: src/pyams_content/shared/common/zmi/dashboard.py:925
+#: src/pyams_content/shared/common/zmi/dashboard.py:962
 #, python-format
 msgid "CONTRIBUTORS - {0} published content"
 msgstr "TOUS CONTRIBUTEURS - {0} contenu publié"
 
 #: src/pyams_content/root/zmi/__init__.py:748
-#: src/pyams_content/shared/common/zmi/dashboard.py:972
+#: src/pyams_content/shared/common/zmi/dashboard.py:1011
 msgid "Last published contents"
 msgstr "Derniers contenus publiés"
 
 #: src/pyams_content/root/zmi/__init__.py:761
-#: src/pyams_content/shared/common/zmi/dashboard.py:985
+#: src/pyams_content/shared/common/zmi/dashboard.py:1024
 msgid "Last updates"
 msgstr "Dernières modifications"
 
 #: src/pyams_content/root/zmi/__init__.py:770
-#: src/pyams_content/shared/common/zmi/dashboard.py:994
+#: src/pyams_content/shared/common/zmi/dashboard.py:1033
 #, python-format
 msgid "CONTRIBUTORS - {0} updated content"
 msgstr "TOUS CONTRIBUTEURS - {0} contenu modifié"
 
 #: src/pyams_content/root/zmi/__init__.py:814
-#: src/pyams_content/shared/common/zmi/dashboard.py:1039
+#: src/pyams_content/shared/common/zmi/dashboard.py:1080
 msgid "Last updated contents"
 msgstr "Derniers contenus modifiés"
 
-#: src/pyams_content/root/zmi/__init__.py:825
-#: src/pyams_content/shared/site/zmi/container.py:461
-msgid "Content"
-msgstr "Contenu"
-
 #: src/pyams_content/root/zmi/__init__.py:245
-#: src/pyams_content/shared/common/zmi/dashboard.py:425
+#: src/pyams_content/shared/common/zmi/dashboard.py:448
 #, python-format
 msgid "CONTRIBUTOR - {0} modified contents"
 msgstr "CONTRIBUTEUR - {0} contenus modifiés"
 
 #: src/pyams_content/root/zmi/__init__.py:247
-#: src/pyams_content/shared/common/zmi/dashboard.py:427
+#: src/pyams_content/shared/common/zmi/dashboard.py:450
 #, python-format
 msgid "CONTRIBUTOR - Last {0} modified contents"
 msgstr "CONTRIBUTEUR - Les {0} dernières modifications"
 
 #: src/pyams_content/root/zmi/__init__.py:707
-#: src/pyams_content/shared/common/zmi/dashboard.py:930
+#: src/pyams_content/shared/common/zmi/dashboard.py:967
 #, python-format
 msgid "CONTRIBUTORS - Last {0} published contents"
 msgstr "TOUS CONTRIBUTEURS - Les {0} dernières publications"
 
 #: src/pyams_content/root/zmi/__init__.py:709
-#: src/pyams_content/shared/common/zmi/dashboard.py:932
+#: src/pyams_content/shared/common/zmi/dashboard.py:969
 msgid "CONTRIBUTORS - Last published contents (in the limit of 50)"
 msgstr "TOUS CONTRIBUTEURS - Les {0} dernières publications"
 
 #: src/pyams_content/root/zmi/__init__.py:775
-#: src/pyams_content/shared/common/zmi/dashboard.py:999
+#: src/pyams_content/shared/common/zmi/dashboard.py:1038
 #, python-format
 msgid "CONTRIBUTORS - Last {0} updated contents"
 msgstr "TOUS CONTRIBUTEURS - Les {0} dernières modifications"
 
 #: src/pyams_content/root/zmi/__init__.py:777
-#: src/pyams_content/shared/common/zmi/dashboard.py:1001
+#: src/pyams_content/shared/common/zmi/dashboard.py:1040
 msgid "CONTRIBUTORS - Last updated contents (in the limit of 50)"
 msgstr "TOUS CONTRIBUTEURS - Les {0} dernières modifications"
 
@@ -3865,7 +3860,7 @@
 msgstr "Types de contenus"
 
 #: src/pyams_content/root/zmi/search.py:162
-#: src/pyams_content/shared/common/zmi/dashboard.py:244
+#: src/pyams_content/shared/common/zmi/dashboard.py:258
 #: src/pyams_content/shared/common/zmi/search.py:171
 #: src/pyams_content/shared/common/zmi/types/updater.py:65
 msgid "Owner"
@@ -4844,7 +4839,7 @@
 "Si 'oui', les collections associées au contexte d'application de la vue "
 "seront automatiquement sélectionnés"
 
-#: src/pyams_content/shared/view/interfaces.py:294
+#: src/pyams_content/shared/view/interfaces.py:295
 msgid "Other collections"
 msgstr "Autres collections"
 
@@ -5067,7 +5062,7 @@
 #: src/pyams_content/shared/common/interfaces/__init__.py:182
 #: src/pyams_content/shared/site/interfaces.py:93
 #: src/pyams_content/shared/site/interfaces.py:138
-#: src/pyams_content/shared/site/zmi/folder.py:74
+#: src/pyams_content/shared/site/zmi/folder.py:76
 msgid "Notepad"
 msgstr "Bloc-notes"
 
@@ -5075,51 +5070,51 @@
 #: src/pyams_content/shared/common/interfaces/__init__.py:183
 #: src/pyams_content/shared/site/interfaces.py:94
 #: src/pyams_content/shared/site/interfaces.py:139
-#: src/pyams_content/shared/site/zmi/folder.py:75
+#: src/pyams_content/shared/site/zmi/folder.py:77
 msgid "Internal information to be known about this content"
 msgstr ""
 "Pour prendre note d'informations internes utiles ou importantes à propos de "
 "ce contenu ; ces notes ne seront pas publiées sur internet."
 
-#: src/pyams_content/shared/blog/zmi/manager.py:57
+#: src/pyams_content/shared/blog/zmi/manager.py:68
 msgid "Blog management"
 msgstr "Gérer ce blog"
 
-#: src/pyams_content/shared/blog/zmi/manager.py:80
-#: src/pyams_content/shared/blog/zmi/manager.py:94
-msgid "Add blog manager"
-msgstr "Ajouter un blog"
-
 #: src/pyams_content/shared/blog/zmi/manager.py:93
+#: src/pyams_content/shared/blog/zmi/manager.py:107
+msgid "Add blog manager"
+msgstr "Ajouter un blog"
+
+#: src/pyams_content/shared/blog/zmi/manager.py:106
 msgid "Blog manager"
 msgstr "Blog"
 
-#: src/pyams_content/shared/blog/zmi/manager.py:148
+#: src/pyams_content/shared/blog/zmi/manager.py:166
 msgid "Blog properties"
 msgstr "Propriétés du blog"
 
-#: src/pyams_content/shared/blog/zmi/manager.py:163
-#: src/pyams_content/shared/blog/zmi/manager.py:175
+#: src/pyams_content/shared/blog/zmi/manager.py:183
+#: src/pyams_content/shared/blog/zmi/manager.py:195
 #: src/pyams_content/shared/site/zmi/container.py:153
 #: src/pyams_content/shared/site/zmi/container.py:165
 msgid "Publication dates..."
 msgstr "Dates de publication"
 
-#: src/pyams_content/shared/blog/zmi/manager.py:189
+#: src/pyams_content/shared/blog/zmi/manager.py:209
 #: src/pyams_content/shared/site/zmi/container.py:179
 msgid "Update publication dates"
 msgstr "Dates de publication"
 
-#: src/pyams_content/shared/blog/zmi/manager.py:124
-#: src/pyams_content/shared/site/zmi/manager.py:163
+#: src/pyams_content/shared/blog/zmi/manager.py:137
+#: src/pyams_content/shared/site/zmi/manager.py:176
 msgid "You must provide a short name for default server language!"
 msgstr "Vous devez fournir un nom court pour la langue par défaut du serveur !"
 
-#: src/pyams_content/shared/blog/zmi/manager.py:128
+#: src/pyams_content/shared/blog/zmi/manager.py:142
 msgid "Specified blog manager name is already used!"
 msgstr "Le nom indiqué pour ce blog existe déjà !"
 
-#: src/pyams_content/shared/blog/zmi/manager.py:132
+#: src/pyams_content/shared/blog/zmi/manager.py:147
 msgid "A blog manager is already registered with this name!!"
 msgstr "Un blog est déjà inscrit dans le registre avec ce nom !"
 
@@ -5137,19 +5132,19 @@
 msgid "Blog post « {title} »"
 msgstr "Article « {title} »"
 
-#: src/pyams_content/shared/common/__init__.py:268
+#: src/pyams_content/shared/common/__init__.py:274
 #: src/pyams_content/shared/common/zmi/properties.py:66
 #: src/pyams_content/shared/common/zmi/manager.py:96
 msgid "Properties"
 msgstr "Propriétés"
 
-#: src/pyams_content/shared/common/__init__.py:178
-#: src/pyams_content/shared/common/__init__.py:186
+#: src/pyams_content/shared/common/__init__.py:184
+#: src/pyams_content/shared/common/__init__.py:192
 #, python-format
 msgid "{date} by {principal}"
 msgstr "{date} par {principal}"
 
-#: src/pyams_content/shared/common/__init__.py:291
+#: src/pyams_content/shared/common/__init__.py:300
 #, python-format
 msgid "title length should be between 40 and 66 characters ({length} actually)"
 msgstr ""
@@ -5589,7 +5584,7 @@
 msgstr "depuis {date}"
 
 #: src/pyams_content/shared/common/zmi/header.py:91
-#: src/pyams_content/shared/common/zmi/dashboard.py:184
+#: src/pyams_content/shared/common/zmi/dashboard.py:194
 msgid "Content publication start date is not passed yet"
 msgstr "La date de début de publication n'est pas encore atteinte"
 
@@ -5654,46 +5649,50 @@
 msgid "Tool management"
 msgstr "Gérer cet outil"
 
-#: src/pyams_content/shared/common/zmi/dashboard.py:105
+#: src/pyams_content/shared/common/zmi/dashboard.py:107
+msgid "Content type"
+msgstr "Type de contenu"
+
+#: src/pyams_content/shared/common/zmi/dashboard.py:121
 msgid "Type"
 msgstr "Type"
 
-#: src/pyams_content/shared/common/zmi/dashboard.py:147
+#: src/pyams_content/shared/common/zmi/dashboard.py:156
 msgid "Unique ID"
 msgstr "N° IN"
 
-#: src/pyams_content/shared/common/zmi/dashboard.py:167
+#: src/pyams_content/shared/common/zmi/dashboard.py:177
 #: src/pyams_content/shared/common/zmi/search.py:174
 msgid "Status"
 msgstr "Statut"
 
-#: src/pyams_content/shared/common/zmi/dashboard.py:194
+#: src/pyams_content/shared/common/zmi/dashboard.py:205
 msgid "Status date"
 msgstr "En date du"
 
-#: src/pyams_content/shared/common/zmi/dashboard.py:211
+#: src/pyams_content/shared/common/zmi/dashboard.py:223
 #: src/pyams_content/shared/common/zmi/summary.py:165
 msgid "Version"
 msgstr "Version"
 
-#: src/pyams_content/shared/common/zmi/dashboard.py:226
+#: src/pyams_content/shared/common/zmi/dashboard.py:239
 msgid "Status principal"
 msgstr "Intervenant"
 
-#: src/pyams_content/shared/common/zmi/dashboard.py:266
+#: src/pyams_content/shared/common/zmi/dashboard.py:281
 msgid "Last modification"
 msgstr "Dernière modification"
 
-#: src/pyams_content/shared/common/zmi/dashboard.py:299
+#: src/pyams_content/shared/common/zmi/dashboard.py:315
 msgid "Contents dashboard"
 msgstr "Mon tableau de bord"
 
-#: src/pyams_content/shared/common/zmi/dashboard.py:498
+#: src/pyams_content/shared/common/zmi/dashboard.py:523
 #: src/pyams_content/shared/common/zmi/templates/header.pt:26
 msgid "Add/remove from favorites"
 msgstr "Ajouter/enlever des favoris"
 
-#: src/pyams_content/shared/common/zmi/dashboard.py:322
+#: src/pyams_content/shared/common/zmi/dashboard.py:339
 #, python-format
 msgid "SEARCH - Between all contents of type &laquo;&nbsp;{type}&nbsp;&raquo;"
 msgstr "RECHERCHE - Tous contenus &laquo;&nbsp;{type}&nbsp;&raquo; confondus"
@@ -5787,30 +5786,30 @@
 "autorisé à gérer. Si vous indiquez plusieurs critères, il pourra gérer les "
 "contenus pour lesquels au moins l'un des critères correspond."
 
-#: src/pyams_content/shared/common/zmi/__init__.py:289
+#: src/pyams_content/shared/common/zmi/__init__.py:292
 msgid "Duplicate content..."
 msgstr "Dupliquer le contenu"
 
-#: src/pyams_content/shared/common/zmi/__init__.py:309
+#: src/pyams_content/shared/common/zmi/__init__.py:312
 msgid "Duplicate content"
 msgstr "Dupliquer ce contenu"
 
-#: src/pyams_content/shared/common/zmi/__init__.py:85
+#: src/pyams_content/shared/common/zmi/__init__.py:88
 msgid "This title can be modified afterwards"
 msgstr "Pourra être modifié ultérieurement"
 
-#: src/pyams_content/shared/common/zmi/__init__.py:300
+#: src/pyams_content/shared/common/zmi/__init__.py:303
 msgid "Duplicate this content"
 msgstr "Dupliquer ce contenu"
 
-#: src/pyams_content/shared/common/zmi/__init__.py:357
+#: src/pyams_content/shared/common/zmi/__init__.py:360
 #, python-format
 msgid "Clone created from version {source} of {oid} (in « {state} » state)"
 msgstr ""
 "Duplication de la version {source} du contenu {oid} (alors en statut "
 "« {state} »)"
 
-#: src/pyams_content/shared/common/zmi/__init__.py:403
+#: src/pyams_content/shared/common/zmi/__init__.py:434
 msgid "Created or modified in this version"
 msgstr "Créé ou modifié dans cette version"
 
@@ -5988,11 +5987,11 @@
 msgid "{state} {date}"
 msgstr "{state} {date}"
 
-#: src/pyams_content/shared/common/zmi/reverse.py:57
+#: src/pyams_content/shared/common/zmi/reverse.py:53
 msgid "Reverse links"
 msgstr "Liens amont"
 
-#: src/pyams_content/shared/common/zmi/reverse.py:66
+#: src/pyams_content/shared/common/zmi/reverse.py:62
 msgid "Content's internal links"
 msgstr "Autres contenus qui pointent vers ce contenu"
 
@@ -6445,7 +6444,7 @@
 msgstr "Actualité « {title} »"
 
 #: src/pyams_content/shared/site/manager.py:68
-#: src/pyams_content/shared/site/zmi/manager.py:121
+#: src/pyams_content/shared/site/zmi/manager.py:133
 msgid "Site manager"
 msgstr "Site"
 
@@ -6582,7 +6581,11 @@
 msgid "Folders and topics"
 msgstr "Rubriquage"
 
-#: src/pyams_content/shared/site/zmi/container.py:557
+#: src/pyams_content/shared/site/zmi/container.py:462
+msgid "Content"
+msgstr "Contenu"
+
+#: src/pyams_content/shared/site/zmi/container.py:559
 msgid "Delete site item"
 msgstr "Supprimer ce contenu"
 
@@ -6642,54 +6645,54 @@
 "Impossible de déplacer une rubrique dans l'une de ses sous-rubriques ou "
 "contenus ! Rechargement de la page..."
 
-#: src/pyams_content/shared/site/zmi/manager.py:53
+#: src/pyams_content/shared/site/zmi/manager.py:63
 msgid "Site management"
 msgstr "Gérer ce site"
 
-#: src/pyams_content/shared/site/zmi/manager.py:108
-#: src/pyams_content/shared/site/zmi/manager.py:122
+#: src/pyams_content/shared/site/zmi/manager.py:120
+#: src/pyams_content/shared/site/zmi/manager.py:134
 msgid "Add site manager"
 msgstr "Ajouter un site"
 
-#: src/pyams_content/shared/site/zmi/manager.py:150
-#: src/pyams_content/shared/site/zmi/folder.py:185
+#: src/pyams_content/shared/site/zmi/manager.py:163
+#: src/pyams_content/shared/site/zmi/folder.py:194
 msgid "Site folder properties"
 msgstr "Propriétés de la rubrique"
 
-#: src/pyams_content/shared/site/zmi/manager.py:167
+#: src/pyams_content/shared/site/zmi/manager.py:181
 msgid "Specified site manager name is already used!"
 msgstr "Le nom indiqué pour ce site existe déjà !"
 
-#: src/pyams_content/shared/site/zmi/manager.py:171
+#: src/pyams_content/shared/site/zmi/manager.py:185
 msgid "A site manager is already registered with this name!!"
 msgstr "Un site est déjà inscrit dans le registre avec ce nom !"
 
-#: src/pyams_content/shared/site/zmi/folder.py:57
+#: src/pyams_content/shared/site/zmi/folder.py:59
 msgid "Add site folder..."
 msgstr "Rubrique"
 
-#: src/pyams_content/shared/site/zmi/folder.py:89
+#: src/pyams_content/shared/site/zmi/folder.py:91
 msgid "Add site folder"
 msgstr "Ajout d'une rubrique"
 
-#: src/pyams_content/shared/site/zmi/folder.py:156
+#: src/pyams_content/shared/site/zmi/folder.py:158
 msgid "Site folder management"
 msgstr "Gérer cette rubrique"
 
-#: src/pyams_content/shared/site/zmi/folder.py:70
+#: src/pyams_content/shared/site/zmi/folder.py:72
 #: src/pyams_content/shared/site/zmi/link.py:75
 #: src/pyams_content/shared/site/zmi/link.py:227
 #: src/pyams_content/shared/site/zmi/__init__.py:62
 msgid "Parent"
 msgstr "Niveau parent"
 
-#: src/pyams_content/shared/site/zmi/folder.py:71
+#: src/pyams_content/shared/site/zmi/folder.py:73
 #: src/pyams_content/shared/site/zmi/link.py:76
 #: src/pyams_content/shared/site/zmi/link.py:228
 msgid "Folder's parent"
 msgstr "Niveau de rattachement de cette rubrique"
 
-#: src/pyams_content/shared/site/zmi/folder.py:149
+#: src/pyams_content/shared/site/zmi/folder.py:151
 msgid "You must provide a folder name for default server language!"
 msgstr ""
 "Vous devez fournir un nom pour ce dossier pour la langue par défaut du "
@@ -7329,6 +7332,9 @@
 msgid "Published version {0}"
 msgstr "Version {0} publiée"
 
+#~ msgid "Content / type"
+#~ msgstr "Gabarit / type"
+
 #~ msgid "If 'yes', a captcha will be added automatically to the form"
 #~ msgstr "Si 'oui', un captcha sera ajouté automatiquement au formulaire"
 
--- a/src/pyams_content/locales/pyams_content.pot	Wed Jul 01 14:10:50 2020 +0200
+++ b/src/pyams_content/locales/pyams_content.pot	Wed Jul 01 18:05:38 2020 +0200
@@ -6,7 +6,7 @@
 msgid ""
 msgstr ""
 "Project-Id-Version: PACKAGE 1.0\n"
-"POT-Creation-Date: 2020-06-24 12:02+0200\n"
+"POT-Creation-Date: 2020-07-01 16:13+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"
@@ -197,11 +197,11 @@
 #: ./src/pyams_content/features/search/portlet/interfaces.py:25
 #: ./src/pyams_content/root/zmi/templates/advanced-search.pt:197
 #: ./src/pyams_content/shared/view/portlet/interfaces.py:52
-#: ./src/pyams_content/shared/common/zmi/dashboard.py:122
-#: ./src/pyams_content/shared/common/zmi/reverse.py:73
+#: ./src/pyams_content/shared/common/zmi/dashboard.py:128
+#: ./src/pyams_content/shared/common/zmi/reverse.py:69
 #: ./src/pyams_content/shared/common/zmi/templates/advanced-search.pt:223
 #: ./src/pyams_content/shared/site/portlet/interfaces.py:24
-#: ./src/pyams_content/shared/site/zmi/folder.py:66
+#: ./src/pyams_content/shared/site/zmi/folder.py:68
 #: ./src/pyams_content/shared/imagemap/portlet/interfaces.py:28
 #: ./src/pyams_content/shared/imagemap/zmi/container.py:123
 #: ./src/pyams_content/shared/logo/interfaces.py:42
@@ -460,7 +460,7 @@
 #: ./src/pyams_content/component/links/interfaces.py:36
 #: ./src/pyams_content/component/paragraph/interfaces/audio.py:50
 #: ./src/pyams_content/component/extfile/interfaces.py:36
-#: ./src/pyams_content/features/search/interfaces.py:45
+#: ./src/pyams_content/features/search/interfaces.py:50
 #: ./src/pyams_content/shared/form/interfaces.py:125
 msgid "Description"
 msgstr ""
@@ -1674,7 +1674,7 @@
 #: ./src/pyams_content/component/paragraph/zmi/__init__.py:262
 #: ./src/pyams_content/component/paragraph/zmi/__init__.py:275
 #: ./src/pyams_content/features/review/zmi/__init__.py:84
-#: ./src/pyams_content/shared/common/zmi/__init__.py:299
+#: ./src/pyams_content/shared/common/zmi/__init__.py:302
 #: ./src/pyams_content/shared/common/zmi/owner.py:73
 #: ./src/pyams_content/shared/common/zmi/workflow.py:119
 #: ./src/pyams_content/shared/common/zmi/workflow.py:206
@@ -1996,9 +1996,9 @@
 msgid "Add new illustration"
 msgstr ""
 
-#: ./src/pyams_content/component/theme/__init__.py:76
-#: ./src/pyams_content/component/theme/interfaces.py:74
-#: ./src/pyams_content/component/theme/interfaces.py:88
+#: ./src/pyams_content/component/theme/__init__.py:73
+#: ./src/pyams_content/component/theme/interfaces.py:57
+#: ./src/pyams_content/component/theme/interfaces.py:71
 #: ./src/pyams_content/component/theme/zmi/portlet.py:40
 #: ./src/pyams_content/root/zmi/search.py:177
 #: ./src/pyams_content/root/zmi/templates/advanced-search.pt:181
@@ -2006,150 +2006,98 @@
 msgid "Tags"
 msgstr ""
 
-#: ./src/pyams_content/component/theme/__init__.py:126
-#: ./src/pyams_content/component/theme/interfaces.py:115
-#: ./src/pyams_content/component/theme/interfaces.py:129
+#: ./src/pyams_content/component/theme/__init__.py:124
+#: ./src/pyams_content/component/theme/interfaces.py:98
+#: ./src/pyams_content/component/theme/interfaces.py:112
 #: ./src/pyams_content/component/theme/zmi/portlet.py:55
 #: ./src/pyams_content/shared/common/zmi/search.py:197
 msgid "Themes"
 msgstr ""
 
-#: ./src/pyams_content/component/theme/__init__.py:179
-#: ./src/pyams_content/component/theme/interfaces.py:175
-#: ./src/pyams_content/component/theme/interfaces.py:189
+#: ./src/pyams_content/component/theme/__init__.py:175
+#: ./src/pyams_content/component/theme/interfaces.py:139
+#: ./src/pyams_content/component/theme/interfaces.py:153
 #: ./src/pyams_content/component/theme/zmi/portlet.py:70
 #: ./src/pyams_content/shared/common/zmi/search.py:200
 msgid "Collections"
 msgstr ""
 
-#: ./src/pyams_content/component/theme/__init__.py:85
+#: ./src/pyams_content/component/theme/__init__.py:83
 msgid "no defined tag"
 msgstr ""
 
-#: ./src/pyams_content/component/theme/__init__.py:135
+#: ./src/pyams_content/component/theme/__init__.py:134
 msgid "no defined theme"
 msgstr ""
 
-#: ./src/pyams_content/component/theme/__init__.py:188
+#: ./src/pyams_content/component/theme/__init__.py:185
 msgid "no defined collection"
 msgstr ""
 
-#: ./src/pyams_content/component/theme/interfaces.py:36
-msgid "Enable search by tag?"
-msgstr ""
-
-#: ./src/pyams_content/component/theme/interfaces.py:37
-msgid ""
-"If 'yes', displayed tags will lead to a search engine displaying contents "
-"matching given tag"
-msgstr ""
-
-#: ./src/pyams_content/component/theme/interfaces.py:42
-msgid "Tags search target"
-msgstr ""
-
-#: ./src/pyams_content/component/theme/interfaces.py:43
-msgid "Site or folder where tags search is displayed"
-msgstr ""
-
-#: ./src/pyams_content/component/theme/interfaces.py:52
+#: ./src/pyams_content/component/theme/interfaces.py:35
 msgid "Enable glossary?"
 msgstr ""
 
-#: ./src/pyams_content/component/theme/interfaces.py:57
+#: ./src/pyams_content/component/theme/interfaces.py:40
 msgid "Glossary thesaurus name"
 msgstr ""
 
-#: ./src/pyams_content/component/theme/interfaces.py:148
-msgid "Enable search by collection?"
-msgstr ""
-
-#: ./src/pyams_content/component/theme/interfaces.py:149
-msgid ""
-"If 'yes', displayed collections will lead to a search engine displaying "
-"contents matching given collection"
-msgstr ""
-
-#: ./src/pyams_content/component/theme/interfaces.py:155
-msgid "Collections search target"
-msgstr ""
-
-#: ./src/pyams_content/component/theme/interfaces.py:156
-msgid "Site or folder where collections search is displayed"
-msgstr ""
-
-#: ./src/pyams_content/component/theme/interfaces.py:50
-msgid "You must specify search target when activating search by tags!"
-msgstr ""
-
-#: ./src/pyams_content/component/theme/interfaces.py:64
+#: ./src/pyams_content/component/theme/interfaces.py:47
 msgid "You must specify a glossary thesaurus to activate it!"
 msgstr ""
 
-#: ./src/pyams_content/component/theme/interfaces.py:164
-msgid "You must specify search target when activating search by collections!"
-msgstr ""
-
-#: ./src/pyams_content/component/theme/zmi/manager.py:46
+#: ./src/pyams_content/component/theme/zmi/manager.py:47
 msgid "Tags settings..."
 msgstr ""
 
-#: ./src/pyams_content/component/theme/zmi/manager.py:60
+#: ./src/pyams_content/component/theme/zmi/manager.py:61
 msgid "Selected tags"
 msgstr ""
 
-#: ./src/pyams_content/component/theme/zmi/manager.py:118
+#: ./src/pyams_content/component/theme/zmi/manager.py:111
 msgid "Themes settings..."
 msgstr ""
 
-#: ./src/pyams_content/component/theme/zmi/manager.py:132
+#: ./src/pyams_content/component/theme/zmi/manager.py:125
 msgid "Selected themes"
 msgstr ""
 
-#: ./src/pyams_content/component/theme/zmi/manager.py:169
+#: ./src/pyams_content/component/theme/zmi/manager.py:163
 msgid "Collections settings..."
 msgstr ""
 
-#: ./src/pyams_content/component/theme/zmi/manager.py:183
+#: ./src/pyams_content/component/theme/zmi/manager.py:177
 msgid "Selected collections"
 msgstr ""
 
 #: ./src/pyams_content/component/theme/zmi/manager.py:94
-msgid "Enable search by tag"
-msgstr ""
-
-#: ./src/pyams_content/component/theme/zmi/manager.py:101
 msgid "Enable glossary"
 msgstr ""
 
-#: ./src/pyams_content/component/theme/zmi/manager.py:217
-msgid "Enable search by collection"
-msgstr ""
-
-#: ./src/pyams_content/component/theme/zmi/__init__.py:55
+#: ./src/pyams_content/component/theme/zmi/__init__.py:51
 #: ./src/pyams_content/shared/view/zmi/theme.py:49
 msgid "Tags..."
 msgstr ""
 
-#: ./src/pyams_content/component/theme/zmi/__init__.py:66
+#: ./src/pyams_content/component/theme/zmi/__init__.py:64
 msgid "Content tags"
 msgstr ""
 
-#: ./src/pyams_content/component/theme/zmi/__init__.py:99
+#: ./src/pyams_content/component/theme/zmi/__init__.py:97
 #: ./src/pyams_content/shared/view/zmi/theme.py:95
 msgid "Themes..."
 msgstr ""
 
-#: ./src/pyams_content/component/theme/zmi/__init__.py:107
+#: ./src/pyams_content/component/theme/zmi/__init__.py:105
 msgid "Content themes"
 msgstr ""
 
-#: ./src/pyams_content/component/theme/zmi/__init__.py:159
+#: ./src/pyams_content/component/theme/zmi/__init__.py:157
 #: ./src/pyams_content/shared/view/zmi/theme.py:141
 msgid "Collections..."
 msgstr ""
 
-#: ./src/pyams_content/component/theme/zmi/__init__.py:172
+#: ./src/pyams_content/component/theme/zmi/__init__.py:170
 msgid "Content collections"
 msgstr ""
 
@@ -2164,7 +2112,7 @@
 msgstr ""
 
 #: ./src/pyams_content/interfaces/__init__.py:102
-#: ./src/pyams_content/shared/site/zmi/folder.py:67
+#: ./src/pyams_content/shared/site/zmi/folder.py:69
 msgid "Visible label used to display content"
 msgstr ""
 
@@ -2957,35 +2905,71 @@
 msgid "Search folder"
 msgstr ""
 
-#: ./src/pyams_content/features/search/interfaces.py:35
+#: ./src/pyams_content/features/search/interfaces.py:37
 msgid "Main search engine"
 msgstr ""
 
-#: ./src/pyams_content/features/search/interfaces.py:36
+#: ./src/pyams_content/features/search/interfaces.py:38
 msgid ""
 "Search folder handling main site search. You can search a reference using '+'"
 " followed by internal number, of by entering text matching content title."
 msgstr ""
 
-#: ./src/pyams_content/features/search/interfaces.py:41
+#: ./src/pyams_content/features/search/interfaces.py:46
 msgid "Search engine name"
 msgstr ""
 
-#: ./src/pyams_content/features/search/interfaces.py:42
+#: ./src/pyams_content/features/search/interfaces.py:47
 msgid "Name given to the search engine"
 msgstr ""
 
-#: ./src/pyams_content/features/search/interfaces.py:46
+#: ./src/pyams_content/features/search/interfaces.py:51
 msgid "Description given to the search engine"
 msgstr ""
 
-#: ./src/pyams_content/features/search/interfaces.py:53
+#: ./src/pyams_content/features/search/interfaces.py:54
+msgid "Enable search by tag?"
+msgstr ""
+
+#: ./src/pyams_content/features/search/interfaces.py:55
+msgid ""
+"If 'yes', displayed tags will lead to a search engine displaying contents "
+"matching given tag"
+msgstr ""
+
+#: ./src/pyams_content/features/search/interfaces.py:60
+msgid "Tags search target"
+msgstr ""
+
+#: ./src/pyams_content/features/search/interfaces.py:61
+msgid "Site or folder where tags search is displayed"
+msgstr ""
+
+#: ./src/pyams_content/features/search/interfaces.py:72
+msgid "Enable search by collection?"
+msgstr ""
+
+#: ./src/pyams_content/features/search/interfaces.py:73
+msgid ""
+"If 'yes', displayed collections will lead to a search engine displaying "
+"contents matching given collection"
+msgstr ""
+
+#: ./src/pyams_content/features/search/interfaces.py:79
+msgid "Collections search target"
+msgstr ""
+
+#: ./src/pyams_content/features/search/interfaces.py:80
+msgid "Site or folder where collections search is displayed"
+msgstr ""
+
+#: ./src/pyams_content/features/search/interfaces.py:97
 #: ./src/pyams_content/shared/common/interfaces/__init__.py:53
 #: ./src/pyams_content/shared/common/interfaces/__init__.py:209
 msgid "Managers"
 msgstr ""
 
-#: ./src/pyams_content/features/search/interfaces.py:54
+#: ./src/pyams_content/features/search/interfaces.py:98
 #: ./src/pyams_content/shared/common/interfaces/__init__.py:54
 #: ./src/pyams_content/shared/common/interfaces/__init__.py:210
 msgid ""
@@ -2993,35 +2977,35 @@
 "retire contents"
 msgstr ""
 
-#: ./src/pyams_content/features/search/interfaces.py:59
+#: ./src/pyams_content/features/search/interfaces.py:103
 #: ./src/pyams_content/shared/common/interfaces/__init__.py:65
 #: ./src/pyams_content/shared/common/interfaces/__init__.py:221
 msgid "Designers"
 msgstr ""
 
-#: ./src/pyams_content/features/search/interfaces.py:60
+#: ./src/pyams_content/features/search/interfaces.py:104
 #: ./src/pyams_content/shared/common/interfaces/__init__.py:66
 #: ./src/pyams_content/shared/common/interfaces/__init__.py:222
 msgid "Designers are users which are allowed to manage presentation templates"
 msgstr ""
 
-#: ./src/pyams_content/features/search/interfaces.py:64
+#: ./src/pyams_content/features/search/interfaces.py:109
 #: ./src/pyams_content/shared/common/interfaces/__init__.py:233
 msgid "Guests"
 msgstr ""
 
-#: ./src/pyams_content/features/search/interfaces.py:65
+#: ./src/pyams_content/features/search/interfaces.py:110
 #: ./src/pyams_content/shared/common/interfaces/__init__.py:234
 msgid ""
 "Guests are users which are allowed to view contents with restricted access"
 msgstr ""
 
-#: ./src/pyams_content/features/search/interfaces.py:73
+#: ./src/pyams_content/features/search/interfaces.py:119
 #: ./src/pyams_content/shared/view/interfaces.py:111
 msgid "Order by"
 msgstr ""
 
-#: ./src/pyams_content/features/search/interfaces.py:74
+#: ./src/pyams_content/features/search/interfaces.py:120
 #: ./src/pyams_content/shared/view/interfaces.py:112
 msgid ""
 "Property to use to sort results; publication date can be different from first"
@@ -3029,46 +3013,54 @@
 "a different publication date"
 msgstr ""
 
-#: ./src/pyams_content/features/search/interfaces.py:81
+#: ./src/pyams_content/features/search/interfaces.py:128
 #: ./src/pyams_content/shared/site/interfaces.py:97
 msgid "Visible in folders list"
 msgstr ""
 
-#: ./src/pyams_content/features/search/interfaces.py:82
+#: ./src/pyams_content/features/search/interfaces.py:129
 #: ./src/pyams_content/shared/site/interfaces.py:98
 msgid "If 'no', folder will not be displayed into folders list"
 msgstr ""
 
-#: ./src/pyams_content/features/search/interfaces.py:86
+#: ./src/pyams_content/features/search/interfaces.py:134
 #: ./src/pyams_content/shared/site/interfaces.py:102
 #: ./src/pyams_content/shared/site/interfaces.py:171
 msgid "Navigation title"
 msgstr ""
 
-#: ./src/pyams_content/features/search/interfaces.py:87
+#: ./src/pyams_content/features/search/interfaces.py:135
 #: ./src/pyams_content/shared/site/interfaces.py:103
 msgid ""
 "Folder's title displayed in navigation pages; original title will be used if "
 "none is specified"
 msgstr ""
 
-#: ./src/pyams_content/features/search/interfaces.py:91
+#: ./src/pyams_content/features/search/interfaces.py:140
 msgid "Selected content types"
 msgstr ""
 
-#: ./src/pyams_content/features/search/interfaces.py:92
+#: ./src/pyams_content/features/search/interfaces.py:141
 msgid "Searched content types; leave empty for all"
 msgstr ""
 
-#: ./src/pyams_content/features/search/interfaces.py:96
+#: ./src/pyams_content/features/search/interfaces.py:145
 msgid "Selected data types"
 msgstr ""
 
-#: ./src/pyams_content/features/search/interfaces.py:97
+#: ./src/pyams_content/features/search/interfaces.py:146
 msgid "Searched data types; leave empty for all"
 msgstr ""
 
-#: ./src/pyams_content/features/search/portlet/__init__.py:97
+#: ./src/pyams_content/features/search/interfaces.py:70
+msgid "You must specify search target when activating search by tags!"
+msgstr ""
+
+#: ./src/pyams_content/features/search/interfaces.py:90
+msgid "You must specify search target when activating search by collections!"
+msgstr ""
+
+#: ./src/pyams_content/features/search/portlet/__init__.py:99
 msgid "Search results"
 msgstr ""
 
@@ -3105,18 +3097,26 @@
 msgstr ""
 
 #: ./src/pyams_content/features/search/zmi/properties.py:71
-#: ./src/pyams_content/shared/site/zmi/folder.py:203
+#: ./src/pyams_content/shared/site/zmi/folder.py:212
 msgid "Navigation properties"
 msgstr ""
 
-#: ./src/pyams_content/features/search/zmi/manager.py:43
+#: ./src/pyams_content/features/search/zmi/manager.py:45
 msgid "Search settings..."
 msgstr ""
 
-#: ./src/pyams_content/features/search/zmi/manager.py:57
+#: ./src/pyams_content/features/search/zmi/manager.py:59
 msgid "Search engine settings"
 msgstr ""
 
+#: ./src/pyams_content/features/search/zmi/manager.py:74
+msgid "Enable search by tag"
+msgstr ""
+
+#: ./src/pyams_content/features/search/zmi/manager.py:82
+msgid "Enable search by collection"
+msgstr ""
+
 #: ./src/pyams_content/features/search/zmi/__init__.py:59
 msgid "This search folder"
 msgstr ""
@@ -3253,7 +3253,7 @@
 msgid "Admin. profile"
 msgstr ""
 
-#: ./src/pyams_content/root/__init__.py:65
+#: ./src/pyams_content/root/__init__.py:69
 msgid "Site root"
 msgstr ""
 
@@ -3314,252 +3314,247 @@
 msgstr ""
 
 #: ./src/pyams_content/root/zmi/__init__.py:110
-#: ./src/pyams_content/shared/common/zmi/dashboard.py:289
+#: ./src/pyams_content/shared/common/zmi/dashboard.py:304
 msgid "Dashboard"
 msgstr ""
 
 #: ./src/pyams_content/root/zmi/__init__.py:159
-#: ./src/pyams_content/shared/common/zmi/dashboard.py:345
+#: ./src/pyams_content/shared/common/zmi/dashboard.py:364
 #, python-format
 msgid "MANAGER - {0} content waiting for your action"
 msgstr ""
 
 #: ./src/pyams_content/root/zmi/__init__.py:160
-#: ./src/pyams_content/shared/common/zmi/dashboard.py:346
+#: ./src/pyams_content/shared/common/zmi/dashboard.py:365
 #, python-format
 msgid "MANAGER - {0} contents waiting for your action"
 msgstr ""
 
 #: ./src/pyams_content/root/zmi/__init__.py:204
-#: ./src/pyams_content/shared/common/zmi/dashboard.py:387
+#: ./src/pyams_content/shared/common/zmi/dashboard.py:408
 #, python-format
 msgid "CONTRIBUTOR - {0} content waiting for action"
 msgstr ""
 
 #: ./src/pyams_content/root/zmi/__init__.py:205
-#: ./src/pyams_content/shared/common/zmi/dashboard.py:388
+#: ./src/pyams_content/shared/common/zmi/dashboard.py:409
 #, python-format
 msgid "CONTRIBUTOR - {0} contents waiting for action"
 msgstr ""
 
 #: ./src/pyams_content/root/zmi/__init__.py:240
-#: ./src/pyams_content/shared/common/zmi/dashboard.py:420
+#: ./src/pyams_content/shared/common/zmi/dashboard.py:443
 #, python-format
 msgid "CONTRIBUTOR - {0} modified content"
 msgstr ""
 
 #: ./src/pyams_content/root/zmi/__init__.py:283
-#: ./src/pyams_content/shared/common/zmi/dashboard.py:461
+#: ./src/pyams_content/shared/common/zmi/dashboard.py:486
 msgid "My contents"
 msgstr ""
 
 #: ./src/pyams_content/root/zmi/__init__.py:298
 #: ./src/pyams_content/root/zmi/templates/dashboard.pt:8
-#: ./src/pyams_content/shared/common/zmi/dashboard.py:476
+#: ./src/pyams_content/shared/common/zmi/dashboard.py:501
 #: ./src/pyams_content/shared/common/zmi/templates/dashboard.pt:8
 msgid "My favorites"
 msgstr ""
 
 #: ./src/pyams_content/root/zmi/__init__.py:307
-#: ./src/pyams_content/shared/common/zmi/dashboard.py:485
+#: ./src/pyams_content/shared/common/zmi/dashboard.py:510
 #, python-format
 msgid "CONTRIBUTOR - {0} favorite"
 msgstr ""
 
 #: ./src/pyams_content/root/zmi/__init__.py:308
-#: ./src/pyams_content/shared/common/zmi/dashboard.py:486
+#: ./src/pyams_content/shared/common/zmi/dashboard.py:511
 #, python-format
 msgid "CONTRIBUTOR - {0} favorites"
 msgstr ""
 
 #: ./src/pyams_content/root/zmi/__init__.py:346
-#: ./src/pyams_content/shared/common/zmi/dashboard.py:561
+#: ./src/pyams_content/shared/common/zmi/dashboard.py:588
 msgid "Your favorite contents"
 msgstr ""
 
 #: ./src/pyams_content/root/zmi/__init__.py:359
-#: ./src/pyams_content/shared/common/zmi/dashboard.py:574
+#: ./src/pyams_content/shared/common/zmi/dashboard.py:601
 msgid "My drafts"
 msgstr ""
 
 #: ./src/pyams_content/root/zmi/__init__.py:368
-#: ./src/pyams_content/shared/common/zmi/dashboard.py:583
+#: ./src/pyams_content/shared/common/zmi/dashboard.py:610
 #, python-format
 msgid "CONTRIBUTOR - {0} content in preparation"
 msgstr ""
 
 #: ./src/pyams_content/root/zmi/__init__.py:369
-#: ./src/pyams_content/shared/common/zmi/dashboard.py:584
+#: ./src/pyams_content/shared/common/zmi/dashboard.py:611
 #, python-format
 msgid "CONTRIBUTOR - {0} contents in preparation"
 msgstr ""
 
 #: ./src/pyams_content/root/zmi/__init__.py:408
-#: ./src/pyams_content/shared/common/zmi/dashboard.py:625
+#: ./src/pyams_content/shared/common/zmi/dashboard.py:654
 msgid "Your prepared contents"
 msgstr ""
 
 #: ./src/pyams_content/root/zmi/__init__.py:421
-#: ./src/pyams_content/shared/common/zmi/dashboard.py:638
+#: ./src/pyams_content/shared/common/zmi/dashboard.py:667
 msgid "My submissions"
 msgstr ""
 
 #: ./src/pyams_content/root/zmi/__init__.py:430
-#: ./src/pyams_content/shared/common/zmi/dashboard.py:647
+#: ./src/pyams_content/shared/common/zmi/dashboard.py:676
 #, python-format
 msgid "CONTRIBUTOR - {0} submitted content"
 msgstr ""
 
 #: ./src/pyams_content/root/zmi/__init__.py:431
-#: ./src/pyams_content/shared/common/zmi/dashboard.py:648
+#: ./src/pyams_content/shared/common/zmi/dashboard.py:677
 #, python-format
 msgid "CONTRIBUTOR - {0} submitted contents"
 msgstr ""
 
 #: ./src/pyams_content/root/zmi/__init__.py:470
-#: ./src/pyams_content/shared/common/zmi/dashboard.py:689
+#: ./src/pyams_content/shared/common/zmi/dashboard.py:720
 msgid "Your submitted contents"
 msgstr ""
 
 #: ./src/pyams_content/root/zmi/__init__.py:483
-#: ./src/pyams_content/shared/common/zmi/dashboard.py:702
+#: ./src/pyams_content/shared/common/zmi/dashboard.py:733
 msgid "My publications"
 msgstr ""
 
 #: ./src/pyams_content/root/zmi/__init__.py:492
-#: ./src/pyams_content/shared/common/zmi/dashboard.py:711
+#: ./src/pyams_content/shared/common/zmi/dashboard.py:742
 #, python-format
 msgid "CONTRIBUTOR - {0} published content"
 msgstr ""
 
 #: ./src/pyams_content/root/zmi/__init__.py:493
-#: ./src/pyams_content/shared/common/zmi/dashboard.py:712
+#: ./src/pyams_content/shared/common/zmi/dashboard.py:743
 #, python-format
 msgid "CONTRIBUTOR - {0} published contents"
 msgstr ""
 
 #: ./src/pyams_content/root/zmi/__init__.py:532
-#: ./src/pyams_content/shared/common/zmi/dashboard.py:753
+#: ./src/pyams_content/shared/common/zmi/dashboard.py:786
 msgid "Your published contents"
 msgstr ""
 
 #: ./src/pyams_content/root/zmi/__init__.py:545
-#: ./src/pyams_content/shared/common/zmi/dashboard.py:766
+#: ./src/pyams_content/shared/common/zmi/dashboard.py:799
 msgid "My retired contents"
 msgstr ""
 
 #: ./src/pyams_content/root/zmi/__init__.py:554
-#: ./src/pyams_content/shared/common/zmi/dashboard.py:775
+#: ./src/pyams_content/shared/common/zmi/dashboard.py:808
 #, python-format
 msgid "CONTRIBUTOR - {0} retired content"
 msgstr ""
 
 #: ./src/pyams_content/root/zmi/__init__.py:555
-#: ./src/pyams_content/shared/common/zmi/dashboard.py:776
+#: ./src/pyams_content/shared/common/zmi/dashboard.py:809
 #, python-format
 msgid "CONTRIBUTOR - {0} retired contents"
 msgstr ""
 
 #: ./src/pyams_content/root/zmi/__init__.py:595
-#: ./src/pyams_content/shared/common/zmi/dashboard.py:817
+#: ./src/pyams_content/shared/common/zmi/dashboard.py:852
 msgid "Your retired contents"
 msgstr ""
 
 #: ./src/pyams_content/root/zmi/__init__.py:608
-#: ./src/pyams_content/shared/common/zmi/dashboard.py:830
+#: ./src/pyams_content/shared/common/zmi/dashboard.py:865
 msgid "My archived contents"
 msgstr ""
 
 #: ./src/pyams_content/root/zmi/__init__.py:617
-#: ./src/pyams_content/shared/common/zmi/dashboard.py:839
+#: ./src/pyams_content/shared/common/zmi/dashboard.py:874
 #, python-format
 msgid "CONTRIBUTOR - {0} archived content"
 msgstr ""
 
 #: ./src/pyams_content/root/zmi/__init__.py:618
-#: ./src/pyams_content/shared/common/zmi/dashboard.py:840
+#: ./src/pyams_content/shared/common/zmi/dashboard.py:875
 #, python-format
 msgid "CONTRIBUTOR - {0} archived contents"
 msgstr ""
 
 #: ./src/pyams_content/root/zmi/__init__.py:664
-#: ./src/pyams_content/shared/common/zmi/dashboard.py:887
+#: ./src/pyams_content/shared/common/zmi/dashboard.py:924
 msgid "Your archived contents"
 msgstr ""
 
 #: ./src/pyams_content/root/zmi/__init__.py:678
-#: ./src/pyams_content/shared/common/zmi/dashboard.py:901
+#: ./src/pyams_content/shared/common/zmi/dashboard.py:938
 msgid "Other interventions"
 msgstr ""
 
 #: ./src/pyams_content/root/zmi/__init__.py:693
-#: ./src/pyams_content/shared/common/zmi/dashboard.py:916
+#: ./src/pyams_content/shared/common/zmi/dashboard.py:953
 msgid "Last publications"
 msgstr ""
 
 #: ./src/pyams_content/root/zmi/__init__.py:702
-#: ./src/pyams_content/shared/common/zmi/dashboard.py:925
+#: ./src/pyams_content/shared/common/zmi/dashboard.py:962
 #, python-format
 msgid "CONTRIBUTORS - {0} published content"
 msgstr ""
 
 #: ./src/pyams_content/root/zmi/__init__.py:748
-#: ./src/pyams_content/shared/common/zmi/dashboard.py:972
+#: ./src/pyams_content/shared/common/zmi/dashboard.py:1011
 msgid "Last published contents"
 msgstr ""
 
 #: ./src/pyams_content/root/zmi/__init__.py:761
-#: ./src/pyams_content/shared/common/zmi/dashboard.py:985
+#: ./src/pyams_content/shared/common/zmi/dashboard.py:1024
 msgid "Last updates"
 msgstr ""
 
 #: ./src/pyams_content/root/zmi/__init__.py:770
-#: ./src/pyams_content/shared/common/zmi/dashboard.py:994
+#: ./src/pyams_content/shared/common/zmi/dashboard.py:1033
 #, python-format
 msgid "CONTRIBUTORS - {0} updated content"
 msgstr ""
 
 #: ./src/pyams_content/root/zmi/__init__.py:814
-#: ./src/pyams_content/shared/common/zmi/dashboard.py:1039
+#: ./src/pyams_content/shared/common/zmi/dashboard.py:1080
 msgid "Last updated contents"
 msgstr ""
 
-#: ./src/pyams_content/root/zmi/__init__.py:825
-#: ./src/pyams_content/shared/site/zmi/container.py:461
-msgid "Content"
-msgstr ""
-
 #: ./src/pyams_content/root/zmi/__init__.py:245
-#: ./src/pyams_content/shared/common/zmi/dashboard.py:425
+#: ./src/pyams_content/shared/common/zmi/dashboard.py:448
 #, python-format
 msgid "CONTRIBUTOR - {0} modified contents"
 msgstr ""
 
 #: ./src/pyams_content/root/zmi/__init__.py:247
-#: ./src/pyams_content/shared/common/zmi/dashboard.py:427
+#: ./src/pyams_content/shared/common/zmi/dashboard.py:450
 #, python-format
 msgid "CONTRIBUTOR - Last {0} modified contents"
 msgstr ""
 
 #: ./src/pyams_content/root/zmi/__init__.py:707
-#: ./src/pyams_content/shared/common/zmi/dashboard.py:930
+#: ./src/pyams_content/shared/common/zmi/dashboard.py:967
 #, python-format
 msgid "CONTRIBUTORS - Last {0} published contents"
 msgstr ""
 
 #: ./src/pyams_content/root/zmi/__init__.py:709
-#: ./src/pyams_content/shared/common/zmi/dashboard.py:932
+#: ./src/pyams_content/shared/common/zmi/dashboard.py:969
 msgid "CONTRIBUTORS - Last published contents (in the limit of 50)"
 msgstr ""
 
 #: ./src/pyams_content/root/zmi/__init__.py:775
-#: ./src/pyams_content/shared/common/zmi/dashboard.py:999
+#: ./src/pyams_content/shared/common/zmi/dashboard.py:1038
 #, python-format
 msgid "CONTRIBUTORS - Last {0} updated contents"
 msgstr ""
 
 #: ./src/pyams_content/root/zmi/__init__.py:777
-#: ./src/pyams_content/shared/common/zmi/dashboard.py:1001
+#: ./src/pyams_content/shared/common/zmi/dashboard.py:1040
 msgid "CONTRIBUTORS - Last updated contents (in the limit of 50)"
 msgstr ""
 
@@ -3585,7 +3580,7 @@
 msgstr ""
 
 #: ./src/pyams_content/root/zmi/search.py:162
-#: ./src/pyams_content/shared/common/zmi/dashboard.py:244
+#: ./src/pyams_content/shared/common/zmi/dashboard.py:258
 #: ./src/pyams_content/shared/common/zmi/search.py:171
 #: ./src/pyams_content/shared/common/zmi/types/updater.py:65
 msgid "Owner"
@@ -4472,7 +4467,7 @@
 msgid "If 'yes', collections will be extracted from context"
 msgstr ""
 
-#: ./src/pyams_content/shared/view/interfaces.py:294
+#: ./src/pyams_content/shared/view/interfaces.py:295
 msgid "Other collections"
 msgstr ""
 
@@ -4653,7 +4648,7 @@
 #: ./src/pyams_content/shared/common/interfaces/__init__.py:182
 #: ./src/pyams_content/shared/site/interfaces.py:93
 #: ./src/pyams_content/shared/site/interfaces.py:138
-#: ./src/pyams_content/shared/site/zmi/folder.py:74
+#: ./src/pyams_content/shared/site/zmi/folder.py:76
 msgid "Notepad"
 msgstr ""
 
@@ -4661,49 +4656,49 @@
 #: ./src/pyams_content/shared/common/interfaces/__init__.py:183
 #: ./src/pyams_content/shared/site/interfaces.py:94
 #: ./src/pyams_content/shared/site/interfaces.py:139
-#: ./src/pyams_content/shared/site/zmi/folder.py:75
+#: ./src/pyams_content/shared/site/zmi/folder.py:77
 msgid "Internal information to be known about this content"
 msgstr ""
 
-#: ./src/pyams_content/shared/blog/zmi/manager.py:57
+#: ./src/pyams_content/shared/blog/zmi/manager.py:68
 msgid "Blog management"
 msgstr ""
 
-#: ./src/pyams_content/shared/blog/zmi/manager.py:80
-#: ./src/pyams_content/shared/blog/zmi/manager.py:94
-msgid "Add blog manager"
-msgstr ""
-
 #: ./src/pyams_content/shared/blog/zmi/manager.py:93
+#: ./src/pyams_content/shared/blog/zmi/manager.py:107
+msgid "Add blog manager"
+msgstr ""
+
+#: ./src/pyams_content/shared/blog/zmi/manager.py:106
 msgid "Blog manager"
 msgstr ""
 
-#: ./src/pyams_content/shared/blog/zmi/manager.py:148
+#: ./src/pyams_content/shared/blog/zmi/manager.py:166
 msgid "Blog properties"
 msgstr ""
 
-#: ./src/pyams_content/shared/blog/zmi/manager.py:163
-#: ./src/pyams_content/shared/blog/zmi/manager.py:175
+#: ./src/pyams_content/shared/blog/zmi/manager.py:183
+#: ./src/pyams_content/shared/blog/zmi/manager.py:195
 #: ./src/pyams_content/shared/site/zmi/container.py:153
 #: ./src/pyams_content/shared/site/zmi/container.py:165
 msgid "Publication dates..."
 msgstr ""
 
-#: ./src/pyams_content/shared/blog/zmi/manager.py:189
+#: ./src/pyams_content/shared/blog/zmi/manager.py:209
 #: ./src/pyams_content/shared/site/zmi/container.py:179
 msgid "Update publication dates"
 msgstr ""
 
-#: ./src/pyams_content/shared/blog/zmi/manager.py:124
-#: ./src/pyams_content/shared/site/zmi/manager.py:163
+#: ./src/pyams_content/shared/blog/zmi/manager.py:137
+#: ./src/pyams_content/shared/site/zmi/manager.py:176
 msgid "You must provide a short name for default server language!"
 msgstr ""
 
-#: ./src/pyams_content/shared/blog/zmi/manager.py:128
+#: ./src/pyams_content/shared/blog/zmi/manager.py:142
 msgid "Specified blog manager name is already used!"
 msgstr ""
 
-#: ./src/pyams_content/shared/blog/zmi/manager.py:132
+#: ./src/pyams_content/shared/blog/zmi/manager.py:147
 msgid "A blog manager is already registered with this name!!"
 msgstr ""
 
@@ -4721,19 +4716,19 @@
 msgid "Blog post « {title} »"
 msgstr ""
 
-#: ./src/pyams_content/shared/common/__init__.py:268
+#: ./src/pyams_content/shared/common/__init__.py:274
 #: ./src/pyams_content/shared/common/zmi/properties.py:66
 #: ./src/pyams_content/shared/common/zmi/manager.py:96
 msgid "Properties"
 msgstr ""
 
-#: ./src/pyams_content/shared/common/__init__.py:178
-#: ./src/pyams_content/shared/common/__init__.py:186
+#: ./src/pyams_content/shared/common/__init__.py:184
+#: ./src/pyams_content/shared/common/__init__.py:192
 #, python-format
 msgid "{date} by {principal}"
 msgstr ""
 
-#: ./src/pyams_content/shared/common/__init__.py:291
+#: ./src/pyams_content/shared/common/__init__.py:300
 #, python-format
 msgid "title length should be between 40 and 66 characters ({length} actually)"
 msgstr ""
@@ -5110,7 +5105,7 @@
 msgstr ""
 
 #: ./src/pyams_content/shared/common/zmi/header.py:91
-#: ./src/pyams_content/shared/common/zmi/dashboard.py:184
+#: ./src/pyams_content/shared/common/zmi/dashboard.py:194
 msgid "Content publication start date is not passed yet"
 msgstr ""
 
@@ -5170,46 +5165,50 @@
 msgid "Tool management"
 msgstr ""
 
-#: ./src/pyams_content/shared/common/zmi/dashboard.py:105
+#: ./src/pyams_content/shared/common/zmi/dashboard.py:107
+msgid "Content type"
+msgstr ""
+
+#: ./src/pyams_content/shared/common/zmi/dashboard.py:121
 msgid "Type"
 msgstr ""
 
-#: ./src/pyams_content/shared/common/zmi/dashboard.py:147
+#: ./src/pyams_content/shared/common/zmi/dashboard.py:156
 msgid "Unique ID"
 msgstr ""
 
-#: ./src/pyams_content/shared/common/zmi/dashboard.py:167
+#: ./src/pyams_content/shared/common/zmi/dashboard.py:177
 #: ./src/pyams_content/shared/common/zmi/search.py:174
 msgid "Status"
 msgstr ""
 
-#: ./src/pyams_content/shared/common/zmi/dashboard.py:194
+#: ./src/pyams_content/shared/common/zmi/dashboard.py:205
 msgid "Status date"
 msgstr ""
 
-#: ./src/pyams_content/shared/common/zmi/dashboard.py:211
+#: ./src/pyams_content/shared/common/zmi/dashboard.py:223
 #: ./src/pyams_content/shared/common/zmi/summary.py:165
 msgid "Version"
 msgstr ""
 
-#: ./src/pyams_content/shared/common/zmi/dashboard.py:226
+#: ./src/pyams_content/shared/common/zmi/dashboard.py:239
 msgid "Status principal"
 msgstr ""
 
-#: ./src/pyams_content/shared/common/zmi/dashboard.py:266
+#: ./src/pyams_content/shared/common/zmi/dashboard.py:281
 msgid "Last modification"
 msgstr ""
 
-#: ./src/pyams_content/shared/common/zmi/dashboard.py:299
+#: ./src/pyams_content/shared/common/zmi/dashboard.py:315
 msgid "Contents dashboard"
 msgstr ""
 
-#: ./src/pyams_content/shared/common/zmi/dashboard.py:498
+#: ./src/pyams_content/shared/common/zmi/dashboard.py:523
 #: ./src/pyams_content/shared/common/zmi/templates/header.pt:26
 msgid "Add/remove from favorites"
 msgstr ""
 
-#: ./src/pyams_content/shared/common/zmi/dashboard.py:322
+#: ./src/pyams_content/shared/common/zmi/dashboard.py:339
 #, python-format
 msgid "SEARCH - Between all contents of type &laquo;&nbsp;{type}&nbsp;&raquo;"
 msgstr ""
@@ -5300,28 +5299,28 @@
 "which at least one criteria is matching."
 msgstr ""
 
-#: ./src/pyams_content/shared/common/zmi/__init__.py:289
+#: ./src/pyams_content/shared/common/zmi/__init__.py:292
 msgid "Duplicate content..."
 msgstr ""
 
-#: ./src/pyams_content/shared/common/zmi/__init__.py:309
+#: ./src/pyams_content/shared/common/zmi/__init__.py:312
 msgid "Duplicate content"
 msgstr ""
 
-#: ./src/pyams_content/shared/common/zmi/__init__.py:85
+#: ./src/pyams_content/shared/common/zmi/__init__.py:88
 msgid "This title can be modified afterwards"
 msgstr ""
 
-#: ./src/pyams_content/shared/common/zmi/__init__.py:300
+#: ./src/pyams_content/shared/common/zmi/__init__.py:303
 msgid "Duplicate this content"
 msgstr ""
 
-#: ./src/pyams_content/shared/common/zmi/__init__.py:357
+#: ./src/pyams_content/shared/common/zmi/__init__.py:360
 #, python-format
 msgid "Clone created from version {source} of {oid} (in « {state} » state)"
 msgstr ""
 
-#: ./src/pyams_content/shared/common/zmi/__init__.py:403
+#: ./src/pyams_content/shared/common/zmi/__init__.py:434
 msgid "Created or modified in this version"
 msgstr ""
 
@@ -5493,11 +5492,11 @@
 msgid "{state} {date}"
 msgstr ""
 
-#: ./src/pyams_content/shared/common/zmi/reverse.py:57
+#: ./src/pyams_content/shared/common/zmi/reverse.py:53
 msgid "Reverse links"
 msgstr ""
 
-#: ./src/pyams_content/shared/common/zmi/reverse.py:66
+#: ./src/pyams_content/shared/common/zmi/reverse.py:62
 msgid "Content's internal links"
 msgstr ""
 
@@ -5895,7 +5894,7 @@
 msgstr ""
 
 #: ./src/pyams_content/shared/site/manager.py:68
-#: ./src/pyams_content/shared/site/zmi/manager.py:121
+#: ./src/pyams_content/shared/site/zmi/manager.py:133
 msgid "Site manager"
 msgstr ""
 
@@ -6012,7 +6011,11 @@
 msgid "Folders and topics"
 msgstr ""
 
-#: ./src/pyams_content/shared/site/zmi/container.py:557
+#: ./src/pyams_content/shared/site/zmi/container.py:462
+msgid "Content"
+msgstr ""
+
+#: ./src/pyams_content/shared/site/zmi/container.py:559
 msgid "Delete site item"
 msgstr ""
 
@@ -6070,54 +6073,54 @@
 msgid "Can't reparent object to one of it's children. Reloading..."
 msgstr ""
 
-#: ./src/pyams_content/shared/site/zmi/manager.py:53
+#: ./src/pyams_content/shared/site/zmi/manager.py:63
 msgid "Site management"
 msgstr ""
 
-#: ./src/pyams_content/shared/site/zmi/manager.py:108
-#: ./src/pyams_content/shared/site/zmi/manager.py:122
+#: ./src/pyams_content/shared/site/zmi/manager.py:120
+#: ./src/pyams_content/shared/site/zmi/manager.py:134
 msgid "Add site manager"
 msgstr ""
 
-#: ./src/pyams_content/shared/site/zmi/manager.py:150
-#: ./src/pyams_content/shared/site/zmi/folder.py:185
+#: ./src/pyams_content/shared/site/zmi/manager.py:163
+#: ./src/pyams_content/shared/site/zmi/folder.py:194
 msgid "Site folder properties"
 msgstr ""
 
-#: ./src/pyams_content/shared/site/zmi/manager.py:167
+#: ./src/pyams_content/shared/site/zmi/manager.py:181
 msgid "Specified site manager name is already used!"
 msgstr ""
 
-#: ./src/pyams_content/shared/site/zmi/manager.py:171
+#: ./src/pyams_content/shared/site/zmi/manager.py:185
 msgid "A site manager is already registered with this name!!"
 msgstr ""
 
-#: ./src/pyams_content/shared/site/zmi/folder.py:57
+#: ./src/pyams_content/shared/site/zmi/folder.py:59
 msgid "Add site folder..."
 msgstr ""
 
-#: ./src/pyams_content/shared/site/zmi/folder.py:89
+#: ./src/pyams_content/shared/site/zmi/folder.py:91
 msgid "Add site folder"
 msgstr ""
 
-#: ./src/pyams_content/shared/site/zmi/folder.py:156
+#: ./src/pyams_content/shared/site/zmi/folder.py:158
 msgid "Site folder management"
 msgstr ""
 
-#: ./src/pyams_content/shared/site/zmi/folder.py:70
+#: ./src/pyams_content/shared/site/zmi/folder.py:72
 #: ./src/pyams_content/shared/site/zmi/link.py:75
 #: ./src/pyams_content/shared/site/zmi/link.py:227
 #: ./src/pyams_content/shared/site/zmi/__init__.py:62
 msgid "Parent"
 msgstr ""
 
-#: ./src/pyams_content/shared/site/zmi/folder.py:71
+#: ./src/pyams_content/shared/site/zmi/folder.py:73
 #: ./src/pyams_content/shared/site/zmi/link.py:76
 #: ./src/pyams_content/shared/site/zmi/link.py:228
 msgid "Folder's parent"
 msgstr ""
 
-#: ./src/pyams_content/shared/site/zmi/folder.py:149
+#: ./src/pyams_content/shared/site/zmi/folder.py:151
 msgid "You must provide a folder name for default server language!"
 msgstr ""
 
--- a/src/pyams_content/root/zmi/__init__.py	Wed Jul 01 14:10:50 2020 +0200
+++ b/src/pyams_content/root/zmi/__init__.py	Wed Jul 01 18:05:38 2020 +0200
@@ -10,54 +10,49 @@
 # FOR A PARTICULAR PURPOSE.
 #
 
-__docformat__ = 'restructuredtext'
-
+from hypatia.catalog import CatalogQuery
+from hypatia.interfaces import ICatalog
+from hypatia.query import And, Any, Eq, Or
+from z3c.table.interfaces import IValues
+from zope.dublincore.interfaces import IZopeDublinCore
+from zope.interface import Interface, implementer
+from zope.intid.interfaces import IIntIds
 
-# import standard library
-
-# import interfaces
-from hypatia.interfaces import ICatalog
-from pyams_content.interfaces import PUBLISH_CONTENT_PERMISSION, MANAGE_SITE_ROOT_PERMISSION
+from pyams_catalog.query import CatalogResultSet
+from pyams_content.interfaces import MANAGE_SITE_ROOT_PERMISSION, PUBLISH_CONTENT_PERMISSION
 from pyams_content.profile.interfaces import IAdminProfile
 from pyams_content.root.interfaces import ISiteRoot
+from pyams_content.shared.common import CONTENT_TYPES
 from pyams_content.shared.common.interfaces import IBaseSharedTool, IManagerRestrictions
 from pyams_content.shared.common.interfaces.zmi import ISiteRootDashboardTable
-from pyams_content.zmi.interfaces import IDashboardMenu, IMyDashboardMenu, IAllContentsMenu
+from pyams_content.shared.common.zmi.dashboard import BaseDashboardTable as BaseDashboardTableBase
+from pyams_content.zmi.interfaces import IAllContentsMenu, IDashboardMenu, IMyDashboardMenu
 from pyams_i18n.interfaces import II18n
+from pyams_pagelet.pagelet import pagelet_config
+from pyams_skin.container import ContainerView
 from pyams_skin.interfaces import IInnerPage, IPageHeader
 from pyams_skin.interfaces.configuration import IBackOfficeConfiguration, IConfiguration
-from pyams_skin.interfaces.container import ITableElementName, ITableElementEditor
+from pyams_skin.interfaces.container import ITableElementEditor, ITableElementName
 from pyams_skin.interfaces.viewlet import IBreadcrumbItem
 from pyams_skin.layer import IPyAMSLayer
-from pyams_utils.interfaces import VIEW_SYSTEM_PERMISSION
-from pyams_workflow.interfaces import IWorkflowVersions, IWorkflowState, IWorkflow
-from pyams_zmi.interfaces.menu import IContentManagementMenu
-from pyams_zmi.layer import IAdminLayer
-from z3c.table.interfaces import IValues, IColumn
-from zope.dublincore.interfaces import IZopeDublinCore
-from zope.intid.interfaces import IIntIds
-
-# import packages
-from hypatia.catalog import CatalogQuery
-from hypatia.query import And, Or, Eq, Any
-from pyams_catalog.query import CatalogResultSet
-from pyams_content.shared.common import CONTENT_TYPES
-from pyams_content.shared.common.zmi.dashboard import BaseDashboardTable as BaseDashboardTableBase
-from pyams_pagelet.pagelet import pagelet_config
-from pyams_skin.container import ContainerView
 from pyams_skin.page import DefaultPageHeaderAdapter
-from pyams_skin.table import I18nColumn, DefaultElementEditorAdapter
+from pyams_skin.table import DefaultElementEditorAdapter
 from pyams_skin.viewlet.breadcrumb import BreadcrumbAdminLayerItem
 from pyams_skin.viewlet.menu import MenuItem
 from pyams_template.template import template_config
-from pyams_utils.adapter import adapter_config, ContextRequestViewAdapter, ContextRequestAdapter
+from pyams_utils.adapter import ContextRequestAdapter, ContextRequestViewAdapter, adapter_config
+from pyams_utils.interfaces import VIEW_SYSTEM_PERMISSION
 from pyams_utils.list import unique_iter
-from pyams_utils.registry import get_utility, get_all_utilities_registered_for
+from pyams_utils.registry import get_all_utilities_registered_for, get_utility
 from pyams_viewlet.manager import viewletmanager_config
 from pyams_viewlet.viewlet import viewlet_config
+from pyams_workflow.interfaces import IWorkflow, IWorkflowState, IWorkflowVersions
+from pyams_zmi.interfaces.menu import IContentManagementMenu
+from pyams_zmi.layer import IAdminLayer
 from pyams_zmi.view import AdminView
-from z3c.table.column import GetAttrColumn
-from zope.interface import implementer, Interface
+
+
+__docformat__ = 'restructuredtext'
 
 from pyams_content import _
 
@@ -812,22 +807,3 @@
     icon_class = 'fa fa-fw fa-pencil-square'
 
     title = _("Last updated contents")
-
-
-#
-# Custom columns
-#
-
-@adapter_config(name='tool', context=(Interface, IPyAMSLayer, ISiteRootDashboardTable), provides=IColumn)
-class SiteRootDashboardContentTypeColumn(I18nColumn, GetAttrColumn):
-    """Shared tool dashboard content type column"""
-
-    _header = _("Content")
-    cssClasses = {'td': 'nowrap'}
-    weight = 1
-
-    def getValue(self, obj):
-        try:
-            return self.request.localizer.translate(obj.content_name)
-        except AttributeError:
-            return '--'
--- a/src/pyams_content/shared/blog/zmi/manager.py	Wed Jul 01 14:10:50 2020 +0200
+++ b/src/pyams_content/shared/blog/zmi/manager.py	Wed Jul 01 18:05:38 2020 +0200
@@ -10,8 +10,6 @@
 # FOR A PARTICULAR PURPOSE.
 #
 
-__docformat__ = 'restructuredtext'
-
 from datetime import datetime
 
 from pyramid.events import subscriber
@@ -20,23 +18,26 @@
 from z3c.form.interfaces import IDataExtractedEvent
 from zope.interface import Invalid
 
-from pyams_content.interfaces import MANAGE_SITE_ROOT_PERMISSION, MANAGE_SITE_PERMISSION, MANAGE_TOOL_PERMISSION
+from pyams_content.interfaces import MANAGE_SITE_PERMISSION, MANAGE_SITE_ROOT_PERMISSION, \
+    MANAGE_TOOL_PERMISSION
 from pyams_content.root.interfaces import ISiteRoot
 from pyams_content.shared.blog.interfaces import IBlogManager, IBlogManagerFactory
 from pyams_content.shared.blog.manager import BlogManager
-from pyams_content.shared.common import IBaseSharedTool
+from pyams_content.shared.common import IBaseSharedTool, IDashboardTypeColumnValue
+from pyams_content.shared.common.interfaces.zmi import IDashboardTable
 from pyams_content.shared.common.zmi.manager import SharedToolPropertiesEditForm
 from pyams_content.zmi.interfaces import ISiteTreeTable, IUserAddingsMenuLabel
 from pyams_form.form import AJAXAddForm, ajax_config
 from pyams_i18n.interfaces import II18n, INegotiator
 from pyams_pagelet.pagelet import pagelet_config
 from pyams_skin.interfaces.container import ITableElementEditor
-from pyams_skin.interfaces.viewlet import IToolbarAddingMenu, ITableItemColumnActionsMenu, IMenuHeader
+from pyams_skin.interfaces.viewlet import IMenuHeader, ITableItemColumnActionsMenu, \
+    IToolbarAddingMenu
 from pyams_skin.layer import IPyAMSLayer
 from pyams_skin.table import DefaultElementEditorAdapter
 from pyams_skin.viewlet.menu import MenuItem
 from pyams_skin.viewlet.toolbar import ToolbarMenuItem
-from pyams_utils.adapter import adapter_config, ContextRequestAdapter
+from pyams_utils.adapter import ContextRequestAdapter, adapter_config
 from pyams_utils.registry import query_utility
 from pyams_utils.timezone import tztime
 from pyams_utils.unicode import translate_string
@@ -47,9 +48,19 @@
 from pyams_zmi.interfaces.menu import IPropertiesMenu, ISiteManagementMenu
 from pyams_zmi.layer import IAdminLayer
 
+
+__docformat__ = 'restructuredtext'
+
 from pyams_content import _
 
 
+@adapter_config(context=(IDashboardTable, IPyAMSLayer, IBlogManager),
+                provides=IDashboardTypeColumnValue)
+def blog_manager_dashboard_type(context, request):
+    """Blog manager dashboard type column adapter"""
+    return request.localizer.translate(context.content_name)
+
+
 @adapter_config(context=(IBlogManager, ISiteManagementMenu), provides=IMenuHeader)
 class BlogManagerSiteManagementMenuHeader(ContextRequestAdapter):
     """Blog manager site management menu header adapter"""
@@ -68,12 +79,14 @@
     @property
     def label(self):
         return '{content} ({blog})'.format(
-            content=self.request.localizer.translate(self.context.shared_content_factory.content_class.content_name),
+            content=self.request.localizer.translate(
+                self.context.shared_content_factory.content_class.content_name),
             blog=II18n(self.context).query_attribute('title', request=self.request))
 
 
 @viewlet_config(name='add-blog-manager.menu', context=ISiteRoot, layer=IAdminLayer,
-                view=ISiteTreeTable, manager=IToolbarAddingMenu, permission=MANAGE_SITE_ROOT_PERMISSION)
+                view=ISiteTreeTable, manager=IToolbarAddingMenu,
+                permission=MANAGE_SITE_ROOT_PERMISSION)
 class BlogManagerAddMenu(ToolbarMenuItem):
     """Blog manager add menu"""
 
@@ -121,18 +134,22 @@
     negotiator = query_utility(INegotiator)
     short_name = event.data['short_name'].get(negotiator.server_language)
     if not short_name:
-        event.form.widgets.errors += (Invalid(_("You must provide a short name for default server language!")),)
+        event.form.widgets.errors += (Invalid(_("You must provide a short name for default "
+                                                "server language!")),)
         return
     name = translate_string(short_name, force_lower=True, spaces='-')
     if name in container:
-        event.form.widgets.errors += (Invalid(_("Specified blog manager name is already used!")),)
+        event.form.widgets.errors += (Invalid(_("Specified blog manager name is already "
+                                                "used!")),)
         return
     blog = query_utility(IBlogManager, name=short_name)
     if blog is not None:
-        event.form.widgets.errors += (Invalid(_("A blog manager is already registered with this name!!")),)
+        event.form.widgets.errors += (Invalid(_("A blog manager is already registered with "
+                                                "this name!!")),)
 
 
-@adapter_config(context=(IBlogManager, IAdminLayer, ISiteTreeTable), provides=ITableElementEditor)
+@adapter_config(context=(IBlogManager, IAdminLayer, ISiteTreeTable),
+                provides=ITableElementEditor)
 class BlogManagerTableElementEditor(DefaultElementEditorAdapter):
     """Blog manager table element editor"""
 
@@ -140,14 +157,16 @@
     modal_target = False
 
 
-@pagelet_config(name='properties.html', context=IBlogManager, layer=IPyAMSLayer, permission=MANAGE_TOOL_PERMISSION)
+@pagelet_config(name='properties.html', context=IBlogManager, layer=IPyAMSLayer,
+                permission=MANAGE_TOOL_PERMISSION)
 @ajax_config(name='properties.json', context=IBlogManager, layer=IPyAMSLayer)
 class BlogManagerPropertiesEditForm(SharedToolPropertiesEditForm):
     """Site folder properties edit form"""
 
     legend = _("Blog properties")
 
-    fields = field.Fields(IBlogManager).select('title', 'short_name', 'description', 'notepad') + \
+    fields = field.Fields(IBlogManager).select('title', 'short_name', 'description',
+                                               'notepad') + \
         field.Fields(IBaseSharedTool).select('shared_content_workflow')
 
 
@@ -155,8 +174,9 @@
 # Blog manager publication views
 #
 
-@viewlet_config(name='workflow-publication.menu', context=IBlogManager, layer=IPyAMSLayer, view=ISiteTreeTable,
-                manager=ITableItemColumnActionsMenu, permission=MANAGE_SITE_PERMISSION, weight=210)
+@viewlet_config(name='workflow-publication.menu', context=IBlogManager, layer=IPyAMSLayer,
+                view=ISiteTreeTable, manager=ITableItemColumnActionsMenu,
+                permission=MANAGE_SITE_PERMISSION, weight=210)
 class BlogManagerTableItemWorkflowPublicationMenu(ToolbarMenuItem):
     """Blog manager tree item workflow publication menu"""
 
@@ -167,8 +187,8 @@
     stop_propagation = True
 
 
-@viewlet_config(name='workflow-publication.menu', context=IBlogManager, layer=IAdminLayer, manager=IPropertiesMenu,
-                permission=MANAGE_SITE_PERMISSION, weight=210)
+@viewlet_config(name='workflow-publication.menu', context=IBlogManager, layer=IAdminLayer,
+                manager=IPropertiesMenu, permission=MANAGE_SITE_PERMISSION, weight=210)
 class BlogManagerWorkflowPublicationMenu(MenuItem):
     """Blog manager workflow publication menu"""
 
@@ -188,7 +208,8 @@
 
     legend = _("Update publication dates")
 
-    fields = field.Fields(IWorkflowPublicationInfo).select('publication_effective_date', 'publication_expiration_date')
+    fields = field.Fields(IWorkflowPublicationInfo).select('publication_effective_date',
+                                                           'publication_expiration_date')
     edit_permission = MANAGE_SITE_PERMISSION
 
     def updateWidgets(self, prefix=None):
@@ -196,4 +217,5 @@
         if 'publication_effective_date' in self.widgets:
             pub_info = IWorkflowPublicationInfo(self.context)
             if pub_info.publication_effective_date is None:
-                self.widgets['publication_effective_date'].value = tztime(datetime.utcnow()).strftime('%d/%m/%y %H:%M')
+                self.widgets['publication_effective_date'].value = \
+                    tztime(datetime.utcnow()).strftime('%d/%m/%y %H:%M')
--- a/src/pyams_content/shared/common/interfaces/zmi.py	Wed Jul 01 14:10:50 2020 +0200
+++ b/src/pyams_content/shared/common/interfaces/zmi.py	Wed Jul 01 18:05:38 2020 +0200
@@ -38,3 +38,7 @@
 
 class ISiteRootDashboardTable(IDashboardTable):
     """Site root dashboard table marker interface"""
+
+
+class IDashboardTypeColumnValue(Interface):
+    """Dashboard content type column interface"""
--- a/src/pyams_content/shared/common/zmi/__init__.py	Wed Jul 01 14:10:50 2020 +0200
+++ b/src/pyams_content/shared/common/zmi/__init__.py	Wed Jul 01 18:05:38 2020 +0200
@@ -24,8 +24,11 @@
 from pyams_content.features.review.interfaces import IReviewComments
 from pyams_content.interfaces import CREATE_CONTENT_PERMISSION, MANAGE_CONTENT_PERMISSION, \
     MANAGE_SITE_ROOT_PERMISSION, PUBLISH_CONTENT_PERMISSION
+from pyams_content.shared.common import IDashboardTypeColumnValue
 from pyams_content.shared.common.interfaces import IBaseSharedTool, IContributorRestrictions, \
     IManagerRestrictions, ISharedContent, IWfSharedContent
+from pyams_content.shared.common.interfaces.types import IWfTypedSharedContent
+from pyams_content.shared.common.interfaces.zmi import IDashboardTable, ISiteRootDashboardTable
 from pyams_form.form import AJAXAddForm, ajax_config
 from pyams_form.interfaces.form import IFormContextPermissionChecker, IWidgetsPrefixViewletsManager
 from pyams_form.schema import CloseButton
@@ -387,6 +390,34 @@
 # Custom columns mixins
 #
 
+@adapter_config(context=(IWfSharedContent, IPyAMSLayer, IDashboardTable),
+                provides=IDashboardTypeColumnValue)
+def typed_shared_content_tool_dashboard_type_adapter(context, request, view):
+    """Typed shared content dashboard type column adapter"""
+    content = IWfTypedSharedContent(context, None)
+    if content is not None:
+        data_type = content.get_data_type()
+        if data_type is not None:
+            return II18n(data_type).query_attribute('navigation_label', request=request) or \
+                II18n(data_type).query_attribute('label', request=request)
+
+
+@adapter_config(context=(IWfSharedContent, IPyAMSLayer, ISiteRootDashboardTable),
+                provides=IDashboardTypeColumnValue)
+def typed_shared_content_root_dashboard_type_adapter(context, request, view):
+    """Typed shared content root dashboard type column adapter"""
+    result = request.localizer.translate(context.content_name)
+    content = IWfTypedSharedContent(context, None)
+    if content is not None:
+        data_type = content.get_data_type()
+        if data_type is not None:
+            result = '{} ({})'.format(
+                result,
+                II18n(data_type).query_attribute('navigation_label', request=request) or
+                II18n(data_type).query_attribute('label', request=request))
+    return result
+
+
 class WfModifiedContentColumnMixin(object):
     """Shared content modified column mixin"""
 
@@ -398,7 +429,7 @@
                 item_dc = IZopeDublinCore(item)
                 if item_dc.modified and (item_dc.modified > IZopeDublinCore(content).created):
                     translate = self.request.localizer.translate
-                    value += '<i class="fa fa-fw fa-circle txt-color-orange hint align-middle padding-left-5" ' \
-                             'title="{0}" data-ams-hint-gravity="w"></i>'.format(
+                    value += '<i class="fa fa-fw fa-circle txt-color-orange hint align-middle ' \
+                             'padding-left-5" title="{0}" data-ams-hint-gravity="w"></i>'.format(
                         translate(_("Created or modified in this version")))
         return value
--- a/src/pyams_content/shared/common/zmi/dashboard.py	Wed Jul 01 14:10:50 2020 +0200
+++ b/src/pyams_content/shared/common/zmi/dashboard.py	Wed Jul 01 18:05:38 2020 +0200
@@ -10,27 +10,25 @@
 # FOR A PARTICULAR PURPOSE.
 #
 
-__docformat__ = 'restructuredtext'
-
 from hypatia.catalog import CatalogQuery
 from hypatia.interfaces import ICatalog
-from hypatia.query import And, Or, Eq, Any
+from hypatia.query import And, Any, Eq, Or
 from z3c.table.column import GetAttrColumn
-from z3c.table.interfaces import IValues, IColumn
+from z3c.table.interfaces import IColumn, IValues
 from zope.dublincore.interfaces import IZopeDublinCore
-from zope.interface import implementer, Interface
+from zope.interface import Interface, implementer
 from zope.intid.interfaces import IIntIds
 
 from pyams_catalog.query import CatalogResultSet
 from pyams_content.interfaces import MANAGE_SITE_ROOT_PERMISSION, PUBLISH_CONTENT_PERMISSION
 from pyams_content.profile.interfaces import IAdminProfile
 from pyams_content.shared.common import CONTENT_TYPES
-from pyams_content.shared.common.interfaces import IBaseSharedTool, IWfSharedContent, IManagerRestrictions
-from pyams_content.shared.common.interfaces.types import IWfTypedSharedContent
-from pyams_content.shared.common.interfaces.zmi import IDashboardTable, ISharedToolDashboardTable, \
-    IDashboardSearchHeader
+from pyams_content.shared.common.interfaces import IBaseSharedTool, IManagerRestrictions, \
+    ISharedTool, IWfSharedContent
+from pyams_content.shared.common.interfaces.zmi import IDashboardSearchHeader, IDashboardTable, \
+    IDashboardTypeColumnValue, ISharedToolDashboardTable
 from pyams_content.zmi import pyams_content
-from pyams_content.zmi.interfaces import IDashboardMenu, IMyDashboardMenu, IAllContentsMenu
+from pyams_content.zmi.interfaces import IAllContentsMenu, IDashboardMenu, IMyDashboardMenu
 from pyams_i18n.interfaces import II18n
 from pyams_pagelet.pagelet import pagelet_config
 from pyams_security.interfaces import ISecurityManager
@@ -40,11 +38,11 @@
 from pyams_skin.interfaces.container import ITableElementName
 from pyams_skin.layer import IPyAMSLayer
 from pyams_skin.page import DefaultPageHeaderAdapter
-from pyams_skin.table import BaseTable, I18nColumn, NameColumn, JsActionColumn
+from pyams_skin.table import BaseTable, I18nColumn, JsActionColumn, NameColumn
 from pyams_skin.viewlet.menu import MenuItem
 from pyams_template.template import template_config
-from pyams_utils.adapter import adapter_config, ContextRequestViewAdapter
-from pyams_utils.date import format_datetime, SH_DATETIME_FORMAT
+from pyams_utils.adapter import ContextRequestViewAdapter, adapter_config
+from pyams_utils.date import SH_DATETIME_FORMAT, format_datetime
 from pyams_utils.fanstatic import get_resource_path
 from pyams_utils.interfaces import VIEW_SYSTEM_PERMISSION
 from pyams_utils.list import unique_iter
@@ -54,11 +52,15 @@
 from pyams_utils.traversing import get_parent
 from pyams_viewlet.manager import viewletmanager_config
 from pyams_viewlet.viewlet import viewlet_config
-from pyams_workflow.interfaces import IWorkflowState, IWorkflow, IWorkflowVersions, IWorkflowPublicationInfo
+from pyams_workflow.interfaces import IWorkflow, IWorkflowPublicationInfo, IWorkflowState, \
+    IWorkflowVersions
 from pyams_zmi.interfaces.menu import IContentManagementMenu
 from pyams_zmi.layer import IAdminLayer
 from pyams_zmi.view import InnerAdminView
 
+
+__docformat__ = 'restructuredtext'
+
 from pyams_content import _
 
 
@@ -102,17 +104,21 @@
 class SharedToolDashboardTypeColumn(I18nColumn, GetAttrColumn):
     """Shared tool dashboard type column"""
 
-    _header = _("Type")
+    _header = _("Content type")
     weight = 9
 
     def getValue(self, obj):
-        content = IWfTypedSharedContent(obj, None)
-        if content is not None:
-            data_type = content.get_data_type()
-            if data_type is not None:
-                return II18n(data_type).query_attribute('navigation_label', request=self.request) or \
-                       II18n(data_type).query_attribute('label', request=self.request)
-        return '--'
+        value = self.request.registry.queryMultiAdapter((obj, self.request, self.table),
+                                                        IDashboardTypeColumnValue)
+        return value or '--'
+
+
+@adapter_config(name='type', context=(ISharedTool, IPyAMSLayer, ISharedToolDashboardTable),
+                provides=IColumn)
+class SharedContentDashboardTypeColumn(SharedToolDashboardTypeColumn):
+    """Shared tool dashboard type column"""
+
+    _header = _("Type")
 
 
 @adapter_config(name='name', context=(Interface, IPyAMSLayer, IDashboardTable), provides=IColumn)
@@ -122,7 +128,8 @@
     _header = _("Title")
 
 
-@adapter_config(context=(IBaseSharedTool, IPyAMSLayer, IDashboardTable), provides=ITableElementName)
+@adapter_config(context=(IBaseSharedTool, IPyAMSLayer, IDashboardTable),
+                provides=ITableElementName)
 class SharedToolDashboardNameAdapter(ContextRequestViewAdapter):
     """Shared tool dashboard name adapter"""
 
@@ -131,7 +138,8 @@
         return II18n(self.context).query_attribute('title', request=self.request)
 
 
-@adapter_config(context=(IWfSharedContent, IPyAMSLayer, IDashboardTable), provides=ITableElementName)
+@adapter_config(context=(IWfSharedContent, IPyAMSLayer, IDashboardTable),
+                provides=ITableElementName)
 class SharedToolDashboardContentNameAdapter(ContextRequestViewAdapter):
     """Shared tool dashboard content name adapter"""
 
@@ -140,7 +148,8 @@
         return II18n(self.context).query_attribute('title', request=self.request)
 
 
-@adapter_config(name='sequence', context=(Interface, IPyAMSLayer, IDashboardTable), provides=IColumn)
+@adapter_config(name='sequence', context=(Interface, IPyAMSLayer, IDashboardTable),
+                provides=IColumn)
 class SharedToolDashboardSequenceColumn(I18nColumn, GetAttrColumn):
     """Shared tool dashboard sequence ID column"""
 
@@ -160,7 +169,8 @@
             return '--'
 
 
-@adapter_config(name='status', context=(Interface, IPyAMSLayer, IDashboardTable), provides=IColumn)
+@adapter_config(name='status', context=(Interface, IPyAMSLayer, IDashboardTable),
+                provides=IColumn)
 class SharedToolDashboardStatusColumn(I18nColumn, GetAttrColumn):
     """Shared tool dashboard status column"""
 
@@ -187,7 +197,8 @@
             return '--'
 
 
-@adapter_config(name='status_date', context=(Interface, IPyAMSLayer, IDashboardTable), provides=IColumn)
+@adapter_config(name='status_date', context=(Interface, IPyAMSLayer, IDashboardTable),
+                provides=IColumn)
 class SharedToolDashboardStatusDateColumn(I18nColumn, GetAttrColumn):
     """Shared tool dashboard status date column"""
 
@@ -204,7 +215,8 @@
             return '--'
 
 
-@adapter_config(name='version', context=(Interface, IPyAMSLayer, IDashboardTable), provides=IColumn)
+@adapter_config(name='version', context=(Interface, IPyAMSLayer, IDashboardTable),
+                provides=IColumn)
 class SharedToolDashboardVersionColumn(I18nColumn, GetAttrColumn):
     """Shared tool dashboard version column"""
 
@@ -219,7 +231,8 @@
             return '--'
 
 
-@adapter_config(name='status_principal', context=(Interface, IPyAMSLayer, IDashboardTable), provides=IColumn)
+@adapter_config(name='status_principal', context=(Interface, IPyAMSLayer, IDashboardTable),
+                provides=IColumn)
 class SharedToolDashboardStatusPrincipalColumn(I18nColumn, GetAttrColumn):
     """Shared tool dashboard status principal column"""
 
@@ -237,7 +250,8 @@
             return '--'
 
 
-@adapter_config(name='owner', context=(Interface, IPyAMSLayer, IDashboardTable), provides=IColumn)
+@adapter_config(name='owner', context=(Interface, IPyAMSLayer, IDashboardTable),
+                provides=IColumn)
 class SharedToolDashboardOwnerColumn(I18nColumn, GetAttrColumn):
     """Shared tool dashboard owner column"""
 
@@ -259,7 +273,8 @@
                 return '--'
 
 
-@adapter_config(name='modified', context=(Interface, IPyAMSLayer, IDashboardTable), provides=IColumn)
+@adapter_config(name='modified', context=(Interface, IPyAMSLayer, IDashboardTable),
+                provides=IColumn)
 class SharedToolDashboardModifiedColumn(I18nColumn, GetAttrColumn):
     """Shared tool dashboard modified column"""
 
@@ -291,7 +306,8 @@
     url = '#dashboard.html'
 
 
-@pagelet_config(name='dashboard.html', context=IBaseSharedTool, layer=IPyAMSLayer, permission=VIEW_SYSTEM_PERMISSION)
+@pagelet_config(name='dashboard.html', context=IBaseSharedTool, layer=IPyAMSLayer,
+                permission=VIEW_SYSTEM_PERMISSION)
 @template_config(template='templates/dashboard.pt', layer=IAdminLayer)
 class SharedToolDashboardView(InnerAdminView):
     """Shared tool dashboard view"""
@@ -314,17 +330,20 @@
     @property
     def header_title(self):
         registry = self.request.registry
-        adapter = registry.queryMultiAdapter((self.context, self.request, self), IDashboardSearchHeader)
+        adapter = registry.queryMultiAdapter((self.context, self.request, self),
+                                             IDashboardSearchHeader)
         if adapter is not None:
             return adapter.title
         else:
             translate = self.request.localizer.translate
-            return translate(_("SEARCH - Between all contents of type &laquo;&nbsp;{type}&nbsp;&raquo;")).format(
+            return translate(_("SEARCH - Between all contents of type "
+                               "&laquo;&nbsp;{type}&nbsp;&raquo;")).format(
                 type=II18n(self.context).query_attribute('title', request=self.request)
             )
 
 
-@adapter_config(context=(IBaseSharedTool, IPyAMSLayer, SharedToolDashboardView), provides=IPageHeader)
+@adapter_config(context=(IBaseSharedTool, IPyAMSLayer, SharedToolDashboardView),
+                provides=IPageHeader)
 class SharedToolDashboardHeaderAdapter(DefaultPageHeaderAdapter):
     """Shared tool properties header adapter"""
 
@@ -346,7 +365,8 @@
     _plural_title = _("MANAGER - {0} contents waiting for your action")
 
 
-@adapter_config(context=(IBaseSharedTool, IPyAMSLayer, SharedToolDashboardManagerWaitingTable), provides=IValues)
+@adapter_config(context=(IBaseSharedTool, IPyAMSLayer, SharedToolDashboardManagerWaitingTable),
+                provides=IValues)
 class SharedToolDashboardManagerWaitingValues(ContextRequestViewAdapter):
     """Shared tool dashboard waiting values adapter"""
 
@@ -359,8 +379,9 @@
                  Any(catalog['content_type'], CONTENT_TYPES.keys()) & \
                  Any(catalog['workflow_state'], workflow.waiting_states)
         yield from filter(self.check_access,
-                          unique_iter(map(lambda x: sorted(IWorkflowVersions(x).get_versions(IWorkflowState(x).state),
-                                                           key=lambda y: IZopeDublinCore(y).modified, reverse=True)[0],
+                          unique_iter(map(lambda x: sorted(
+                              IWorkflowVersions(x).get_versions(IWorkflowState(x).state),
+                              key=lambda y: IZopeDublinCore(y).modified, reverse=True)[0],
                                           CatalogResultSet(CatalogQuery(catalog).query(params,
                                                                                        sort_index='modified_date')))))
 
@@ -390,7 +411,8 @@
     dt_sort_order = 'asc'
 
 
-@adapter_config(context=(IBaseSharedTool, IPyAMSLayer, SharedToolDashboardOwnerWaitingTable), provides=IValues)
+@adapter_config(context=(IBaseSharedTool, IPyAMSLayer, SharedToolDashboardOwnerWaitingTable),
+                provides=IValues)
 class SharedToolDashboardOwnerWaitingValues(ContextRequestViewAdapter):
     """Shared tool dashboard waiting owned contents values adapter"""
 
@@ -403,10 +425,11 @@
                  Any(catalog['content_type'], CONTENT_TYPES.keys()) & \
                  Any(catalog['workflow_state'], workflow.waiting_states) & \
                  Eq(catalog['workflow_principal'], self.request.principal.id)
-        yield from unique_iter(map(lambda x: sorted(IWorkflowVersions(x).get_versions(IWorkflowState(x).state),
-                                                    key=lambda y: IZopeDublinCore(y).modified, reverse=True)[0],
-                                   CatalogResultSet(CatalogQuery(catalog).query(params,
-                                                                                sort_index='modified_date'))))
+        yield from unique_iter(
+            map(lambda x: sorted(IWorkflowVersions(x).get_versions(IWorkflowState(x).state),
+                                 key=lambda y: IZopeDublinCore(y).modified, reverse=True)[0],
+                CatalogResultSet(CatalogQuery(catalog).query(params,
+                                                             sort_index='modified_date'))))
 
 
 #
@@ -427,7 +450,8 @@
             return _("CONTRIBUTOR - Last {0} modified contents")
 
 
-@adapter_config(context=(IBaseSharedTool, IPyAMSLayer, SharedToolDashboardOwnerModifiedTable), provides=IValues)
+@adapter_config(context=(IBaseSharedTool, IPyAMSLayer, SharedToolDashboardOwnerModifiedTable),
+                provides=IValues)
 class SharedToolDashboardOwnerModifiedValues(ContextRequestViewAdapter):
     """Shared tool dashboard waiting owned contents values adapter"""
 
@@ -439,12 +463,13 @@
                      Any(catalog['content_type'], CONTENT_TYPES.keys()),
                      Or(Eq(catalog['role:owner'], self.request.principal.id),
                         Eq(catalog['role:contributor'], self.request.principal.id)))
-        yield from unique_iter(map(lambda x: sorted(IWorkflowVersions(x).get_versions(IWorkflowState(x).state),
-                                                    key=lambda y: IZopeDublinCore(y).modified, reverse=True)[0],
-                                   CatalogResultSet(CatalogQuery(catalog).query(params,
-                                                                                limit=50,
-                                                                                sort_index='modified_date',
-                                                                                reverse=True))))
+        yield from unique_iter(
+            map(lambda x: sorted(IWorkflowVersions(x).get_versions(IWorkflowState(x).state),
+                                 key=lambda y: IZopeDublinCore(y).modified, reverse=True)[0],
+                CatalogResultSet(CatalogQuery(catalog).query(params,
+                                                             limit=50,
+                                                             sort_index='modified_date',
+                                                             reverse=True))))
 
 
 #
@@ -540,14 +565,16 @@
                                                                                 reverse=True))))
 
 
-@pagelet_config(name='my-favorites.html', context=IBaseSharedTool, layer=IPyAMSLayer, permission=VIEW_SYSTEM_PERMISSION)
+@pagelet_config(name='my-favorites.html', context=IBaseSharedTool, layer=IPyAMSLayer,
+                permission=VIEW_SYSTEM_PERMISSION)
 class SharedToolFavoritesView(InnerAdminView, ContainerView):
     """Shared tool favorites view"""
 
     table_class = SharedToolFavoritesTable
 
 
-@adapter_config(context=(IBaseSharedTool, IPyAMSLayer, SharedToolFavoritesView), provides=IPageHeader)
+@adapter_config(context=(IBaseSharedTool, IPyAMSLayer, SharedToolFavoritesView),
+                provides=IPageHeader)
 class SharedToolFavoritesHeaderAdapter(DefaultPageHeaderAdapter):
     """Shared tool favorites header adapter"""
 
@@ -584,7 +611,8 @@
     _plural_title = _("CONTRIBUTOR - {0} contents in preparation")
 
 
-@adapter_config(context=(IBaseSharedTool, IPyAMSLayer, SharedToolPreparationsTable), provides=IValues)
+@adapter_config(context=(IBaseSharedTool, IPyAMSLayer, SharedToolPreparationsTable),
+                provides=IValues)
 class SharedToolPreparationsValues(ContextRequestViewAdapter):
     """Shared tool preparations values adapter"""
 
@@ -611,7 +639,8 @@
     table_class = SharedToolPreparationsTable
 
 
-@adapter_config(context=(IBaseSharedTool, IPyAMSLayer, SharedToolPreparationsView), provides=IPageHeader)
+@adapter_config(context=(IBaseSharedTool, IPyAMSLayer, SharedToolPreparationsView),
+                provides=IPageHeader)
 class SharedToolPreparationsHeaderAdapter(DefaultPageHeaderAdapter):
     """Shared tool preparations header adapter"""
 
@@ -648,7 +677,8 @@
     _plural_title = _("CONTRIBUTOR - {0} submitted contents")
 
 
-@adapter_config(context=(IBaseSharedTool, IPyAMSLayer, SharedToolSubmissionsTable), provides=IValues)
+@adapter_config(context=(IBaseSharedTool, IPyAMSLayer, SharedToolSubmissionsTable),
+                provides=IValues)
 class SharedToolSubmissionsValues(ContextRequestViewAdapter):
     """Shared tool submissions values adapter"""
 
@@ -675,7 +705,8 @@
     table_class = SharedToolSubmissionsTable
 
 
-@adapter_config(context=(IBaseSharedTool, IPyAMSLayer, SharedToolSubmissionsView), provides=IPageHeader)
+@adapter_config(context=(IBaseSharedTool, IPyAMSLayer, SharedToolSubmissionsView),
+                provides=IPageHeader)
 class SharedToolSubmissionsHeaderAdapter(DefaultPageHeaderAdapter):
     """Shared tool submissions header adapter"""
 
@@ -712,7 +743,8 @@
     _plural_title = _("CONTRIBUTOR - {0} published contents")
 
 
-@adapter_config(context=(IBaseSharedTool, IPyAMSLayer, SharedToolPublicationsTable), provides=IValues)
+@adapter_config(context=(IBaseSharedTool, IPyAMSLayer, SharedToolPublicationsTable),
+                provides=IValues)
 class SharedToolPublicationsValues(ContextRequestViewAdapter):
     """Shared tool publications values adapter"""
 
@@ -739,7 +771,8 @@
     table_class = SharedToolPublicationsTable
 
 
-@adapter_config(context=(IBaseSharedTool, IPyAMSLayer, SharedToolPublicationsView), provides=IPageHeader)
+@adapter_config(context=(IBaseSharedTool, IPyAMSLayer, SharedToolPublicationsView),
+                provides=IPageHeader)
 class SharedToolPublicationsHeaderAdapter(DefaultPageHeaderAdapter):
     """Shared tool publications header adapter"""
 
@@ -776,7 +809,8 @@
     _plural_title = _("CONTRIBUTOR - {0} retired contents")
 
 
-@adapter_config(context=(IBaseSharedTool, IPyAMSLayer, SharedToolRetiredContentsTable), provides=IValues)
+@adapter_config(context=(IBaseSharedTool, IPyAMSLayer, SharedToolRetiredContentsTable),
+                provides=IValues)
 class SharedToolRetiredContentsValues(ContextRequestViewAdapter):
     """Shared tool retired contents values adapter"""
 
@@ -803,7 +837,8 @@
     table_class = SharedToolRetiredContentsTable
 
 
-@adapter_config(context=(IBaseSharedTool, IPyAMSLayer, SharedToolRetiredContentsView), provides=IPageHeader)
+@adapter_config(context=(IBaseSharedTool, IPyAMSLayer, SharedToolRetiredContentsView),
+                provides=IPageHeader)
 class SharedToolRetiredContentsHeaderAdapter(DefaultPageHeaderAdapter):
     """Shared tool retired contents header adapter"""
 
@@ -840,7 +875,8 @@
     _plural_title = _("CONTRIBUTOR - {0} archived contents")
 
 
-@adapter_config(context=(IBaseSharedTool, IPyAMSLayer, SharedToolArchivedContentsTable), provides=IValues)
+@adapter_config(context=(IBaseSharedTool, IPyAMSLayer, SharedToolArchivedContentsTable),
+                provides=IValues)
 class SharedToolArchivedContentsValues(ContextRequestViewAdapter):
     """Shared tool archived contents values adapter"""
 
@@ -873,7 +909,8 @@
     table_class = SharedToolArchivedContentsTable
 
 
-@adapter_config(context=(IBaseSharedTool, IPyAMSLayer, SharedToolArchivedContentsView), provides=IPageHeader)
+@adapter_config(context=(IBaseSharedTool, IPyAMSLayer, SharedToolArchivedContentsView),
+                provides=IPageHeader)
 class SharedToolArchivedContentsHeaderAdapter(DefaultPageHeaderAdapter):
     """Shared tool archived contents header adapter"""
 
@@ -932,7 +969,8 @@
             return _("CONTRIBUTORS - Last published contents (in the limit of 50)")
 
 
-@adapter_config(context=(IBaseSharedTool, IPyAMSLayer, SharedToolAllPublicationsTable), provides=IValues)
+@adapter_config(context=(IBaseSharedTool, IPyAMSLayer, SharedToolAllPublicationsTable),
+                provides=IValues)
 class SharedToolAllPublicationsValues(ContextRequestViewAdapter):
     """Shared tool published contents values adapter"""
 
@@ -958,7 +996,8 @@
     table_class = SharedToolAllPublicationsTable
 
 
-@adapter_config(context=(IBaseSharedTool, IPyAMSLayer, SharedToolAllPublicationsView), provides=IPageHeader)
+@adapter_config(context=(IBaseSharedTool, IPyAMSLayer, SharedToolAllPublicationsView),
+                provides=IPageHeader)
 class SharedToolAllPublicationsHeaderAdapter(DefaultPageHeaderAdapter):
     """Shared tool published contents header adapter"""
 
@@ -1001,7 +1040,8 @@
             return _("CONTRIBUTORS - Last updated contents (in the limit of 50)")
 
 
-@adapter_config(context=(IBaseSharedTool, IPyAMSLayer, SharedToolAllUpdatesTable), provides=IValues)
+@adapter_config(context=(IBaseSharedTool, IPyAMSLayer, SharedToolAllUpdatesTable),
+                provides=IValues)
 class SharedToolAllUpdatesValues(ContextRequestViewAdapter):
     """Shared tool updated contents values adapter"""
 
@@ -1025,7 +1065,8 @@
     table_class = SharedToolAllUpdatesTable
 
 
-@adapter_config(context=(IBaseSharedTool, IPyAMSLayer, SharedToolAllUpdatesView), provides=IPageHeader)
+@adapter_config(context=(IBaseSharedTool, IPyAMSLayer, SharedToolAllUpdatesView),
+                provides=IPageHeader)
 class SharedToolAllUpdatesHeaderAdapter(DefaultPageHeaderAdapter):
     """Shared tool updated contents header adapter"""
 
--- a/src/pyams_content/shared/site/zmi/folder.py	Wed Jul 01 14:10:50 2020 +0200
+++ b/src/pyams_content/shared/site/zmi/folder.py	Wed Jul 01 18:05:38 2020 +0200
@@ -21,7 +21,9 @@
 from zope.schema import Int, Text
 
 from pyams_content.interfaces import MANAGE_SITE_PERMISSION, MANAGE_TOOL_PERMISSION
+from pyams_content.shared.common import IDashboardTypeColumnValue
 from pyams_content.shared.common.interfaces import IBaseSharedTool
+from pyams_content.shared.common.interfaces.zmi import IDashboardTable
 from pyams_content.shared.common.zmi.manager import SharedToolPropertiesEditForm
 from pyams_content.shared.site.interfaces import ISiteContainer, ISiteFolder, ISiteManager
 from pyams_content.shared.site.zmi.widget import SiteManagerFoldersSelectorFieldWidget
@@ -160,6 +162,13 @@
 # Site folder edit form
 #
 
+@adapter_config(context=(ISiteFolder, IPyAMSLayer, IDashboardTable),
+                provides=IDashboardTypeColumnValue)
+def site_folder_dashboard_type(context, request, view):
+    """Site folder dashboard type column adapter"""
+    return request.localizer.translate(context.content_name)
+
+
 @adapter_config(context=(ISiteFolder, IPyAMSLayer), provides=ITableElementName)
 class SiteFolderTableElementNameAdapter(ContextRequestAdapter):
     """Site folder table element name adapter"""
--- a/src/pyams_content/shared/site/zmi/manager.py	Wed Jul 01 14:10:50 2020 +0200
+++ b/src/pyams_content/shared/site/zmi/manager.py	Wed Jul 01 18:05:38 2020 +0200
@@ -10,18 +10,16 @@
 # FOR A PARTICULAR PURPOSE.
 #
 
-__docformat__ = 'restructuredtext'
-
 from pyramid.events import subscriber
 from pyramid.path import DottedNameResolver
 from z3c.form import field
 from z3c.form.interfaces import IDataExtractedEvent
 from zope.interface import Interface, Invalid
 
-from pyams_content import _
 from pyams_content.interfaces import MANAGE_SITE_ROOT_PERMISSION, MANAGE_TOOL_PERMISSION
 from pyams_content.root.interfaces import ISiteRoot
-from pyams_content.shared.common import IBaseSharedTool
+from pyams_content.shared.common import IBaseSharedTool, IDashboardTypeColumnValue
+from pyams_content.shared.common.interfaces.zmi import IDashboardTable
 from pyams_content.shared.common.zmi.manager import SharedToolPropertiesEditForm
 from pyams_content.shared.site import WfSiteTopic
 from pyams_content.shared.site.interfaces import ISiteManager, ISiteManagerFactory
@@ -46,6 +44,18 @@
 from pyams_zmi.layer import IAdminLayer
 
 
+__docformat__ = 'restructuredtext'
+
+from pyams_content import _
+
+
+@adapter_config(context=(ISiteManager, IPyAMSLayer, IDashboardTable),
+                provides=IDashboardTypeColumnValue)
+def site_manager_dashboard_type(context, request, view):
+    """Site manager dashboard type column adapter"""
+    return request.localizer.translate(context.content_name)
+
+
 @adapter_config(context=(ISiteManager, ISiteManagementMenu), provides=IMenuHeader)
 class SiteManagerSiteManagementMenuHeader(ContextRequestAdapter):
     """Site manager site management menu header adapter"""
@@ -81,7 +91,8 @@
     modal_target = False
 
 
-@adapter_config(context=(ISiteManager, IAdminLayer, ISiteTreeTable), provides=ITableElementEditor)
+@adapter_config(context=(ISiteManager, IAdminLayer, ISiteTreeTable),
+                provides=ITableElementEditor)
 class SiteManagerTableElementEditor(DefaultElementEditorAdapter):
     """Site tree table element editor"""
 
@@ -101,7 +112,8 @@
 
 
 @viewlet_config(name='add-site-manager.menu', context=ISiteRoot, layer=IAdminLayer,
-                view=ISiteTreeTable, manager=IToolbarAddingMenu, permission=MANAGE_SITE_ROOT_PERMISSION)
+                view=ISiteTreeTable, manager=IToolbarAddingMenu,
+                permission=MANAGE_SITE_ROOT_PERMISSION)
 class SiteManagerAddMenu(ToolbarMenuItem):
     """Site manager add menu"""
 
@@ -142,7 +154,8 @@
         return absolute_url(self.context, self.request, 'site-tree.html')
 
 
-@pagelet_config(name='properties.html', context=ISiteManager, layer=IPyAMSLayer, permission=MANAGE_TOOL_PERMISSION)
+@pagelet_config(name='properties.html', context=ISiteManager, layer=IPyAMSLayer,
+                permission=MANAGE_TOOL_PERMISSION)
 @ajax_config(name='properties.json', context=ISiteManager, layer=IPyAMSLayer)
 class SiteManagerPropertiesEditForm(SharedToolPropertiesEditForm):
     """Site manager properties edit form"""
@@ -160,7 +173,8 @@
     negotiator = query_utility(INegotiator)
     short_name = event.data.get('short_name', {}).get(negotiator.server_language)
     if not short_name:
-        event.form.widgets.errors += (Invalid(_("You must provide a short name for default server language!")),)
+        event.form.widgets.errors += (Invalid(_("You must provide a short name for default "
+                                                "server language!")),)
         return
     name = translate_string(short_name, force_lower=True, spaces='-')
     if name in container:
@@ -168,4 +182,5 @@
         return
     site = query_utility(ISiteManager, name=short_name)
     if site is not None:
-        event.form.widgets.errors += (Invalid(_("A site manager is already registered with this name!!")),)
+        event.form.widgets.errors += (Invalid(_("A site manager is already registered with "
+                                                "this name!!")),)