Am 19.05.2008 um 18:51 schrieb Charlie Clark:
That's probably the easiest solution at the moment although it would
be nice to be able to declare this in the schema. I suppose two
different interfaces à la IObject and IMutableObject provide a way.
I find fiddling with the form fields too easy to mess up! I think
the only thing that's missing from this is a nicer way of getting
the portal_type. As this is configurable in the ZMI and perfectly
possible to have several types deriving from the same class and,
therefore, from the same interface. Although as with browser views
this should no longer be possible. I can't see an easy way of doing
this but it seems to me much more natural to do this in the
interface rather than in the view as it's essentially declarative
work. Maybe a dedicated schema field for CMF Types and associated
hidden widget?
portal_type = CMFDefault.schema.ContentType(title=u"portal type")
Obviously that won't work but it seems it should be possible to add
the portal_type logic to the base form as this should be true for all
add forms for CMF objects, shouldn't it?
in ContentAddFormBase
def setUpWidgets(self, ignore_request=False):
super(ContentAddFormBase,
self).setUpWidgets(ignore_request=ignore_request)
self.widgets['portal_type'].hide = True
def form_fields(self):
fields = form.FormFields(
TextLine(
__name__='portal_type',
default=self.portal_type)
)
return fields
add forms now simply need to define their portal_type and extend the
fields:
portal_type = u"Textbody"
@property
def form_fields(self):
fields = (super(TextAdd, self).form_fields() +
form.FormFields(ITextbody))
return fields
I'm not sure if it's good style to do this using properties but it
seems to work for and I find it less of a source of copy and paste
errors.
Charlie
--
Charlie Clark
Helmholtzstr. 20
Düsseldorf
D- 40215
Tel: +49-211-938-5360
GSM: +49-178-782-6226
_______________________________________________
Zope-CMF maillist - [email protected]
http://mail.zope.org/mailman/listinfo/zope-cmf
See http://collector.zope.org/CMF for bug reports and feature requests