src/pyams_content/shared/common/zmi/types.py
changeset 986 3fc7f8f84864
parent 984 754d0102389d
child 1070 ea0c7ac589c4
--- 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>&nbsp;&nbsp;&nbsp;<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)