diff options
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) |
