跳转到主要内容

Plone的个性化表单

项目描述

简介

此包是在遇到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]

项目详情


下载文件

下载适合您平台的文件。如果您不确定选择哪个,请了解有关安装包的更多信息。

源代码分发

collective.customizablePersonalizeForm-2.0.tar.gz (13.7 kB 查看哈希值)

上传时间 源代码

构建分发

collective.customizablePersonalizeForm-2.0-py2.6.egg (29.5 kB 查看哈希值)

上传时间 源代码

由以下支持