web/formwidgets.py
branchtls-sprint
changeset 1304 8975c8e520a9
parent 1295 3012c655a94d
child 1311 4cc6e2723dc7
--- a/web/formwidgets.py	Wed Apr 08 20:30:58 2009 +0200
+++ b/web/formwidgets.py	Wed Apr 08 20:34:26 2009 +0200
@@ -9,6 +9,7 @@
 from datetime import date
 
 from cubicweb.common import tags
+from cubicweb.web import stdmsgs
 
 class FieldWidget(object):
     needs_js = ()
@@ -228,3 +229,56 @@
         self.add_media(form)
         attrs = self._render_attrs(form, field)[-1]
         return tags.div(**attrs)
+
+
+class Button(Input):
+    type = 'button'
+    def __init__(self, label=stdmsgs.BUTTON_OK, attrs=None,
+                 setdomid=None, settabindex=None,
+                 name='', value='', onclick=None, cwaction=None):
+        super(Button, self).__init__(attrs, setdomid, settabindex)
+        self.label = label
+        self.name = name
+        self.value = ''
+        self.onclick = onclick
+        self.cwaction = cwaction
+        self.attrs.setdefault('klass', 'validateButton')
+                
+    def render(self, form, field=None):
+        label = form.req._(self.label)
+        attrs = self.attrs.copy()
+        if self.cwaction:
+            assert self.onclick is None
+            attrs['onclick'] = "postForm('__action_%s', \'%s\', \'%s\')" % (
+                self.cwaction, self.label, form.domid)
+        elif self.onclick:
+            attrs['onclick'] = self.onclick
+        if self.name:
+            attrs['name'] = name
+            if self.setdomid:
+                attrs['id'] = self.name
+        if self.settabindex and not 'tabindex' in attrs:
+            attrs['tabindex'] = form.req.next_tabindex()
+        return tags.input(value=label, type=self.type, **attrs)
+
+    
+class SubmitButton(Button):
+    type = 'submit'
+    
+class ResetButton(Button):
+    type = 'reset'
+
+class ImgButton(object):
+    def __init__(self, domid, href, label, imgressource):
+        self.domid = domid
+        self.href = href
+        self.imgressource = imgressource
+        self.label = label
+        
+    def render(self, form, field=None):
+        self.imgsrc = form.req.external_resource(self.imgressource)
+        return '<a id="%(domid)s" href="%(href)s"><img src="%(imgsrc)s" alt="%(label)s"/>%(label)s</a>' % self.__dict__
+
+    
+# XXX EntityLinkComboBoxWidget, AddComboBoxWidget, AutoCompletionWidget,
+#     StaticFileAutoCompletionWidget, RestrictedAutoCompletionWidget...