src/pyams_content/features/redirect/zmi/container.py
changeset 1288 ef227fc388a6
parent 1085 85f4724e0c1d
child 1295 6aded60a6fe7
--- 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):