Index: roundup/cgi/templating.py
===================================================================
RCS file: /cvsroot/roundup/roundup/roundup/cgi/templating.py,v
retrieving revision 1.112
diff -u -r1.112 templating.py
--- roundup/cgi/templating.py 24 Oct 2003 09:32:19 -0000 1.112
+++ roundup/cgi/templating.py 2 Nov 2003 16:44:20 -0000
@@ -1,4 +1,4 @@
-import sys, cgi, urllib, os, re, os.path, time, errno, mimetypes
+import sys, cgi, urllib, os, re, os.path, time, errno, mimetypes, string
from roundup import hyperdb, date, rcsv
from roundup.i18n import _
@@ -22,6 +22,14 @@
from roundup.cgi.TAL.TALInterpreter import TALInterpreter
from roundup.cgi import ZTUtils
+def input_html4(**attrs):
+ """Generate an 'input' (html4) element with given attributes"""
+ return ''%string.join(map(lambda item:'%s="%s"'%item, attrs.items()))
+
+def input_xhtml(**attrs):
+ """Generate an 'input' (xhtml) element with given attributes"""
+ return ''%string.join(map(lambda item:'%s="%s"'%item, attrs.items()))
+
class NoTemplate(Exception):
pass
@@ -293,6 +301,14 @@
self._klass = self._db.getclass(self.classname)
self._props = self._klass.getprops()
+ html_version = 'html4'
+ if hasattr(self._client.instance.config, 'HTML_VERSION'):
+ html_version = self._client.instance.config.HTML_VERSION
+ if html_version == 'xhtml':
+ self.input = input_xhtml
+ else:
+ self.input = input_html4
+
def __repr__(self):
return ''%(id(self), self.classname)
@@ -476,8 +492,8 @@
def submit(self, label="Submit New Entry"):
''' Generate a submit button (and action hidden element)
'''
- return ' \n'\
- ' '%label
+ return ' ' + self.input(type="hidden",name=":action",value="new") + '\n' +\
+ ' ' + self.input(type="submit",name="submit",value=label)
def history(self):
return 'New node - no history'
@@ -554,8 +570,8 @@
def submit(self, label="Submit Changes"):
''' Generate a submit button (and action hidden element)
'''
- return ' \n'\
- ' '%label
+ return ' ' + self.input(type="hidden",name=":action",value="edit") + '\n' +\
+ ' ' + self.input(type="submit",name="submit",value=label)
def journal(self, direction='descending'):
''' Return a list of HTMLJournalEntry instances.
@@ -842,6 +858,15 @@
self._formname = '%s%s@%s'%(classname, nodeid, name)
else:
self._formname = name
+
+ html_version = 'html4'
+ if hasattr(self._client.instance.config, 'HTML_VERSION'):
+ html_version = self._client.instance.config.HTML_VERSION
+ if html_version == 'xhtml':
+ self.input = input_xhtml
+ else:
+ self.input = input_html4
+
def __repr__(self):
return ''%(id(self), self._formname,
self._prop, self._value)
@@ -916,7 +941,7 @@
else:
value = cgi.escape(str(self._value))
value = '"'.join(value.split('"'))
- return ''%(self._formname, value, size)
+ return self.input(name=self._formname,value=value,size=size)
def multiline(self, escape=0, rows=5, cols=40):
''' Render a multiline form edit field for the property
@@ -956,15 +981,14 @@
def field(self, size = 30):
''' Render a form edit field for the property.
'''
- return ''%(self._formname, size)
+ return self.input(type="password",name=self._formname,size=size)
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".
'''
- return ''%(
- self._formname, size)
+ return self.input(type="password",name=":confirm:%s"%self._formname,size=size)
class NumberHTMLProperty(HTMLProperty):
def plain(self):
@@ -980,7 +1004,7 @@
else:
value = cgi.escape(str(self._value))
value = '"'.join(value.split('"'))
- return ''%(self._formname, value, size)
+ return self.input(name=self._formname,value=value,size=size)
def __int__(self):
''' Return an int of me
@@ -1005,14 +1029,16 @@
''' Render a form edit field for the property
'''
checked = self._value and "checked" or ""
- s = 'Yes'%(self._formname,
- checked)
- if checked:
- checked = ""
- else:
- checked = "checked"
- s += 'No'%(self._formname,
- checked)
+ if self._value:
+ s = self.input(type="radio",name=self._formname,value="yes",checked="checked")
+ s += 'Yes'
+ s +=self.input(type="radio",name=self._formname,value="no")
+ s += 'No'
+ else:
+ s = self.input(type="radio",name=self._formname,value="yes")
+ s += 'Yes'
+ s +=self.input(type="radio",name=self._formname,value="no",checked="checked")
+ s += 'No'
return s
class DateHTMLProperty(HTMLProperty):
@@ -1040,7 +1066,7 @@
else:
value = cgi.escape(str(self._value.local(self._db.getUserTimezone())))
value = '"'.join(value.split('"'))
- return ''%(self._formname, value, size)
+ return self.input(name=self._formname,value=value,size=size)
def reldate(self, pretty=1):
''' Render the interval between the date and now.
@@ -1097,7 +1123,7 @@
else:
value = cgi.escape(str(self._value))
value = '"'.join(value.split('"'))
- return ''%(self._formname, value, size)
+ return self.input(name=self._formname,value=value,size=size)
class LinkHTMLProperty(HTMLProperty):
''' Link HTMLProperty
@@ -1153,7 +1179,7 @@
l = ['