[Zope3-Users] Re: prettier edit widgets..

Philipp von Weitershausen philipp at weitershausen.de
Sun Jan 14 09:30:42 EST 2007

Roy Mathew wrote:
> I need prettier edit widgets than the stock Rotterdam/Basic skin
> versions.

The skins have little to do with it, except for the CSS styles that 
apply to pretty much all HTML.

> Is there a collection of such widgets that maybe use
> dojo/mochikit/scriptaculous. Or is it reasonable to simple re-style
> (w/css) the stock widgets, or programmatically (in editform)
> manipulate parameters, to get reasonable edit widgets.

There are several options. First of all, you can style the existing 
widgets with CSS. If you want to change their behaviour (JavaScript, 
etc.), then you're probably best of writing your own widgets. Often you 
can simply subclass the original ones in zope.app.form.browser and 
override the __call__ method (which returns the widget's HTML).

To use your custom widgets in your forms, you have two options:

a) explicitly refer to them in form_fields:

    class MyForm(EditForm):
        form_fields = Fields(IMySchema)
        form_fields['afield'].custom_widget = MyCoolWidget

b) register them for the fields you use, so they get picked up 
automatically whenever a TextLine, Int, Choice, etc. field is used in a 
form (even in Zope 3 itself). See zope.app.form.browser/configure.zcml 
for exmaples of how the standard Zope 3 widgets are registered. By the 
way, instead of using IBrowserRequest, you probably may want to specify 
the interface of your custom layer or skin the 'type' argument to <view 
/>. Or you have to use overrides.zcml, otherwise you'll get conflicts 


http://worldcookery.com -- Professional Zope documentation and training
2nd edition of Web Component Development with Zope 3 is now shipping!

More information about the Zope3-users mailing list