Added column in redirections table to display rule target status
authorThierry Florac <tflorac@ulthar.net>
Wed, 13 Mar 2019 08:58:43 +0100
changeset 1288 ef227fc388a6
parent 1287 c5ea062a6f34
child 1289 2d7b57b22904
Added column in redirections table to display rule target status
src/pyams_content/features/redirect/zmi/container.py
src/pyams_content/locales/fr/LC_MESSAGES/pyams_content.mo
src/pyams_content/locales/fr/LC_MESSAGES/pyams_content.po
src/pyams_content/locales/pyams_content.pot
--- a/src/pyams_content/features/redirect/zmi/container.py	Mon Feb 18 16:19:49 2019 +0100
+++ b/src/pyams_content/features/redirect/zmi/container.py	Wed Mar 13 08:58:43 2019 +0100
@@ -9,6 +9,8 @@
 # WARRANTIES OF TITLE, MERCHANTABILITY, AGAINST INFRINGEMENT, AND FITNESS
 # FOR A PARTICULAR PURPOSE.
 #
+from pyams_workflow.interfaces import IWorkflowPublicationInfo
+
 
 __docformat__ = 'restructuredtext'
 
@@ -38,7 +40,7 @@
 from pyams_skin.layer import IPyAMSLayer
 from pyams_skin.page import DefaultPageHeaderAdapter
 from pyams_skin.skin import apply_skin
-from pyams_skin.table import AttributeSwitcherColumn, BaseTable, I18nColumn, SorterColumn, TrashColumn
+from pyams_skin.table import AttributeSwitcherColumn, BaseTable, I18nColumn, SorterColumn, TrashColumn, ImageColumn
 from pyams_skin.viewlet.menu import MenuItem
 from pyams_skin.viewlet.toolbar import ToolbarAction
 from pyams_template.template import template_config
@@ -208,6 +210,43 @@
     weight = 10
 
 
+@adapter_config(name='visible', context=(IRedirectionManagerTarget, IPyAMSLayer, RedirectionsContainerTable),
+                provides=IColumn)
+class RedirectionsContainerVisibleColumn(ImageColumn):
+    """Redirections container visible column"""
+
+    cssClasses = {'th': 'action', 'td': 'action'}
+    weight = 19
+
+    def get_icon_class(self, item):
+        if item.reference:
+            target = item.target
+            if target is not None:
+                info = IWorkflowPublicationInfo(target, None)
+                if info is not None:
+                    if info.is_published():
+                        return 'fa-eye'
+                    else:
+                        return 'fa-eye-slash text-danger'
+            return ''
+        else:
+            return 'fa-external-link'
+
+    def get_icon_hint(self, item):
+        if item.reference:
+            target = item.target
+            if target is not None:
+                info = IWorkflowPublicationInfo(target, None)
+                if info is not None:
+                    if info.is_published():
+                        return self.request.localizer.translate(_("Target is published"))
+                    else:
+                        return self.request.localizer.translate(_("Target is not published"))
+            return ''
+        else:
+            return self.request.localizer.translate(_("External link"))
+
+
 @adapter_config(name='target', context=(IRedirectionManagerTarget, IPyAMSLayer, RedirectionsContainerTable),
                 provides=IColumn)
 class RedirectionsContainerTargetColumn(I18nColumn, GetAttrColumn):
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	Mon Feb 18 16:19:49 2019 +0100
+++ b/src/pyams_content/locales/fr/LC_MESSAGES/pyams_content.po	Wed Mar 13 08:58:43 2019 +0100
@@ -5,7 +5,7 @@
 msgid ""
 msgstr ""
 "Project-Id-Version: PACKAGE 1.0\n"
-"POT-Creation-Date: 2019-02-14 16:17+0100\n"
+"POT-Creation-Date: 2019-03-13 08:56+0100\n"
 "PO-Revision-Date: 2015-09-10 10:42+0200\n"
 "Last-Translator: Thierry Florac <tflorac@ulthar.net>\n"
 "Language-Team: French\n"
@@ -475,7 +475,7 @@
 #: src/pyams_content/component/links/interfaces.py:39
 #: src/pyams_content/component/paragraph/interfaces/audio.py:50
 #: src/pyams_content/component/extfile/interfaces.py:36
-#: src/pyams_content/features/search/interfaces.py:46
+#: src/pyams_content/features/search/interfaces.py:45
 #: src/pyams_content/shared/form/interfaces.py:64
 msgid "Description"
 msgstr "Description"
@@ -881,6 +881,7 @@
 msgstr "Lien interne"
 
 #: src/pyams_content/component/links/__init__.py:223
+#: src/pyams_content/features/redirect/zmi/container.py:248
 msgid "External link"
 msgstr "Lien externe"
 
@@ -1059,7 +1060,7 @@
 
 #: src/pyams_content/component/paragraph/interfaces/header.py:33
 #: src/pyams_content/component/paragraph/interfaces/header.py:40
-#: src/pyams_content/shared/common/interfaces/__init__.py:151
+#: src/pyams_content/shared/common/interfaces/__init__.py:150
 #: src/pyams_content/shared/site/interfaces.py:81
 msgid "Header"
 msgstr "Chapô"
@@ -2577,8 +2578,8 @@
 "temporaire"
 
 #: src/pyams_content/features/redirect/interfaces.py:56
-#: src/pyams_content/features/redirect/zmi/container.py:206
-#: src/pyams_content/features/redirect/zmi/container.py:365
+#: src/pyams_content/features/redirect/zmi/container.py:209
+#: src/pyams_content/features/redirect/zmi/container.py:405
 msgid "URL pattern"
 msgstr "Schéma d'URL"
 
@@ -2611,31 +2612,31 @@
 msgid "You must provide an internal reference OR a target URL"
 msgstr "Vous devez fournir une référence interne OU une URL de redirection !"
 
-#: src/pyams_content/features/redirect/zmi/container.py:63
+#: src/pyams_content/features/redirect/zmi/container.py:66
 msgid "Redirections"
 msgstr "Redirections"
 
-#: src/pyams_content/features/redirect/zmi/container.py:157
+#: src/pyams_content/features/redirect/zmi/container.py:160
 msgid "Enable/disable rule"
 msgstr "Activer/désactiver la règle"
 
-#: src/pyams_content/features/redirect/zmi/container.py:184
+#: src/pyams_content/features/redirect/zmi/container.py:187
 msgid "Chain/unchain rule"
 msgstr "Enchaîner la règle avec la suivante"
 
-#: src/pyams_content/features/redirect/zmi/container.py:216
+#: src/pyams_content/features/redirect/zmi/container.py:256
 msgid "Target"
 msgstr "Cible"
 
-#: src/pyams_content/features/redirect/zmi/container.py:245
+#: src/pyams_content/features/redirect/zmi/container.py:285
 msgid "Redirections list"
 msgstr "Liste des règles de redirection"
 
-#: src/pyams_content/features/redirect/zmi/container.py:260
+#: src/pyams_content/features/redirect/zmi/container.py:300
 msgid "Redirection rules"
 msgstr "Règles de redirection"
 
