custom folder type (#3758)
This commit is contained in:
parent
53fc533d99
commit
72a4d81bc3
|
@ -2,6 +2,7 @@ from AccessControl import getSecurityManager
|
|||
from zope.interface import implements
|
||||
from five import grok
|
||||
from zope import component
|
||||
from zope import schema
|
||||
|
||||
from zc.relation.interfaces import ICatalog
|
||||
from zope.app.intid.interfaces import IIntIds
|
||||
|
@ -16,12 +17,37 @@ import plone.app.contenttypes.interfaces
|
|||
from plone.dexterity.interfaces import IDexterityContainer
|
||||
from plone.app.contentlisting.interfaces import IContentListingObject
|
||||
|
||||
from collective.z3cform.rolefield.field import LocalRolesToPrincipals
|
||||
from collective.dms.basecontent.widget import AjaxChosenMultiFieldWidget
|
||||
from plone.autoform import directives as form
|
||||
|
||||
from pfwbged.collection.searchview import ResultsTable
|
||||
from collective.dms.thesaurus.keywordsfield import ThesaurusKeywords
|
||||
|
||||
|
||||
from .link import ILink
|
||||
|
||||
from . import _
|
||||
|
||||
class IFolder(model.Schema):
|
||||
""" """
|
||||
treating_groups = LocalRolesToPrincipals(
|
||||
title=_(u"Treating groups"),
|
||||
required=False,
|
||||
roles_to_assign=('Editor',),
|
||||
value_type=schema.Choice(vocabulary=u'collective.dms.basecontent.treating_groups',)
|
||||
)
|
||||
form.widget(treating_groups=AjaxChosenMultiFieldWidget)
|
||||
|
||||
recipient_groups = LocalRolesToPrincipals(
|
||||
title=_(u"Recipient groups"),
|
||||
required=False,
|
||||
roles_to_assign=('Reader',),
|
||||
value_type=schema.Choice(vocabulary=u'collective.dms.basecontent.recipient_groups')
|
||||
)
|
||||
form.widget(recipient_groups=AjaxChosenMultiFieldWidget)
|
||||
|
||||
keywords = ThesaurusKeywords(title=_(u'Keywords'), required=False)
|
||||
|
||||
|
||||
class Folder(Container):
|
||||
|
|
|
@ -28,7 +28,8 @@ def ContentTreeFieldWidget(field, request):
|
|||
class ILink(model.Schema):
|
||||
""" """
|
||||
folder = RelationChoice(title=_(u'Folder'), required=True,
|
||||
source=ObjPathSourceBinder(navigation_tree_query={'portal_type': ('Folder',)}))
|
||||
source=ObjPathSourceBinder(
|
||||
navigation_tree_query={'portal_type': ('Folder', 'pfwbgedfolder',)}))
|
||||
|
||||
form.widget(folder=ContentTreeFieldWidget)
|
||||
|
||||
|
|
|
@ -2,4 +2,5 @@
|
|||
<object name="portal_types" meta_type="Plone Types Tool">
|
||||
<property name="title">Controls the available content types in your portal</property>
|
||||
<object name="pfwbgedlink" meta_type="Dexterity FTI"/>
|
||||
<object name="pfwbgedfolder" meta_type="Dexterity FTI"/>
|
||||
</object>
|
||||
|
|
|
@ -0,0 +1,48 @@
|
|||
<?xml version="1.0"?>
|
||||
<object name="pfwbgedfolder" meta_type="Dexterity FTI" i18n:domain="plone"
|
||||
xmlns:i18n="http://xml.zope.org/namespaces/i18n">
|
||||
<property name="title" i18n:translate="">Classifying Folder</property>
|
||||
<property name="icon_expr">string:${portal_url}/++resource++pfwbgedfolder_icon.png</property>
|
||||
<property name="factory">pfwbgedfolder</property>
|
||||
<property name="add_view_expr">string:${folder_url}/++add++pfwbgedfolder</property>
|
||||
<property name="link_target"></property>
|
||||
<property name="immediate_view">view</property>
|
||||
<property name="global_allow">True</property>
|
||||
<property name="filter_content_types">True</property>
|
||||
<property name="allow_discussion">False</property>
|
||||
<property name="default_view">view</property>
|
||||
<property name="view_methods">
|
||||
<element value="view"/>
|
||||
</property>
|
||||
<property name="default_view_fallback">False</property>
|
||||
<property name="add_permission">cmf.AddPortalContent</property>
|
||||
<property name="klass">pfwbged.folder.Folder</property>
|
||||
<property name="behaviors">
|
||||
<element value="plone.app.content.interfaces.INameFromTitle"/>
|
||||
<element value="plone.app.dexterity.behaviors.metadata.IBasic"/>
|
||||
</property>
|
||||
|
||||
<!-- Contained Types -->
|
||||
<property name="filter_content_types">True</property>
|
||||
<property name="allowed_content_types" purge="False">
|
||||
<element value="pfwbgedlink"/>
|
||||
</property>
|
||||
|
||||
<!-- DO NOT use a model_source or it removes manually added fields while reapplying the profile -->
|
||||
<!--property name="model_source" /-->
|
||||
<property name="schema">pfwbged.folder.IFolder</property>
|
||||
<alias from="(Default)" to="(dynamic view)"/>
|
||||
<alias from="edit" to="@@edit"/>
|
||||
<alias from="sharing" to="@@sharing"/>
|
||||
<alias from="view" to="(selected layout)"/>
|
||||
<action title="View" action_id="view" category="object" condition_expr=""
|
||||
description="" icon_expr="" link_target="" url_expr="string:${object_url}"
|
||||
visible="True">
|
||||
<permission value="View"/>
|
||||
</action>
|
||||
<action title="Edit" action_id="edit" category="object" condition_expr=""
|
||||
description="" icon_expr="" link_target=""
|
||||
url_expr="string:${object_url}/edit" visible="True">
|
||||
<permission value="Modify portal content"/>
|
||||
</action>
|
||||
</object>
|
Reference in New Issue