--- a/src/pyams_content/shared/common/zmi/types.py Thu Sep 27 10:15:50 2018 +0200
+++ b/src/pyams_content/shared/common/zmi/types.py Thu Sep 27 14:11:40 2018 +0200
@@ -10,10 +10,9 @@
# FOR A PARTICULAR PURPOSE.
#
+
__docformat__ = 'restructuredtext'
-
-# import standard library
import json
from pyramid.decorator import reify
@@ -23,12 +22,10 @@
from z3c.form import field
from z3c.form.interfaces import DISPLAY_MODE, IDataExtractedEvent
from z3c.table.interfaces import IColumn, IValues
-from zope.interface import Invalid
+from zope.interface import Invalid, implementer
from pyams_content import _
-# import interfaces
from pyams_content.interfaces import MANAGE_CONTENT_PERMISSION, MANAGE_TOOL_PERMISSION
-# import packages
from pyams_content.reference.pictograms.zmi.widget import PictogramSelectFieldWidget
from pyams_content.shared.common.interfaces.types import IBaseDataType, IDataType, ISubType, ITypedDataManager, \
ITypedSharedTool, IWfTypedSharedContent
@@ -37,12 +34,14 @@
from pyams_content.shared.common.zmi.properties import SharedContentPropertiesEditForm
from pyams_content.skin import pyams_content
from pyams_form.form import AJAXAddForm, ajax_config
+from pyams_form.interfaces.form import IWidgetForm
from pyams_form.security import ProtectedFormObjectMixin
from pyams_i18n.interfaces import II18n
from pyams_i18n.widget import I18nSEOTextLineFieldWidget
from pyams_pagelet.pagelet import pagelet_config
from pyams_skin.container import delete_container_element
from pyams_skin.event import get_json_table_refresh_event
+from pyams_skin.interfaces import IInnerPage
from pyams_skin.interfaces.container import ITableElementName
from pyams_skin.interfaces.viewlet import IWidgetTitleViewletManager
from pyams_skin.layer import IPyAMSLayer
@@ -56,7 +55,7 @@
from pyams_utils.url import absolute_url
from pyams_viewlet.interfaces import IViewletManager
from pyams_viewlet.viewlet import viewlet_config
-from pyams_zmi.form import AdminDialogAddForm, AdminDialogEditForm
+from pyams_zmi.form import AdminDialogAddForm, AdminDialogEditForm, AdminEditForm
from pyams_zmi.interfaces.menu import IPropertiesMenu
from pyams_zmi.layer import IAdminLayer
from pyams_zmi.view import ContainerAdminView
@@ -157,8 +156,8 @@
' </span>' \
'</span> <span class="title">{title}</span>' \
'<div class="inner-table-form subtypes margin-x-10 margin-bottom-0 padding-left-5"></div>'.format(
- hint=self.request.localizer.translate(_("Click to see subtypes")),
- title=super(TypedSharedToolTypesNameColumn, self).renderCell(item))
+ hint=self.request.localizer.translate(_("Click to see subtypes")),
+ title=super(TypedSharedToolTypesNameColumn, self).renderCell(item))
@adapter_config(name='paragraphs', context=(ITypedSharedTool, IPyAMSLayer, TypedSharedToolTypesTable),
@@ -592,3 +591,28 @@
if not self.context.handle_description:
fields = fields.omit('description')
return fields
+
+
+#
+# Typed shared content custom fields edit form
+#
+
+@implementer(IWidgetForm, IInnerPage)
+class TypedSharedContentTypeFieldsEditForm(AdminEditForm):
+ """Typed shared content type fields properties edit form"""
+
+ prefix = 'type_properties.'
+
+ @property
+ def legend(self):
+ translate = self.request.localizer.translate
+ data_type = self.context.get_data_type()
+ return translate(_("Custom properties for type « {0} »")).format(
+ II18n(data_type).query_attribute('label', request=self.request))
+
+ @property
+ def fields(self):
+ data_type = self.context.get_data_type()
+ if data_type is not None:
+ manager = get_parent(self.context, ITypedSharedTool)
+ return field.Fields(manager.shared_content_types_fields).select(*data_type.field_names)