-#: src/pyams_content/features/redirect/zmi/container.py:261
+#: src/pyams_content/features/redirect/zmi/container.py:301
 msgid ""
 "Redirection rules are use to handle redirections responses when a request "
 "generates \n"
@@ -2672,52 +2673,60 @@
 "\", la nouvelle URL qu'elle génère est passée aux règles suivantes, jusqu'à "
 "ce qu'une règle s'applique à cette nouvelle URL.\n"
 
-#: src/pyams_content/features/redirect/zmi/container.py:287
+#: src/pyams_content/features/redirect/zmi/container.py:327
 msgid "Test"
 msgstr "Tester !"
 
-#: src/pyams_content/features/redirect/zmi/container.py:322
+#: src/pyams_content/features/redirect/zmi/container.py:362
 msgid "Test redirection rules"
 msgstr "Test des règles de redirection"
 
-#: src/pyams_content/features/redirect/zmi/container.py:300
+#: src/pyams_content/features/redirect/zmi/container.py:340
 msgid "Test URL"
 msgstr "URL à tester"
 
-#: src/pyams_content/features/redirect/zmi/container.py:303
+#: src/pyams_content/features/redirect/zmi/container.py:343
 msgid "Check inactive rules?"
 msgstr "Tester les règles inactive ?"
 
-#: src/pyams_content/features/redirect/zmi/container.py:304
+#: src/pyams_content/features/redirect/zmi/container.py:344
 msgid "If 'yes', inactive rules will also be tested"
 msgstr "Si 'oui', les règles inactives seront également testées"
 
-#: src/pyams_content/features/redirect/zmi/container.py:312
+#: src/pyams_content/features/redirect/zmi/container.py:352
 msgid "Close"
 msgstr "Fermer"
 
-#: src/pyams_content/features/redirect/zmi/container.py:313
+#: src/pyams_content/features/redirect/zmi/container.py:353
 msgid "Test rules"
 msgstr "Tester cette URL"
 
-#: src/pyams_content/features/redirect/zmi/container.py:119
+#: src/pyams_content/features/redirect/zmi/container.py:122
 msgid "No currently defined redirection rule."
 msgstr "Aucune règle de redirection n'est définie actuellement."
 
-#: src/pyams_content/features/redirect/zmi/container.py:370
+#: src/pyams_content/features/redirect/zmi/container.py:410
 msgid "No matching rule!"
 msgstr "Aucune règle ne correspond !"
 
-#: src/pyams_content/features/redirect/zmi/container.py:227
+#: src/pyams_content/features/redirect/zmi/container.py:243
+msgid "Target is published"
+msgstr "Le contenu ciblé est publié"
+
+#: src/pyams_content/features/redirect/zmi/container.py:245
+msgid "Target is not published"
+msgstr "Le contenu ciblé n'est pas publié"
+
+#: src/pyams_content/features/redirect/zmi/container.py:267
 #, python-format
 msgid "Internal reference: {0} (not found)"
 msgstr "Référence interne: {0} (non trouvée)"
 
-#: src/pyams_content/features/redirect/zmi/container.py:364
+#: src/pyams_content/features/redirect/zmi/container.py:404
 msgid "Input URL"
 msgstr "URL en entrée"
 
-#: src/pyams_content/features/redirect/zmi/container.py:366
+#: src/pyams_content/features/redirect/zmi/container.py:406
 msgid "Output URL"
 msgstr "URL générée"
 
@@ -3139,11 +3148,11 @@
 msgid "Search folder"
 msgstr "Moteur de recherche"
 
-#: src/pyams_content/features/search/interfaces.py:36
+#: src/pyams_content/features/search/interfaces.py:35
 msgid "Main search engine"
 msgstr "Moteur de recherche principal"
 
-#: src/pyams_content/features/search/interfaces.py:37
+#: src/pyams_content/features/search/interfaces.py:36
 msgid ""
 "Search folder handling main site search. You can search a reference using "
 "'+' followed by internal number, of by entering text matching content title."
@@ -3153,27 +3162,27 @@
 "d'un '+') ; le titre d'origine peut être modifié en utilisant le titre de "
 "substitution."
 
-#: src/pyams_content/features/search/interfaces.py:42
+#: src/pyams_content/features/search/interfaces.py:41
 msgid "Search engine name"
 msgstr "Nom du moteur"
 
-#: src/pyams_content/features/search/interfaces.py:43
+#: src/pyams_content/features/search/interfaces.py:42
 msgid "Name given to the search engine"
 msgstr "Nom court donné au moteur de recherche"
 
-#: src/pyams_content/features/search/interfaces.py:47
+#: src/pyams_content/features/search/interfaces.py:46
 msgid "Description given to the search engine"
 msgstr "Description du moteur de recherche"
 
+#: src/pyams_content/features/search/interfaces.py:53
+#: src/pyams_content/shared/common/interfaces/__init__.py:51
+#: src/pyams_content/shared/common/interfaces/__init__.py:195
+msgid "Managers"
+msgstr "Responsables"
+
 #: src/pyams_content/features/search/interfaces.py:54
 #: src/pyams_content/shared/common/interfaces/__init__.py:52
 #: src/pyams_content/shared/common/interfaces/__init__.py:196
-msgid "Managers"
-msgstr "Responsables"
-
-#: src/pyams_content/features/search/interfaces.py:55
-#: src/pyams_content/shared/common/interfaces/__init__.py:53
-#: src/pyams_content/shared/common/interfaces/__init__.py:197
 msgid ""
 "Managers can handle main operations in tool's workflow, like publish or "
 "retire contents"
@@ -3182,37 +3191,37 @@
 "(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/shared/common/interfaces/__init__.py:62
+#: src/pyams_content/shared/common/interfaces/__init__.py:207
+msgid "Designers"
+msgstr "Designers"
+
 #: src/pyams_content/features/search/interfaces.py:60
 #: src/pyams_content/shared/common/interfaces/__init__.py:63
 #: src/pyams_content/shared/common/interfaces/__init__.py:208
-msgid "Designers"
-msgstr "Designers"
-
-#: src/pyams_content/features/search/interfaces.py:61
-#: src/pyams_content/shared/common/interfaces/__init__.py:64
-#: src/pyams_content/shared/common/interfaces/__init__.py:209
 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/shared/common/interfaces/__init__.py:218
+msgid "Guests"
+msgstr "Invités"
+
 #: src/pyams_content/features/search/interfaces.py:65
 #: src/pyams_content/shared/common/interfaces/__init__.py:219
-msgid "Guests"
-msgstr "Invités"
-
-#: src/pyams_content/features/search/interfaces.py:66
-#: src/pyams_content/shared/common/interfaces/__init__.py:220
 msgid ""
 "Guests are users which are allowed to view contents with restricted access"
 msgstr ""
 "Les invités sont autorisés à consulter des contenus dont l'accès a été "
 "restreint"
 
