Added field for thesaurus keywords. That field will be used content types schema (like in dms document)
This commit is contained in:
parent
33dbb3ca03
commit
5726e6be16
|
@ -24,6 +24,7 @@
|
||||||
<adapter factory=".relatedkeywords.RelatedThesaurusKeywordsFieldWidget" />
|
<adapter factory=".relatedkeywords.RelatedThesaurusKeywordsFieldWidget" />
|
||||||
<adapter factory=".broaderkeywords.BroaderThesaurusKeywordsFieldWidget" />
|
<adapter factory=".broaderkeywords.BroaderThesaurusKeywordsFieldWidget" />
|
||||||
<adapter factory=".equivalences.ThesaurusKeywordEquivalencesFieldWidget" />
|
<adapter factory=".equivalences.ThesaurusKeywordEquivalencesFieldWidget" />
|
||||||
|
<adapter factory=".field.ThesaurusKeywordsFieldWidget" />
|
||||||
|
|
||||||
<adapter
|
<adapter
|
||||||
name="SearchableText"
|
name="SearchableText"
|
||||||
|
|
|
@ -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)
|
||||||
|
|
|
@ -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>
|
Reference in New Issue