display related doc with links

This commit is contained in:
Frédéric Péters 2011-09-16 14:51:31 +02:00
parent e20dc77842
commit b2dd9d9cb4
3 changed files with 66 additions and 3 deletions

View File

@ -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

View File

@ -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>

View File

@ -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))