display related doc with links
This commit is contained in:
parent
e20dc77842
commit
b2dd9d9cb4
|
@ -4,6 +4,7 @@ from zope.schema.interfaces import IChoice, IField, IList, IDate
|
|||
from zope import schema
|
||||
from z3c.form.interfaces import IOrderedSelectWidget, ITextWidget
|
||||
from z3c.relationfield.interfaces import IRelation, IRelationList
|
||||
from plone.formwidget.autocomplete.interfaces import IAutocompleteWidget
|
||||
|
||||
class ICommission(IField):
|
||||
'''Field containing a unicode string without newlines that is a commission.'''
|
||||
|
@ -135,3 +136,9 @@ class IMailRefId(IField):
|
|||
class IMailRefIdWidget(ITextWidget):
|
||||
pass
|
||||
|
||||
class IRelatedDocWidget(IAutocompleteWidget):
|
||||
pass
|
||||
|
||||
class IRelatedDocsWidget(IAutocompleteWidget):
|
||||
pass
|
||||
|
||||
|
|
|
@ -0,0 +1,22 @@
|
|||
<span id="" class=""
|
||||
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"><tal:block
|
||||
tal:repeat="item view/tuples"
|
||||
><a tal:attributes="href python: item[0]"><span class="selected-option"
|
||||
tal:content="python: item[1]"
|
||||
/></a><tal:block condition="not:repeat/item/end">, </tal:block
|
||||
></tal:block
|
||||
></span>
|
|
@ -9,6 +9,9 @@ from z3c.form.interfaces import IFormLayer, IFieldWidget
|
|||
from z3c.form.widget import FieldWidget
|
||||
from collective.z3cform.datetimewidget import DateWidget
|
||||
|
||||
from Products.Five.browser.pagetemplatefile import ViewPageTemplateFile
|
||||
|
||||
|
||||
from themis.fields.interfaces import ICommission, ICommissions
|
||||
from zope.schema.interfaces import IDate, IContextSourceBinder, ISource
|
||||
from themis.fields.interfaces import IDateOnly
|
||||
|
@ -24,6 +27,7 @@ from themis.fields.interfaces import IRelatedDoc
|
|||
from themis.fields.interfaces import IRelatedDocs
|
||||
from themis.fields.interfaces import IMailId, IMailIdWidget
|
||||
from themis.fields.interfaces import IMailRefId, IMailRefIdWidget
|
||||
from themis.fields.interfaces import IRelatedDocWidget, IRelatedDocsWidget
|
||||
|
||||
from plone.formwidget.autocomplete.interfaces import IAutocompleteWidget
|
||||
from plone.formwidget.autocomplete.widget import AutocompleteSelectionWidget, AutocompleteMultiSelectionWidget
|
||||
|
@ -202,20 +206,50 @@ class OrderedSelectAndAddWidget(OrderedSelectWidget):
|
|||
return notselecteditems
|
||||
|
||||
|
||||
class RelatedDocWidget(AutocompleteSelectionWidget):
|
||||
implements(IRelatedDocWidget)
|
||||
display_template = ViewPageTemplateFile('relateddoc_display.pt')
|
||||
maxResults = 50
|
||||
|
||||
def get_url(self, v):
|
||||
return v
|
||||
|
||||
def get_label(self, v):
|
||||
term = self.terms.getTermByToken(v)
|
||||
return term.title
|
||||
|
||||
def tuples(self):
|
||||
return [(self.get_url(x), self.get_label(x)) for x in self.value]
|
||||
|
||||
|
||||
@adapter(IRelatedDoc, IFormLayer)
|
||||
@implementer(IFieldWidget)
|
||||
def RelatedDocFieldWidget(field, request):
|
||||
'''IFieldWidget factory for RadioChoiceWidget'''
|
||||
return FieldWidget(field, AutocompleteSelectionWidget(request))
|
||||
'''IFieldWidget factory for RelatedDocWidget'''
|
||||
return FieldWidget(field, RelatedDocWidget(request))
|
||||
|
||||
class RelatedDocsWidget(AutocompleteMultiSelectionWidget):
|
||||
implements(IRelatedDocsWidget)
|
||||
display_template = ViewPageTemplateFile('relateddoc_display.pt')
|
||||
maxResults = 50
|
||||
|
||||
def get_url(self, v):
|
||||
return v
|
||||
|
||||
def get_label(self, v):
|
||||
term = self.terms.getTermByToken(v)
|
||||
return term.title
|
||||
|
||||
def tuples(self):
|
||||
return [(self.get_url(x), self.get_label(x)) for x in self.value]
|
||||
|
||||
@adapter(IRelatedDocs, IFormLayer)
|
||||
@implementer(IFieldWidget)
|
||||
def RelatedDocsFieldWidget(field, request):
|
||||
'''IFieldWidget factory for RelatedDocsWidget'''
|
||||
return FieldWidget(field, MultiContentTreeWidget(request))
|
||||
return FieldWidget(field, RelatedDocsWidget(request))
|
||||
return FieldWidget(field, AutocompleteMultiSelectionWidget(request))
|
||||
return FieldWidget(field, MultiContentTreeWidget(request))
|
||||
|
||||
|
||||
|
||||
|
|
Reference in New Issue