equal
deleted
inserted
replaced
256 |
256 |
257 class FieldWidget(object): |
257 class FieldWidget(object): |
258 needs_js = () |
258 needs_js = () |
259 needs_css = () |
259 needs_css = () |
260 setdomid = True |
260 setdomid = True |
261 |
261 settabindex = True |
262 def __init__(self, attrs=None, setdomid=None): |
262 |
|
263 def __init__(self, attrs=None, setdomid=None, settabindex=None): |
263 self.attrs = attrs or {} |
264 self.attrs = attrs or {} |
264 if setdomid is not None: |
265 if setdomid is not None: |
265 # override class's default value |
266 # override class's default value |
266 self.setdomid = setdomid |
267 self.setdomid = setdomid |
|
268 if settabindex is not None: |
|
269 # override class's default value |
|
270 self.settabindex = settabindex |
267 |
271 |
268 def add_media(self, form): |
272 def add_media(self, form): |
269 """adds media (CSS & JS) required by this widget""" |
273 """adds media (CSS & JS) required by this widget""" |
270 req = form.req |
274 req = form.req |
271 if self.needs_js: |
275 if self.needs_js: |
282 if not isinstance(values, (tuple, list)): |
286 if not isinstance(values, (tuple, list)): |
283 values = (values,) |
287 values = (values,) |
284 attrs = dict(self.attrs) |
288 attrs = dict(self.attrs) |
285 if self.setdomid: |
289 if self.setdomid: |
286 attrs['id'] = form.context[field]['id'] |
290 attrs['id'] = form.context[field]['id'] |
|
291 if self.settabindex: |
|
292 attrs['tabindex'] = form.req.next_tabindex() |
287 return name, values, attrs |
293 return name, values, attrs |
288 |
294 |
289 class Input(FieldWidget): |
295 class Input(FieldWidget): |
290 type = None |
296 type = None |
291 |
297 |
322 return name, ('',), attrs |
328 return name, ('',), attrs |
323 |
329 |
324 class HiddenInput(Input): |
330 class HiddenInput(Input): |
325 type = 'hidden' |
331 type = 'hidden' |
326 setdomid = False # by default, don't set id attribute on hidden input |
332 setdomid = False # by default, don't set id attribute on hidden input |
|
333 settabindex = False |
327 |
334 |
328 class ButtonInput(Input): |
335 class ButtonInput(Input): |
329 type = 'button' |
336 type = 'button' |
330 |
337 |
331 class TextArea(FieldWidget): |
338 class TextArea(FieldWidget): |