-#: src/pyams_content/features/search/interfaces.py:74
+#: src/pyams_content/features/search/interfaces.py:73
 #: src/pyams_content/shared/view/interfaces.py:111
 msgid "Order by"
 msgstr "Ordre de tri"
 
-#: src/pyams_content/features/search/interfaces.py:75
+#: src/pyams_content/features/search/interfaces.py:74
 #: src/pyams_content/shared/view/interfaces.py:112
 msgid ""
 "Property to use to sort results; publication date can be different from "
@@ -3225,25 +3234,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:82
+#: src/pyams_content/features/search/interfaces.py:81
 #: src/pyams_content/shared/site/interfaces.py:95
 msgid "Visible in folders list"
 msgstr "Visible dans la liste des rubriques ?"
 
-#: src/pyams_content/features/search/interfaces.py:83
+#: src/pyams_content/features/search/interfaces.py:82
 #: src/pyams_content/shared/site/interfaces.py:96
 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:87
+#: src/pyams_content/features/search/interfaces.py:86
 #: src/pyams_content/shared/site/interfaces.py:100
 #: src/pyams_content/shared/site/interfaces.py:164
 msgid "Navigation title"
 msgstr "Titre de navigation"
 
-#: src/pyams_content/features/search/interfaces.py:88
+#: src/pyams_content/features/search/interfaces.py:87
 #: src/pyams_content/shared/site/interfaces.py:101
 msgid ""
 "Folder's title displayed in navigation pages; original title will be used if "
@@ -3252,21 +3261,21 @@
 "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:92
+#: src/pyams_content/features/search/interfaces.py:91
 msgid "Selected content types"
 msgstr "Gabarits sélectionnés"
 
-#: src/pyams_content/features/search/interfaces.py:93
+#: src/pyams_content/features/search/interfaces.py:92
 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:97
+#: src/pyams_content/features/search/interfaces.py:96
 msgid "Selected data types"
 msgstr "Types de contenus sélectionnés"
 
-#: src/pyams_content/features/search/interfaces.py:98
+#: src/pyams_content/features/search/interfaces.py:97
 msgid "Searched data types; leave empty for all"
 msgstr ""
 "Types de contenus sélectionnés ; si cette sélection est vide, tous les "
@@ -3470,7 +3479,7 @@
 msgstr "Administrateurs"
 
 #: src/pyams_content/root/interfaces.py:37
-#: src/pyams_content/shared/common/interfaces/__init__.py:41
+#: src/pyams_content/shared/common/interfaces/__init__.py:40
 msgid "Webmasters"
 msgstr "Webmestres"
 
@@ -4056,11 +4065,11 @@
 msgid "No selected handler..."
 msgstr "Aucun gestionnaire sélectionné"
 
-#: src/pyams_content/shared/form/__init__.py:97
+#: src/pyams_content/shared/form/__init__.py:98
 msgid "Form fields"
 msgstr "Champs de saisie"
 
-#: src/pyams_content/shared/form/__init__.py:98
+#: src/pyams_content/shared/form/__init__.py:99
 msgid "no field defined"
 msgstr "aucun champ défini"
 
@@ -4708,7 +4717,7 @@
 msgstr "Article (dans un blog)"
 
 #: src/pyams_content/shared/blog/interfaces.py:67
-#: src/pyams_content/shared/common/interfaces/__init__.py:157
+#: src/pyams_content/shared/common/interfaces/__init__.py:156
 #: src/pyams_content/shared/site/interfaces.py:85
 #: src/pyams_content/shared/site/interfaces.py:130
 msgid "Meta-description"
@@ -4726,7 +4735,7 @@
 "(s'il existe pour ce contenu) sera utilisé."
 
 #: src/pyams_content/shared/blog/interfaces.py:73
-#: src/pyams_content/shared/common/interfaces/__init__.py:169
+#: src/pyams_content/shared/common/interfaces/__init__.py:168
 #: src/pyams_content/shared/site/interfaces.py:91
 #: src/pyams_content/shared/site/interfaces.py:136
 #: src/pyams_content/shared/site/zmi/folder.py:74
@@ -4734,7 +4743,7 @@
 msgstr "Bloc-notes"
 
 #: src/pyams_content/shared/blog/interfaces.py:74
-#: src/pyams_content/shared/common/interfaces/__init__.py:170
+#: src/pyams_content/shared/common/interfaces/__init__.py:169
 #: src/pyams_content/shared/site/interfaces.py:92
 #: src/pyams_content/shared/site/interfaces.py:137
 #: src/pyams_content/shared/site/zmi/folder.py:75
@@ -4799,19 +4808,19 @@
 msgid "Blog post « {title} »"
 msgstr "Article « {title} »"
 
-#: src/pyams_content/shared/common/__init__.py:243
+#: src/pyams_content/shared/common/__init__.py:266
 #: src/pyams_content/shared/common/zmi/properties.py:65
 #: src/pyams_content/shared/common/zmi/manager.py:96
 msgid "Properties"
 msgstr "Propriétés"
 
-#: src/pyams_content/shared/common/__init__.py:153
-#: src/pyams_content/shared/common/__init__.py:161
+#: src/pyams_content/shared/common/__init__.py:176
+#: src/pyams_content/shared/common/__init__.py:184
 #, python-format
 msgid "{date} by {principal}"
 msgstr "{date} par {principal}"
 
-#: src/pyams_content/shared/common/__init__.py:266
+#: src/pyams_content/shared/common/__init__.py:289
 #, python-format
 msgid "title length should be between 40 and 66 characters ({length} actually)"
 msgstr ""
@@ -4867,17 +4876,17 @@
 msgid "Type of content data"
 msgstr "Type du contenu associé à ce gabarit"
 
-#: src/pyams_content/shared/common/interfaces/__init__.py:42
+#: src/pyams_content/shared/common/interfaces/__init__.py:41
 msgid "Webmasters can handle all contents, including published ones"
 msgstr ""
 "Les webmestres peuvent modifier et gérer tous les contenus, y compris ceux "
 "qui sont publiés et hormis ceux qui sont archivés"
 
-#: src/pyams_content/shared/common/interfaces/__init__.py:46
+#: src/pyams_content/shared/common/interfaces/__init__.py:45
 msgid "Pilots"
 msgstr "Pilotes"
 
-#: src/pyams_content/shared/common/interfaces/__init__.py:47
+#: src/pyams_content/shared/common/interfaces/__init__.py:46
 msgid ""
 "Pilots can handle tool configuration, manage access rules, grant users roles "
 "and manage managers restrictions"
@@ -4886,28 +4895,28 @@
 "et les contributeurs, et limitent si nécessaire l'intervention des "
 "responsables à certains contenus"
 
-#: src/pyams_content/shared/common/interfaces/__init__.py:58
-#: src/pyams_content/shared/common/interfaces/__init__.py:202
+#: src/pyams_content/shared/common/interfaces/__init__.py:57
+#: src/pyams_content/shared/common/interfaces/__init__.py:201
 msgid "Contributors"
 msgstr "Contributeurs"
 
