Added field for thesaurus keywords. That field will be used content types schema (like in dms document)

This commit is contained in:
David Convent 2013-01-29 16:04:34 +01:00
parent 33dbb3ca03
commit 5726e6be16
3 changed files with 76 additions and 0 deletions

View File

@ -24,6 +24,7 @@
<adapter factory=".relatedkeywords.RelatedThesaurusKeywordsFieldWidget" />
<adapter factory=".broaderkeywords.BroaderThesaurusKeywordsFieldWidget" />
<adapter factory=".equivalences.ThesaurusKeywordEquivalencesFieldWidget" />
<adapter factory=".field.ThesaurusKeywordsFieldWidget" />
<adapter
name="SearchableText"

View File

@ -0,0 +1,55 @@
from zope.interface import implements, implementer
from zope.component import adapter
from z3c.form.interfaces import IFormLayer, IFieldWidget
from z3c.form.widget import FieldWidget
from z3c.relationfield.interfaces import IRelationList
from z3c.relationfield.schema import RelationChoice, RelationList
from plone.formwidget.contenttree.widget import MultiContentTreeWidget
from plone.formwidget.contenttree.utils import closest_content
from plone.formwidget.contenttree import ObjPathSourceBinder
from Products.Five.browser.pagetemplatefile import ViewPageTemplateFile
class IThesaurusKeywords(IRelationList):
""""""
class ThesaurusKeywordsWidget(MultiContentTreeWidget):
display_template = ViewPageTemplateFile('thesaurus-keywords-display.pt')
def __init__(self, request):
super(ThesaurusKeywordsWidget, self).__init__(request)
def terms(self):
return [ x for x in self.value ]
@adapter(IThesaurusKeywords, IFormLayer)
@implementer(IFieldWidget)
def ThesaurusKeywordsFieldWidget(field, request):
return FieldWidget(field, ThesaurusKeywordsWidget(request))
class ThesaurusPathSourceBinder(ObjPathSourceBinder):
def __call__(self, context):
selectable_filter = self.selectable_filter
selectable_filter.criteria['portal_type'] = ('dmskeyword',)
#thesaurus_path = {'query': '/'.join(context.getPhysicalPath()[:-1])}
#selectable_filter.criteria['path'] = thesaurus_path
return self.path_source(
closest_content(context),
selectable_filter=selectable_filter,
navigation_tree_query=self.navigation_tree_query)
class ThesaurusKeywords(RelationList):
implements(IThesaurusKeywords)
def __init__(self, **kwargs):
RelationList.__init__(self,
value_type=RelationChoice(
title=u'',
source=ThesaurusPathSourceBinder()),
**kwargs)

View File

@ -0,0 +1,20 @@
<ul id="" class=""
tal:condition="view/terms"
tal:attributes="id view/id;
class view/klass;
style view/style;
title view/title;
lang view/lang;
onclick view/onclick;
ondblclick view/ondblclick;
onmousedown view/onmousedown;
onmouseup view/onmouseup;
onmouseover view/onmouseover;
onmousemove view/onmousemove;
onmouseout view/onmouseout;
onkeypress view/onkeypress;
onkeydown view/onkeydown;
onkeyup view/onkeyup"><li
tal:repeat="item view/terms"
><span tal:replace="item/title" /></li></ul
><em tal:condition="not:view/value">(nothing)</em>