--- a/src/pyams_content/shared/form/zmi/field.py Wed Apr 11 16:44:46 2018 +0200
+++ b/src/pyams_content/shared/form/zmi/field.py Wed Apr 11 16:46:31 2018 +0200
@@ -38,7 +38,9 @@
from pyams_form.form import AJAXAddForm, AJAXEditForm
from pyams_form.security import ProtectedFormObjectMixin
from pyams_pagelet.pagelet import pagelet_config
-from pyams_skin.table import BaseTable, SorterColumn, JsActionColumn, I18nColumn, TrashColumn, I18nValueColumn
+from pyams_skin.container import switch_element_visibility
+from pyams_skin.table import BaseTable, SorterColumn, I18nColumn, TrashColumn, I18nValueColumn, \
+ VisibilitySwitcherColumn
from pyams_skin.viewlet.menu import MenuItem
from pyams_skin.viewlet.toolbar import ToolbarAction
from pyams_utils.adapter import adapter_config, ContextRequestViewAdapter
@@ -50,7 +52,6 @@
from pyams_zmi.view import ContainerAdminView
from pyramid.decorator import reify
from pyramid.events import subscriber
-from pyramid.exceptions import NotFound
from pyramid.view import view_config
from z3c.form import field
from z3c.table.column import GetAttrColumn
@@ -76,7 +77,8 @@
class FormFieldsContainerTable(ProtectedFormObjectMixin, BaseTable):
"""Form fields table"""
- id = 'form_fields_list'
+ prefix = 'form_fields'
+
hide_header = True
sortOn = None
@@ -91,13 +93,15 @@
@property
def data_attributes(self):
attributes = super(FormFieldsContainerTable, self).data_attributes
- attributes['table'] = {'id': self.id,
- 'data-ams-plugins': 'pyams_content',
- 'data-ams-plugin-pyams_content-src':
- get_resource_path(pyams_content),
- 'data-ams-location': absolute_url(IFormFieldContainer(self.context), self.request),
- 'data-ams-tablednd-drag-handle': 'td.sorter',
- 'data-ams-tablednd-drop-target': 'set-form-fields-order.json'}
+ attributes['table'] = {
+ 'id': self.id,
+ 'data-ams-plugins': 'pyams_content',
+ 'data-ams-plugin-pyams_content-src': get_resource_path(pyams_content),
+ 'data-ams-location': absolute_url(IFormFieldContainer(self.context), self.request),
+ 'data-ams-tablednd-drag-handle': 'td.sorter',
+ 'data-ams-tablednd-drop-target': 'set-form-fields-order.json',
+ 'data-ams-visibility-switcher': 'switch-form-field-visibility.json'
+ }
return attributes
@reify
@@ -119,31 +123,15 @@
@adapter_config(name='show-hide', context=(IFormFieldContainerTarget, IPyAMSLayer, FormFieldsContainerTable),
provides=IColumn)
-class FormFieldsContainerShowHideColumn(ProtectedFormObjectMixin, JsActionColumn):
+class FormFieldsContainerShowHideColumn(ProtectedFormObjectMixin, VisibilitySwitcherColumn):
"""Form fields container visibility switcher column"""
- cssClasses = {'th': 'action',
- 'td': 'action switcher'}
- icon_class = 'fa fa-fw fa-eye'
- icon_hint = _("Switch field visibility")
-
- url = 'PyAMS_content.fields.switchVisibility'
-
- weight = 5
-
- def get_icon(self, item):
- if item.visible:
- icon_class = 'fa fa-fw fa-eye'
- else:
- icon_class = 'fa fa-fw fa-eye-slash text-danger'
- return '<i class="{icon_class}"></i>'.format(icon_class=icon_class)
-
- def renderCell(self, item):
- if self.permission and not self.request.has_permission(self.permission, context=item):
- return self.get_icon(item)
- else:
- return super(FormFieldsContainerShowHideColumn, self).renderCell(item)
+@view_config(name='switch-form-field-visibility.json', context=IFormFieldContainer, request_type=IPyAMSLayer,
+ permission=MANAGE_CONTENT_PERMISSION, renderer='json', xhr=True)
+def switch_form_field_visibility(request):
+ """Set form field visibility"""
+ return switch_element_visibility(request, IFormFieldContainer)
@adapter_config(context=FormFieldsContainerShowHideColumn, provides=IFormSecurityContext)
@@ -225,19 +213,6 @@
return {'status': 'success'}
-@view_config(name='set-form-field-visibility.json', context=IFormFieldContainer, request_type=IPyAMSLayer,
- permission=MANAGE_CONTENT_PERMISSION, renderer='json', xhr=True)
-def set_form_field_visibility(request):
- """Set form field visibility"""
- container = IFormFieldContainer(request.context)
- paragraph = container.get(str(request.params.get('object_name')))
- if paragraph is None:
- raise NotFound()
- field = IFormField(paragraph)
- field.visible = not field.visible
- return {'visible': field.visible}
-
-
#
# Form field views
#
@@ -300,6 +275,8 @@
class FormFieldPropertiesEditForm(AdminDialogEditForm):
"""Form field properties edit form"""
+ prefix = 'field_properties.'
+
@property
def title(self):
content = get_parent(self.context, IWfSharedContent)