-#: src/pyams_content/shared/common/interfaces/__init__.py:59
+#: src/pyams_content/shared/common/interfaces/__init__.py:58
 msgid "Contributors are users which are allowed to create new contents"
 msgstr "Les contributeurs sont autorisés à créer de nouveaux contenus"
 
+#: src/pyams_content/shared/common/interfaces/__init__.py:89
+msgid "Workflow name"
+msgstr "Nom du workflow"
+
 #: src/pyams_content/shared/common/interfaces/__init__.py:90
-msgid "Workflow name"
-msgstr "Nom du workflow"
-
-#: src/pyams_content/shared/common/interfaces/__init__.py:91
 msgid "Name of workflow utility used to manage tool contents"
 msgstr "Nom du workflow qui gère le cycle de vie des contenus de cet outil"
 
-#: src/pyams_content/shared/common/interfaces/__init__.py:119
+#: src/pyams_content/shared/common/interfaces/__init__.py:118
 msgid "Content URL"
 msgstr "URL du contenu"
 
-#: src/pyams_content/shared/common/interfaces/__init__.py:120
+#: src/pyams_content/shared/common/interfaces/__init__.py:119
 msgid ""
 "URL used to access this content; this is important for SEO and should "
 "include most important words describing content; spaces and underscores will "
@@ -4921,11 +4930,11 @@
 "d'union, les lettres accentuées par leur équivalent sans accent, et les mots "
 "de moins de trois lettres sont supprimés."
 
-#: src/pyams_content/shared/common/interfaces/__init__.py:127
+#: src/pyams_content/shared/common/interfaces/__init__.py:126
 msgid "Version creator"
 msgstr "À l'origine de cette version"
 
-#: src/pyams_content/shared/common/interfaces/__init__.py:128
+#: src/pyams_content/shared/common/interfaces/__init__.py:127
 msgid ""
 "Name of content's version creator. The creator of the first version is also "
 "it's owner."
@@ -4933,43 +4942,43 @@
 "Nom du créateur de cette version. Le créateur de la première version d'un "
 "contenu est aussi son propriétaire."
 
-#: src/pyams_content/shared/common/interfaces/__init__.py:132
+#: src/pyams_content/shared/common/interfaces/__init__.py:131
 msgid "First owner"
 msgstr "Premier propriétaire"
 
-#: src/pyams_content/shared/common/interfaces/__init__.py:133
+#: src/pyams_content/shared/common/interfaces/__init__.py:132
 msgid "Name of content's first version owner"
 msgstr "Nom de l'utilisateur ayant créé la première version"
 
-#: src/pyams_content/shared/common/interfaces/__init__.py:137
+#: src/pyams_content/shared/common/interfaces/__init__.py:136
 msgid "Version creation"
 msgstr "Date de création"
 
+#: src/pyams_content/shared/common/interfaces/__init__.py:139
+msgid "Version modifiers"
+msgstr "Intervenants"
+
 #: src/pyams_content/shared/common/interfaces/__init__.py:140
-msgid "Version modifiers"
-msgstr "Intervenants"
-
-#: src/pyams_content/shared/common/interfaces/__init__.py:141
 msgid "List of principals who modified this content"
 msgstr "Liste des utilisateurs qui sont intervenus sur cette version"
 
-#: src/pyams_content/shared/common/interfaces/__init__.py:144
+#: src/pyams_content/shared/common/interfaces/__init__.py:143
 msgid "Last modifier"
 msgstr "Dernier intervenant"
 
-#: src/pyams_content/shared/common/interfaces/__init__.py:145
+#: src/pyams_content/shared/common/interfaces/__init__.py:144
 msgid "Last principal who modified this content"
 msgstr "Dernier utilisateur étant intervenu sur ce contenu"
 
-#: src/pyams_content/shared/common/interfaces/__init__.py:148
+#: src/pyams_content/shared/common/interfaces/__init__.py:147
 msgid "Last update"
 msgstr "Dernière modification"
 
-#: src/pyams_content/shared/common/interfaces/__init__.py:152
+#: src/pyams_content/shared/common/interfaces/__init__.py:151
 msgid "Content's header is generally displayed in page header"
 msgstr "Le chapô du contenu est généralement affiché en tête de page"
 
-#: src/pyams_content/shared/common/interfaces/__init__.py:158
+#: src/pyams_content/shared/common/interfaces/__init__.py:157
 msgid ""
 "The content's description is 'hidden' into HTML's page headers; but it can "
 "be seen, for example, in some search engines results as content's "
@@ -4980,19 +4989,19 @@
 "des moteurs de recherche ; si la description n'est pas renseignée, le chapô "
 "(s'il existe pour ce contenu) sera utilisé."
 
-#: src/pyams_content/shared/common/interfaces/__init__.py:165
+#: src/pyams_content/shared/common/interfaces/__init__.py:164
 msgid "Keywords"
 msgstr "Mots-clés"
 
-#: src/pyams_content/shared/common/interfaces/__init__.py:166
+#: src/pyams_content/shared/common/interfaces/__init__.py:165
 msgid "They will be included into HTML pages metadata"
 msgstr "Ces mots-clés seront intégrés dans les métadonnées des pages HTML"
 
-#: src/pyams_content/shared/common/interfaces/__init__.py:189
+#: src/pyams_content/shared/common/interfaces/__init__.py:188
 msgid "Content owner"
 msgstr "Propriétaire"
 
-#: src/pyams_content/shared/common/interfaces/__init__.py:190
+#: src/pyams_content/shared/common/interfaces/__init__.py:189
 msgid ""
 "The owner is the creator of content's first version, except if it was "
 "transferred afterwards to another owner"
@@ -5001,7 +5010,7 @@
 "lorsque cette propriété a été transférée à un autre utilisateur après coup. "
 "Les contenus archivés ne sont plus transférables."
 
-#: src/pyams_content/shared/common/interfaces/__init__.py:203
+#: src/pyams_content/shared/common/interfaces/__init__.py:202
 msgid ""
 "Contributors are users which are allowed to update this content in addition "
 "to it's owner"
@@ -5009,11 +5018,11 @@
 "Les contributeurs sont autorisés, en plus du propriétaire, à modifier ce "
 "contenu"
 
-#: src/pyams_content/shared/common/interfaces/__init__.py:213
+#: src/pyams_content/shared/common/interfaces/__init__.py:212
 msgid "Readers"
 msgstr "Relecteurs"
 
-#: src/pyams_content/shared/common/interfaces/__init__.py:214
+#: src/pyams_content/shared/common/interfaces/__init__.py:213
 msgid ""
 "Readers are users which are asked to verify and comment contents before they "
 "are published"
@@ -5021,16 +5030,16 @@
 "Les relecteurs sont des utilisateurs qui sont sollicités pour vérifier et "
 "commenter un contenu avant sa publication"
 
-#: src/pyams_content/shared/common/interfaces/__init__.py:245
+#: src/pyams_content/shared/common/interfaces/__init__.py:246
 msgid "Principal ID"
 msgstr "ID utilisateur"
 
