Plone 避免在同一类型的另一个对象中添加folderish对象
我们有一个内容类型(我们称之为MyFolder),它可以包含除MyFolder本身之外在站点中注册的任何其他内容类型 最简单的方法是什么Plone 避免在同一类型的另一个对象中添加folderish对象,plone,Plone,我们有一个内容类型(我们称之为MyFolder),它可以包含除MyFolder本身之外在站点中注册的任何其他内容类型 最简单的方法是什么 注册新工作流并设置防护 是否在创建时从具有事件的对象中删除内容类型的添加MyFolder权限 是否从对象中的可添加内容类型列表中筛选内容类型?怎么做 以上都没有?那怎么办 我想第3点应该可以正常工作,在MyFolder上设置“筛选内容类型”标志,并选择所有其他应添加到MyFolder的“允许的内容类型”中的内容 当然,如果添加其他内容类型,则必须手动扩展MyF
我想第3点应该可以正常工作,在
MyFolder
上设置“筛选内容类型”标志,并选择所有其他应添加到MyFolder
的“允许的内容类型”中的内容
当然,如果添加其他内容类型,则必须手动扩展MyFolder
的“允许的内容类型”
另一个解决方案是使用eventhandlerzope.lifecycleevent.interfaces.IObjectCreatedEvent
在MyFolder
的每个实例上设置localallowedtypes
在此事件处理程序中,您可以检查父级并设置本地允许的类型。
然后,您必须确保您的“普通”用户无法通过取消选中修改约束类型
权限来修改本地允许的类型
但在这里,您还必须手动管理新的内容类型
另一个解决方案:
如果您使用的是灵巧类型,则会有一个类型设置适配器()
您可以为特定类型注册自己的适配器 我想第3点应该可以正常工作,在MyFolder
上设置“筛选内容类型”标志,并选择所有其他应添加到MyFolder
的“允许的内容类型”中的内容
当然,如果添加其他内容类型,则必须手动扩展MyFolder
的“允许的内容类型”
另一个解决方案是使用eventhandlerzope.lifecycleevent.interfaces.IObjectCreatedEvent
在MyFolder
的每个实例上设置localallowedtypes
在此事件处理程序中,您可以检查父级并设置本地允许的类型。
然后,您必须确保您的“普通”用户无法通过取消选中修改约束类型
权限来修改本地允许的类型
但在这里,您还必须手动管理新的内容类型
另一个解决方案:
如果您使用的是灵巧类型,则会有一个类型设置适配器()
您可以为特定类型注册自己的适配器 我认为第3点有一些复杂性和转折点,因为您需要撤销修改contains类型
权限,但这可能不是预期的行为,因为这样您限制用户修改除MyFolder之外的所有本地允许的类型,最后用户可以找到解决此限制的方法。。。例如,MyFolder->Folder->MyFolder
第2点更简单,创建新的MyFolder时,您只需使用事件处理程序撤销一个权限,因为您正在撤销权限并禁用对该perm的获取。没有简单的解决办法来避免限制,用户仍然可以为每个可添加的内容类型(MyFolder除外)使用本地允许的类型配置。我认为第3点有一些复杂性和缺陷,因为您需要撤销修改contains类型的权限,但这可能不是预期的行为,因为这样您就限制了用户修改除MyFolder之外的所有本地允许的类型,最后用户可以找到解决此限制的方法。。。例如,MyFolder->Folder->MyFolder
第2点更简单,创建新的MyFolder时,您只需使用事件处理程序撤销一个权限,因为您正在撤销权限并禁用对该perm的获取。没有简单的解决方法可以避免这种限制,用户仍然可以对每个可添加的内容类型使用本地允许的类型配置,但MyFolder除外