我们有一个内容类型(让我们称之为MyFolder),它可以包含在站点中注册的任何其他内容类型,但MyFolder本身除外。
做这件事最简单的方法是什么?
发布于 2013-10-29 19:27:51
我认为第3点具有一些复杂性和逆转性,因为您需要撤销Modify contrains types权限,但这可能不是您想要的行为,因为这样您就限制了用户修改除MyFolder之外所有本地允许的类型,最后用户可以找到解决此限制的方法……例如,MyFolder ->文件夹-> MyFolder
第2点更简单,在创建新的MyFolder时,您只需使用事件处理程序撤销一个权限,因为您将撤销该权限并禁用该权限的获取。没有简单的解决办法可以避免这种限制,用户仍然可以对除MyFolder之外的每种可添加内容类型使用本地允许的类型的配置。
发布于 2013-10-29 13:09:45
我想第3点应该很好,在MyFolder上设置“筛选内容类型”标志,并选择在MyFolder的“允许的内容类型”中添加的所有其他内容类型。
当然,如果添加其他内容类型,则必须手动扩展MyFolder的“允许的内容类型”。
另一种解决方案可以是使用一个均匀的MyFolder设置每个实例的本地类型。
在此事件处理程序中,您可以检查父类型并设置本地允许的类型。然后,您必须确保“普通”用户不能通过取消选中Modify constrain types权限来修改本地允许的类型。
但在这里,您还必须手动管理新的内容类型。
还有另一个解决方案:如果您使用的是灵巧类型,就会有一个TypeSettingsAdapter (https://github.com/plone/plone.app.dexterity/blob/master/plone/app/dexterity/browser/types.py),您可以为您的特定类型注册自己的适配器。
https://stackoverflow.com/questions/19658644
复制相似问题