-#: src/pyams_content/shared/common/interfaces/__init__.py:284
-#: src/pyams_content/shared/common/interfaces/__init__.py:309
+#: src/pyams_content/shared/common/interfaces/__init__.py:285
+#: src/pyams_content/shared/common/interfaces/__init__.py:310
 msgid "Publication checks"
 msgstr "Activer le tunnel de publication"
 
-#: src/pyams_content/shared/common/interfaces/__init__.py:285
+#: src/pyams_content/shared/common/interfaces/__init__.py:286
 msgid ""
 "If 'yes', this contributor will have to confirm that contents have been "
 "previewed and checked before asking for publication"
@@ -5038,7 +5047,7 @@
 "Si 'oui', ce contributeur devra confirmer qu'il a bien prévisualisé et "
 "audité chaque contenu avant de pouvoir effectuer une demande de publication"
 
-#: src/pyams_content/shared/common/interfaces/__init__.py:310
+#: src/pyams_content/shared/common/interfaces/__init__.py:311
 msgid ""
 "If 'yes', this manager will have to confirm that contents have been "
 "previewed and checked before publishing a content"
@@ -5046,11 +5055,11 @@
 "Si 'oui', ce responsable devra confirmer qu'il a bien prévisualisé et audité "
 "chaque contenu avant de pouvoir effectuer une publication"
 
-#: src/pyams_content/shared/common/interfaces/__init__.py:315
+#: src/pyams_content/shared/common/interfaces/__init__.py:316
 msgid "Restricted contents"
 msgstr "Accès restreints"
 
-#: src/pyams_content/shared/common/interfaces/__init__.py:316
+#: src/pyams_content/shared/common/interfaces/__init__.py:317
 msgid ""
 "If 'yes', this manager will get restricted access to manage contents based "
 "on selected settings"
@@ -5058,11 +5067,11 @@
 "Si 'oui', ce responsable n'aura qu'un accès restreint à certains contenus en "
 "fonction de paramètres spécifiques"
 
-#: src/pyams_content/shared/common/interfaces/__init__.py:321
+#: src/pyams_content/shared/common/interfaces/__init__.py:322
 msgid "Selected owners"
 msgstr "Propriétaires"
 
-#: src/pyams_content/shared/common/interfaces/__init__.py:322
+#: src/pyams_content/shared/common/interfaces/__init__.py:323
 msgid "Manager will have access to contents owned by these principals"
 msgstr ""
 "Le responsable n'aura accès qu'aux contenus dont ces utilisateurs sont "
@@ -6402,11 +6411,11 @@
 msgid "Edit paragraph properties"
 msgstr "Propriétés de l'image cliquable"
 
-#: src/pyams_content/shared/logo/__init__.py:72
+#: src/pyams_content/shared/logo/__init__.py:71
 msgid "no image defined"
 msgstr "aucune image définie"
 
-#: src/pyams_content/shared/logo/__init__.py:75
+#: src/pyams_content/shared/logo/__init__.py:74
 msgid "no URL defined"
 msgstr "aucune URL définie"
 
--- a/src/pyams_content/locales/pyams_content.pot	Mon Feb 18 16:19:49 2019 +0100
+++ b/src/pyams_content/locales/pyams_content.pot	Wed Mar 13 08:58:43 2019 +0100
@@ -6,7 +6,7 @@
 msgid ""
 msgstr ""
 "Project-Id-Version: PACKAGE 1.0\n"
-"POT-Creation-Date: 2019-02-14 16:17+0100\n"
+"POT-Creation-Date: 2019-03-13 08:56+0100\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"
@@ -459,7 +459,7 @@
 #: ./src/pyams_content/component/links/interfaces.py:39
 #: ./src/pyams_content/component/paragraph/interfaces/audio.py:50
 #: ./src/pyams_content/component/extfile/interfaces.py:36
-#: ./src/pyams_content/features/search/interfaces.py:46
+#: ./src/pyams_content/features/search/interfaces.py:45
 #: ./src/pyams_content/shared/form/interfaces.py:64
 msgid "Description"
 msgstr ""
@@ -839,6 +839,7 @@
 msgstr ""
 
 #: ./src/pyams_content/component/links/__init__.py:223
+#: ./src/pyams_content/features/redirect/zmi/container.py:248
 msgid "External link"
 msgstr ""
 
@@ -1002,7 +1003,7 @@
 
 #: ./src/pyams_content/component/paragraph/interfaces/header.py:33
 #: ./src/pyams_content/component/paragraph/interfaces/header.py:40
-#: ./src/pyams_content/shared/common/interfaces/__init__.py:151
+#: ./src/pyams_content/shared/common/interfaces/__init__.py:150
 #: ./src/pyams_content/shared/site/interfaces.py:81
 msgid "Header"
 msgstr ""
@@ -2416,8 +2417,8 @@
 msgstr ""
 
 #: ./src/pyams_content/features/redirect/interfaces.py:56
-#: ./src/pyams_content/features/redirect/zmi/container.py:206
-#: ./src/pyams_content/features/redirect/zmi/container.py:365
+#: ./src/pyams_content/features/redirect/zmi/container.py:209
+#: ./src/pyams_content/features/redirect/zmi/container.py:405
 msgid "URL pattern"
 msgstr ""
 
@@ -2447,31 +2448,31 @@
 msgid "You must provide an internal reference OR a target URL"
 msgstr ""
 
-#: ./src/pyams_content/features/redirect/zmi/container.py:63
+#: ./src/pyams_content/features/redirect/zmi/container.py:66
 msgid "Redirections"
 msgstr ""
 
-#: ./src/pyams_content/features/redirect/zmi/container.py:157
+#: ./src/pyams_content/features/redirect/zmi/container.py:160
 msgid "Enable/disable rule"
 msgstr ""
 
-#: ./src/pyams_content/features/redirect/zmi/container.py:184
+#: ./src/pyams_content/features/redirect/zmi/container.py:187
 msgid "Chain/unchain rule"
 msgstr ""
 
-#: ./src/pyams_content/features/redirect/zmi/container.py:216
+#: ./src/pyams_content/features/redirect/zmi/container.py:256
 msgid "Target"
 msgstr ""
 
-#: ./src/pyams_content/features/redirect/zmi/container.py:245
+#: ./src/pyams_content/features/redirect/zmi/container.py:285
 msgid "Redirections list"
 msgstr ""
 
-#: ./src/pyams_content/features/redirect/zmi/container.py:260
+#: ./src/pyams_content/features/redirect/zmi/container.py:300
 msgid "Redirection rules"
 msgstr ""
 
-#: ./src/pyams_content/features/redirect/zmi/container.py:261
+#: ./src/pyams_content/features/redirect/zmi/container.py:301
 msgid ""
 "Redirection rules are use to handle redirections responses when a request generates \n"
 "a famous « 404 NotFound » error.\n"
