web/formwidgets.py
branchstable
changeset 3803 414bb8439002
parent 3689 deb13e88e037
child 3890 d7a270f50f54
child 3993 8cf7c767b134
equal deleted inserted replaced
3802:bc441a75f82c 3803:414bb8439002
    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'