4

個人設定ページに別のオプションを追加するアドオンを作ろうとしています。大まかに関連するトピックに関するさまざまなガイドから、これを適切に行う方法をまとめようとしましたが、うまくいきませんでした。私は Plone の開発に取り掛かったばかりで、これの多くは私にはややなじみのないものなので、親切にしてください :)

私はこれをすべてPlone 4.3で行っています

サイトでアドオンを有効にすると、エラーは発生しませんが、設定ページに追加のフィールドが含まれません。

これまでのところ、私はこのようなものを持っています。奇妙な命名スキームは無視してください。繰り返しますが、これは他のガイドからまとめられたものであり、リファクタリングする前に機能させたかったのです。

userdataschema.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>

私が間違っていることについて誰かが私に意見を与えることができれば、それは素晴らしいことです. 私が的外れである場合は、次にどこに行くべきかについての意見をいただければ幸いです。

4

2 に答える 2

3

個人設定を上書きする必要はありません。https://pypi.python.org/pypi/plone.app.usersのドキュメントに従ってください

あなたが行方不明のようです:

  • ユーザーデータスキーマプロバイダー

    plone.app.users.userdataschema から import IUserDataSchemaProvider class UserDataSchemaProvider(object): implements(IUserDataSchemaProvider)

    def getSchema(self):
        """
        """
        return IEnhancedUserDataSchema
    
  • componentregistry.xml での GS 構成:

  • フィールドが登録ページに表示されるようにするための GS properties.xml での新しいフィールドの登録 (オプション)

    <object name="site_properties" meta_type="Plone Property Sheet">
    
        <property name="user_registration_fields" type="lines" purge="False">
            <element value="yourfield" />
        </property>
    
    </object>
    

フィールドを個人設定に表示するには、https://pypi.python.org/pypi/plone.app.users/1.1.5 セクション「個人情報フォームの更新方法」のドキュメントに従ってください

于 2013-11-15T10:23:54.227 に答える