diff --git a/apps/common/widgets.py b/apps/common/widgets.py index 9ad951c52e..dcbdd69149 100644 --- a/apps/common/widgets.py +++ b/apps/common/widgets.py @@ -1,4 +1,5 @@ import os +from itertools import chain from django.utils.translation import ugettext_lazy as _ from django.utils.safestring import mark_safe @@ -97,3 +98,33 @@ class EmailInput(forms.widgets.Input): autocapitalize='off', spellcheck='false')) return super(EmailInput, self).render(name, value, attrs=attrs) + + +class ScrollableCheckboxSelectMultiple(forms.widgets.CheckboxSelectMultiple): + def render(self, name, value, attrs=None, choices=()): + if value is None: value = [] + has_id = attrs and 'id' in attrs + final_attrs = self.build_attrs(attrs, name=name) + output = [u'') + #return mark_safe(u'\n'.join(output)) + result = u'\n'.join(output) + + #result = super(ScrollableCheckboxSelectMultiple, self).render(name, value, attrs=None, choices=()) + return mark_safe(u'
%s
' % result) diff --git a/apps/metadata/forms.py b/apps/metadata/forms.py index 4b663392d5..ce921ee47c 100644 --- a/apps/metadata/forms.py +++ b/apps/metadata/forms.py @@ -2,6 +2,8 @@ from django import forms from django.utils.translation import ugettext_lazy as _ from django.forms.formsets import formset_factory +from common.widgets import ScrollableCheckboxSelectMultiple + from metadata.conf.settings import AVAILABLE_MODELS from metadata.conf.settings import AVAILABLE_FUNCTIONS from metadata.models import MetadataSet, MetadataType, \ @@ -83,14 +85,16 @@ class MetadataSelectionForm(forms.Form): queryset=MetadataSet.objects.all(), label=_(u'Metadata sets'), required=False, - widget=forms.widgets.SelectMultiple(attrs={'size': 10, 'class': 'choice_form'}) + #widget=forms.widgets.SelectMultiple(attrs={'size': 10, 'class': 'choice_form'}) + widget=ScrollableCheckboxSelectMultiple(attrs={'size': 10, 'class': 'choice_form'}) ) metadata_types = forms.ModelMultipleChoiceField( queryset=MetadataType.objects.all(), label=_(u'Metadata'), required=False, - widget=forms.widgets.SelectMultiple(attrs={'size': 10, 'class': 'choice_form'}) + #widget=forms.widgets.SelectMultiple(attrs={'size': 10, 'class': 'choice_form'}) + widget=ScrollableCheckboxSelectMultiple(attrs={'size': 10, 'class': 'choice_form'}) ) MetadataRemoveFormSet = formset_factory(MetadataRemoveForm, extra=0)