Скрыть пользовательские поля в @@ личном представлении информации - PullRequest
4 голосов
/ 30 мая 2011

Я следую за colle.examples.userdata, чтобы добавить некоторые настраиваемые поля в форму регистрации.

Одно поле - это «условия принятия», которые также имеются в ceuserdata и документах, и, как сказано в описании пакета (или, по крайней мере, я так понял), в специальном поле «Принять условия» должны отображаться только в регистрационной форме, но не в представлении @@ personal-information.

Я также попытался добавить c.e.userdata в мою сборку со свежим новым сайтом Plone, и он также отображается на @@ personal-information, поэтому мне интересно, неправильно ли это с моей точки зрения или там есть ошибка.

Кто-нибудь знает, как отобразить поле в @@ форме регистрации, но скрыть его в @@ personal-information?

1 Ответ

7 голосов
/ 31 мая 2011

Скрытие поля из формы @@personal-information и отображение его только в форме @@register не поддерживается из коробки, только наоборот.

Вам придетсянастроить одну или другую форму для достижения этой цели;настройте plone.app.users.browser.personalpreferences.UserDataPanel, чтобы удалить ваше поле, или предоставьте новую версию plone.app.users.browser.register.RegistrationForm, чтобы добавить ваше поле туда.

Вот как ясделайте это:

plone.app.users.browser.personalpreferences import UserDataPanel

class CustomizedUserDataPanel(UserDataPanel):
    def __init__(self, context, request):
        super(CustomizedUserDataPanel, self).__init__(context, request)
        self.form_fields = self.form_fields.omit('acceptTerms')

Обратите внимание на .omit('acceptTerms'), я должен был угадать название вашего дополнительного поля.Затем вы можете зарегистрировать эту настраиваемую панель в ZCML для своего слоя браузера тем или непосредственно на своем сайте Plone или в пользовательском интерфейсе.Здесь я выбрал простой способ и зарегистрировал его для объекта сайта Plone: ​​

<browser:page
    for="Products.CMFPlone.Portal.PloneSite"
    name="personal-information"
    class=".mymodule.CustomizedUserDataPanel"
    permission="cmf.SetOwnProperties"
    />

Это должно работать как для Plone 4.0, так и для 4.1, поскольку этот конкретный класс не изменился.

...