2012-01-31 1 views
2

Я создаю форму с z3c.form и для текстового поля, я хотел бы иметь wysiwyg интерфейс.Использование WysiwygFieldWidget в форме z3c.form

Для этого я использую plone.directives.form.

В моем interfaces.py:

from zope import schema 
from plone.directives import form 
from plone.app.z3cform.wysiwyg import WysiwygFieldWidget 

from zope.i18nmessageid import MessageFactory 
_ = MessageFactory('BSWMinisite') 

class IMinisiteProperties(form.Schema): 
    """ """ 
    form.widget(edito=WysiwygFieldWidget) 
    edito = schema.Text(title = u"Edito", 
        required=False) 

В моем content.py:

from plone.directives import form 
from z3c.form import button 
from Products.CMFPlone import PloneMessageFactory as plMF 
from plone.z3cform.layout import wrap_form 
from Products.CMFCore.utils import getToolByName 

from Products.BSWMinisite.interfaces import IMinisiteProperties 


class MinisitePropertiesForm(form.SchemaForm): 
    """ """ 

    schema = IMinisiteProperties 
    ignoreContext = True # don't use context to get widget data 
    @button.buttonAndHandler(plMF('label_save', default=u'Save'), name='apply') 
    def handleApply(self, action): 
     """ stuff """ 

    @button.buttonAndHandler(plMF('label_cancel', default=u'Cancel'), 
         name='cancel') 
    def handleCancel(self, action): 
     self.request.RESPONSE.redirect(self.context.absolute_url()) 

MinisitePropertiesView = wrap_form(MinisitePropertiesForm) 

И в configure.zcml у меня есть:

<include package="plone.directives.form" file="meta.zcml" /> 
<include package="plone.directives.form" /> 
<browser:page 
    for="*" 
    name="minisite_properties" 
    class=".browser.content.MinisitePropertiesView" 
    permission="cmf.ModifyPortalContent" 
    /> 

Когда я иду @@ minisite_properties Я вижу свое поле, но не wysiwyg. Вы знаете, где я что-то пропустил?

+0

Там были некоторые проблемы с полем WYSIWYG и Ловкостью в прошлом. Какую версию ловкости и TinyMCE вы используете? –

+0

Я на Plone 4.1.3 CKeditor 3.6.2 И у меня нет ловкости, juste z3c.form и plone.directives.form – Jihaisse

+0

Я пробовал ckeditor и TinyMCE, но тот же эффект. – Jihaisse

ответ

0

Таким образом, проблема была у меня не было правильной версии ловкостью, и мой пакет не был правильно проверен.

В билдауте, чтобы закрепить правильную сноровку:

extends = 
    base.cfg 
    versions.cfg 
    http://good-py.appspot.com/release/dexterity/1.1?plone=4.1.3 

В главном configure.zcml:

<configure xmlns="http://namespaces.zope.org/zope" 
     xmlns:browser="http://namespaces.zope.org/browser" 
     xmlns:five="http://namespaces.zope.org/five" 
     xmlns:i18n="http://namespaces.zope.org/i18n" 
     xmlns:grok="http://namespaces.zope.org/grok" 
     i18n_domain="BSWMinisite"> 

    <!-- Grok the package to initialise schema interfaces and content classes --> 
    <grok:grok package="." /> 

    <browser:page 
    for="*" 
    name="minisite_properties" 
    class=".browser.content.MinisitePropertiesView" 
    permission="cmf.ModifyPortalContent" 
    /> 
    ... 

А потом в моем content.py:

from five import grok 

class MinisitePropertiesForm(form.SchemaForm): 
    """ """ 

    grok.context(IMinisiteProperties) 
    schema = IMinisiteProperties 
2

Ниже мой пример кода Ловкость схемы контента с использованием Ловкость 1.1 pindowns (см Ловкость руководство, установка часть)

from five import grok 
from zope import schema 

from plone.directives import form, dexterity 

from plone.app.z3cform.wysiwyg import WysiwygFieldWidget 

class ICourseInfoContent(form.Schema): 
    """ 
    Content page for CourseInfo folders 
    """ 

    # Autofilled by course id 
    title = schema.TextLine(title=u"Title", required=True, default=u"") 

    # -*- Your Zope schema definitions here ... -*- 
    form.widget(body=WysiwygFieldWidget) 
    body = schema.Text(title=u"Body (top)") 
+0

Это не ловкость, которую я хочу, просто z3c.form, мне действительно нужно обладать ловкостью? – Jihaisse

+1

Вы используете plone.directives.form, а не простой z3c.form, который является ZCML и т. Д. Ловкость основана на том же plone.directives.form. Кроме того, убедитесь, что ваш пакет правильно grok'ed, чтобы выполнялись директивы уровня. Http://collective-docs.readthedocs.org/en/latest/components/grok.html –

+0

Хорошо, поэтому для удобства я мог просто установить ловкость, которая включает все это. Я смотрю на часть grok. Спасибо – Jihaisse