-# This file is part of Wolnelektury, licensed under GNU Affero GPLv3 or later.
-# Copyright © Fundacja Nowoczesna Polska. See NOTICE for more information.
+# This file is part of Wolne Lektury, licensed under GNU Affero GPLv3 or later.
+# Copyright © Fundacja Wolne Lektury. See NOTICE for more information.
#
-from django import forms
-from django.forms.utils import flatatt
from django.forms.widgets import RadioSelect
-from django.utils.encoding import smart_str
-from django.utils.safestring import mark_safe
-from json import dumps
-
-
-class JQueryAutoCompleteWidget(forms.TextInput):
- def __init__(self, options, *args, **kwargs):
- self.options = dumps(options)
- super(JQueryAutoCompleteWidget, self).__init__(*args, **kwargs)
-
- def render_js(self, field_id, options):
- return '$(\'#%s\').autocomplete(%s).result(autocomplete_result_handler);' % (field_id, options)
-
- def render(self, name, value=None, attrs=None, renderer=None):
- final_attrs = self.build_attrs(self.attrs, attrs)
- final_attrs["name"] = name
- if value:
- final_attrs['value'] = smart_str(value)
-
- if 'id' not in self.attrs:
- final_attrs['id'] = 'id_%s' % name
-
- html = '''<input type="text" %(attrs)s/>
- <script type="text/javascript">//<!--
- %(js)s//--></script>
- ''' % {
- 'attrs': flatatt(final_attrs),
- 'js': self.render_js(final_attrs['id'], self.options),
- }
-
- return mark_safe(html)
-
-
-class JQueryAutoCompleteSearchWidget(JQueryAutoCompleteWidget):
- def __init__(self, *args, **kwargs):
- super(JQueryAutoCompleteSearchWidget, self).__init__(*args, **kwargs)
-
- def render_js(self, field_id, options):
- return ""
-
-
-class JQueryAutoCompleteField(forms.CharField):
- def __init__(self, source, options=None, *args, **kwargs):
- if options is None:
- options = {}
- if 'widget' not in kwargs:
- options['source'] = source
- kwargs['widget'] = JQueryAutoCompleteWidget(options)
-
- super(JQueryAutoCompleteField, self).__init__(*args, **kwargs)
-
-
-class JQueryAutoCompleteSearchField(forms.CharField):
- def __init__(self, options=None, *args, **kwargs):
- if options is None:
- options = {}
- if 'widget' not in kwargs:
- kwargs['widget'] = JQueryAutoCompleteSearchWidget(options)
-
- super(JQueryAutoCompleteSearchField, self).__init__(*args, **kwargs)
-
class InlineRadioWidget(RadioSelect):