Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- from zope import schema
- from plone.directives import form
- from z3c.form.interfaces import IEditForm
- from z3c.form.interfaces import IAddForm
- from plone.app.dexterity.behaviors.metadata import _ as _dx
- from plone.autoform.interfaces import IFormFieldProvider
- from zope.interface import alsoProvides
- from plone.app.dexterity.behaviors import metadata
- class ICustomCategorization(form.Schema):
- # categorization fieldset
- form.fieldset(
- 'categorization',
- label=_dx(u'Categorization'),
- fields=['subjects', 'language'],
- )
- subjects = schema.Tuple(
- title=_dx(u'label_categories', default=u'Categories'),
- description=_dx(u'help_categories', default=u'Also known as keywords, tags or labels, these help you categorize your content.'),
- value_type=schema.TextLine(),
- required=False,
- missing_value=(),
- )
- # form.widget(subjects = TextLinesFieldWidget)
- language = schema.Choice(
- title=_dx(u'label_language', default=u'Language'),
- vocabulary='plone.app.vocabularies.AvailableContentLanguages',
- required=False,
- missing_value='',
- )
- form.omitted('subjects', 'language')
- form.no_omit(IEditForm, 'subjects', 'language')
- form.no_omit(IAddForm, 'subjects', 'language')
- alsoProvides(ICustomCategorization, IFormFieldProvider)
- class CustomCategorization(metadata.MetadataBase):
- def _get_subjects(self):
- return self.context.subject
- def _set_subjects(self, value):
- self.context.subject = value
- subjects = property(_get_subjects, _set_subjects)
- language = metadata.DCFieldProperty(ICustomCategorization['language'], get_name='Language', set_name='setLanguage')
- class ICustomDublinCore(metadata.IOwnership, metadata.IPublication, ICustomCategorization, metadata.IBasic):
- """ Metadata behavior providing all the DC fields
- """
- pass
- class CustomDublinCore(metadata.Basic, CustomCategorization, metadata.Publication, metadata.Ownership):
- pass
- ##### configure.zcml
- <plone:behavior
- title="Categorization"
- description="Adds keywords and language setting"
- provides=".metadata.ICustomCategorization"
- factory=".metadata.CustomCategorization"
- for="plone.dexterity.interfaces.IDexterityContent"
- />
- <plone:behavior
- title="Dublin Core metadata 2"
- description="Adds Dublin Core metadata fields (equals Basic metadata + Categorization + Effective range + Ownership)"
- provides=".metadata.ICustomDublinCore"
- factory=".metadata.CustomDublinCore"
- for="plone.dexterity.interfaces.IDexterityContent"
- />
Advertisement
Add Comment
Please, Sign In to add comment