首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >避免在同一类型的另一个对象中添加折叠式对象。

避免在同一类型的另一个对象中添加折叠式对象。
EN

Stack Overflow用户
提问于 2013-10-29 12:47:26
回答 2查看 61关注 0票数 1

我们有一个内容类型(让我们称之为MyFolder),它可以包含在站点中注册的任何其他内容类型,但MyFolder本身除外。

做这件事最简单的方法是什么?

  1. 注册一个新的工作流并设置守卫?
  2. 在创建时从具有事件的对象中删除添加内容类型的MyFolder权限?
  3. 从对象中的可添加内容类型列表中筛选内容类型?多么?
  4. 以上都不是?那又如何呢?
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-10-29 19:27:51

我认为第3点具有一些复杂性和逆转性,因为您需要撤销Modify contrains types权限,但这可能不是您想要的行为,因为这样您就限制了用户修改除MyFolder之外所有本地允许的类型,最后用户可以找到解决此限制的方法……例如,MyFolder ->文件夹-> MyFolder

第2点更简单,在创建新的MyFolder时,您只需使用事件处理程序撤销一个权限,因为您将撤销该权限并禁用该权限的获取。没有简单的解决办法可以避免这种限制,用户仍然可以对除MyFolder之外的每种可添加内容类型使用本地允许的类型的配置。

票数 0
EN

Stack Overflow用户

发布于 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),您可以为您的特定类型注册自己的适配器。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19658644

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档