--- a/src/pyams_content/features/alert/zmi/container.py Wed Apr 11 16:44:46 2018 +0200
+++ b/src/pyams_content/features/alert/zmi/container.py Wed Apr 11 16:46:31 2018 +0200
@@ -31,7 +31,7 @@
from pyams_i18n.column import I18nAttrColumn
from pyams_pagelet.pagelet import pagelet_config
from pyams_skin.page import DefaultPageHeaderAdapter
-from pyams_skin.table import BaseTable, SorterColumn, JsActionColumn, I18nColumn, TrashColumn
+from pyams_skin.table import BaseTable, SorterColumn, I18nColumn, TrashColumn, VisibilitySwitcherColumn
from pyams_skin.viewlet.menu import MenuItem
from pyams_utils.adapter import adapter_config, ContextRequestViewAdapter
from pyams_utils.fanstatic import get_resource_path
@@ -60,7 +60,8 @@
class AlertContainerTable(BaseTable):
"""Alerts container table"""
- id = 'alerts_table'
+ prefix = 'alerts'
+
hide_header = True
sortOn = None
@@ -75,11 +76,8 @@
'data-ams-plugin-pyams_content-src': get_resource_path(pyams_content),
'data-ams-location': absolute_url(IAlertContainer(self.context), self.request),
'data-ams-tablednd-drag-handle': 'td.sorter',
- 'data-ams-tablednd-drop-target': 'set-alerts-order.json'
- })
- attributes.setdefault('tr', {}).update({
- 'id': lambda x, col: 'alert_{0}'.format(x.__name__),
- 'data-ams-delete-target': 'delete-alert.json'
+ 'data-ams-tablednd-drop-target': 'set-alerts-order.json',
+ 'data-ams-visibility-switcher': 'switch-alert-visibility.json'
})
return attributes
@@ -118,30 +116,14 @@
@adapter_config(name='show-hide', context=(IAlertTarget, IPyAMSLayer, AlertContainerTable), provides=IColumn)
-class AlertContainerShowHideColumn(JsActionColumn):
+class AlertContainerShowHideColumn(VisibilitySwitcherColumn):
"""Alert container visibility switcher column"""
- cssClasses = {'th': 'action',
- 'td': 'action switcher'}
- icon_class = 'fa fa-fw fa-eye'
- icon_hint = _("Switch alert visibility")
-
- url = 'PyAMS_content.alerts.switchVisibility'
-
- weight = 5
-
- def get_icon_class(self, item):
- if item.visible:
- return self.icon_class
- else:
- return 'fa fa-fw fa-eye-slash text-danger'
-
-
-@view_config(name='set-alert-visibility.json', context=IAlertContainer, request_type=IPyAMSLayer,
+@view_config(name='switch-alert-visibility.json', context=IAlertContainer, request_type=IPyAMSLayer,
permission=MANAGE_SITE_ROOT_PERMISSION, renderer='json', xhr=True)
-def set_alert_visibility(request):
- """Set alert visibility"""
+def switch_alert_visibility(request):
+ """Switch alert visibility"""
container = IAlertContainer(request.context)
alert = container.get(str(request.params.get('object_name')))
if alert is None:
@@ -200,31 +182,7 @@
class AlertContainerTrashColumn(TrashColumn):
"""Alert container trash column"""
-
-@view_config(name='delete-alert.json', context=IAlertTarget, request_type=IPyAMSLayer,
- permission=MANAGE_SITE_ROOT_PERMISSION, renderer='json', xhr=True)
-def delete_alert(request):
- """Delete alert"""
- translate = request.localizer.translate
- name = request.params.get('object_name')
- if not name:
- return {
- 'status': 'message',
- 'messagebox': {
- 'status': 'error',
- 'content': translate(_("No provided object_name argument!"))
- }
- }
- if name not in request.context:
- return {
- 'status': 'message',
- 'messagebox': {
- 'status': 'error',
- 'content': translate(_("Given alert name doesn't exist!"))
- }
- }
- del request.context[name]
- return {'status': 'success'}
+ permission = MANAGE_SITE_ROOT_PERMISSION
@pagelet_config(name='alerts.html', context=IAlertTarget, layer=IPyAMSLayer, permission=MANAGE_SITE_ROOT_PERMISSION)