@@ -2487,52 +2488,60 @@
 "next rule, until a matching rule is found.\n"
 msgstr ""
 
-#: ./src/pyams_content/features/redirect/zmi/container.py:287
+#: ./src/pyams_content/features/redirect/zmi/container.py:327
 msgid "Test"
 msgstr ""
 
-#: ./src/pyams_content/features/redirect/zmi/container.py:322
+#: ./src/pyams_content/features/redirect/zmi/container.py:362
 msgid "Test redirection rules"
 msgstr ""
 
-#: ./src/pyams_content/features/redirect/zmi/container.py:300
+#: ./src/pyams_content/features/redirect/zmi/container.py:340
 msgid "Test URL"
 msgstr ""
 
-#: ./src/pyams_content/features/redirect/zmi/container.py:303
+#: ./src/pyams_content/features/redirect/zmi/container.py:343
 msgid "Check inactive rules?"
 msgstr ""
 
-#: ./src/pyams_content/features/redirect/zmi/container.py:304
+#: ./src/pyams_content/features/redirect/zmi/container.py:344
 msgid "If 'yes', inactive rules will also be tested"
 msgstr ""
 
-#: ./src/pyams_content/features/redirect/zmi/container.py:312
+#: ./src/pyams_content/features/redirect/zmi/container.py:352
 msgid "Close"
 msgstr ""
 
-#: ./src/pyams_content/features/redirect/zmi/container.py:313
+#: ./src/pyams_content/features/redirect/zmi/container.py:353
 msgid "Test rules"
 msgstr ""
 
-#: ./src/pyams_content/features/redirect/zmi/container.py:119
+#: ./src/pyams_content/features/redirect/zmi/container.py:122
 msgid "No currently defined redirection rule."
 msgstr ""
 
-#: ./src/pyams_content/features/redirect/zmi/container.py:370
+#: ./src/pyams_content/features/redirect/zmi/container.py:410
 msgid "No matching rule!"
 msgstr ""
 
-#: ./src/pyams_content/features/redirect/zmi/container.py:227
+#: ./src/pyams_content/features/redirect/zmi/container.py:243
+msgid "Target is published"
+msgstr ""
+
+#: ./src/pyams_content/features/redirect/zmi/container.py:245
+msgid "Target is not published"
+msgstr ""
+
+#: ./src/pyams_content/features/redirect/zmi/container.py:267
 #, python-format
 msgid "Internal reference: {0} (not found)"
 msgstr ""
 
-#: ./src/pyams_content/features/redirect/zmi/container.py:364
+#: ./src/pyams_content/features/redirect/zmi/container.py:404
 msgid "Input URL"
 msgstr ""
 
-#: ./src/pyams_content/features/redirect/zmi/container.py:366
+#: ./src/pyams_content/features/redirect/zmi/container.py:406
 msgid "Output URL"
 msgstr ""
 
@@ -2895,71 +2904,71 @@
 msgid "Search folder"
 msgstr ""
 
-#: ./src/pyams_content/features/search/interfaces.py:36
+#: ./src/pyams_content/features/search/interfaces.py:35
 msgid "Main search engine"
 msgstr ""
 
-#: ./src/pyams_content/features/search/interfaces.py:37
+#: ./src/pyams_content/features/search/interfaces.py:36
 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:42
+#: ./src/pyams_content/features/search/interfaces.py:41
 msgid "Search engine name"
 msgstr ""
 
-#: ./src/pyams_content/features/search/interfaces.py:43
+#: ./src/pyams_content/features/search/interfaces.py:42
 msgid "Name given to the search engine"
 msgstr ""
 
-#: ./src/pyams_content/features/search/interfaces.py:47
+#: ./src/pyams_content/features/search/interfaces.py:46
 msgid "Description given to the search engine"
 msgstr ""
 
+#: ./src/pyams_content/features/search/interfaces.py:53
+#: ./src/pyams_content/shared/common/interfaces/__init__.py:51
+#: ./src/pyams_content/shared/common/interfaces/__init__.py:195
+msgid "Managers"
+msgstr ""
+
 #: ./src/pyams_content/features/search/interfaces.py:54
 #: ./src/pyams_content/shared/common/interfaces/__init__.py:52
 #: ./src/pyams_content/shared/common/interfaces/__init__.py:196
-msgid "Managers"
-msgstr ""
-
-#: ./src/pyams_content/features/search/interfaces.py:55
-#: ./src/pyams_content/shared/common/interfaces/__init__.py:53
-#: ./src/pyams_content/shared/common/interfaces/__init__.py:197
 msgid ""
 "Managers can handle main operations in tool's workflow, like publish or "
 "retire contents"
 msgstr ""
 
+#: ./src/pyams_content/features/search/interfaces.py:59
+#: ./src/pyams_content/shared/common/interfaces/__init__.py:62
+#: ./src/pyams_content/shared/common/interfaces/__init__.py:207
+msgid "Designers"
+msgstr ""
+
 #: ./src/pyams_content/features/search/interfaces.py:60
 #: ./src/pyams_content/shared/common/interfaces/__init__.py:63
 #: ./src/pyams_content/shared/common/interfaces/__init__.py:208
-msgid "Designers"
-msgstr ""
-
-#: ./src/pyams_content/features/search/interfaces.py:61
-#: ./src/pyams_content/shared/common/interfaces/__init__.py:64
-#: ./src/pyams_content/shared/common/interfaces/__init__.py:209
 msgid "Designers are users which are allowed to manage presentation templates"
 msgstr ""
 
+#: ./src/pyams_content/features/search/interfaces.py:64
+#: ./src/pyams_content/shared/common/interfaces/__init__.py:218
+msgid "Guests"
+msgstr ""
+
 #: ./src/pyams_content/features/search/interfaces.py:65
 #: ./src/pyams_content/shared/common/interfaces/__init__.py:219
-msgid "Guests"
-msgstr ""
-
-#: ./src/pyams_content/features/search/interfaces.py:66
-#: ./src/pyams_content/shared/common/interfaces/__init__.py:220
 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/shared/view/interfaces.py:111
+msgid "Order by"
+msgstr ""
+
 #: ./src/pyams_content/features/search/interfaces.py:74
-#: ./src/pyams_content/shared/view/interfaces.py:111
-msgid "Order by"
-msgstr ""
-
-#: ./src/pyams_content/features/search/interfaces.py:75
 #: ./src/pyams_content/shared/view/interfaces.py:112
 msgid ""
 "Property to use to sort results; publication date can be different from first"
@@ -2967,42 +2976,42 @@
 "a different publication date"
 msgstr ""
 
-#: ./src/pyams_content/features/search/interfaces.py:82
+#: ./src/pyams_content/features/search/interfaces.py:81
 #: ./src/pyams_content/shared/site/interfaces.py:95
 msgid "Visible in folders list"
 msgstr ""
 
-#: ./src/pyams_content/features/search/interfaces.py:83
+#: ./src/pyams_content/features/search/interfaces.py:82
 #: ./src/pyams_content/shared/site/interfaces.py:96
 msgid "If 'no', folder will not be displayed into folders list"
 msgstr ""
 
