2016-05-30 31 views
4

我已經在Plone 4.3.9中創建了一個名爲PersonalPage的自定義類型靈巧,它只能在特定文件夾中被允許Members_folder/userfolder。 在他的FTI中,默認<property name="global_allow">False</property>。 的userfolder在Members_folder創建與認證用戶的UID,在Plone 4.3.3:特定文件夾中允許的Plone內容

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不會出現在可添加的列表,並允許內容用戶文件夾的類型。 這有什麼問題?是否有另一種方法只允許一個文件夾的內容類型可添加?

回答

4

由於global_allow標誌,腳本無法工作。

Plone的有2級內容類型的增加限制:

  • 第一個是一個全球性的設置:如果內容類型不是全局都允許它不能被添加在任何地方,直到一個內容類型明確的列出它作爲一種可能的亞型
  • 另一種是TTW可添加類型,簡單地限制了一套以上

定義的內容,如果您需要限制可添加類型的單個文件夾,您可以定義文件夾作爲新特殊類型,僅用於一次該網站(所以保持global_allow爲真,創建一個文件夾,然後禁用它);最後將PersonalPage指定爲其中的allowed_types,並將PersonalPage的global_allow設置保持爲False。

或者你可以使用collective.factorymenu,通過網絡修改Plone添加菜單(尚未發佈,但正在工作)。

相關問題