diff -r b15153f45957 -r 5dd1aa8bedd9 src/pyams_content/features/alert/zmi/container.py --- 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)