我在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不会出现在用户文件夹的可添加和允许内容类型的列表中。 这有什么问题?是否有其他方法允许仅为文件夹添加内容类型?
答案 0 :(得分:4)
由于global_allow标志,脚本无法正常工作。
Plone有2级内容类型添加限制:
如果您需要限制单个文件夹的可添加类型,您可以将文件夹定义为新的特殊类型,在网站中只使用一次(因此请保持global_allow为true,创建一个文件夹,然后禁用它);最后将PersonalPage指定为其中的allowed_types之一,并将PersonalPage的global_allow设置保持为False。
或者你可以使用collective.factorymenu,通过网络修改Plone添加菜单(尚未发布但正在运行)。