+#: ./src/pyams_content/features/search/interfaces.py:86
+#: ./src/pyams_content/shared/site/interfaces.py:100
+#: ./src/pyams_content/shared/site/interfaces.py:164
+msgid "Navigation title"
+msgstr ""
+
 #: ./src/pyams_content/features/search/interfaces.py:87
-#: ./src/pyams_content/shared/site/interfaces.py:100
-#: ./src/pyams_content/shared/site/interfaces.py:164
-msgid "Navigation title"
-msgstr ""
-
-#: ./src/pyams_content/features/search/interfaces.py:88
 #: ./src/pyams_content/shared/site/interfaces.py:101
 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:92
+#: ./src/pyams_content/features/search/interfaces.py:91
 msgid "Selected content types"
 msgstr ""
 
-#: ./src/pyams_content/features/search/interfaces.py:93
+#: ./src/pyams_content/features/search/interfaces.py:92
 msgid "Searched content types; leave empty for all"
 msgstr ""
 
+#: ./src/pyams_content/features/search/interfaces.py:96
+msgid "Selected data types"
+msgstr ""
+
 #: ./src/pyams_content/features/search/interfaces.py:97
-msgid "Selected data types"
-msgstr ""
-
-#: ./src/pyams_content/features/search/interfaces.py:98
 msgid "Searched data types; leave empty for all"
 msgstr ""
 
@@ -3200,7 +3209,7 @@
 msgstr ""
 
 #: ./src/pyams_content/root/interfaces.py:37
-#: ./src/pyams_content/shared/common/interfaces/__init__.py:41
+#: ./src/pyams_content/shared/common/interfaces/__init__.py:40
 msgid "Webmasters"
 msgstr ""
 
@@ -3783,11 +3792,11 @@
 msgid "No selected handler..."
 msgstr ""
 
-#: ./src/pyams_content/shared/form/__init__.py:97
+#: ./src/pyams_content/shared/form/__init__.py:98
 msgid "Form fields"
 msgstr ""
 
-#: ./src/pyams_content/shared/form/__init__.py:98
+#: ./src/pyams_content/shared/form/__init__.py:99
 msgid "no field defined"
 msgstr ""
 
@@ -4343,7 +4352,7 @@
 msgstr ""
 
 #: ./src/pyams_content/shared/blog/interfaces.py:67
-#: ./src/pyams_content/shared/common/interfaces/__init__.py:157
+#: ./src/pyams_content/shared/common/interfaces/__init__.py:156
 #: ./src/pyams_content/shared/site/interfaces.py:85
 #: ./src/pyams_content/shared/site/interfaces.py:130
 msgid "Meta-description"
@@ -4357,7 +4366,7 @@
 msgstr ""
 
 #: ./src/pyams_content/shared/blog/interfaces.py:73
-#: ./src/pyams_content/shared/common/interfaces/__init__.py:169
+#: ./src/pyams_content/shared/common/interfaces/__init__.py:168
 #: ./src/pyams_content/shared/site/interfaces.py:91
 #: ./src/pyams_content/shared/site/interfaces.py:136
 #: ./src/pyams_content/shared/site/zmi/folder.py:74
@@ -4365,7 +4374,7 @@
 msgstr ""
 
 #: ./src/pyams_content/shared/blog/interfaces.py:74
-#: ./src/pyams_content/shared/common/interfaces/__init__.py:170
+#: ./src/pyams_content/shared/common/interfaces/__init__.py:169
 #: ./src/pyams_content/shared/site/interfaces.py:92
 #: ./src/pyams_content/shared/site/interfaces.py:137
 #: ./src/pyams_content/shared/site/zmi/folder.py:75
@@ -4428,19 +4437,19 @@
 msgid "Blog post « {title} »"
 msgstr ""
 
-#: ./src/pyams_content/shared/common/__init__.py:243
+#: ./src/pyams_content/shared/common/__init__.py:266
 #: ./src/pyams_content/shared/common/zmi/properties.py:65
 #: ./src/pyams_content/shared/common/zmi/manager.py:96
 msgid "Properties"
 msgstr ""
 
-#: ./src/pyams_content/shared/common/__init__.py:153
-#: ./src/pyams_content/shared/common/__init__.py:161
+#: ./src/pyams_content/shared/common/__init__.py:176
+#: ./src/pyams_content/shared/common/__init__.py:184
 #, python-format
 msgid "{date} by {principal}"
 msgstr ""
 
-#: ./src/pyams_content/shared/common/__init__.py:266
+#: ./src/pyams_content/shared/common/__init__.py:289
 #, python-format
 msgid "title length should be between 40 and 66 characters ({length} actually)"
 msgstr ""
@@ -4492,171 +4501,171 @@
 msgid "Type of content data"
 msgstr ""
 
-#: ./src/pyams_content/shared/common/interfaces/__init__.py:42
+#: ./src/pyams_content/shared/common/interfaces/__init__.py:41
 msgid "Webmasters can handle all contents, including published ones"
 msgstr ""
 
+#: ./src/pyams_content/shared/common/interfaces/__init__.py:45
+msgid "Pilots"
+msgstr ""
+
 #: ./src/pyams_content/shared/common/interfaces/__init__.py:46
-msgid "Pilots"
-msgstr ""
-
-#: ./src/pyams_content/shared/common/interfaces/__init__.py:47
 msgid ""
 "Pilots can handle tool configuration, manage access rules, grant users roles "
 "and manage managers restrictions"
 msgstr ""
 
+#: ./src/pyams_content/shared/common/interfaces/__init__.py:57
+#: ./src/pyams_content/shared/common/interfaces/__init__.py:201
+msgid "Contributors"
+msgstr ""
+
 #: ./src/pyams_content/shared/common/interfaces/__init__.py:58
-#: ./src/pyams_content/shared/common/interfaces/__init__.py:202
-msgid "Contributors"
-msgstr ""
-
-#: ./src/pyams_content/shared/common/interfaces/__init__.py:59
 msgid "Contributors are users which are allowed to create new contents"
 msgstr ""
 
+#: ./src/pyams_content/shared/common/interfaces/__init__.py:89
+msgid "Workflow name"
+msgstr ""
+
 #: ./src/pyams_content/shared/common/interfaces/__init__.py:90
-msgid "Workflow name"
-msgstr ""
-
-#: ./src/pyams_content/shared/common/interfaces/__init__.py:91
 msgid "Name of workflow utility used to manage tool contents"
 msgstr ""
 
+#: ./src/pyams_content/shared/common/interfaces/__init__.py:118
+msgid "Content URL"
+msgstr ""
+
 #: ./src/pyams_content/shared/common/interfaces/__init__.py:119
-msgid "Content URL"
-msgstr ""
-
-#: ./src/pyams_content/shared/common/interfaces/__init__.py:120
 msgid ""
 "URL used to access this content; this is important for SEO and should include"
 " most important words describing content; spaces and underscores will be "
 "automatically replaced by hyphens"
 msgstr ""
 
