equal
deleted
inserted
replaced
11 from warnings import warn |
11 from warnings import warn |
12 |
12 |
13 from cubicweb.common import tags, uilib |
13 from cubicweb.common import tags, uilib |
14 from cubicweb.web import stdmsgs, INTERNAL_FIELD_VALUE |
14 from cubicweb.web import stdmsgs, INTERNAL_FIELD_VALUE |
15 |
15 |
|
16 from logilab.mtconverter import xml_escape |
16 |
17 |
17 class FieldWidget(object): |
18 class FieldWidget(object): |
18 """abstract widget class""" |
19 """abstract widget class""" |
19 # javascript / css files required by the widget |
20 # javascript / css files required by the widget |
20 needs_js = () |
21 needs_js = () |
452 type = 'button' |
453 type = 'button' |
453 def __init__(self, label=stdmsgs.BUTTON_OK, attrs=None, |
454 def __init__(self, label=stdmsgs.BUTTON_OK, attrs=None, |
454 setdomid=None, settabindex=None, |
455 setdomid=None, settabindex=None, |
455 name='', value='', onclick=None, cwaction=None): |
456 name='', value='', onclick=None, cwaction=None): |
456 super(Button, self).__init__(attrs, setdomid, settabindex) |
457 super(Button, self).__init__(attrs, setdomid, settabindex) |
457 self.label = label |
458 if isinstance(label, tuple): |
|
459 self.label = label[0] |
|
460 self.icon = label[1] |
|
461 else: |
|
462 self.label = label |
|
463 self.icon = None |
458 self.name = name |
464 self.name = name |
459 self.value = '' |
465 self.value = '' |
460 self.onclick = onclick |
466 self.onclick = onclick |
461 self.cwaction = cwaction |
467 self.cwaction = cwaction |
462 self.attrs.setdefault('klass', 'validateButton') |
468 self.attrs.setdefault('klass', 'validateButton') |
474 attrs['name'] = name |
480 attrs['name'] = name |
475 if self.setdomid: |
481 if self.setdomid: |
476 attrs['id'] = self.name |
482 attrs['id'] = self.name |
477 if self.settabindex and not 'tabindex' in attrs: |
483 if self.settabindex and not 'tabindex' in attrs: |
478 attrs['tabindex'] = form.req.next_tabindex() |
484 attrs['tabindex'] = form.req.next_tabindex() |
479 return tags.input(value=label, type=self.type, **attrs) |
485 if self.icon: |
|
486 img = tags.img(src=form.req.external_resource(self.icon), alt=self.icon) |
|
487 else: |
|
488 img = u'' |
|
489 return tags.button(img + xml_escape(label), escapecontent=False, |
|
490 value=label, type=self.type, **attrs) |
480 |
491 |
481 |
492 |
482 class SubmitButton(Button): |
493 class SubmitButton(Button): |
483 """<input type='submit'>, main button to submit a form""" |
494 """<input type='submit'>, main button to submit a form""" |
484 type = 'submit' |
495 type = 'submit' |