diff options
| author | Étienne Loks <etienne.loks@peacefrogs.net> | 2010-11-18 03:24:59 +0100 |
|---|---|---|
| committer | Étienne Loks <etienne.loks@peacefrogs.net> | 2010-11-18 03:24:59 +0100 |
| commit | a4a12087e7965f0a74b2f903afac6c5aec224b8b (patch) | |
| tree | 3f34cb9cf935d1c37fbfe1964d35aefa874b7688 /chimere/main/widgets.py | |
| parent | f32a730b1aef77aa4705c43f120e62192b5db8bb (diff) | |
| download | Chimère-a4a12087e7965f0a74b2f903afac6c5aec224b8b.tar.bz2 Chimère-a4a12087e7965f0a74b2f903afac6c5aec224b8b.zip | |
Integrate bsmSelect widget and jQuery library
Diffstat (limited to 'chimere/main/widgets.py')
| -rw-r--r-- | chimere/main/widgets.py | 36 |
1 files changed, 36 insertions, 0 deletions
diff --git a/chimere/main/widgets.py b/chimere/main/widgets.py index e3977a1..62fac92 100644 --- a/chimere/main/widgets.py +++ b/chimere/main/widgets.py @@ -294,3 +294,39 @@ class AreaField(forms.MultiValueField): if not data_list: return None return data_list + +class MultiSelectWidget(forms.SelectMultiple): + class Media: + css = {'all': ( + settings.MEDIA_URL + 'jquery/bsmSelect/css/jquery.bsmselect.css', + settings.MEDIA_URL + 'jquery/css/jquery.bsmselect.custom.css', + ) + } + js = ( + settings.MEDIA_URL + 'jquery/jquery-1.4.4.min.js', + settings.MEDIA_URL + 'jquery/bsmSelect/js/jquery.bsmselect.js', + settings.MEDIA_URL + 'jquery/bsmSelect/js/jquery.bsmselect.compatibility.js', + ) + + def render(self, name, value, attrs=None): + rendered = super(MultiSelectWidget, self).render(name, value, attrs) + return mark_safe(rendered + u'''<hr class='spacer'/><script type="text/javascript"> +$("#id_%(name)s").bsmSelect({ + removeLabel: '<strong>X</strong>', + containerClass: 'bsmContainer', + listClass: 'bsmList-custom', + listItemClass: 'bsmListItem-custom', + listItemLabelClass: 'bsmListItemLabel-custom', + removeClass: 'bsmListItemRemove-custom' +}); +</script>''' % {'name':name}) + +class SelectMultipleField(models.ManyToManyField): + ''' + Set the widget for the category field + ''' + def formfield(self, **keys): + self.help_text = "" + defaults = {'widget': MultiSelectWidget} + keys.update(defaults) + return super(SelectMultipleField, self).formfield(**keys) |