-#: ./src/pyams_content/shared/common/interfaces/__init__.py:127
+#: ./src/pyams_content/shared/common/interfaces/__init__.py:126
 msgid "Version creator"
 msgstr ""
 
-#: ./src/pyams_content/shared/common/interfaces/__init__.py:128
+#: ./src/pyams_content/shared/common/interfaces/__init__.py:127
 msgid ""
 "Name of content's version creator. The creator of the first version is also "
 "it's owner."
 msgstr ""
 
-#: ./src/pyams_content/shared/common/interfaces/__init__.py:132
+#: ./src/pyams_content/shared/common/interfaces/__init__.py:131
 msgid "First owner"
 msgstr ""
 
-#: ./src/pyams_content/shared/common/interfaces/__init__.py:133
+#: ./src/pyams_content/shared/common/interfaces/__init__.py:132
 msgid "Name of content's first version owner"
 msgstr ""
 
-#: ./src/pyams_content/shared/common/interfaces/__init__.py:137
+#: ./src/pyams_content/shared/common/interfaces/__init__.py:136
 msgid "Version creation"
 msgstr ""
 
+#: ./src/pyams_content/shared/common/interfaces/__init__.py:139
+msgid "Version modifiers"
+msgstr ""
+
 #: ./src/pyams_content/shared/common/interfaces/__init__.py:140
-msgid "Version modifiers"
-msgstr ""
-
-#: ./src/pyams_content/shared/common/interfaces/__init__.py:141
 msgid "List of principals who modified this content"
 msgstr ""
 
+#: ./src/pyams_content/shared/common/interfaces/__init__.py:143
+msgid "Last modifier"
+msgstr ""
+
 #: ./src/pyams_content/shared/common/interfaces/__init__.py:144
-msgid "Last modifier"
-msgstr ""
-
-#: ./src/pyams_content/shared/common/interfaces/__init__.py:145
 msgid "Last principal who modified this content"
 msgstr ""
 
-#: ./src/pyams_content/shared/common/interfaces/__init__.py:148
+#: ./src/pyams_content/shared/common/interfaces/__init__.py:147
 msgid "Last update"
 msgstr ""
 
-#: ./src/pyams_content/shared/common/interfaces/__init__.py:152
+#: ./src/pyams_content/shared/common/interfaces/__init__.py:151
 msgid "Content's header is generally displayed in page header"
 msgstr ""
 
-#: ./src/pyams_content/shared/common/interfaces/__init__.py:158
+#: ./src/pyams_content/shared/common/interfaces/__init__.py:157
 msgid ""
 "The content's description is 'hidden' into HTML's page headers; but it can be"
 " seen, for example, in some search engines results as content's description; "
 "if description is empty, content's header will be used."
 msgstr ""
 
-#: ./src/pyams_content/shared/common/interfaces/__init__.py:165
+#: ./src/pyams_content/shared/common/interfaces/__init__.py:164
 msgid "Keywords"
 msgstr ""
 
-#: ./src/pyams_content/shared/common/interfaces/__init__.py:166
+#: ./src/pyams_content/shared/common/interfaces/__init__.py:165
 msgid "They will be included into HTML pages metadata"
 msgstr ""
 
+#: ./src/pyams_content/shared/common/interfaces/__init__.py:188
+msgid "Content owner"
+msgstr ""
+
 #: ./src/pyams_content/shared/common/interfaces/__init__.py:189
-msgid "Content owner"
-msgstr ""
-
-#: ./src/pyams_content/shared/common/interfaces/__init__.py:190
 msgid ""
 "The owner is the creator of content's first version, except if it was "
 "transferred afterwards to another owner"
 msgstr ""
 
-#: ./src/pyams_content/shared/common/interfaces/__init__.py:203
+#: ./src/pyams_content/shared/common/interfaces/__init__.py:202
 msgid ""
 "Contributors are users which are allowed to update this content in addition "
 "to it's owner"
 msgstr ""
 
-#: ./src/pyams_content/shared/common/interfaces/__init__.py:213
+#: ./src/pyams_content/shared/common/interfaces/__init__.py:212
 msgid "Readers"
 msgstr ""
 
-#: ./src/pyams_content/shared/common/interfaces/__init__.py:214
+#: ./src/pyams_content/shared/common/interfaces/__init__.py:213
 msgid ""
 "Readers are users which are asked to verify and comment contents before they "
 "are published"
 msgstr ""
 
-#: ./src/pyams_content/shared/common/interfaces/__init__.py:245
+#: ./src/pyams_content/shared/common/interfaces/__init__.py:246
 msgid "Principal ID"
 msgstr ""
 
-#: ./src/pyams_content/shared/common/interfaces/__init__.py:284
-#: ./src/pyams_content/shared/common/interfaces/__init__.py:309
-msgid "Publication checks"
-msgstr ""
-
 #: ./src/pyams_content/shared/common/interfaces/__init__.py:285
+#: ./src/pyams_content/shared/common/interfaces/__init__.py:310
+msgid "Publication checks"
+msgstr ""
+
+#: ./src/pyams_content/shared/common/interfaces/__init__.py:286
 msgid ""
 "If 'yes', this contributor will have to confirm that contents have been "
 "previewed and checked before asking for publication"
 msgstr ""
 
-#: ./src/pyams_content/shared/common/interfaces/__init__.py:310
+#: ./src/pyams_content/shared/common/interfaces/__init__.py:311
 msgid ""
 "If 'yes', this manager will have to confirm that contents have been previewed"
 " and checked before publishing a content"
 msgstr ""
 
-#: ./src/pyams_content/shared/common/interfaces/__init__.py:315
-msgid "Restricted contents"
-msgstr ""
-
 #: ./src/pyams_content/shared/common/interfaces/__init__.py:316
+msgid "Restricted contents"
+msgstr ""
+
+#: ./src/pyams_content/shared/common/interfaces/__init__.py:317
 msgid ""
 "If 'yes', this manager will get restricted access to manage contents based on"
 " selected settings"
 msgstr ""
 
-#: ./src/pyams_content/shared/common/interfaces/__init__.py:321
+#: ./src/pyams_content/shared/common/interfaces/__init__.py:322
 msgid "Selected owners"
 msgstr ""
 
-#: ./src/pyams_content/shared/common/interfaces/__init__.py:322
+#: ./src/pyams_content/shared/common/interfaces/__init__.py:323
 msgid "Manager will have access to contents owned by these principals"
 msgstr ""
 
@@ -5886,11 +5895,11 @@
 msgid "Edit paragraph properties"
 msgstr ""
 
-#: ./src/pyams_content/shared/logo/__init__.py:72
+#: ./src/pyams_content/shared/logo/__init__.py:71
 msgid "no image defined"
 msgstr ""
 
-#: ./src/pyams_content/shared/logo/__init__.py:75
+#: ./src/pyams_content/shared/logo/__init__.py:74
 msgid "no URL defined"
 msgstr ""