Fixed widget for thesaurus search form in thesaurus base view

This commit is contained in:
David Convent 2013-04-13 02:03:11 +02:00
parent 7c931a1671
commit eae5e649ec
8 changed files with 101 additions and 15 deletions

View File

@ -37,4 +37,23 @@
permission="zope2.View"
/>
<browser:page
for="collective.dms.thesaurus.dmsthesaurus.IDmsThesaurus"
name="autocomplete-search-form"
class="collective.dms.thesaurus.browser.thesaurusview.DmsThesaurusForm"
permission="cmf.ModifyPortalContent"
/>
<adapter factory="collective.dms.thesaurus.browser.thesaurusview.AutocompleteSearchFieldWidget" />
<!--
<browser:page
for="*"
name="search-widget"
class=".searchform.SearchView"
permission="cmf.ModifyPortalContent"
/>
<adapter factory=".searchform.SearchAdapter" />
-->
</configure>

View File

@ -17,8 +17,12 @@
onsubmit="window.location=window.location+'/'+document.forms['thesaurus-search-form']['form-widgets-keyword_search'].value; return false" />
<div id="dmsthesaurus-entry-points-field"
tal:define="widget python:view.widgets.get('entry_points')"
tal:content="structure widget/render" />
class="field"
tal:define="widget python:view.widgets.get('entry_points')">
<label tal:content="widget/label" />
<br />
<div tal:content="structure widget/render" />
</div>
</metal:main>

View File

@ -0,0 +1,4 @@
<script type="text/javascript" tal:content="structure view/js"></script>
<div tal:attributes="id string:${view/id}-autocomplete">
<tal:block replace="structure view/subform/render" />
</div>

View File

@ -1,29 +1,65 @@
from zope import schema
from zope.interface import implementer
from zope.interface import implements
from zope.interface import Interface
from zope.component import adapter
from z3c.form import form, button, field
#from plone.z3cform import layout
#from plone.formwidget.autocomplete.widget import AutocompleteFieldWidget
from zope import schema
from zope.schema.interfaces import IChoice
from zope.browserpage.viewpagetemplatefile import ViewPageTemplateFile
from z3c.form.interfaces import IFormLayer, IFieldWidget
from z3c.form.widget import FieldWidget
from z3c.form import form, button, field
from plone.z3cform import layout
#from plone.formwidget.autocomplete.widget import AutocompleteFieldWidget
from plone.formwidget.autocomplete.widget import AutocompleteBase, AutocompleteSelectionWidget
from plone.formwidget.autocomplete.interfaces import IAutocompleteWidget
#from plone.formwidget.autocomplete import AutocompleteFieldWidget
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 import _
from collective.dms.thesaurus.vocabulary import InternalThesaurusSource
class IAutocompleteSearchWidget(IAutocompleteWidget):
"""Simple autocomplete search input widget
"""
class AutocompleteSearchWidget(AutocompleteSelectionWidget):
"""Search widget with autocompletion.
"""
implements(IAutocompleteSearchWidget)
klass = u'autocomplete-search-widget'
input_template = ViewPageTemplateFile('thesaurus_search_input.pt')
display_template = ViewPageTemplateFile('thesaurus_search_input.pt')
@adapter(IAutocompleteSearchWidget, IFormLayer)
@implementer(IFieldWidget)
def AutocompleteSearchFieldWidget(field, request):
return FieldWidget(field, AutocompleteSearchWidget(request))
class IThesaurusForm(Interface):
keyword_search = schema.Choice(title=u"Search for keyword",
keyword_search = schema.Choice(
title=_(u"Quick Search"),
description=_(u"Search for a keyword in this Thesaurus"),
source=InternalThesaurusSource(), required=False)
class DmsThesaurusForm(form.Form):
implements(IThesaurusForm)
fields = field.Fields(IThesaurusForm)
#fields['keyword_search'].widgetFactory = AutocompleteFieldWidget
fields['keyword_search'].widgetFactory = AutocompleteSearchFieldWidget
ignoreContext = True
template = ViewPageTemplateFile('thesaurus_form.pt')
@ -32,10 +68,13 @@ class DmsThesaurusForm(form.Form):
data, errors = self.extractData()
print data, errors
#from .searchform import SearchForm
class DmsThesaurusView(DefaultView):
def renderForm(self):
form = DmsThesaurusForm(self.context, self.request)
#form = SearchForm(self.context, self.request)
form.update()
return form.render()

View File

@ -31,20 +31,16 @@ class IDmsThesaurus(model.Schema):
""" """
entry_points = EntryPoints(
title=_(u"Entry Points"),
description=_(u"First level of navigation for this Thesaurus"),
required=False)
title=_(u"Entry Points"),
description=_(u"First level of navigation for this Thesaurus"),
required=False)
class DmsThesaurus(Container):
""" """
implements(IDmsThesaurus)
class DmsThesaurusSchemaPolicy(DexteritySchemaPolicy):
""" """
def bases(self, schemaName, tree):
return (IDmsThesaurus, )

View File

@ -53,3 +53,11 @@ msgstr ""
msgid "nothing"
msgstr ""
#: ./browser/thesaurusview.py
msgid "Quick Search"
msgstr ""
#: ./browser/thesaurusview.py
msgid "Search for a keyword in this Thesaurus"
msgstr ""

View File

@ -47,3 +47,11 @@ msgstr ""
msgid "nothing"
msgstr ""
#: ./browser/thesaurusview.py
msgid "Quick Search"
msgstr ""
#: ./browser/thesaurusview.py
msgid "Search for a keyword in this Thesaurus"
msgstr ""

View File

@ -51,3 +51,11 @@ msgstr "NA (Note d'application)"
msgid "nothing"
msgstr "néant"
#: ./browser/thesaurusview.py
msgid "Quick Search"
msgstr "Recherche rapide"
#: ./browser/thesaurusview.py
msgid "Search for a keyword in this Thesaurus"
msgstr "Recherche rapide d'un terme du thésaurus"