Adding a special widget view for mail ref id fields
This commit is contained in:
parent
9c8662b8a3
commit
799b04604b
|
@ -2,7 +2,7 @@ from zope.interface import Interface
|
|||
|
||||
from zope.schema.interfaces import IChoice, IField, IList, IDate
|
||||
from zope import schema
|
||||
from z3c.form.interfaces import IOrderedSelectWidget
|
||||
from z3c.form.interfaces import IOrderedSelectWidget, ITextWidget
|
||||
from z3c.relationfield.interfaces import IRelation
|
||||
|
||||
class ICommission(IField):
|
||||
|
@ -105,3 +105,6 @@ class IMailRefId(IField):
|
|||
description=IField['missing_value'].description,
|
||||
required=False)
|
||||
|
||||
class IMailRefIdWidget(ITextWidget):
|
||||
pass
|
||||
|
||||
|
|
|
@ -0,0 +1,23 @@
|
|||
<html xmlns="http://www.w3.org/1999/xhtml"
|
||||
xmlns:tal="http://xml.zope.org/namespaces/tal"
|
||||
tal:omit-tag="">
|
||||
<a id="" class="" href="#"
|
||||
tal:attributes="id view/id;
|
||||
class view/klass;
|
||||
style view/style;
|
||||
title view/title;
|
||||
lang view/lang;
|
||||
href view/href;
|
||||
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
|
||||
condition="view/value" content="view/value"
|
||||
/></a>
|
||||
</html>
|
|
@ -1,8 +1,10 @@
|
|||
from Acquisition import ImplicitAcquisitionWrapper
|
||||
|
||||
from zope.interface import implementsOnly, implementer
|
||||
from zope.interface import implements, implementsOnly, implementer
|
||||
from zope.component import adapts, adapter
|
||||
|
||||
from Products.CMFCore.utils import getToolByName
|
||||
|
||||
from z3c.form.interfaces import IFormLayer, IFieldWidget
|
||||
from z3c.form.widget import FieldWidget
|
||||
from collective.z3cform.datetimewidget import DateWidget
|
||||
|
@ -19,7 +21,7 @@ from themis.fields.interfaces import IMinistry, IMinistries
|
|||
from themis.fields.interfaces import IDeputyOrMinistry, IDeputiesOrMinistries
|
||||
from themis.fields.interfaces import IOrderedSelectAndAddWidget
|
||||
from themis.fields.interfaces import IRelatedDoc
|
||||
from themis.fields.interfaces import IMailRefId
|
||||
from themis.fields.interfaces import IMailRefId, IMailRefIdWidget
|
||||
|
||||
from plone.formwidget.autocomplete.interfaces import IAutocompleteWidget
|
||||
from plone.formwidget.autocomplete.widget import AutocompleteSelectionWidget
|
||||
|
@ -191,10 +193,25 @@ def RelatedDocFieldWidget(field, request):
|
|||
'''IFieldWidget factory for RadioChoiceWidget'''
|
||||
return FieldWidget(field, ContentTreeWidget(request))
|
||||
|
||||
|
||||
class MailRefIdWidget(TextWidget):
|
||||
implements(IMailRefIdWidget)
|
||||
|
||||
def href(self):
|
||||
catalog = getToolByName(self.context, 'portal_catalog')
|
||||
results = catalog(themis_mail_number=self.value)
|
||||
objects = [x.getObject() for x in results]
|
||||
if len(objects) == 0:
|
||||
return ''
|
||||
if len(objects) > 1:
|
||||
pass # should we display a warning?
|
||||
return objects[0].absolute_url()
|
||||
|
||||
|
||||
@adapter(IMailRefId, IFormLayer)
|
||||
@implementer(IFieldWidget)
|
||||
def MailRefIdFieldWidget(field, request):
|
||||
"""IFieldWidget factory for MailRefId"""
|
||||
return FieldWidget(field, TextWidget(request))
|
||||
return FieldWidget(field, MailRefIdWidget(request))
|
||||
|
||||
|
||||
|
|
|
@ -60,4 +60,10 @@
|
|||
class="plone.formwidget.autocomplete.widget.AutocompleteSearch"
|
||||
/>
|
||||
|
||||
<z3c:widgetTemplate
|
||||
mode="display"
|
||||
widget=".interfaces.IMailRefIdWidget"
|
||||
layer="z3c.form.interfaces.IFormLayer"
|
||||
template="mail_ref_id_display.pt"
|
||||
/>
|
||||
</configure>
|
||||
|
|
Reference in New Issue