Plone的个性化表单
项目描述
有问题请联系Quadra Informatique <plone@quadra-informatique.fr>
报告错误请发送至Quadra Informatique <maintenance.plone@quadra-informatique.fr>
简介
此包是在遇到plone.app.users.userdataschema.IUserDataSchemaProvider实用工具覆盖问题时创建的。由于此实用工具没有命名,您只能在所有包中覆盖一次。由于我们需要在来自各种包的个人资料表单上添加额外字段,因此我们创建了此包,以管理个人资料表单和属性的多个来源覆盖。
此egg允许您通过添加额外字段并使用适配器来覆盖您用户的个人偏好,次数不限。通过添加额外字段,如果您不希望您的字段作为用户属性来管理,您可以指定自己的getter & setters。您还可以为个人偏好表单字段添加兼容的小部件。
“docs”目录包含安装此egg之前所有必要的服务器配置步骤。这些文档可以根据每个文档中指定的许可证单独分发。
此包由Quadra Informatique启动 <plone@quadra-informatique.fr>。
如何使用
您需要了解以下三个接口
collective.customizablePersonalizeForm.adapters.interfaces.IExtendedUserDataSchema(接口)
def getSchema(self,)
collective.customizablePersonalizeForm.adapters.interfaces.IExtendedUserDataPanel(接口)
def getProperties(self,)
collective.customizablePersonalizeForm.adapters.interfaces.IExtendedUserDataWidgets(接口)
def getWidgets(self,)
提供IExtendedUserDataSchema适配器允许通过其getSchema方法返回一个接口来添加额外的字段。
小心!如果您在表单中添加了字段,您还需要声明一个与字段同名的属性,以便您可以获取和设置属性。这就是为什么我们使用IExtendedUserDataPanel。提供此接口的适配器将通过getProperties方法返回一个字符串列表。这些字符串是您自定义接口提供的字段名称,例如‘portrait’或‘fullname’。默认情况下,您的字段的获取器和设置器将使用Plone的member.getProperty和member.setProperty方法,使用memberdata存储值。如果您需要使用自己的获取器和设置器,您可以通过此格式返回一个字典而不是字段名称
{‘name’ : ‘your_field_name’, ‘getter’: your_own_getter_method, ‘setter’: your_own_setter_method}
简单覆盖示例
一个简单的接口,提供我们的字段
class ITestAdditionalDataSchema(Interface)
- test_field = schema.Bool(
title=_(u’label_test_field_title’, default=u’Test field’), description=_(u’label_test_field_description’, default=u’’), required=False, )
一个简单的适配器,它适配上下文和请求,返回我们的接口
- class TestSchemaAdapter(object)
适配对象,IBrowserRequest) implements(IExtendedUserDataSchema)
- def __init__(self, context, request)
self.context = context self.request = request
- def getSchema(self)
return ITestAdditionalDataSchema
现在我们创建一个适配器,将声明一个‘test_field’属性,我们没有指定获取器和设置器,因此此属性将作为memberdata属性(确保通过memberdata_properties.xml声明它)
- class TestPropertiesAdapter(object)
适配对象,IBrowserRequest) implements(IExtendedUserDataPanel)
- def __init__(self, context, request)
self.context = context self.request = request
- def getProperties(self)
return [‘test_field’]
让我们订阅collective.customizablePersonalizeForm接口,以提供我们的字段的信息表单
- <adapter factory=”.adapters.TestSchemaAdapter”
name=”test.ExtraField”/>
- <adapter factory=”.adapters.TestPropertiesAdapter”
name=”test.ExtraProperties”/>
恭喜,一个简单的布尔字段名为“test_field”现在应该显示在您的表单中。
自定义小部件
您可能希望为字段使用小部件。可以通过IExtendedUserDataWidgets接口完成。您所要做的就是将字段ID映射到一个有效的自定义小部件工厂,如下例所示。
- class TestWidgetAdapter(object)
适配对象,IBrowserRequest) implements(IExtendedUserDataWidgets)
- def __init__(self, context, request)
self.context = context self.request = request
- def getWidgets(self)
- return [{‘field’: ‘test_field’, ‘factory’CheckBoxWidget},
]
- <adapter factory=”.adapters.TestWidgetAdapter”
name=”test.ExtraWidgets”/>
您的test_field现在将使用您在getWidgets方法中声明的工厂。您也可以通过此方法覆盖默认的Plone字段小部件。
变更日志
2.0 (2011-09-07)
现在为Plone 4.x [jstegle]
添加了3个接口用于订阅、提供者模式、属性和控件覆盖 [jstegle]
覆盖默认的个人资料以管理控件自定义 [jstegle]
覆盖默认的IUserDataSchemaProvider [jstegle]
覆盖帐户宏视图以管理处理图片的文件上传字段 [jstegle]
在肖像字段上添加了isImage约束,允许仅上传图片 [jstegle]
添加了测试和示例 [jstegle]
1.0.1 (2011-05-04)
添加了文档 [jstegle]
1.0 (2011-04-XX)
添加了个性化表单(personalize_form)的视图管理器 [jstegle]
添加了验证器和操作适配器接口 [jstegle]
添加了自定义个性化表单、验证和操作脚本 [jstegle]
适用于Plone 3.x [jstegle]
项目详情
哈希值 for collective.customizablePersonalizeForm-2.0.tar.gz
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 4f89082e248cbd779073be4b6db05c3dc9810e3c459b1659d2cfcc7e86cdf1cb |
|
MD5 | d3f09ac5d5bea684e2d2b21aaa992787 |
|
BLAKE2b-256 | b0e87e30b637e0e92c5d3d40d814a41a96d195c3a6559efd6ac28b01d2e974da |
哈希值 for collective.customizablePersonalizeForm-2.0-py2.6.egg
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 41d04687afcc79e62cb86f9b8ef2f9a7718e6f6db24db8359316f443e1938703 |
|
MD5 | 1e27f417fb893fc11fb9b0e167b1b9e3 |
|
BLAKE2b-256 | fbd84434316e4b494df715e0907233d9c29c988c3076f1c7c4fc3c2ea487d0f0 |