Code

Added the wrap="hard" attribute to the textarea of the note field so the
[roundup.git] / roundup / htmltemplate.py
index fc0baa454079c1a11e94759ef31d127ab02e9597..1a083b056711fdf9193e0fa013c73145487bd7e1 100644 (file)
 # BASIS, AND THERE IS NO OBLIGATION WHATSOEVER TO PROVIDE MAINTENANCE,
 # SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS.
 # 
-# $Id: htmltemplate.py,v 1.33 2001-10-23 01:00:18 richard Exp $
+# $Id: htmltemplate.py,v 1.38 2001-10-31 06:58:51 richard Exp $
 
 import os, re, StringIO, urllib, cgi, errno
 
 import hyperdb, date, password
 
+# This imports the StructureText functionality for the do_stext function
+# get it from http://dev.zope.org/Members/jim/StructuredTextWiki/NGReleases
+try:
+    from StructuredText.StructuredText import HTML as StructuredText
+except ImportError:
+    StructuredText = None
+
 class TemplateFunctions:
     def __init__(self):
         self.form = None
@@ -71,9 +78,18 @@ class TemplateFunctions:
         else:
             s = 'Plain: bad propclass "%s"'%propclass
         if escape:
-            return cgi.escape(value)
+            value = cgi.escape(value)
         return value
 
+    def do_stext(self, property, escape=0):
+        '''Render as structured text using the StructuredText module
+           (see above for details)
+        '''
+        s = self.do_plain(property, escape=escape)
+        if not StructuredText:
+            return s
+        return StructuredText(s,level=1,header=0)
+
     def do_field(self, property, size=None, height=None, showid=0):
         ''' display a property like the plain displayer, but in a text field
             to be edited
@@ -370,8 +386,8 @@ class TemplateFunctions:
             go along with a change. 
         '''
         # TODO: pull the value from the form
-        return '<textarea name="__note" rows=%s cols=%s></textarea>'%(rows,
-            cols)
+        return '<textarea name="__note" wrap="hard" rows=%s cols=%s>'\
+            '</textarea>'%(rows, cols)
 
     # XXX new function
     def do_list(self, property, reverse=0):
@@ -483,22 +499,10 @@ class IndexTemplate(TemplateFunctions):
                 self.classname+'.filter')).read()
             all_filters = self.col_re.findall(filter_template)
         except IOError, error:
-            if error.errno != errno.ENOENT: raise
+            if error.errno not in (errno.ENOENT, errno.ESRCH): raise
             filter_template = None
             all_filters = []
 
-        # display the filter section
-        if (hasattr(self.client, 'FILTER_POSITION') and
-                self.client.FILTER_POSITION in ('top and bottom', 'top')):
-            w('<form>\n')
-            self.filter_section(filter_template, filter, columns, group,
-                all_filters, all_columns, show_display_form, show_customization)
-            w('</form>\n')
-
-        # make sure that the sorting doesn't get lost either
-        if sort:
-            w('<input type="hidden" name=":sort" value="%s">'%','.join(sort))
-
         # XXX deviate from spec here ...
         # load the index section template and figure the default columns from it
         template = open(os.path.join(self.templates,
@@ -516,6 +520,18 @@ class IndexTemplate(TemplateFunctions):
                     l.append(name)
             columns = l
 
+        # display the filter section
+        if (hasattr(self.client, 'FILTER_POSITION') and
+                self.client.FILTER_POSITION in ('top and bottom', 'top')):
+            w('<form action="index">\n')
+            self.filter_section(filter_template, filter, columns, group,
+                all_filters, all_columns, show_display_form, show_customization)
+            w('</form>\n')
+
+        # make sure that the sorting doesn't get lost either
+        if sort:
+            w('<input type="hidden" name=":sort" value="%s">'%','.join(sort))
+
         # now display the index section
         w('<table width=100% border=0 cellspacing=0 cellpadding=2>\n')
         w('<tr class="list-header">\n')
@@ -587,7 +603,7 @@ class IndexTemplate(TemplateFunctions):
         # display the filter section
         if (hasattr(self.client, 'FILTER_POSITION') and
                 self.client.FILTER_POSITION in ('top and bottom', 'bottom')):
-            w('<form>\n')
+            w('<form action="index">\n')
             self.filter_section(filter_template, filter, columns, group,
                 all_filters, all_columns, show_display_form, show_customization)
             w('</form>\n')
@@ -827,6 +843,25 @@ class NewItemTemplate(TemplateFunctions):
 
 #
 # $Log: not supported by cvs2svn $
+# Revision 1.37  2001/10/31 06:24:35  richard
+# Added do_stext to htmltemplate, thanks Brad Clements.
+#
+# Revision 1.36  2001/10/28 22:51:38  richard
+# Fixed ENOENT/WindowsError thing, thanks Juergen Hermann
+#
+# Revision 1.35  2001/10/24 00:04:41  richard
+# Removed the "infinite authentication loop", thanks Roch'e
+#
+# Revision 1.34  2001/10/23 22:56:36  richard
+# Bugfix in filter "widget" placement, thanks Roch'e
+#
+# Revision 1.33  2001/10/23 01:00:18  richard
+# Re-enabled login and registration access after lopping them off via
+# disabling access for anonymous users.
+# Major re-org of the htmltemplate code, cleaning it up significantly. Fixed
+# a couple of bugs while I was there. Probably introduced a couple, but
+# things seem to work OK at the moment.
+#
 # Revision 1.32  2001/10/22 03:25:01  richard
 # Added configuration for:
 #  . anonymous user access and registration (deny/allow)