1515# BASIS, AND THERE IS NO OBLIGATION WHATSOEVER TO PROVIDE MAINTENANCE,
1616# SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS.
1717#
18- # $Id: htmltemplate.py,v 1.107 2002-07-30 05:27:30 richard Exp $
18+ # $Id: htmltemplate.py,v 1.108 2002-07-31 22:40:50 gmcm Exp $
1919
2020__doc__ = """
2121Template engine.
@@ -832,13 +832,15 @@ def do_filterspec(self, classprop, urlprop):
832832 for k ,v in query .items ():
833833 query [k ] = v [0 ].split (',' )
834834 pagesize = query .get (':pagesize' ,['25' ])[0 ]
835+ search_text = query .get ('search_text' , ['' ])[0 ]
836+ search_text = urllib .unquote (search_text )
835837 for k ,v in query .items ():
836838 if k [0 ] != ':' :
837839 filterspec [k ] = v
838840 ixtmplt = IndexTemplate (self .client , self .templates , classname )
839841 qform = '<form onSubmit="return submit_once()" action="%s%s">\n ' % (
840842 self .classname ,self .nodeid )
841- qform += ixtmplt .filter_form (query . get ( ' search_text' , '' ) ,
843+ qform += ixtmplt .filter_form (search_text ,
842844 query .get (':filter' , []),
843845 query .get (':columns' , []),
844846 query .get (':group' , []),
@@ -931,6 +933,10 @@ def clear(self):
931933
932934 def buildurl (self , filterspec , search_text , filter , columns , sort , group , pagesize ):
933935 d = {'pagesize' :pagesize , 'pagesize' :pagesize , 'classname' :self .classname }
936+ if search_text :
937+ d ['searchtext' ] = 'search_text=%s&' % search_text
938+ else :
939+ d ['searchtext' ] = ''
934940 d ['filter' ] = ',' .join (map (urllib .quote ,filter ))
935941 d ['columns' ] = ',' .join (map (urllib .quote ,columns ))
936942 d ['sort' ] = ',' .join (map (urllib .quote ,sort ))
@@ -940,7 +946,7 @@ def buildurl(self, filterspec, search_text, filter, columns, sort, group, pagesi
940946 vals = ',' .join (map (urllib .quote ,vals ))
941947 tmp .append ('%s=%s' % (col , vals ))
942948 d ['filters' ] = '&' .join (tmp )
943- return '%(classname)s?%(filters)s&:sort=%(sort)s&:filter=%(filter)s&:group=%(group)s&:columns=%(columns)s&:pagesize=%(pagesize)s' % d
949+ return '%(classname)s?%(searchtext)s%( filters)s&:sort=%(sort)s&:filter=%(filter)s&:group=%(group)s&:columns=%(columns)s&:pagesize=%(pagesize)s' % d
944950
945951 col_re = re .compile (r'<property\s+name="([^>]+)">' )
946952 def render (self , filterspec = {}, search_text = '' , filter = [], columns = [],
@@ -989,8 +995,8 @@ def render(self, filterspec={}, search_text='', filter=[], columns=[],
989995 for name in columns :
990996 cname = name .capitalize ()
991997 if show_display_form :
992- sb = self .sortby (name , filterspec , columns , filter , group ,
993- sort , pagesize , startwith )
998+ sb = self .sortby (name , search_text , filterspec , columns , filter ,
999+ group , sort , pagesize )
9941000 anchor = "%s?%s" % (self .classname , sb )
9951001 w ('<td><span class="list-header"><a href="%s">%s</a>'
9961002 '</span></td>\n ' % (anchor , cname ))
@@ -1286,13 +1292,15 @@ def filter_section(self, search_text, filter, columns, group, all_columns,
12861292 w (' </tr>\n ' )
12871293 w ('</table>\n ' )
12881294
1289- def sortby (self , sort_name , filterspec , columns , filter , group , sort ,
1290- pagesize , startwith ):
1295+ def sortby (self , sort_name , search_text , filterspec , columns , filter , group , sort ,
1296+ pagesize ):
12911297 ''' Figure the link for a column heading so we can sort by that
12921298 column
12931299 '''
12941300 l = []
12951301 w = l .append
1302+ if search_text :
1303+ w ('search_text=%s' % search_text )
12961304 for k , v in filterspec .items ():
12971305 k = urllib .quote (k )
12981306 if type (v ) == type ([]):
@@ -1306,7 +1314,7 @@ def sortby(self, sort_name, filterspec, columns, filter, group, sort,
13061314 if group :
13071315 w (':group=%s' % ',' .join (map (urllib .quote , group )))
13081316 w (':pagesize=%s' % pagesize )
1309- w (':startwith=%s' % startwith )
1317+ w (':startwith=0' )
13101318
13111319 # handle the sorting - if we're already sorting by this column,
13121320 # then reverse the sorting, otherwise set the sorting to be this
@@ -1433,6 +1441,9 @@ def render(self, form):
14331441
14341442#
14351443# $Log: not supported by cvs2svn $
1444+ # Revision 1.107 2002/07/30 05:27:30 richard
1445+ # nicer error messages, and a bugfix
1446+ #
14361447# Revision 1.106 2002/07/30 02:41:04 richard
14371448# Removed the confusing, ugly two-column sorting stuff. Column heading clicks
14381449# now only sort on one column. Nice and simple and obvious.
0 commit comments