我有一个灵巧的内容类型,添加了它的行为plone.app.event.dx.behaviors.IEventBasic,我有一个文件夹,其中solgema.fullcalendar是显示视图,日历设置下的事件类型是'my.product .myeventtype”。我有自定义添加和编辑灵巧内容类型的表单。
当文件夹的显示为默认值时,将显示自定义添加/编辑表单并按预期运行。但是,当显示视图是fullcalendar并且我尝试通过日历添加内容时,内容类型的表单会显示,但不是自定义表单。我在updateWidgets函数中尝试了一个print语句,并且print语句没有出现在控制台中。
目前我正在测试一个编辑表单:
from plone.dexterity.browser import add, edit
class Edit(edit.DefaultEditForm):
def updateWidgets(self):
super(updateWidgets, self).updateWidgets()
print "Test"
在config.zcml中:
<browser:page
for=".my_event_type.IMyEventType"
name="edit"
class=".my_event_type.EditForm"
permission="cmf.ModifyPortalContent"
/>
* dexterity类型的模块是“my_event_type.py”,而在xml文件中,它是“my.product.myeventtype。”
来源:http://docs.plone.org/external/plone.app.dexterity/docs/advanced/custom-add-and-edit-forms.html
我也尝试过使用plone.directives和grok的dexterity.EditForm。
from five import grok
from plone.directives import dexterity
class EditForm(dexterity.EditForm):
grok.context(IMyEventType)
def updateWidgets(self):
""" """
dexterity.EditForm.updateWidgets(self)
print "test"
来源:http://docs.plone.org/develop/plone/content/dexterity.html
由于这些尝试似乎不起作用,我如何使用自己的自定义表单添加“事件”?
我想使用自定义添加和编辑表单的原因是我需要能够使用updateWidgets,因此我可以将选项框的默认值设置为等于当前登录用户。此外,我希望能够使用我自己的提交处理程序而不是默认处理程序,但我现在依赖于事件订阅者。