特定文件夹中允许的Plone内容

时间:2016-05-30 08:27:45

标签: plone

我在Plone 4.3.9中创建了一个自定义类型灵巧,称为PersonalPage,只允许在特定文件夹 Members_folder / userfolder 中使用。 在他的FTI中,默认为<property name="global_allow">False</property>。  在Plone 4.3.3中,使用经过身份验证的用户的uid在Members_folder中创建用户文件夹:

if homefolder is None:
        # create userfolder in members_folder
        members_folder.invokeFactory('Folder', user_id)
        userfolder = members_folder[user_id]
        utils = userfolder.plone_utils
        utils.changeOwnershipOf(userfolder, user_id,
                                        1, None)
        userfolder.setCreators([user_id])
        roles = list(userfolder.get_local_roles_for_userid(user_id))
        if 'Owner' not in roles:
            roles.append('Owner')
            userfolder.manage_setLocalRoles(user_id, roles)

        if shasattr(userfolder, 'canSetConstrainTypes'):
            userfolder.setConstrainTypesMode(1)
            defaultAllowedTypes = userfolder.getLocallyAllowedTypes()
            userfolder.setLocallyAllowedTypes(defaultAllowedTypes + ('personalpage',))    
            defaultAddableTypes = userfolder.getImmediatelyAddableTypes()
            userfolder.setImmediatelyAddableTypes(defaultAddableTypes + ('personalpage',))
        userfolder.reindexObjectSecurity()
        userfolder.reindexObject()

但是在运行此脚本之后,内容类型PersonalPage不会出现在用户文件夹的可添加和允许内容类型的列表中。 这有什么问题?是否有其他方法允许仅为文件夹添加内容类型?

1 个答案:

答案 0 :(得分:4)

由于global_allow标志,脚本无法正常工作。

Plone有2级内容类型添加限制:

  • 第一个是全局设置:如果内容类型不是全局允许的,则无法将其添加到任何位置,直到内容类型明确将其列为可能的子类型
  • 另一个是TTW可添加类型,它只是限制上面定义的内容集

如果您需要限制单个文件夹的可添加类型,您可以将文件夹定义为新的特殊类型,在网站中只使用一次(因此请保持global_allow为true,创建一个文件夹,然后禁用它);最后将PersonalPage指定为其中的allowed_types之一,并将PersonalPage的global_allow设置保持为False。

或者你可以使用collective.factorymenu,通过网络修改Plone添加菜单(尚未发布但正在运行)。