Mercurial > p > roundup > code
diff roundup/cgi/templating.py @ 3710:2862cb0d9be4
default attributes for input fields:
- type=text (useful for CSS)
- id (useful for scriping and html labels)
| author | Tobias Herp <tobias-herp@users.sourceforge.net> |
|---|---|
| date | Mon, 18 Sep 2006 01:29:33 +0000 |
| parents | 06d7816976bc |
| children | a2d22d0de0bc |
line wrap: on
line diff
--- a/roundup/cgi/templating.py Mon Sep 18 01:20:43 2006 +0000 +++ b/roundup/cgi/templating.py Mon Sep 18 01:29:33 2006 +0000 @@ -393,12 +393,28 @@ l.append(entry) return l +def _set_input_default_args(dic): + # 'text' is the default value anyway -- + # but for CSS usage it should be present + dic.setdefault('type', 'text') + # useful e.g for HTML LABELs: + if not dic.has_key('id'): + try: + if dic['text'] in ('radio', 'checkbox'): + dic['id'] = '%(name)s-%(value)s' % dic + else: + dic['id'] = dic['name'] + except KeyError: + pass + def input_html4(**attrs): """Generate an 'input' (html4) element with given attributes""" + _set_input_default_args(attrs) return '<input %s>'%' '.join(['%s="%s"'%item for item in attrs.items()]) def input_xhtml(**attrs): """Generate an 'input' (xhtml) element with given attributes""" + _set_input_default_args(attrs) return '<input %s/>'%' '.join(['%s="%s"'%item for item in attrs.items()]) class HTMLInputMixin: @@ -1336,9 +1352,11 @@ else: value = cgi.escape(str(self._value)) - value = '"'.join(value.split('"')) - return '<textarea name="%s" rows="%s" cols="%s">%s</textarea>'%( - self._formname, rows, cols, value) + value = '"'.join(value.split('"')) + name = self._formname + return ('<textarea name="%(name)s" id="%(name)s"' + ' rows="%(rows)s" cols="%(cols)s">' + '%(value)s</textarea>') % locals() def email(self, escape=1): ''' Render the value of the property as an obscured email address @@ -1373,7 +1391,7 @@ return '' return self._('*encrypted*') - def field(self, size = 30): + def field(self, size=30): ''' Render a form edit field for the property. If not editable, just display the value via plain(). @@ -1383,7 +1401,7 @@ return self.input(type="password", name=self._formname, size=size) - def confirm(self, size = 30): + def confirm(self, size=30): ''' Render a second form edit field for the property, used for confirmation that the user typed the password correctly. Generates a field with name "@confirm@name". @@ -1394,7 +1412,9 @@ return '' return self.input(type="password", - name="@confirm@%s"%self._formname, size=size) + name="@confirm@%s"%self._formname, + id="%s-confirm"%self._formname, + size=size) class NumberHTMLProperty(HTMLProperty): def plain(self): @@ -1408,7 +1428,7 @@ return str(self._value) - def field(self, size = 30): + def field(self, size=30): ''' Render a form edit field for the property. If not editable, just display the value via plain(). @@ -1638,7 +1658,7 @@ return DateHTMLProperty(self._client, self._classname, self._nodeid, self._prop, self._formname, self._value, offset=offset) - def popcal(self, width=300, height=200, label= "(cal)", + def popcal(self, width=300, height=200, label="(cal)", form="itemSynopsis"): """Generate a link to a calendar pop-up window. @@ -1679,7 +1699,7 @@ return self._value.pretty() - def field(self, size = 30): + def field(self, size=30): ''' Render a form edit field for the property If not editable, just display the value via plain(). @@ -1760,8 +1780,9 @@ value = self._value value = cgi.escape(str(value)) value = '"'.join(value.split('"')) - return '<input name="%s" value="%s" size="%s">'%(self._formname, - value, size) + return self.input(name=self._formname, + value=value, + size=size) def menu(self, size=None, height=None, showid=0, additional=[], value=None, sort_on=None, **conditions):
