Too late. I patched trunk already. ;-) On Wednesday, 4 December 2013 11:13:28 UTC-6, Richard wrote: > > > > Le lundi 2 décembre 2013 15:46:41 UTC-5, Richard a écrit : >> >> Hello, >> >> I set a label True/False flag for checkbox widget like so : >> >> class CheckboxesWidget(OptionsWidget): >> >> @classmethod >> def widget(cls, field, value, **attributes): >> """ >> generates a TABLE tag, including INPUT checkboxes (multiple >> allowed) >> >> see also: :meth:`FormWidget.widget` >> """ >> # was values = re.compile('[\w\-:]+').findall(str(value)) >> if isinstance(value, (list, tuple)): >> values = [str(v) for v in value] >> else: >> values = [str(value)] >> >> attr = cls._attributes(field, {}, **attributes) >> attr['_class'] = attr.get('_class', 'web2py_checkboxeswidget') >> >> label = attr.get('label') >> if not isinstance(label, bool): >> label = True >> elif label is True: >> label = True >> elif label is False: >> label = False >> >> requires = field.requires >> if not isinstance(requires, (list, tuple)): >> requires = [requires] >> if requires and hasattr(requires[0], 'options'): >> options = requires[0].options() >> else: >> raise SyntaxError('widget cannot determine options of %s' >> % field) >> >> options = [(k, v) for k, v in options if k != ''] >> opts = [] >> cols = attributes.get('cols', 1) >> totals = len(options) >> mods = totals % cols >> rows = totals / cols >> if mods: >> rows += 1 >> >> #widget style >> wrappers = dict( >> table=(TABLE, TR, TD), >> ul=(DIV, UL, LI), >> divs=(CAT, DIV, DIV) >> ) >> parent, child, inner = wrappers[attributes.get('style', 'table')] >> >> for r_index in range(rows): >> tds = [] >> for k, v in options[r_index * cols:(r_index + 1) * cols]: >> if k in values: >> r_value = k >> else: >> r_value = [] >> tds.append(inner(INPUT(_type='checkbox', >> _id='%s%s' % (field.name, k), >> _name=field.name, >> requires=attr.get('requires', >> None), >> hideerror=True, _value=k, >> value=r_value), >> LABEL(v, _for='%s%s' % (field.name, k)) >> if label is True else '')) >> opts.append(child(tds)) >> >> if opts: >> opts.append( >> INPUT(requires=attr.get('requires', None), >> _style="display:none;", >> _disabled="disabled", >> _name=field.name, >> hideerror=False)) >> return parent(*opts, **attr) >> >> The purpose of this change is in context where a user need single >> checkbox for each row of a grid where he don't need to display a label >> beside the checkbox, since he only want to know which record is checked and >> need to be updated... >> >> I need that in order to create a special form that allow bunch/batch >> records update, see attach image (sorry I had to hide data of some >> columns)... You can see, that each row has a checkbox that is generated >> like this : >> >> form_fields = [Field('checkbox_%s' % r['table'].id, 'integer', >> requires=IS_EMPTY_OR(IS_IN_SET([r['table'].id])), >> widget=lambda field, value: >> SQLFORM.widgets.checkboxes.widget(field, value, style='divs', label=False)) >> for r in rows] >> >> The form is then create with .factory() after adding the last fields of >> the models that appears in the last line of the html table on the attach >> image... >> >> I can, make the change on Git and send a PR, if this change is kind of >> approved!! >> >> Thanks >> >> Richard >> >>
-- Resources: - http://web2py.com - http://web2py.com/book (Documentation) - http://github.com/web2py/web2py (Source code) - https://code.google.com/p/web2py/issues/list (Report Issues) --- You received this message because you are subscribed to the Google Groups "web2py-users" group. To unsubscribe from this group and stop receiving emails from it, send an email to web2py+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/groups/opt_out.