diff --git a/themis/fields/interfaces.py b/themis/fields/interfaces.py
index 68cf7ea..b1f0be8 100644
--- a/themis/fields/interfaces.py
+++ b/themis/fields/interfaces.py
@@ -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
+
diff --git a/themis/fields/mail_ref_id_display.pt b/themis/fields/mail_ref_id_display.pt
new file mode 100644
index 0000000..ed74e67
--- /dev/null
+++ b/themis/fields/mail_ref_id_display.pt
@@ -0,0 +1,23 @@
+
+
+
diff --git a/themis/fields/widgets.py b/themis/fields/widgets.py
index c76bd30..a64b93c 100644
--- a/themis/fields/widgets.py
+++ b/themis/fields/widgets.py
@@ -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))
diff --git a/themis/fields/widgets.zcml b/themis/fields/widgets.zcml
index 83d7ac1..a313559 100644
--- a/themis/fields/widgets.zcml
+++ b/themis/fields/widgets.zcml
@@ -60,4 +60,10 @@
class="plone.formwidget.autocomplete.widget.AutocompleteSearch"
/>
+