src/pyams_skin/table.py
changeset 25 23d78e06822d
parent 21 012fda888a1c
child 29 cb1e1855f1aa
--- a/src/pyams_skin/table.py	Wed Mar 04 00:04:11 2015 +0100
+++ b/src/pyams_skin/table.py	Wed Mar 04 00:05:22 2015 +0100
@@ -12,11 +12,13 @@
 
 __docformat__ = 'restructuredtext'
 
+
 # import standard library
 
 # import interfaces
-from pyams_skin.interfaces.container import ITable, ITableElementEditor
+from pyams_skin.interfaces.container import ITable, ITableElementEditor, ITableWithActions
 from pyams_skin.layer import IPyAMSLayer
+from pyams_viewlet.interfaces import IViewletManager
 from z3c.table.interfaces import IColumn
 from zope.container.interfaces import IContained
 
@@ -179,6 +181,26 @@
         return absolute_url(item, self.request, self.url)
 
 
+@adapter_config(name='actions', context=(Interface, IPyAMSLayer, ITableWithActions), provides=IColumn)
+class MenuActionsColumn(I18nColumn, Column):
+    """Menu actions column"""
+
+    _header = _("Actions")
+    cssClasses = {'th': 'actions-menu',
+                  'td': 'nowrap'}
+    weight = 9000
+
+    def renderCell(self, item):
+        registry = self.request.registry
+        viewlet = registry.queryMultiAdapter((item, self.request, self.table), IViewletManager,
+                                             name='pyams.table-item.actions')
+        if viewlet is not None:
+            viewlet.update()
+            return viewlet.render()
+        else:
+            return ''
+
+
 class TrashColumn(ActionColumn):
     """Trash action icon column"""