diff options
Diffstat (limited to 'chimere/widgets.py')
-rw-r--r-- | chimere/widgets.py | 25 |
1 files changed, 16 insertions, 9 deletions
diff --git a/chimere/widgets.py b/chimere/widgets.py index 8464d47..0b00d9d 100644 --- a/chimere/widgets.py +++ b/chimere/widgets.py @@ -146,23 +146,28 @@ JQuery UI button select widget. class ButtonRadioInput(RadioSelect): - def tag(self, name, value): + def tag(self, name, value, idx=''): selected = str(value) == str(self.choices[0][0]) - return '<input type="radio" name="{}" value="{}"{}>'.format( - name, self.choices[0][0], + if idx: + idx = ' id="{}"'.format(idx) + return '<input type="radio" name="{}" value="{}"{}{}>'.format( + name, self.choices[0][0], idx, ' selected="selected"' if selected else '') def render(self, name=None, value=None, attrs=None, choices=(), index=0): attrs = attrs or self.attrs + idx = '' if 'id' in self.attrs: - label_for = ' for="%s_%s"' % (self.attrs['id'], index) + idx = '{}_{}'.format(self.attrs['id'], index) + label_for = ' for="{}"'.format(idx) + if str(value) == str(self.choices[0][0]): + label_for += " aria-pressed='true'" else: label_for = '' choice_label = conditional_escape(str(self.choices[0][1])) - return mark_safe('%s <label%s>%s</label>' % (self.tag(name, value), - label_for, - choice_label)) + return mark_safe('%s <label%s>%s</label>' % ( + self.tag(name, value, idx), label_for, choice_label)) class ButtonRadioFieldRenderer(RadioFieldRenderer): @@ -184,9 +189,11 @@ class ButtonSelectWidget(forms.RadioSelect): def render(self, *args, **kwargs): rendered = "<div id='%s'>\n" % kwargs['attrs']['id'] rendered += super(ButtonSelectWidget, self).render(*args, **kwargs) - rendered += "\n<script type='text/javascript'>\n"\ + """rendered += "\n<script type='text/javascript'>\n"\ " $('#%s').buttonset();\n"\ - "</script>\n</div>\n" % kwargs['attrs']['id'] + "</script>" % kwargs['attrs']['id'] + """ + rendered += "\n</div>\n" return mark_safe(rendered) |