Test coverage for vnccollab.theme.form.plone_formwidget_autocomplete
1: from AccessControl import getSecurityManager
1: from AccessControl import ClassSecurityInfo
1: from Acquisition import Explicit
1: from Acquisition.interfaces import IAcquirer
1: from App.class_init import InitializeClass
1: from Products.Five.browser import BrowserView
1: from Products.Five.browser.pagetemplatefile import ViewPageTemplateFile
1: import z3c.form.interfaces
1: import z3c.form.widget
1: import z3c.form.util
1: from z3c.formwidget.query.widget import QuerySourceRadioWidget
1: from z3c.formwidget.query.widget import QuerySourceCheckboxWidget
1: from zope.interface import implementsOnly, implementer
1: from plone.formwidget.autocomplete.interfaces import IAutocompleteWidget
1: from plone.formwidget.autocomplete import widget as base
# vipod: customize JavaScript template to work with jQuery UI autocomplete
js_template = """\
(function($) {
$().ready(function() {
$('#%(id)s-input-fields').data('klass','%(klass)s').data('title','%(title)s').data('input_type','%(input_type)s');
$('#%(id)s-buttons-search').remove();
$('#%(id)s-widgets-query').autocomplete({
source: function(request, response){
var suggest = [];
$.ajax({
'url': '%(url)s',
'type': 'get',
'data': {'q': request.term},
'dataType': 'text',
'async': false,
'success': function(data, statux, xhr) {
var items = data.split("\\n");
for (var i=0,o;o=items[i];i++) {
var parts = o.split('|');
suggest.push({'label':parts[1],'value':parts[0]});
}
},
});
return response(suggest);
},
minLength: %(minChars)d,
select: %(js_callback)s
});
%(js_extra)s
});
})(jQuery);
1: """
2: class AutocompleteSelectionWidget(base.AutocompleteBase,
1: QuerySourceRadioWidget):
"""Autocomplete widget that allows single selection.
1: """
1: klass = u'autocomplete-selection-widget'
1: input_type = 'radio'
1: js_template = js_template
2: class AutocompleteMultiSelectionWidget(base.AutocompleteBase,
1: QuerySourceCheckboxWidget):
"""Autocomplete widget that allows multiple selection
1: """
1: klass = u'autocomplete-multiselection-widget'
1: input_type = 'checkbox'
1: js_template = js_template
1: @implementer(z3c.form.interfaces.IFieldWidget)
def AutocompleteFieldWidget(field, request):
>>>>>> return z3c.form.widget.FieldWidget(field,
>>>>>> AutocompleteSelectionWidget(request))
1: @implementer(z3c.form.interfaces.IFieldWidget)
def AutocompleteMultiFieldWidget(field, request):
>>>>>> return z3c.form.widget.FieldWidget(field,
>>>>>> AutocompleteMultiSelectionWidget(request))