一、通过 toolbar 添加菜单,添加内容对象
将调用plone.dexterity.browser包下的add.py模块
应当在下面方法中发送对象已创建事件,才能保证新生成的对象被恰当地包装在上下文环境中:
def add(self, object):
fti = getUtility(IDexterityFTI, name=self.portal_type)
container = aq_inner(self.context)
new_object = addContentToContainer(container, object)
# import pdb
# pdb.set_trace()
notify(PreviewableFileCreatedEvent(new_object))
if fti.immediate_view:
self.immediate_view = "/".join(
[container.absolute_url(), new_object.id, fti.immediate_view]
)
else:
self.immediate_view = "/".join(
[container.absolute_url(), new_object.id]
)
二、通过mockup 的 upload组建添加内容对象
将调用plone.dexterity的utils.py下的addContentToContainer()和createContentInContainer()
应当在下面方法中发送对象已创建事件,才能保证新生成的对象被恰当地包装在上下文环境中:
def createContentInContainer(container, portal_type, checkConstraints=True,
**kw):
content = createContent(portal_type, **kw)
con = addContentToContainer(
container,
content,
checkConstraints=checkConstraints
)
notify(PreviewableFileCreatedEvent(con))
return con