Adam Groszer wrote:

I'm having problems with using <browser:widget>.

I have an interface:
class ISzerep(Interface):
   name = TextLine(
       title=u"Szerep nev",
       description=u"Szerep nev",
       required=True
       )
   szemelyek = List(
       title=u"Hozzarendelt szemelyek",
       description=u"Hozzarendelt szemelyek",
       required=False,
       value_type=Choice(vocabulary="szemely")
       )

If I add a simple add (or edit) form:
 <browser:addform
     schema="szscreen.interfaces.ISzemely"
     content_factory="szscreen.app.Szemely"
     label="Uj Szemely"
     name="AddSzemely.html"
     permission="zope.ManageContent"
     set_before_add="name"
     >
 </browser:addform>
everything goes well, an OrderedMultiSelectWidget is displayed in the
browser by default for the *szemelyek* field.

If I modify the addform configuration by adding the <widget>:
 <browser:addform
     schema="szscreen.interfaces.ISzemely"
     content_factory="szscreen.app.Szemely"
     label="Uj Szemely"
     name="AddSzemely.html"
     permission="zope.ManageContent"
     set_before_add="name"
     >
     <widget field="szerepek" 
class="zope.app.form.browser.OrderedMultiSelectWidget"/>
 </browser:addform>
You cannot register the widget class directly, but you have to provide a specific widget factory.
Example edit.py within your browser directory:

from zope.app.form import CustomWidgetFactory
from zope.app.form.browser import OrderedMultiSelectWidget

szerepek_widget_factory = CustomWidgetFactory(OrderedMultiSelectWidget)


Example registration within the configure.zcml:

 <browser:addform
     schema="szscreen.interfaces.ISzemely"
     content_factory="szscreen.app.Szemely"
     label="Uj Szemely"
     name="AddSzemely.html"
     permission="zope.ManageContent"
     set_before_add="name"
     >
     <widget field="szerepek" class=".edit.szerepek_widget_factory"/>
 </browser:addform>

Regards,
Dominik



_______________________________________________
Zope3-dev mailing list
Zope3-dev@zope.org
Unsub: http://mail.zope.org/mailman/options/zope3-dev/archive%40mail-archive.com

Reply via email to