SVN: r24263 - in trunk: quixote/form2
Neil Schemenauer <nascheme-fVcApmY9cLvQ3/1i3zOLAti2O/[email protected]> Tue, 18 May 2004 15:50:19 -0400
| Newsgroups | gmane.comp.web.quixote.cvs |
|---|---|
| Message-ID | <[email protected]> |
Author: nascheme
Date: 2004-05-18 12:50:04 -0400 (Tue, 18 May 2004)
New Revision: 24263
Modified:
trunk/quixote/form2/form.py
trunk/quixote/form2/widget.py
Log:
Overhaul rendering of form2 widgets. Forget about using <fieldset>,
<legend>, <label> and just use <div> tags.
Modified: trunk/quixote/form2/form.py
===================================================================
--- trunk/quixote/form2/form.py 2004-05-18 15:48:33 UTC (rev 24262)
+++ trunk/quixote/form2/form.py 2004-05-18 16:50:04 UTC (rev 24263)
@@ -278,9 +278,8 @@
return r.getvalue()
def _render_error_notice(self):
- return htmltext('<div class="formerrornotice">'
- '<strong>Warning:</strong>'
- ' there were errors processing your form. '
+ return htmltext('<div class="errornotice">'
+ 'There were errors processing your form. '
'See below for details.'
'</div>')
Modified: trunk/quixote/form2/widget.py
===================================================================
--- trunk/quixote/form2/widget.py 2004-05-18 15:48:33 UTC (rev 24262)
+++ trunk/quixote/form2/widget.py 2004-05-18 16:50:04 UTC (rev 24263)
@@ -143,48 +143,38 @@
else:
self.value = None
- def render_fieldset_start(self, error):
- css_class = self.__class__.__name__
- if 'css_class' in self.attrs:
- css_class += " %s" % self.attrs['css_class']
- if error:
- css_class += ' error'
- return htmltext('\n<div class="%s widget">\n<fieldset>') % css_class
-
- def render_legend(self, title):
- if self.required:
- if title is None:
- title = ''
- title += '\n<span class="required">*</span>'
+ def render_title(self, title):
if title:
- return htmltext('\n<legend>%s</legend>' % title)
+ if self.required:
+ title += htmltext('<span class="required">*</span>')
+ return htmltext('<div class="title">%s</div>') % title
else:
return ''
def render_hint(self, hint):
if hint:
- return htmltext('\n<label class="hint">%s</label>') % hint
+ return htmltext('<div class="hint">%s</div>') % hint
else:
return ''
def render_error(self, error):
if error:
- return htmltext('\n<label class="error">%s</label>') % error
+ return htmltext('<div class="error">%s</div>') % error
else:
return ''
- def render_fieldset_end(self):
- return htmltext('</fieldset></div>')
-
def render(self):
- error = self.get_error()
r = TemplateIO(html=True)
- r += self.render_fieldset_start(error)
- r += self.render_legend(self.get_title())
+ classnames = '%s widget' % self.__class__.__name__
+ r += htmltext('<div class="%s">') % classnames
+ r += self.render_title(self.get_title())
+ r += htmltext('<div class="content">')
r += self.render_content()
r += self.render_hint(self.get_hint())
- r += self.render_error(error)
- r += self.render_fieldset_end()
+ r += self.render_error(self.get_error())
+ r += htmltext('</div>')
+ r += htmltext('</div>')
+ r += htmltext('<br class="%s" />\n') % classnames
return r.getvalue()
def render_content(self):
@@ -611,7 +601,7 @@
if error is not None:
raise TypeError, 'error not allowed on hidden widgets'
- def render_content(self):
+ def render_content(self):
if self.value is None:
value = None
else:
@@ -854,7 +844,19 @@
r += add_element_widget.render()
return r.getvalue()
+ def render(self):
+ r = TemplateIO(html=True)
+ r += self.render_title(self.get_title())
+ add_element_widget = self.get_widget('add_element')
+ for widget in self.get_widgets():
+ if widget is add_element_widget:
+ continue
+ r += widget.render()
+ r += add_element_widget.render()
+ r += self.render_hint(self.get_hint())
+ return r.getvalue()
+
class WidgetDict(CompositeWidget):
"""A variable length dict of widgets. There is only one
title and hint but each element of the list can have its own
@@ -936,9 +938,10 @@
continue
key_widget = self.get_widget(name + 'key')
value_widget = self.get_widget(name + 'value')
- r += htmltext('\n<div class="WidgetDictItem">%s%s</div>') % (
+ r += htmltext('<div class="WidgetDictItem">%s%s</div>') % (
key_widget.render(),
value_widget.render())
+ r += htmltext('<br class="widget" />\n')
r += self.get_widget('add_element').render()
r += self.get_widget('added_elements').render()
return r.getvalue()