diff --git a/src/collective/dms/thesaurus/browser/configure.zcml b/src/collective/dms/thesaurus/browser/configure.zcml
index 3fde954..798eb71 100644
--- a/src/collective/dms/thesaurus/browser/configure.zcml
+++ b/src/collective/dms/thesaurus/browser/configure.zcml
@@ -28,4 +28,13 @@
permission="zope2.View"
/>
+
+
diff --git a/src/collective/dms/thesaurus/browser/dmsthesaurus_view.pt b/src/collective/dms/thesaurus/browser/dmsthesaurus_view.pt
new file mode 100644
index 0000000..51892c2
--- /dev/null
+++ b/src/collective/dms/thesaurus/browser/dmsthesaurus_view.pt
@@ -0,0 +1,29 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/collective/dms/thesaurus/browser/thesaurus_form.pt b/src/collective/dms/thesaurus/browser/thesaurus_form.pt
new file mode 100644
index 0000000..260ea59
--- /dev/null
+++ b/src/collective/dms/thesaurus/browser/thesaurus_form.pt
@@ -0,0 +1,8 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/collective/dms/thesaurus/browser/thesaurusview.py b/src/collective/dms/thesaurus/browser/thesaurusview.py
index e15768c..58411a3 100644
--- a/src/collective/dms/thesaurus/browser/thesaurusview.py
+++ b/src/collective/dms/thesaurus/browser/thesaurusview.py
@@ -1,16 +1,41 @@
-from zope.component import getUtility
+from zope import schema
+from zope.interface import Interface
-from zope.app.intid.interfaces import IIntIds
+from z3c.form import form, button, field
+from plone.z3cform import layout
+from plone.formwidget.autocomplete.widget import AutocompleteFieldWidget
-from zc.relation.interfaces import ICatalog
+from zope.browserpage.viewpagetemplatefile import ViewPageTemplateFile
from plone.dexterity.browser.view import DefaultView
+from Products.Five.browser import BrowserView
#from plone.dexterity.interfaces import IDexterityFTI
#from plone.dexterity.utils import getAdditionalSchemata
+from collective.dms.thesaurus.dmsthesaurus import GlobalThesaurusSource
-class DmsThesaurusView(DefaultView):
- """The default view for DMSThesaurus.
- """
+class IThesaurusForm(Interface):
+ keyword_search = schema.Choice(title=u"Search for keyword",
+ source=GlobalThesaurusSource(), required=False)
+
+
+class DmsThesaurusForm(form.Form):
+ fields = field.Fields(IThesaurusForm)
+ #fields['keyword_search'].widgetFactory = AutocompleteFieldWidget
+ ignoreContext = True
+ template = ViewPageTemplateFile('thesaurus_form.pt')
+
+ @button.buttonAndHandler(u'Ok')
+ def handle_ok(self, action):
+ data, errors = self.extractData()
+ print data, errors
+
+class DmsThesaurusView(BrowserView):
+
+ def renderForm(self):
+ form = DmsThesaurusForm(self.context, self.request)
+ form.update()
+ return form.render()
+
\ No newline at end of file
diff --git a/src/collective/dms/thesaurus/dmsthesaurus.py b/src/collective/dms/thesaurus/dmsthesaurus.py
index 6b27e9a..0a64dd6 100644
--- a/src/collective/dms/thesaurus/dmsthesaurus.py
+++ b/src/collective/dms/thesaurus/dmsthesaurus.py
@@ -1,16 +1,27 @@
#import datetime
-#from zope import schema
+from zope import schema
#from zope.component import adapts
from zope.interface import implements
+from zope.component import adapter
+from zope.interface import implementer
+from z3c.form.widget import FieldWidget, SequenceWidget
#from plone.dexterity.content import Container
from plone.dexterity.schema import DexteritySchemaPolicy
from plone.dexterity.content import Container
+from zope.schema.interfaces import ISet
+from zope.schema.interfaces import IFromUnicode
+from z3c.form.interfaces import IFormLayer, IFieldWidget, ISequenceWidget
+
+from plone.formwidget.autocomplete.widget import AutocompleteMultiSelectionWidget
+
from plone.supermodel import model
from . import _
+from vocabulary import GlobalThesaurusSource
+
#from plone.autoform import directives as form
#from plone.directives.form import default_value
@@ -18,9 +29,28 @@ class NoThesaurusFound(Exception):
"""No thesaurus found"""
+class IEntryPoints(ISet):
+ pass
+
+class EntryPoints(schema.Set):
+ implements(IEntryPoints, IFromUnicode)
+
+
+@adapter(IEntryPoints, IFormLayer)
+@implementer(IFieldWidget)
+def EntryPointsFieldWidget(field, request):
+ return FieldWidget(field, AutocompleteMultiSelectionWidget(request))
+
+
class IDmsThesaurus(model.Schema):
""" """
+ entry_points = EntryPoints(
+ title=_(u"Entry Points"),
+ value_type=schema.Choice(source=GlobalThesaurusSource())
+ )
+
+
class DmsThesaurus(Container):
""" """
implements(IDmsThesaurus)
diff --git a/src/collective/dms/thesaurus/vocabulary.py b/src/collective/dms/thesaurus/vocabulary.py
index 524828b..cb217b1 100644
--- a/src/collective/dms/thesaurus/vocabulary.py
+++ b/src/collective/dms/thesaurus/vocabulary.py
@@ -1,7 +1,9 @@
from zope.interface import Interface
-#from zope.interface import implements
+from zope.interface import implements
from five import grok
+from zope.schema.interfaces import IContextSourceBinder
+
#from zope.component import queryUtility
from zope.schema.interfaces import IVocabularyFactory
#from zope.schema.interfaces import ISource, IContextSourceBinder
@@ -14,9 +16,14 @@ class IMainThesaurus(Interface):
""" Marker interface for main thesaurus container
"""
+class ThesaurusVocabulary(SimpleVocabulary):
+
+ def search(self, query_string):
+ q = query_string.lower()
+ return [kw for kw in self._terms if q in kw.title.lower()]
class GlobalThesaurusSource(object):
- grok.implements(IVocabularyFactory)
+ implements(IContextSourceBinder)
def __call__(self, context):
catalog = getToolByName(context, 'portal_catalog')
@@ -25,18 +32,18 @@ class GlobalThesaurusSource(object):
def cmp_keyword(x, y):
return cmp(x.title, y.title)
keywords.sort(cmp_keyword)
- keyword_ids = [x.id for x in keywords]
+ #keyword_ids = [x.id for x in keywords]
keyword_terms = [SimpleVocabulary.createTerm(
x.id, x.id, x.title) for x in keywords]
- return SimpleVocabulary(keyword_terms)
+ return ThesaurusVocabulary(keyword_terms)
def __iter__(self):
# hack to let schema editor handle the field
yield u'DO NOT TOUCH'
-grok.global_utility(GlobalThesaurusSource,
- name=u'dms.thesaurus.global')
+#grok.global_utility(GlobalThesaurusSource,
+# name=u'dms.thesaurus.global')
class KeywordFromSameThesaurusSource(object):
"""
diff --git a/src/collective/dms/thesaurus/widgets.zcml b/src/collective/dms/thesaurus/widgets.zcml
index a6a197a..9f334da 100644
--- a/src/collective/dms/thesaurus/widgets.zcml
+++ b/src/collective/dms/thesaurus/widgets.zcml
@@ -28,5 +28,6 @@
template="thesaurus-keyword-equivs-display.pt"
/>
+