X-Git-Url: http://git.ithinksw.org/philo.git/blobdiff_plain/1eb3ae8761d230f6bea53f6a4a0fb9639875fb9a..c0b416804ad34ec33f45451c4bcaa80cf3486d7a:/admin/widgets.py?ds=sidebyside
diff --git a/admin/widgets.py b/admin/widgets.py
index f8799fe..7a47c63 100644
--- a/admin/widgets.py
+++ b/admin/widgets.py
@@ -1,5 +1,6 @@
from django import forms
from django.conf import settings
+from django.contrib.admin.widgets import FilteredSelectMultiple
from django.utils.translation import ugettext as _
from django.utils.safestring import mark_safe
from django.utils.text import truncate_words
@@ -30,4 +31,35 @@ class ModelLookupWidget(forms.TextInput):
output += ' %s' % escape(truncate_words(value_object, 14))
except value_class.DoesNotExist:
pass
- return mark_safe(output)
\ No newline at end of file
+ return mark_safe(output)
+
+
+class TagFilteredSelectMultiple(FilteredSelectMultiple):
+ """
+ A SelectMultiple with a JavaScript filter interface.
+
+ Note that the resulting JavaScript assumes that the jsi18n
+ catalog has been loaded in the page
+ """
+ class Media:
+ js = (settings.ADMIN_MEDIA_PREFIX + "js/core.js",
+ settings.ADMIN_MEDIA_PREFIX + "js/SelectBox.js",
+ settings.ADMIN_MEDIA_PREFIX + "js/SelectFilter2.js")
+
+ if 'staticmedia' in settings.INSTALLED_APPS:
+ import staticmedia
+ js += (staticmedia.url('admin/js/TagCreation.js'),)
+ else:
+ js += (settings.ADMIN_MEDIA_PREFIX + "js/TagCreation.js",)
+
+ def render(self, name, value, attrs=None, choices=()):
+ if attrs is None: attrs = {}
+ attrs['class'] = 'selectfilter'
+ if self.is_stacked: attrs['class'] += 'stacked'
+ output = [super(FilteredSelectMultiple, self).render(name, value, attrs, choices)]
+ output.append(u'\n' % \
+ (name, self.verbose_name.replace('"', '\\"'), int(self.is_stacked), settings.ADMIN_MEDIA_PREFIX, name))
+ return mark_safe(u''.join(output))
\ No newline at end of file