我正在尝试制作一个附加组件,其中包括向个人偏好页面添加另一个选项。我试图从松散相关主题的各种指南中拼凑出如何正确地做到这一点,但我没有运气。我刚刚进入 Plone 开发,其中很多对我来说有些陌生,所以请善待:)
我在 Plone 4.3 中做这一切
当我在网站上启用插件时,它不会给我任何错误,但额外字段不包含在首选项页面中。
到目前为止,我有这样的东西,忽略奇怪的命名方案。同样,这是从其他指南拼凑而成的,我想在重构之前让它工作。
用户数据架构.py
from plone.app.users.browser.personalpreferences import IPersonalPreferences
from zope.interface import Interface
from zope import schema
class IEnhancedUserDataSchema(IPersonalPreferences):
""" Use all the fields from the default user data schema, and add various
extra fields.
"""
buttonsEnabled = schema.Bool(title=u'Transition button widget.',
default=True,
description=u'Uncheck to remove the transition button box from ALL pages.',
required=False
)
适配器.py:
from plone.app.users.browser.personalpreferences import PersonalPreferencesPanelAdapter
from app.statebuttons.userdataschema import IEnhancedUserDataSchema
from zope.interface import implements
class EnhancedUserDataPanelAdapter(PersonalPreferencesPanelAdapter):
"""
"""
implements(IEnhancedUserDataSchema)
def get_buttonEnabled(self):
return self.context.getProperty('buttonsEnabled', '')
def set_buttonsEnabled(self, value):
return self.context.setMemberProperties({'buttonsEnabled': value})
buttonsEnabled = property(get_buttonEnabled, set_buttonsEnabled)
覆盖.zcml:
<configure
xmlns="http://namespaces.zope.org/zope"
i18n_domain="collective.examples.userdata">
<adapter
provides=".userdataschema.IEnhancedUserDataSchema"
for="Products.CMFCore.interfaces.ISiteRoot"
factory=".adapter.EnhancedUserDataPanelAdapter"
/>
</configure>
如果有人能给我一些关于我做错了什么的意见,那就太棒了。如果我离题了,我会很感激一些关于下一步去哪里的意见。