annotate roundup/htmltemplate.py @ 635:3d61b5d2243e

Added popup help for classes using the classhelp html template function. - add <display call="classhelp('priority', 'id,name,description')"> to an item page, and it generates a link to a popup window which displays the id, name and description for the priority class. The description field won't exist in most installations, but it will be added to the default templates.
author Richard Jones <richard@users.sourceforge.net>
date Thu, 21 Feb 2002 06:57:39 +0000
parents 53549c6a7b33
children 21b3cfa7d99a
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
213
d45384bc6420 Added the copyright/license notice to (nearly) all files...
Richard Jones <richard@users.sourceforge.net>
parents: 171
diff changeset
1 #
d45384bc6420 Added the copyright/license notice to (nearly) all files...
Richard Jones <richard@users.sourceforge.net>
parents: 171
diff changeset
2 # Copyright (c) 2001 Bizar Software Pty Ltd (http://www.bizarsoftware.com.au/)
d45384bc6420 Added the copyright/license notice to (nearly) all files...
Richard Jones <richard@users.sourceforge.net>
parents: 171
diff changeset
3 # This module is free software, and you may redistribute it and/or modify
d45384bc6420 Added the copyright/license notice to (nearly) all files...
Richard Jones <richard@users.sourceforge.net>
parents: 171
diff changeset
4 # under the same terms as Python, so long as this copyright message and
d45384bc6420 Added the copyright/license notice to (nearly) all files...
Richard Jones <richard@users.sourceforge.net>
parents: 171
diff changeset
5 # disclaimer are retained in their original form.
d45384bc6420 Added the copyright/license notice to (nearly) all files...
Richard Jones <richard@users.sourceforge.net>
parents: 171
diff changeset
6 #
214
18134bffab37 stupid typo
Richard Jones <richard@users.sourceforge.net>
parents: 213
diff changeset
7 # IN NO EVENT SHALL BIZAR SOFTWARE PTY LTD BE LIABLE TO ANY PARTY FOR
213
d45384bc6420 Added the copyright/license notice to (nearly) all files...
Richard Jones <richard@users.sourceforge.net>
parents: 171
diff changeset
8 # DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES ARISING
d45384bc6420 Added the copyright/license notice to (nearly) all files...
Richard Jones <richard@users.sourceforge.net>
parents: 171
diff changeset
9 # OUT OF THE USE OF THIS CODE, EVEN IF THE AUTHOR HAS BEEN ADVISED OF THE
d45384bc6420 Added the copyright/license notice to (nearly) all files...
Richard Jones <richard@users.sourceforge.net>
parents: 171
diff changeset
10 # POSSIBILITY OF SUCH DAMAGE.
d45384bc6420 Added the copyright/license notice to (nearly) all files...
Richard Jones <richard@users.sourceforge.net>
parents: 171
diff changeset
11 #
d45384bc6420 Added the copyright/license notice to (nearly) all files...
Richard Jones <richard@users.sourceforge.net>
parents: 171
diff changeset
12 # BIZAR SOFTWARE PTY LTD SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING,
d45384bc6420 Added the copyright/license notice to (nearly) all files...
Richard Jones <richard@users.sourceforge.net>
parents: 171
diff changeset
13 # BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
d45384bc6420 Added the copyright/license notice to (nearly) all files...
Richard Jones <richard@users.sourceforge.net>
parents: 171
diff changeset
14 # FOR A PARTICULAR PURPOSE. THE CODE PROVIDED HEREUNDER IS ON AN "AS IS"
d45384bc6420 Added the copyright/license notice to (nearly) all files...
Richard Jones <richard@users.sourceforge.net>
parents: 171
diff changeset
15 # BASIS, AND THERE IS NO OBLIGATION WHATSOEVER TO PROVIDE MAINTENANCE,
d45384bc6420 Added the copyright/license notice to (nearly) all files...
Richard Jones <richard@users.sourceforge.net>
parents: 171
diff changeset
16 # SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS.
d45384bc6420 Added the copyright/license notice to (nearly) all files...
Richard Jones <richard@users.sourceforge.net>
parents: 171
diff changeset
17 #
635
3d61b5d2243e Added popup help for classes using the classhelp html template function.
Richard Jones <richard@users.sourceforge.net>
parents: 634
diff changeset
18 # $Id: htmltemplate.py,v 1.79 2002-02-21 06:57:38 richard Exp $
406
bdc2ea127ae9 Added module docstrings to all modules.
Jürgen Hermann <jhermann@users.sourceforge.net>
parents: 401
diff changeset
19
bdc2ea127ae9 Added module docstrings to all modules.
Jürgen Hermann <jhermann@users.sourceforge.net>
parents: 401
diff changeset
20 __doc__ = """
bdc2ea127ae9 Added module docstrings to all modules.
Jürgen Hermann <jhermann@users.sourceforge.net>
parents: 401
diff changeset
21 Template engine.
bdc2ea127ae9 Added module docstrings to all modules.
Jürgen Hermann <jhermann@users.sourceforge.net>
parents: 401
diff changeset
22 """
25
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
23
621
f333f6decdc2 [SF#516854] "My Issues" and redisplay
Richard Jones <richard@users.sourceforge.net>
parents: 617
diff changeset
24 import os, re, StringIO, urllib, cgi, errno, types
25
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
25
270
a4241ddd22d7 Added the Password property type.
Richard Jones <richard@users.sourceforge.net>
parents: 250
diff changeset
26 import hyperdb, date, password
488
ab9e236cd524 I18N'ification
Richard Jones <richard@users.sourceforge.net>
parents: 467
diff changeset
27 from i18n import _
25
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
28
340
9311fa91f478 Added do_stext to htmltemplate, thanks Brad Clements.
Richard Jones <richard@users.sourceforge.net>
parents: 332
diff changeset
29 # This imports the StructureText functionality for the do_stext function
9311fa91f478 Added do_stext to htmltemplate, thanks Brad Clements.
Richard Jones <richard@users.sourceforge.net>
parents: 332
diff changeset
30 # get it from http://dev.zope.org/Members/jim/StructuredTextWiki/NGReleases
9311fa91f478 Added do_stext to htmltemplate, thanks Brad Clements.
Richard Jones <richard@users.sourceforge.net>
parents: 332
diff changeset
31 try:
9311fa91f478 Added do_stext to htmltemplate, thanks Brad Clements.
Richard Jones <richard@users.sourceforge.net>
parents: 332
diff changeset
32 from StructuredText.StructuredText import HTML as StructuredText
9311fa91f478 Added do_stext to htmltemplate, thanks Brad Clements.
Richard Jones <richard@users.sourceforge.net>
parents: 332
diff changeset
33 except ImportError:
9311fa91f478 Added do_stext to htmltemplate, thanks Brad Clements.
Richard Jones <richard@users.sourceforge.net>
parents: 332
diff changeset
34 StructuredText = None
9311fa91f478 Added do_stext to htmltemplate, thanks Brad Clements.
Richard Jones <richard@users.sourceforge.net>
parents: 332
diff changeset
35
627
952679be9e2c Added simple editing for classes that don't define a templated interface.
Richard Jones <richard@users.sourceforge.net>
parents: 623
diff changeset
36 class MissingTemplateError(ValueError):
952679be9e2c Added simple editing for classes that don't define a templated interface.
Richard Jones <richard@users.sourceforge.net>
parents: 623
diff changeset
37 pass
952679be9e2c Added simple editing for classes that don't define a templated interface.
Richard Jones <richard@users.sourceforge.net>
parents: 623
diff changeset
38
318
e18dd7227780 Re-enabled login and registration access...
Richard Jones <richard@users.sourceforge.net>
parents: 316
diff changeset
39 class TemplateFunctions:
e18dd7227780 Re-enabled login and registration access...
Richard Jones <richard@users.sourceforge.net>
parents: 316
diff changeset
40 def __init__(self):
e18dd7227780 Re-enabled login and registration access...
Richard Jones <richard@users.sourceforge.net>
parents: 316
diff changeset
41 self.form = None
e18dd7227780 Re-enabled login and registration access...
Richard Jones <richard@users.sourceforge.net>
parents: 316
diff changeset
42 self.nodeid = None
e18dd7227780 Re-enabled login and registration access...
Richard Jones <richard@users.sourceforge.net>
parents: 316
diff changeset
43 self.filterspec = None
e18dd7227780 Re-enabled login and registration access...
Richard Jones <richard@users.sourceforge.net>
parents: 316
diff changeset
44 self.globals = {}
e18dd7227780 Re-enabled login and registration access...
Richard Jones <richard@users.sourceforge.net>
parents: 316
diff changeset
45 for key in TemplateFunctions.__dict__.keys():
e18dd7227780 Re-enabled login and registration access...
Richard Jones <richard@users.sourceforge.net>
parents: 316
diff changeset
46 if key[:3] == 'do_':
e18dd7227780 Re-enabled login and registration access...
Richard Jones <richard@users.sourceforge.net>
parents: 316
diff changeset
47 self.globals[key[3:]] = getattr(self, key)
25
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
48
318
e18dd7227780 Re-enabled login and registration access...
Richard Jones <richard@users.sourceforge.net>
parents: 316
diff changeset
49 def do_plain(self, property, escape=0):
e18dd7227780 Re-enabled login and registration access...
Richard Jones <richard@users.sourceforge.net>
parents: 316
diff changeset
50 ''' display a String property directly;
25
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
51
318
e18dd7227780 Re-enabled login and registration access...
Richard Jones <richard@users.sourceforge.net>
parents: 316
diff changeset
52 display a Date property in a specified time zone with an option to
e18dd7227780 Re-enabled login and registration access...
Richard Jones <richard@users.sourceforge.net>
parents: 316
diff changeset
53 omit the time from the date stamp;
25
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
54
318
e18dd7227780 Re-enabled login and registration access...
Richard Jones <richard@users.sourceforge.net>
parents: 316
diff changeset
55 for a Link or Multilink property, display the key strings of the
e18dd7227780 Re-enabled login and registration access...
Richard Jones <richard@users.sourceforge.net>
parents: 316
diff changeset
56 linked nodes (or the ids if the linked class has no key property)
e18dd7227780 Re-enabled login and registration access...
Richard Jones <richard@users.sourceforge.net>
parents: 316
diff changeset
57 '''
25
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
58 if not self.nodeid and self.form is None:
488
ab9e236cd524 I18N'ification
Richard Jones <richard@users.sourceforge.net>
parents: 467
diff changeset
59 return _('[Field: not called from item]')
25
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
60 propclass = self.properties[property]
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
61 if self.nodeid:
397
d47818b09265 more new property handling
Richard Jones <richard@users.sourceforge.net>
parents: 392
diff changeset
62 # make sure the property is a valid one
d47818b09265 more new property handling
Richard Jones <richard@users.sourceforge.net>
parents: 392
diff changeset
63 # TODO: this tests, but we should handle the exception
d47818b09265 more new property handling
Richard Jones <richard@users.sourceforge.net>
parents: 392
diff changeset
64 prop_test = self.cl.getprops()[property]
d47818b09265 more new property handling
Richard Jones <richard@users.sourceforge.net>
parents: 392
diff changeset
65
d47818b09265 more new property handling
Richard Jones <richard@users.sourceforge.net>
parents: 392
diff changeset
66 # get the value for this property
d47818b09265 more new property handling
Richard Jones <richard@users.sourceforge.net>
parents: 392
diff changeset
67 try:
d47818b09265 more new property handling
Richard Jones <richard@users.sourceforge.net>
parents: 392
diff changeset
68 value = self.cl.get(self.nodeid, property)
d47818b09265 more new property handling
Richard Jones <richard@users.sourceforge.net>
parents: 392
diff changeset
69 except KeyError:
d47818b09265 more new property handling
Richard Jones <richard@users.sourceforge.net>
parents: 392
diff changeset
70 # a KeyError here means that the node doesn't have a value
d47818b09265 more new property handling
Richard Jones <richard@users.sourceforge.net>
parents: 392
diff changeset
71 # for the specified property
d47818b09265 more new property handling
Richard Jones <richard@users.sourceforge.net>
parents: 392
diff changeset
72 if isinstance(propclass, hyperdb.Multilink): value = []
d47818b09265 more new property handling
Richard Jones <richard@users.sourceforge.net>
parents: 392
diff changeset
73 else: value = ''
25
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
74 else:
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
75 # TODO: pull the value from the form
224
ad2c98faec97 using isinstance(blah, Foo) now instead of isFooType
Richard Jones <richard@users.sourceforge.net>
parents: 214
diff changeset
76 if isinstance(propclass, hyperdb.Multilink): value = []
25
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
77 else: value = ''
224
ad2c98faec97 using isinstance(blah, Foo) now instead of isFooType
Richard Jones <richard@users.sourceforge.net>
parents: 214
diff changeset
78 if isinstance(propclass, hyperdb.String):
25
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
79 if value is None: value = ''
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
80 else: value = str(value)
270
a4241ddd22d7 Added the Password property type.
Richard Jones <richard@users.sourceforge.net>
parents: 250
diff changeset
81 elif isinstance(propclass, hyperdb.Password):
a4241ddd22d7 Added the Password property type.
Richard Jones <richard@users.sourceforge.net>
parents: 250
diff changeset
82 if value is None: value = ''
488
ab9e236cd524 I18N'ification
Richard Jones <richard@users.sourceforge.net>
parents: 467
diff changeset
83 else: value = _('*encrypted*')
224
ad2c98faec97 using isinstance(blah, Foo) now instead of isFooType
Richard Jones <richard@users.sourceforge.net>
parents: 214
diff changeset
84 elif isinstance(propclass, hyperdb.Date):
547
e4ef6df2345c display links a html link in history.
Engelbert Gruber <grubert@users.sourceforge.net>
parents: 538
diff changeset
85 # this gives "2002-01-17.06:54:39", maybe replace the "." by a " ".
25
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
86 value = str(value)
224
ad2c98faec97 using isinstance(blah, Foo) now instead of isFooType
Richard Jones <richard@users.sourceforge.net>
parents: 214
diff changeset
87 elif isinstance(propclass, hyperdb.Interval):
25
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
88 value = str(value)
224
ad2c98faec97 using isinstance(blah, Foo) now instead of isFooType
Richard Jones <richard@users.sourceforge.net>
parents: 214
diff changeset
89 elif isinstance(propclass, hyperdb.Link):
25
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
90 linkcl = self.db.classes[propclass.classname]
123
51cce9671db0 Cleanup of the link label generation.
Richard Jones <richard@users.sourceforge.net>
parents: 119
diff changeset
91 k = linkcl.labelprop()
531
32c1dd156605 plain rendering of links in the htmltemplate now generate a hyperlink...
Richard Jones <richard@users.sourceforge.net>
parents: 528
diff changeset
92 if value:
535
78711b29c746 reverted the change that had plain() hyperlinking the link displays
Richard Jones <richard@users.sourceforge.net>
parents: 531
diff changeset
93 value = linkcl.get(value, k)
531
32c1dd156605 plain rendering of links in the htmltemplate now generate a hyperlink...
Richard Jones <richard@users.sourceforge.net>
parents: 528
diff changeset
94 else:
32c1dd156605 plain rendering of links in the htmltemplate now generate a hyperlink...
Richard Jones <richard@users.sourceforge.net>
parents: 528
diff changeset
95 value = _('[unselected]')
224
ad2c98faec97 using isinstance(blah, Foo) now instead of isFooType
Richard Jones <richard@users.sourceforge.net>
parents: 214
diff changeset
96 elif isinstance(propclass, hyperdb.Multilink):
25
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
97 linkcl = self.db.classes[propclass.classname]
123
51cce9671db0 Cleanup of the link label generation.
Richard Jones <richard@users.sourceforge.net>
parents: 119
diff changeset
98 k = linkcl.labelprop()
535
78711b29c746 reverted the change that had plain() hyperlinking the link displays
Richard Jones <richard@users.sourceforge.net>
parents: 531
diff changeset
99 value = ', '.join(value)
25
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
100 else:
401
a930feb07dc4 Added globbing for win32, and sample marking in a 2nd file to test it
Jürgen Hermann <jhermann@users.sourceforge.net>
parents: 398
diff changeset
101 s = _('Plain: bad propclass "%(propclass)s"')%locals()
250
1d428068485c *gak* ... xmp is Old Skool apparently.
Richard Jones <richard@users.sourceforge.net>
parents: 245
diff changeset
102 if escape:
342
0b7d62e414b6 Added the wrap="hard" attribute to the textarea of the note field...
Richard Jones <richard@users.sourceforge.net>
parents: 340
diff changeset
103 value = cgi.escape(value)
25
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
104 return value
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
105
340
9311fa91f478 Added do_stext to htmltemplate, thanks Brad Clements.
Richard Jones <richard@users.sourceforge.net>
parents: 332
diff changeset
106 def do_stext(self, property, escape=0):
9311fa91f478 Added do_stext to htmltemplate, thanks Brad Clements.
Richard Jones <richard@users.sourceforge.net>
parents: 332
diff changeset
107 '''Render as structured text using the StructuredText module
9311fa91f478 Added do_stext to htmltemplate, thanks Brad Clements.
Richard Jones <richard@users.sourceforge.net>
parents: 332
diff changeset
108 (see above for details)
9311fa91f478 Added do_stext to htmltemplate, thanks Brad Clements.
Richard Jones <richard@users.sourceforge.net>
parents: 332
diff changeset
109 '''
9311fa91f478 Added do_stext to htmltemplate, thanks Brad Clements.
Richard Jones <richard@users.sourceforge.net>
parents: 332
diff changeset
110 s = self.do_plain(property, escape=escape)
9311fa91f478 Added do_stext to htmltemplate, thanks Brad Clements.
Richard Jones <richard@users.sourceforge.net>
parents: 332
diff changeset
111 if not StructuredText:
9311fa91f478 Added do_stext to htmltemplate, thanks Brad Clements.
Richard Jones <richard@users.sourceforge.net>
parents: 332
diff changeset
112 return s
9311fa91f478 Added do_stext to htmltemplate, thanks Brad Clements.
Richard Jones <richard@users.sourceforge.net>
parents: 332
diff changeset
113 return StructuredText(s,level=1,header=0)
9311fa91f478 Added do_stext to htmltemplate, thanks Brad Clements.
Richard Jones <richard@users.sourceforge.net>
parents: 332
diff changeset
114
563
0f58d6a35a8b Wrote more unit tests for htmltemplate...
Richard Jones <richard@users.sourceforge.net>
parents: 558
diff changeset
115 def determine_value(self, property):
0f58d6a35a8b Wrote more unit tests for htmltemplate...
Richard Jones <richard@users.sourceforge.net>
parents: 558
diff changeset
116 '''determine the value of a property using the node, form or
0f58d6a35a8b Wrote more unit tests for htmltemplate...
Richard Jones <richard@users.sourceforge.net>
parents: 558
diff changeset
117 filterspec
0f58d6a35a8b Wrote more unit tests for htmltemplate...
Richard Jones <richard@users.sourceforge.net>
parents: 558
diff changeset
118 '''
0f58d6a35a8b Wrote more unit tests for htmltemplate...
Richard Jones <richard@users.sourceforge.net>
parents: 558
diff changeset
119 propclass = self.properties[property]
0f58d6a35a8b Wrote more unit tests for htmltemplate...
Richard Jones <richard@users.sourceforge.net>
parents: 558
diff changeset
120 if self.nodeid:
0f58d6a35a8b Wrote more unit tests for htmltemplate...
Richard Jones <richard@users.sourceforge.net>
parents: 558
diff changeset
121 value = self.cl.get(self.nodeid, property, None)
0f58d6a35a8b Wrote more unit tests for htmltemplate...
Richard Jones <richard@users.sourceforge.net>
parents: 558
diff changeset
122 if isinstance(propclass, hyperdb.Multilink) and value is None:
0f58d6a35a8b Wrote more unit tests for htmltemplate...
Richard Jones <richard@users.sourceforge.net>
parents: 558
diff changeset
123 return []
0f58d6a35a8b Wrote more unit tests for htmltemplate...
Richard Jones <richard@users.sourceforge.net>
parents: 558
diff changeset
124 return value
0f58d6a35a8b Wrote more unit tests for htmltemplate...
Richard Jones <richard@users.sourceforge.net>
parents: 558
diff changeset
125 elif self.filterspec is not None:
0f58d6a35a8b Wrote more unit tests for htmltemplate...
Richard Jones <richard@users.sourceforge.net>
parents: 558
diff changeset
126 if isinstance(propclass, hyperdb.Multilink):
0f58d6a35a8b Wrote more unit tests for htmltemplate...
Richard Jones <richard@users.sourceforge.net>
parents: 558
diff changeset
127 return self.filterspec.get(property, [])
0f58d6a35a8b Wrote more unit tests for htmltemplate...
Richard Jones <richard@users.sourceforge.net>
parents: 558
diff changeset
128 else:
0f58d6a35a8b Wrote more unit tests for htmltemplate...
Richard Jones <richard@users.sourceforge.net>
parents: 558
diff changeset
129 return self.filterspec.get(property, '')
0f58d6a35a8b Wrote more unit tests for htmltemplate...
Richard Jones <richard@users.sourceforge.net>
parents: 558
diff changeset
130 # TODO: pull the value from the form
0f58d6a35a8b Wrote more unit tests for htmltemplate...
Richard Jones <richard@users.sourceforge.net>
parents: 558
diff changeset
131 if isinstance(propclass, hyperdb.Multilink):
0f58d6a35a8b Wrote more unit tests for htmltemplate...
Richard Jones <richard@users.sourceforge.net>
parents: 558
diff changeset
132 return []
0f58d6a35a8b Wrote more unit tests for htmltemplate...
Richard Jones <richard@users.sourceforge.net>
parents: 558
diff changeset
133 else:
0f58d6a35a8b Wrote more unit tests for htmltemplate...
Richard Jones <richard@users.sourceforge.net>
parents: 558
diff changeset
134 return ''
0f58d6a35a8b Wrote more unit tests for htmltemplate...
Richard Jones <richard@users.sourceforge.net>
parents: 558
diff changeset
135
0f58d6a35a8b Wrote more unit tests for htmltemplate...
Richard Jones <richard@users.sourceforge.net>
parents: 558
diff changeset
136 def make_sort_function(self, classname):
0f58d6a35a8b Wrote more unit tests for htmltemplate...
Richard Jones <richard@users.sourceforge.net>
parents: 558
diff changeset
137 '''Make a sort function for a given class
0f58d6a35a8b Wrote more unit tests for htmltemplate...
Richard Jones <richard@users.sourceforge.net>
parents: 558
diff changeset
138 '''
0f58d6a35a8b Wrote more unit tests for htmltemplate...
Richard Jones <richard@users.sourceforge.net>
parents: 558
diff changeset
139 linkcl = self.db.classes[classname]
0f58d6a35a8b Wrote more unit tests for htmltemplate...
Richard Jones <richard@users.sourceforge.net>
parents: 558
diff changeset
140 if linkcl.getprops().has_key('order'):
0f58d6a35a8b Wrote more unit tests for htmltemplate...
Richard Jones <richard@users.sourceforge.net>
parents: 558
diff changeset
141 sort_on = 'order'
0f58d6a35a8b Wrote more unit tests for htmltemplate...
Richard Jones <richard@users.sourceforge.net>
parents: 558
diff changeset
142 else:
0f58d6a35a8b Wrote more unit tests for htmltemplate...
Richard Jones <richard@users.sourceforge.net>
parents: 558
diff changeset
143 sort_on = linkcl.labelprop()
0f58d6a35a8b Wrote more unit tests for htmltemplate...
Richard Jones <richard@users.sourceforge.net>
parents: 558
diff changeset
144 def sortfunc(a, b, linkcl=linkcl, sort_on=sort_on):
0f58d6a35a8b Wrote more unit tests for htmltemplate...
Richard Jones <richard@users.sourceforge.net>
parents: 558
diff changeset
145 return cmp(linkcl.get(a, sort_on), linkcl.get(b, sort_on))
0f58d6a35a8b Wrote more unit tests for htmltemplate...
Richard Jones <richard@users.sourceforge.net>
parents: 558
diff changeset
146 return sortfunc
0f58d6a35a8b Wrote more unit tests for htmltemplate...
Richard Jones <richard@users.sourceforge.net>
parents: 558
diff changeset
147
0f58d6a35a8b Wrote more unit tests for htmltemplate...
Richard Jones <richard@users.sourceforge.net>
parents: 558
diff changeset
148 def do_field(self, property, size=None, showid=0):
318
e18dd7227780 Re-enabled login and registration access...
Richard Jones <richard@users.sourceforge.net>
parents: 316
diff changeset
149 ''' display a property like the plain displayer, but in a text field
e18dd7227780 Re-enabled login and registration access...
Richard Jones <richard@users.sourceforge.net>
parents: 316
diff changeset
150 to be edited
563
0f58d6a35a8b Wrote more unit tests for htmltemplate...
Richard Jones <richard@users.sourceforge.net>
parents: 558
diff changeset
151
0f58d6a35a8b Wrote more unit tests for htmltemplate...
Richard Jones <richard@users.sourceforge.net>
parents: 558
diff changeset
152 Note: if you would prefer an option list style display for
0f58d6a35a8b Wrote more unit tests for htmltemplate...
Richard Jones <richard@users.sourceforge.net>
parents: 558
diff changeset
153 link or multilink editing, use menu().
318
e18dd7227780 Re-enabled login and registration access...
Richard Jones <richard@users.sourceforge.net>
parents: 316
diff changeset
154 '''
162
717f12e6ccf2 Features and fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 155
diff changeset
155 if not self.nodeid and self.form is None and self.filterspec is None:
401
a930feb07dc4 Added globbing for win32, and sample marking in a 2nd file to test it
Jürgen Hermann <jhermann@users.sourceforge.net>
parents: 398
diff changeset
156 return _('[Field: not called from item]')
563
0f58d6a35a8b Wrote more unit tests for htmltemplate...
Richard Jones <richard@users.sourceforge.net>
parents: 558
diff changeset
157
0f58d6a35a8b Wrote more unit tests for htmltemplate...
Richard Jones <richard@users.sourceforge.net>
parents: 558
diff changeset
158 if size is None:
0f58d6a35a8b Wrote more unit tests for htmltemplate...
Richard Jones <richard@users.sourceforge.net>
parents: 558
diff changeset
159 size = 30
0f58d6a35a8b Wrote more unit tests for htmltemplate...
Richard Jones <richard@users.sourceforge.net>
parents: 558
diff changeset
160
25
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
161 propclass = self.properties[property]
563
0f58d6a35a8b Wrote more unit tests for htmltemplate...
Richard Jones <richard@users.sourceforge.net>
parents: 558
diff changeset
162
0f58d6a35a8b Wrote more unit tests for htmltemplate...
Richard Jones <richard@users.sourceforge.net>
parents: 558
diff changeset
163 # get the value
0f58d6a35a8b Wrote more unit tests for htmltemplate...
Richard Jones <richard@users.sourceforge.net>
parents: 558
diff changeset
164 value = self.determine_value(property)
0f58d6a35a8b Wrote more unit tests for htmltemplate...
Richard Jones <richard@users.sourceforge.net>
parents: 558
diff changeset
165
0f58d6a35a8b Wrote more unit tests for htmltemplate...
Richard Jones <richard@users.sourceforge.net>
parents: 558
diff changeset
166 # now display
228
1d1848c99abe Fixed some isFooTypes that I missed.
Richard Jones <richard@users.sourceforge.net>
parents: 224
diff changeset
167 if (isinstance(propclass, hyperdb.String) or
1d1848c99abe Fixed some isFooTypes that I missed.
Richard Jones <richard@users.sourceforge.net>
parents: 224
diff changeset
168 isinstance(propclass, hyperdb.Date) or
1d1848c99abe Fixed some isFooTypes that I missed.
Richard Jones <richard@users.sourceforge.net>
parents: 224
diff changeset
169 isinstance(propclass, hyperdb.Interval)):
25
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
170 if value is None:
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
171 value = ''
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
172 else:
525
d046cc4ba7d3 How about that ... date fields have never worked ...
Richard Jones <richard@users.sourceforge.net>
parents: 524
diff changeset
173 value = cgi.escape(str(value))
25
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
174 value = '&quot;'.join(value.split('"'))
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
175 s = '<input name="%s" value="%s" size="%s">'%(property, value, size)
270
a4241ddd22d7 Added the Password property type.
Richard Jones <richard@users.sourceforge.net>
parents: 250
diff changeset
176 elif isinstance(propclass, hyperdb.Password):
a4241ddd22d7 Added the Password property type.
Richard Jones <richard@users.sourceforge.net>
parents: 250
diff changeset
177 s = '<input type="password" name="%s" size="%s">'%(property, size)
224
ad2c98faec97 using isinstance(blah, Foo) now instead of isFooType
Richard Jones <richard@users.sourceforge.net>
parents: 214
diff changeset
178 elif isinstance(propclass, hyperdb.Link):
563
0f58d6a35a8b Wrote more unit tests for htmltemplate...
Richard Jones <richard@users.sourceforge.net>
parents: 558
diff changeset
179 sortfunc = self.make_sort_function(propclass.classname)
0f58d6a35a8b Wrote more unit tests for htmltemplate...
Richard Jones <richard@users.sourceforge.net>
parents: 558
diff changeset
180 linkcl = self.db.classes[propclass.classname]
0f58d6a35a8b Wrote more unit tests for htmltemplate...
Richard Jones <richard@users.sourceforge.net>
parents: 558
diff changeset
181 options = linkcl.list()
0f58d6a35a8b Wrote more unit tests for htmltemplate...
Richard Jones <richard@users.sourceforge.net>
parents: 558
diff changeset
182 options.sort(sortfunc)
0f58d6a35a8b Wrote more unit tests for htmltemplate...
Richard Jones <richard@users.sourceforge.net>
parents: 558
diff changeset
183 # TODO: make this a field display, not a menu one!
25
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
184 l = ['<select name="%s">'%property]
123
51cce9671db0 Cleanup of the link label generation.
Richard Jones <richard@users.sourceforge.net>
parents: 119
diff changeset
185 k = linkcl.labelprop()
312
5a2c43891c20 [SF#473124]: UI inconsistency with Link fields.
Richard Jones <richard@users.sourceforge.net>
parents: 307
diff changeset
186 if value is None:
5a2c43891c20 [SF#473124]: UI inconsistency with Link fields.
Richard Jones <richard@users.sourceforge.net>
parents: 307
diff changeset
187 s = 'selected '
5a2c43891c20 [SF#473124]: UI inconsistency with Link fields.
Richard Jones <richard@users.sourceforge.net>
parents: 307
diff changeset
188 else:
5a2c43891c20 [SF#473124]: UI inconsistency with Link fields.
Richard Jones <richard@users.sourceforge.net>
parents: 307
diff changeset
189 s = ''
488
ab9e236cd524 I18N'ification
Richard Jones <richard@users.sourceforge.net>
parents: 467
diff changeset
190 l.append(_('<option %svalue="-1">- no selection -</option>')%s)
563
0f58d6a35a8b Wrote more unit tests for htmltemplate...
Richard Jones <richard@users.sourceforge.net>
parents: 558
diff changeset
191 for optionid in options:
0f58d6a35a8b Wrote more unit tests for htmltemplate...
Richard Jones <richard@users.sourceforge.net>
parents: 558
diff changeset
192 option = linkcl.get(optionid, k)
0f58d6a35a8b Wrote more unit tests for htmltemplate...
Richard Jones <richard@users.sourceforge.net>
parents: 558
diff changeset
193 s = ''
0f58d6a35a8b Wrote more unit tests for htmltemplate...
Richard Jones <richard@users.sourceforge.net>
parents: 558
diff changeset
194 if optionid == value:
0f58d6a35a8b Wrote more unit tests for htmltemplate...
Richard Jones <richard@users.sourceforge.net>
parents: 558
diff changeset
195 s = 'selected '
0f58d6a35a8b Wrote more unit tests for htmltemplate...
Richard Jones <richard@users.sourceforge.net>
parents: 558
diff changeset
196 if showid:
0f58d6a35a8b Wrote more unit tests for htmltemplate...
Richard Jones <richard@users.sourceforge.net>
parents: 558
diff changeset
197 lab = '%s%s: %s'%(propclass.classname, optionid, option)
0f58d6a35a8b Wrote more unit tests for htmltemplate...
Richard Jones <richard@users.sourceforge.net>
parents: 558
diff changeset
198 else:
0f58d6a35a8b Wrote more unit tests for htmltemplate...
Richard Jones <richard@users.sourceforge.net>
parents: 558
diff changeset
199 lab = option
0f58d6a35a8b Wrote more unit tests for htmltemplate...
Richard Jones <richard@users.sourceforge.net>
parents: 558
diff changeset
200 if size is not None and len(lab) > size:
0f58d6a35a8b Wrote more unit tests for htmltemplate...
Richard Jones <richard@users.sourceforge.net>
parents: 558
diff changeset
201 lab = lab[:size-3] + '...'
0f58d6a35a8b Wrote more unit tests for htmltemplate...
Richard Jones <richard@users.sourceforge.net>
parents: 558
diff changeset
202 lab = cgi.escape(lab)
0f58d6a35a8b Wrote more unit tests for htmltemplate...
Richard Jones <richard@users.sourceforge.net>
parents: 558
diff changeset
203 l.append('<option %svalue="%s">%s</option>'%(s, optionid, lab))
0f58d6a35a8b Wrote more unit tests for htmltemplate...
Richard Jones <richard@users.sourceforge.net>
parents: 558
diff changeset
204 l.append('</select>')
0f58d6a35a8b Wrote more unit tests for htmltemplate...
Richard Jones <richard@users.sourceforge.net>
parents: 558
diff changeset
205 s = '\n'.join(l)
0f58d6a35a8b Wrote more unit tests for htmltemplate...
Richard Jones <richard@users.sourceforge.net>
parents: 558
diff changeset
206 elif isinstance(propclass, hyperdb.Multilink):
0f58d6a35a8b Wrote more unit tests for htmltemplate...
Richard Jones <richard@users.sourceforge.net>
parents: 558
diff changeset
207 sortfunc = self.make_sort_function(propclass.classname)
0f58d6a35a8b Wrote more unit tests for htmltemplate...
Richard Jones <richard@users.sourceforge.net>
parents: 558
diff changeset
208 linkcl = self.db.classes[propclass.classname]
0f58d6a35a8b Wrote more unit tests for htmltemplate...
Richard Jones <richard@users.sourceforge.net>
parents: 558
diff changeset
209 list = linkcl.list()
0f58d6a35a8b Wrote more unit tests for htmltemplate...
Richard Jones <richard@users.sourceforge.net>
parents: 558
diff changeset
210 list.sort(sortfunc)
0f58d6a35a8b Wrote more unit tests for htmltemplate...
Richard Jones <richard@users.sourceforge.net>
parents: 558
diff changeset
211 l = []
0f58d6a35a8b Wrote more unit tests for htmltemplate...
Richard Jones <richard@users.sourceforge.net>
parents: 558
diff changeset
212 # map the id to the label property
0f58d6a35a8b Wrote more unit tests for htmltemplate...
Richard Jones <richard@users.sourceforge.net>
parents: 558
diff changeset
213 if not showid:
0f58d6a35a8b Wrote more unit tests for htmltemplate...
Richard Jones <richard@users.sourceforge.net>
parents: 558
diff changeset
214 k = linkcl.labelprop()
0f58d6a35a8b Wrote more unit tests for htmltemplate...
Richard Jones <richard@users.sourceforge.net>
parents: 558
diff changeset
215 value = [linkcl.get(v, k) for v in value]
0f58d6a35a8b Wrote more unit tests for htmltemplate...
Richard Jones <richard@users.sourceforge.net>
parents: 558
diff changeset
216 value = cgi.escape(','.join(value))
0f58d6a35a8b Wrote more unit tests for htmltemplate...
Richard Jones <richard@users.sourceforge.net>
parents: 558
diff changeset
217 s = '<input name="%s" size="%s" value="%s">'%(property, size, value)
0f58d6a35a8b Wrote more unit tests for htmltemplate...
Richard Jones <richard@users.sourceforge.net>
parents: 558
diff changeset
218 else:
0f58d6a35a8b Wrote more unit tests for htmltemplate...
Richard Jones <richard@users.sourceforge.net>
parents: 558
diff changeset
219 s = _('Plain: bad propclass "%(propclass)s"')%locals()
0f58d6a35a8b Wrote more unit tests for htmltemplate...
Richard Jones <richard@users.sourceforge.net>
parents: 558
diff changeset
220 return s
0f58d6a35a8b Wrote more unit tests for htmltemplate...
Richard Jones <richard@users.sourceforge.net>
parents: 558
diff changeset
221
617
edd210915e64 Alternate email addresses are now available for users.
Richard Jones <richard@users.sourceforge.net>
parents: 614
diff changeset
222 def do_multiline(self, property, rows=5, cols=40):
edd210915e64 Alternate email addresses are now available for users.
Richard Jones <richard@users.sourceforge.net>
parents: 614
diff changeset
223 ''' display a string property in a multiline text edit field
edd210915e64 Alternate email addresses are now available for users.
Richard Jones <richard@users.sourceforge.net>
parents: 614
diff changeset
224 '''
edd210915e64 Alternate email addresses are now available for users.
Richard Jones <richard@users.sourceforge.net>
parents: 614
diff changeset
225 if not self.nodeid and self.form is None and self.filterspec is None:
edd210915e64 Alternate email addresses are now available for users.
Richard Jones <richard@users.sourceforge.net>
parents: 614
diff changeset
226 return _('[Multiline: not called from item]')
edd210915e64 Alternate email addresses are now available for users.
Richard Jones <richard@users.sourceforge.net>
parents: 614
diff changeset
227
edd210915e64 Alternate email addresses are now available for users.
Richard Jones <richard@users.sourceforge.net>
parents: 614
diff changeset
228 propclass = self.properties[property]
edd210915e64 Alternate email addresses are now available for users.
Richard Jones <richard@users.sourceforge.net>
parents: 614
diff changeset
229
edd210915e64 Alternate email addresses are now available for users.
Richard Jones <richard@users.sourceforge.net>
parents: 614
diff changeset
230 # make sure this is a link property
edd210915e64 Alternate email addresses are now available for users.
Richard Jones <richard@users.sourceforge.net>
parents: 614
diff changeset
231 if not isinstance(propclass, hyperdb.String):
edd210915e64 Alternate email addresses are now available for users.
Richard Jones <richard@users.sourceforge.net>
parents: 614
diff changeset
232 return _('[Multiline: not a string]')
edd210915e64 Alternate email addresses are now available for users.
Richard Jones <richard@users.sourceforge.net>
parents: 614
diff changeset
233
edd210915e64 Alternate email addresses are now available for users.
Richard Jones <richard@users.sourceforge.net>
parents: 614
diff changeset
234 # get the value
edd210915e64 Alternate email addresses are now available for users.
Richard Jones <richard@users.sourceforge.net>
parents: 614
diff changeset
235 value = self.determine_value(property)
edd210915e64 Alternate email addresses are now available for users.
Richard Jones <richard@users.sourceforge.net>
parents: 614
diff changeset
236 if value is None:
edd210915e64 Alternate email addresses are now available for users.
Richard Jones <richard@users.sourceforge.net>
parents: 614
diff changeset
237 value = ''
edd210915e64 Alternate email addresses are now available for users.
Richard Jones <richard@users.sourceforge.net>
parents: 614
diff changeset
238
edd210915e64 Alternate email addresses are now available for users.
Richard Jones <richard@users.sourceforge.net>
parents: 614
diff changeset
239 # display
edd210915e64 Alternate email addresses are now available for users.
Richard Jones <richard@users.sourceforge.net>
parents: 614
diff changeset
240 return '<textarea name="%s" rows="%s" cols="%s">%s</textarea>'%(
edd210915e64 Alternate email addresses are now available for users.
Richard Jones <richard@users.sourceforge.net>
parents: 614
diff changeset
241 property, rows, cols, value)
edd210915e64 Alternate email addresses are now available for users.
Richard Jones <richard@users.sourceforge.net>
parents: 614
diff changeset
242
563
0f58d6a35a8b Wrote more unit tests for htmltemplate...
Richard Jones <richard@users.sourceforge.net>
parents: 558
diff changeset
243 def do_menu(self, property, size=None, height=None, showid=0):
0f58d6a35a8b Wrote more unit tests for htmltemplate...
Richard Jones <richard@users.sourceforge.net>
parents: 558
diff changeset
244 ''' for a Link property, display a menu of the available choices
0f58d6a35a8b Wrote more unit tests for htmltemplate...
Richard Jones <richard@users.sourceforge.net>
parents: 558
diff changeset
245 '''
0f58d6a35a8b Wrote more unit tests for htmltemplate...
Richard Jones <richard@users.sourceforge.net>
parents: 558
diff changeset
246 if not self.nodeid and self.form is None and self.filterspec is None:
0f58d6a35a8b Wrote more unit tests for htmltemplate...
Richard Jones <richard@users.sourceforge.net>
parents: 558
diff changeset
247 return _('[Field: not called from item]')
0f58d6a35a8b Wrote more unit tests for htmltemplate...
Richard Jones <richard@users.sourceforge.net>
parents: 558
diff changeset
248
0f58d6a35a8b Wrote more unit tests for htmltemplate...
Richard Jones <richard@users.sourceforge.net>
parents: 558
diff changeset
249 propclass = self.properties[property]
0f58d6a35a8b Wrote more unit tests for htmltemplate...
Richard Jones <richard@users.sourceforge.net>
parents: 558
diff changeset
250
0f58d6a35a8b Wrote more unit tests for htmltemplate...
Richard Jones <richard@users.sourceforge.net>
parents: 558
diff changeset
251 # make sure this is a link property
0f58d6a35a8b Wrote more unit tests for htmltemplate...
Richard Jones <richard@users.sourceforge.net>
parents: 558
diff changeset
252 if not (isinstance(propclass, hyperdb.Link) or
0f58d6a35a8b Wrote more unit tests for htmltemplate...
Richard Jones <richard@users.sourceforge.net>
parents: 558
diff changeset
253 isinstance(propclass, hyperdb.Multilink)):
0f58d6a35a8b Wrote more unit tests for htmltemplate...
Richard Jones <richard@users.sourceforge.net>
parents: 558
diff changeset
254 return _('[Menu: not a link]')
0f58d6a35a8b Wrote more unit tests for htmltemplate...
Richard Jones <richard@users.sourceforge.net>
parents: 558
diff changeset
255
0f58d6a35a8b Wrote more unit tests for htmltemplate...
Richard Jones <richard@users.sourceforge.net>
parents: 558
diff changeset
256 # sort function
0f58d6a35a8b Wrote more unit tests for htmltemplate...
Richard Jones <richard@users.sourceforge.net>
parents: 558
diff changeset
257 sortfunc = self.make_sort_function(propclass.classname)
0f58d6a35a8b Wrote more unit tests for htmltemplate...
Richard Jones <richard@users.sourceforge.net>
parents: 558
diff changeset
258
0f58d6a35a8b Wrote more unit tests for htmltemplate...
Richard Jones <richard@users.sourceforge.net>
parents: 558
diff changeset
259 # get the value
0f58d6a35a8b Wrote more unit tests for htmltemplate...
Richard Jones <richard@users.sourceforge.net>
parents: 558
diff changeset
260 value = self.determine_value(property)
0f58d6a35a8b Wrote more unit tests for htmltemplate...
Richard Jones <richard@users.sourceforge.net>
parents: 558
diff changeset
261
0f58d6a35a8b Wrote more unit tests for htmltemplate...
Richard Jones <richard@users.sourceforge.net>
parents: 558
diff changeset
262 # display
621
f333f6decdc2 [SF#516854] "My Issues" and redisplay
Richard Jones <richard@users.sourceforge.net>
parents: 617
diff changeset
263 if isinstance(propclass, hyperdb.Multilink):
f333f6decdc2 [SF#516854] "My Issues" and redisplay
Richard Jones <richard@users.sourceforge.net>
parents: 617
diff changeset
264 linkcl = self.db.classes[propclass.classname]
f333f6decdc2 [SF#516854] "My Issues" and redisplay
Richard Jones <richard@users.sourceforge.net>
parents: 617
diff changeset
265 options = linkcl.list()
f333f6decdc2 [SF#516854] "My Issues" and redisplay
Richard Jones <richard@users.sourceforge.net>
parents: 617
diff changeset
266 options.sort(sortfunc)
f333f6decdc2 [SF#516854] "My Issues" and redisplay
Richard Jones <richard@users.sourceforge.net>
parents: 617
diff changeset
267 height = height or min(len(options), 7)
f333f6decdc2 [SF#516854] "My Issues" and redisplay
Richard Jones <richard@users.sourceforge.net>
parents: 617
diff changeset
268 l = ['<select multiple name="%s" size="%s">'%(property, height)]
f333f6decdc2 [SF#516854] "My Issues" and redisplay
Richard Jones <richard@users.sourceforge.net>
parents: 617
diff changeset
269 k = linkcl.labelprop()
f333f6decdc2 [SF#516854] "My Issues" and redisplay
Richard Jones <richard@users.sourceforge.net>
parents: 617
diff changeset
270 for optionid in options:
f333f6decdc2 [SF#516854] "My Issues" and redisplay
Richard Jones <richard@users.sourceforge.net>
parents: 617
diff changeset
271 option = linkcl.get(optionid, k)
f333f6decdc2 [SF#516854] "My Issues" and redisplay
Richard Jones <richard@users.sourceforge.net>
parents: 617
diff changeset
272 s = ''
f333f6decdc2 [SF#516854] "My Issues" and redisplay
Richard Jones <richard@users.sourceforge.net>
parents: 617
diff changeset
273 if optionid in value:
f333f6decdc2 [SF#516854] "My Issues" and redisplay
Richard Jones <richard@users.sourceforge.net>
parents: 617
diff changeset
274 s = 'selected '
f333f6decdc2 [SF#516854] "My Issues" and redisplay
Richard Jones <richard@users.sourceforge.net>
parents: 617
diff changeset
275 if showid:
f333f6decdc2 [SF#516854] "My Issues" and redisplay
Richard Jones <richard@users.sourceforge.net>
parents: 617
diff changeset
276 lab = '%s%s: %s'%(propclass.classname, optionid, option)
f333f6decdc2 [SF#516854] "My Issues" and redisplay
Richard Jones <richard@users.sourceforge.net>
parents: 617
diff changeset
277 else:
f333f6decdc2 [SF#516854] "My Issues" and redisplay
Richard Jones <richard@users.sourceforge.net>
parents: 617
diff changeset
278 lab = option
f333f6decdc2 [SF#516854] "My Issues" and redisplay
Richard Jones <richard@users.sourceforge.net>
parents: 617
diff changeset
279 if size is not None and len(lab) > size:
f333f6decdc2 [SF#516854] "My Issues" and redisplay
Richard Jones <richard@users.sourceforge.net>
parents: 617
diff changeset
280 lab = lab[:size-3] + '...'
f333f6decdc2 [SF#516854] "My Issues" and redisplay
Richard Jones <richard@users.sourceforge.net>
parents: 617
diff changeset
281 lab = cgi.escape(lab)
f333f6decdc2 [SF#516854] "My Issues" and redisplay
Richard Jones <richard@users.sourceforge.net>
parents: 617
diff changeset
282 l.append('<option %svalue="%s">%s</option>'%(s, optionid,
f333f6decdc2 [SF#516854] "My Issues" and redisplay
Richard Jones <richard@users.sourceforge.net>
parents: 617
diff changeset
283 lab))
f333f6decdc2 [SF#516854] "My Issues" and redisplay
Richard Jones <richard@users.sourceforge.net>
parents: 617
diff changeset
284 l.append('</select>')
f333f6decdc2 [SF#516854] "My Issues" and redisplay
Richard Jones <richard@users.sourceforge.net>
parents: 617
diff changeset
285 return '\n'.join(l)
563
0f58d6a35a8b Wrote more unit tests for htmltemplate...
Richard Jones <richard@users.sourceforge.net>
parents: 558
diff changeset
286 if isinstance(propclass, hyperdb.Link):
621
f333f6decdc2 [SF#516854] "My Issues" and redisplay
Richard Jones <richard@users.sourceforge.net>
parents: 617
diff changeset
287 # force the value to be a single choice
f333f6decdc2 [SF#516854] "My Issues" and redisplay
Richard Jones <richard@users.sourceforge.net>
parents: 617
diff changeset
288 if type(value) is types.ListType:
f333f6decdc2 [SF#516854] "My Issues" and redisplay
Richard Jones <richard@users.sourceforge.net>
parents: 617
diff changeset
289 value = value[0]
563
0f58d6a35a8b Wrote more unit tests for htmltemplate...
Richard Jones <richard@users.sourceforge.net>
parents: 558
diff changeset
290 linkcl = self.db.classes[propclass.classname]
0f58d6a35a8b Wrote more unit tests for htmltemplate...
Richard Jones <richard@users.sourceforge.net>
parents: 558
diff changeset
291 l = ['<select name="%s">'%property]
0f58d6a35a8b Wrote more unit tests for htmltemplate...
Richard Jones <richard@users.sourceforge.net>
parents: 558
diff changeset
292 k = linkcl.labelprop()
0f58d6a35a8b Wrote more unit tests for htmltemplate...
Richard Jones <richard@users.sourceforge.net>
parents: 558
diff changeset
293 s = ''
0f58d6a35a8b Wrote more unit tests for htmltemplate...
Richard Jones <richard@users.sourceforge.net>
parents: 558
diff changeset
294 if value is None:
0f58d6a35a8b Wrote more unit tests for htmltemplate...
Richard Jones <richard@users.sourceforge.net>
parents: 558
diff changeset
295 s = 'selected '
0f58d6a35a8b Wrote more unit tests for htmltemplate...
Richard Jones <richard@users.sourceforge.net>
parents: 558
diff changeset
296 l.append(_('<option %svalue="-1">- no selection -</option>')%s)
466
a3548136f7bb Two bug fixes and a feature.
Roche Compaan <rochecompaan@users.sourceforge.net>
parents: 411
diff changeset
297 options = linkcl.list()
a3548136f7bb Two bug fixes and a feature.
Roche Compaan <rochecompaan@users.sourceforge.net>
parents: 411
diff changeset
298 options.sort(sortfunc)
a3548136f7bb Two bug fixes and a feature.
Roche Compaan <rochecompaan@users.sourceforge.net>
parents: 411
diff changeset
299 for optionid in options:
25
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
300 option = linkcl.get(optionid, k)
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
301 s = ''
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
302 if optionid == value:
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
303 s = 'selected '
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
304 if showid:
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
305 lab = '%s%s: %s'%(propclass.classname, optionid, option)
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
306 else:
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
307 lab = option
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
308 if size is not None and len(lab) > size:
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
309 lab = lab[:size-3] + '...'
563
0f58d6a35a8b Wrote more unit tests for htmltemplate...
Richard Jones <richard@users.sourceforge.net>
parents: 558
diff changeset
310 lab = cgi.escape(lab)
25
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
311 l.append('<option %svalue="%s">%s</option>'%(s, optionid, lab))
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
312 l.append('</select>')
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
313 return '\n'.join(l)
488
ab9e236cd524 I18N'ification
Richard Jones <richard@users.sourceforge.net>
parents: 467
diff changeset
314 return _('[Menu: not a link]')
25
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
315
318
e18dd7227780 Re-enabled login and registration access...
Richard Jones <richard@users.sourceforge.net>
parents: 316
diff changeset
316 #XXX deviates from spec
e18dd7227780 Re-enabled login and registration access...
Richard Jones <richard@users.sourceforge.net>
parents: 316
diff changeset
317 def do_link(self, property=None, is_download=0):
e18dd7227780 Re-enabled login and registration access...
Richard Jones <richard@users.sourceforge.net>
parents: 316
diff changeset
318 '''For a Link or Multilink property, display the names of the linked
e18dd7227780 Re-enabled login and registration access...
Richard Jones <richard@users.sourceforge.net>
parents: 316
diff changeset
319 nodes, hyperlinked to the item views on those nodes.
e18dd7227780 Re-enabled login and registration access...
Richard Jones <richard@users.sourceforge.net>
parents: 316
diff changeset
320 For other properties, link to this node with the property as the
e18dd7227780 Re-enabled login and registration access...
Richard Jones <richard@users.sourceforge.net>
parents: 316
diff changeset
321 text.
313
489b70c37f32 feature [SF#473127]: Filenames.
Richard Jones <richard@users.sourceforge.net>
parents: 312
diff changeset
322
318
e18dd7227780 Re-enabled login and registration access...
Richard Jones <richard@users.sourceforge.net>
parents: 316
diff changeset
323 If is_download is true, append the property value to the generated
e18dd7227780 Re-enabled login and registration access...
Richard Jones <richard@users.sourceforge.net>
parents: 316
diff changeset
324 URL so that the link may be used as a download link and the
e18dd7227780 Re-enabled login and registration access...
Richard Jones <richard@users.sourceforge.net>
parents: 316
diff changeset
325 downloaded file name is correct.
e18dd7227780 Re-enabled login and registration access...
Richard Jones <richard@users.sourceforge.net>
parents: 316
diff changeset
326 '''
25
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
327 if not self.nodeid and self.form is None:
488
ab9e236cd524 I18N'ification
Richard Jones <richard@users.sourceforge.net>
parents: 467
diff changeset
328 return _('[Link: not called from item]')
568
c7ead967db85 more htmltemplate tests and cleanup
Richard Jones <richard@users.sourceforge.net>
parents: 563
diff changeset
329
c7ead967db85 more htmltemplate tests and cleanup
Richard Jones <richard@users.sourceforge.net>
parents: 563
diff changeset
330 # get the value
c7ead967db85 more htmltemplate tests and cleanup
Richard Jones <richard@users.sourceforge.net>
parents: 563
diff changeset
331 value = self.determine_value(property)
574
d41d94511170 more htmltemplate cleanups and unit tests
Richard Jones <richard@users.sourceforge.net>
parents: 568
diff changeset
332 if not value:
d41d94511170 more htmltemplate cleanups and unit tests
Richard Jones <richard@users.sourceforge.net>
parents: 568
diff changeset
333 return _('[no %(propname)s]')%{'propname':property.capitalize()}
568
c7ead967db85 more htmltemplate tests and cleanup
Richard Jones <richard@users.sourceforge.net>
parents: 563
diff changeset
334
25
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
335 propclass = self.properties[property]
224
ad2c98faec97 using isinstance(blah, Foo) now instead of isFooType
Richard Jones <richard@users.sourceforge.net>
parents: 214
diff changeset
336 if isinstance(propclass, hyperdb.Link):
245
8a0d548c07a1 Fixed bug in the generation of links to Link/Multilink in indexes.
Richard Jones <richard@users.sourceforge.net>
parents: 244
diff changeset
337 linkname = propclass.classname
8a0d548c07a1 Fixed bug in the generation of links to Link/Multilink in indexes.
Richard Jones <richard@users.sourceforge.net>
parents: 244
diff changeset
338 linkcl = self.db.classes[linkname]
123
51cce9671db0 Cleanup of the link label generation.
Richard Jones <richard@users.sourceforge.net>
parents: 119
diff changeset
339 k = linkcl.labelprop()
568
c7ead967db85 more htmltemplate tests and cleanup
Richard Jones <richard@users.sourceforge.net>
parents: 563
diff changeset
340 linkvalue = cgi.escape(linkcl.get(value, k))
313
489b70c37f32 feature [SF#473127]: Filenames.
Richard Jones <richard@users.sourceforge.net>
parents: 312
diff changeset
341 if is_download:
489b70c37f32 feature [SF#473127]: Filenames.
Richard Jones <richard@users.sourceforge.net>
parents: 312
diff changeset
342 return '<a href="%s%s/%s">%s</a>'%(linkname, value,
489b70c37f32 feature [SF#473127]: Filenames.
Richard Jones <richard@users.sourceforge.net>
parents: 312
diff changeset
343 linkvalue, linkvalue)
489b70c37f32 feature [SF#473127]: Filenames.
Richard Jones <richard@users.sourceforge.net>
parents: 312
diff changeset
344 else:
489b70c37f32 feature [SF#473127]: Filenames.
Richard Jones <richard@users.sourceforge.net>
parents: 312
diff changeset
345 return '<a href="%s%s">%s</a>'%(linkname, value, linkvalue)
224
ad2c98faec97 using isinstance(blah, Foo) now instead of isFooType
Richard Jones <richard@users.sourceforge.net>
parents: 214
diff changeset
346 if isinstance(propclass, hyperdb.Multilink):
245
8a0d548c07a1 Fixed bug in the generation of links to Link/Multilink in indexes.
Richard Jones <richard@users.sourceforge.net>
parents: 244
diff changeset
347 linkname = propclass.classname
8a0d548c07a1 Fixed bug in the generation of links to Link/Multilink in indexes.
Richard Jones <richard@users.sourceforge.net>
parents: 244
diff changeset
348 linkcl = self.db.classes[linkname]
123
51cce9671db0 Cleanup of the link label generation.
Richard Jones <richard@users.sourceforge.net>
parents: 119
diff changeset
349 k = linkcl.labelprop()
25
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
350 l = []
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
351 for value in value:
568
c7ead967db85 more htmltemplate tests and cleanup
Richard Jones <richard@users.sourceforge.net>
parents: 563
diff changeset
352 linkvalue = cgi.escape(linkcl.get(value, k))
313
489b70c37f32 feature [SF#473127]: Filenames.
Richard Jones <richard@users.sourceforge.net>
parents: 312
diff changeset
353 if is_download:
489b70c37f32 feature [SF#473127]: Filenames.
Richard Jones <richard@users.sourceforge.net>
parents: 312
diff changeset
354 l.append('<a href="%s%s/%s">%s</a>'%(linkname, value,
489b70c37f32 feature [SF#473127]: Filenames.
Richard Jones <richard@users.sourceforge.net>
parents: 312
diff changeset
355 linkvalue, linkvalue))
489b70c37f32 feature [SF#473127]: Filenames.
Richard Jones <richard@users.sourceforge.net>
parents: 312
diff changeset
356 else:
489b70c37f32 feature [SF#473127]: Filenames.
Richard Jones <richard@users.sourceforge.net>
parents: 312
diff changeset
357 l.append('<a href="%s%s">%s</a>'%(linkname, value,
489b70c37f32 feature [SF#473127]: Filenames.
Richard Jones <richard@users.sourceforge.net>
parents: 312
diff changeset
358 linkvalue))
25
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
359 return ', '.join(l)
313
489b70c37f32 feature [SF#473127]: Filenames.
Richard Jones <richard@users.sourceforge.net>
parents: 312
diff changeset
360 if is_download:
489b70c37f32 feature [SF#473127]: Filenames.
Richard Jones <richard@users.sourceforge.net>
parents: 312
diff changeset
361 return '<a href="%s%s/%s">%s</a>'%(self.classname, self.nodeid,
489b70c37f32 feature [SF#473127]: Filenames.
Richard Jones <richard@users.sourceforge.net>
parents: 312
diff changeset
362 value, value)
489b70c37f32 feature [SF#473127]: Filenames.
Richard Jones <richard@users.sourceforge.net>
parents: 312
diff changeset
363 else:
489b70c37f32 feature [SF#473127]: Filenames.
Richard Jones <richard@users.sourceforge.net>
parents: 312
diff changeset
364 return '<a href="%s%s">%s</a>'%(self.classname, self.nodeid, value)
25
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
365
318
e18dd7227780 Re-enabled login and registration access...
Richard Jones <richard@users.sourceforge.net>
parents: 316
diff changeset
366 def do_count(self, property, **args):
e18dd7227780 Re-enabled login and registration access...
Richard Jones <richard@users.sourceforge.net>
parents: 316
diff changeset
367 ''' for a Multilink property, display a count of the number of links in
e18dd7227780 Re-enabled login and registration access...
Richard Jones <richard@users.sourceforge.net>
parents: 316
diff changeset
368 the list
e18dd7227780 Re-enabled login and registration access...
Richard Jones <richard@users.sourceforge.net>
parents: 316
diff changeset
369 '''
25
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
370 if not self.nodeid:
488
ab9e236cd524 I18N'ification
Richard Jones <richard@users.sourceforge.net>
parents: 467
diff changeset
371 return _('[Count: not called from item]')
574
d41d94511170 more htmltemplate cleanups and unit tests
Richard Jones <richard@users.sourceforge.net>
parents: 568
diff changeset
372
25
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
373 propclass = self.properties[property]
574
d41d94511170 more htmltemplate cleanups and unit tests
Richard Jones <richard@users.sourceforge.net>
parents: 568
diff changeset
374 if not isinstance(propclass, hyperdb.Multilink):
d41d94511170 more htmltemplate cleanups and unit tests
Richard Jones <richard@users.sourceforge.net>
parents: 568
diff changeset
375 return _('[Count: not a Multilink]')
d41d94511170 more htmltemplate cleanups and unit tests
Richard Jones <richard@users.sourceforge.net>
parents: 568
diff changeset
376
d41d94511170 more htmltemplate cleanups and unit tests
Richard Jones <richard@users.sourceforge.net>
parents: 568
diff changeset
377 # figure the length then...
25
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
378 value = self.cl.get(self.nodeid, property)
574
d41d94511170 more htmltemplate cleanups and unit tests
Richard Jones <richard@users.sourceforge.net>
parents: 568
diff changeset
379 return str(len(value))
25
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
380
318
e18dd7227780 Re-enabled login and registration access...
Richard Jones <richard@users.sourceforge.net>
parents: 316
diff changeset
381 # XXX pretty is definitely new ;)
e18dd7227780 Re-enabled login and registration access...
Richard Jones <richard@users.sourceforge.net>
parents: 316
diff changeset
382 def do_reldate(self, property, pretty=0):
e18dd7227780 Re-enabled login and registration access...
Richard Jones <richard@users.sourceforge.net>
parents: 316
diff changeset
383 ''' display a Date property in terms of an interval relative to the
e18dd7227780 Re-enabled login and registration access...
Richard Jones <richard@users.sourceforge.net>
parents: 316
diff changeset
384 current date (e.g. "+ 3w", "- 2d").
25
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
385
318
e18dd7227780 Re-enabled login and registration access...
Richard Jones <richard@users.sourceforge.net>
parents: 316
diff changeset
386 with the 'pretty' flag, make it pretty
e18dd7227780 Re-enabled login and registration access...
Richard Jones <richard@users.sourceforge.net>
parents: 316
diff changeset
387 '''
25
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
388 if not self.nodeid and self.form is None:
488
ab9e236cd524 I18N'ification
Richard Jones <richard@users.sourceforge.net>
parents: 467
diff changeset
389 return _('[Reldate: not called from item]')
574
d41d94511170 more htmltemplate cleanups and unit tests
Richard Jones <richard@users.sourceforge.net>
parents: 568
diff changeset
390
25
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
391 propclass = self.properties[property]
574
d41d94511170 more htmltemplate cleanups and unit tests
Richard Jones <richard@users.sourceforge.net>
parents: 568
diff changeset
392 if not isinstance(propclass, hyperdb.Date):
488
ab9e236cd524 I18N'ification
Richard Jones <richard@users.sourceforge.net>
parents: 467
diff changeset
393 return _('[Reldate: not a Date]')
574
d41d94511170 more htmltemplate cleanups and unit tests
Richard Jones <richard@users.sourceforge.net>
parents: 568
diff changeset
394
25
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
395 if self.nodeid:
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
396 value = self.cl.get(self.nodeid, property)
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
397 else:
574
d41d94511170 more htmltemplate cleanups and unit tests
Richard Jones <richard@users.sourceforge.net>
parents: 568
diff changeset
398 return ''
d41d94511170 more htmltemplate cleanups and unit tests
Richard Jones <richard@users.sourceforge.net>
parents: 568
diff changeset
399 if not value:
d41d94511170 more htmltemplate cleanups and unit tests
Richard Jones <richard@users.sourceforge.net>
parents: 568
diff changeset
400 return ''
d41d94511170 more htmltemplate cleanups and unit tests
Richard Jones <richard@users.sourceforge.net>
parents: 568
diff changeset
401
d41d94511170 more htmltemplate cleanups and unit tests
Richard Jones <richard@users.sourceforge.net>
parents: 568
diff changeset
402 # figure the interval
25
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
403 interval = value - date.Date('.')
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
404 if pretty:
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
405 if not self.nodeid:
488
ab9e236cd524 I18N'ification
Richard Jones <richard@users.sourceforge.net>
parents: 467
diff changeset
406 return _('now')
25
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
407 pretty = interval.pretty()
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
408 if pretty is None:
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
409 pretty = value.pretty()
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
410 return pretty
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
411 return str(interval)
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
412
318
e18dd7227780 Re-enabled login and registration access...
Richard Jones <richard@users.sourceforge.net>
parents: 316
diff changeset
413 def do_download(self, property, **args):
e18dd7227780 Re-enabled login and registration access...
Richard Jones <richard@users.sourceforge.net>
parents: 316
diff changeset
414 ''' show a Link("file") or Multilink("file") property using links that
e18dd7227780 Re-enabled login and registration access...
Richard Jones <richard@users.sourceforge.net>
parents: 316
diff changeset
415 allow you to download files
e18dd7227780 Re-enabled login and registration access...
Richard Jones <richard@users.sourceforge.net>
parents: 316
diff changeset
416 '''
25
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
417 if not self.nodeid:
488
ab9e236cd524 I18N'ification
Richard Jones <richard@users.sourceforge.net>
parents: 467
diff changeset
418 return _('[Download: not called from item]')
617
edd210915e64 Alternate email addresses are now available for users.
Richard Jones <richard@users.sourceforge.net>
parents: 614
diff changeset
419 return self.do_link(property, is_download=1)
25
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
420
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
421
318
e18dd7227780 Re-enabled login and registration access...
Richard Jones <richard@users.sourceforge.net>
parents: 316
diff changeset
422 def do_checklist(self, property, **args):
e18dd7227780 Re-enabled login and registration access...
Richard Jones <richard@users.sourceforge.net>
parents: 316
diff changeset
423 ''' for a Link or Multilink property, display checkboxes for the
e18dd7227780 Re-enabled login and registration access...
Richard Jones <richard@users.sourceforge.net>
parents: 316
diff changeset
424 available choices to permit filtering
e18dd7227780 Re-enabled login and registration access...
Richard Jones <richard@users.sourceforge.net>
parents: 316
diff changeset
425 '''
25
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
426 propclass = self.properties[property]
306
36ae7ffb8a42 Fixed Checklist function - wasn't always working on a list.
Richard Jones <richard@users.sourceforge.net>
parents: 303
diff changeset
427 if (not isinstance(propclass, hyperdb.Link) and not
36ae7ffb8a42 Fixed Checklist function - wasn't always working on a list.
Richard Jones <richard@users.sourceforge.net>
parents: 303
diff changeset
428 isinstance(propclass, hyperdb.Multilink)):
488
ab9e236cd524 I18N'ification
Richard Jones <richard@users.sourceforge.net>
parents: 467
diff changeset
429 return _('[Checklist: not a link]')
306
36ae7ffb8a42 Fixed Checklist function - wasn't always working on a list.
Richard Jones <richard@users.sourceforge.net>
parents: 303
diff changeset
430
36ae7ffb8a42 Fixed Checklist function - wasn't always working on a list.
Richard Jones <richard@users.sourceforge.net>
parents: 303
diff changeset
431 # get our current checkbox state
25
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
432 if self.nodeid:
306
36ae7ffb8a42 Fixed Checklist function - wasn't always working on a list.
Richard Jones <richard@users.sourceforge.net>
parents: 303
diff changeset
433 # get the info from the node - make sure it's a list
307
dac78e092228 CGI interface view customisation section may now be hidden
Richard Jones <richard@users.sourceforge.net>
parents: 306
diff changeset
434 if isinstance(propclass, hyperdb.Link):
306
36ae7ffb8a42 Fixed Checklist function - wasn't always working on a list.
Richard Jones <richard@users.sourceforge.net>
parents: 303
diff changeset
435 value = [self.cl.get(self.nodeid, property)]
36ae7ffb8a42 Fixed Checklist function - wasn't always working on a list.
Richard Jones <richard@users.sourceforge.net>
parents: 303
diff changeset
436 else:
36ae7ffb8a42 Fixed Checklist function - wasn't always working on a list.
Richard Jones <richard@users.sourceforge.net>
parents: 303
diff changeset
437 value = self.cl.get(self.nodeid, property)
128
ce36f2962b94 Fixed handling of passed-in values in form elements (ie. during a drill-down)
Richard Jones <richard@users.sourceforge.net>
parents: 127
diff changeset
438 elif self.filterspec is not None:
306
36ae7ffb8a42 Fixed Checklist function - wasn't always working on a list.
Richard Jones <richard@users.sourceforge.net>
parents: 303
diff changeset
439 # get the state from the filter specification (always a list)
128
ce36f2962b94 Fixed handling of passed-in values in form elements (ie. during a drill-down)
Richard Jones <richard@users.sourceforge.net>
parents: 127
diff changeset
440 value = self.filterspec.get(property, [])
25
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
441 else:
306
36ae7ffb8a42 Fixed Checklist function - wasn't always working on a list.
Richard Jones <richard@users.sourceforge.net>
parents: 303
diff changeset
442 # it's a new node, so there's no state
25
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
443 value = []
306
36ae7ffb8a42 Fixed Checklist function - wasn't always working on a list.
Richard Jones <richard@users.sourceforge.net>
parents: 303
diff changeset
444
36ae7ffb8a42 Fixed Checklist function - wasn't always working on a list.
Richard Jones <richard@users.sourceforge.net>
parents: 303
diff changeset
445 # so we can map to the linked node's "lable" property
36ae7ffb8a42 Fixed Checklist function - wasn't always working on a list.
Richard Jones <richard@users.sourceforge.net>
parents: 303
diff changeset
446 linkcl = self.db.classes[propclass.classname]
36ae7ffb8a42 Fixed Checklist function - wasn't always working on a list.
Richard Jones <richard@users.sourceforge.net>
parents: 303
diff changeset
447 l = []
36ae7ffb8a42 Fixed Checklist function - wasn't always working on a list.
Richard Jones <richard@users.sourceforge.net>
parents: 303
diff changeset
448 k = linkcl.labelprop()
36ae7ffb8a42 Fixed Checklist function - wasn't always working on a list.
Richard Jones <richard@users.sourceforge.net>
parents: 303
diff changeset
449 for optionid in linkcl.list():
577
334ae707ebfc more HTML template cleanup and unit tests
Richard Jones <richard@users.sourceforge.net>
parents: 576
diff changeset
450 option = cgi.escape(linkcl.get(optionid, k))
306
36ae7ffb8a42 Fixed Checklist function - wasn't always working on a list.
Richard Jones <richard@users.sourceforge.net>
parents: 303
diff changeset
451 if optionid in value or option in value:
36ae7ffb8a42 Fixed Checklist function - wasn't always working on a list.
Richard Jones <richard@users.sourceforge.net>
parents: 303
diff changeset
452 checked = 'checked'
36ae7ffb8a42 Fixed Checklist function - wasn't always working on a list.
Richard Jones <richard@users.sourceforge.net>
parents: 303
diff changeset
453 else:
36ae7ffb8a42 Fixed Checklist function - wasn't always working on a list.
Richard Jones <richard@users.sourceforge.net>
parents: 303
diff changeset
454 checked = ''
36ae7ffb8a42 Fixed Checklist function - wasn't always working on a list.
Richard Jones <richard@users.sourceforge.net>
parents: 303
diff changeset
455 l.append('%s:<input type="checkbox" %s name="%s" value="%s">'%(
36ae7ffb8a42 Fixed Checklist function - wasn't always working on a list.
Richard Jones <richard@users.sourceforge.net>
parents: 303
diff changeset
456 option, checked, property, option))
312
5a2c43891c20 [SF#473124]: UI inconsistency with Link fields.
Richard Jones <richard@users.sourceforge.net>
parents: 307
diff changeset
457
5a2c43891c20 [SF#473124]: UI inconsistency with Link fields.
Richard Jones <richard@users.sourceforge.net>
parents: 307
diff changeset
458 # for Links, allow the "unselected" option too
5a2c43891c20 [SF#473124]: UI inconsistency with Link fields.
Richard Jones <richard@users.sourceforge.net>
parents: 307
diff changeset
459 if isinstance(propclass, hyperdb.Link):
5a2c43891c20 [SF#473124]: UI inconsistency with Link fields.
Richard Jones <richard@users.sourceforge.net>
parents: 307
diff changeset
460 if value is None or '-1' in value:
5a2c43891c20 [SF#473124]: UI inconsistency with Link fields.
Richard Jones <richard@users.sourceforge.net>
parents: 307
diff changeset
461 checked = 'checked'
5a2c43891c20 [SF#473124]: UI inconsistency with Link fields.
Richard Jones <richard@users.sourceforge.net>
parents: 307
diff changeset
462 else:
5a2c43891c20 [SF#473124]: UI inconsistency with Link fields.
Richard Jones <richard@users.sourceforge.net>
parents: 307
diff changeset
463 checked = ''
488
ab9e236cd524 I18N'ification
Richard Jones <richard@users.sourceforge.net>
parents: 467
diff changeset
464 l.append(_('[unselected]:<input type="checkbox" %s name="%s" '
ab9e236cd524 I18N'ification
Richard Jones <richard@users.sourceforge.net>
parents: 467
diff changeset
465 'value="-1">')%(checked, property))
306
36ae7ffb8a42 Fixed Checklist function - wasn't always working on a list.
Richard Jones <richard@users.sourceforge.net>
parents: 303
diff changeset
466 return '\n'.join(l)
25
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
467
318
e18dd7227780 Re-enabled login and registration access...
Richard Jones <richard@users.sourceforge.net>
parents: 316
diff changeset
468 def do_note(self, rows=5, cols=80):
e18dd7227780 Re-enabled login and registration access...
Richard Jones <richard@users.sourceforge.net>
parents: 316
diff changeset
469 ''' display a "note" field, which is a text area for entering a note to
e18dd7227780 Re-enabled login and registration access...
Richard Jones <richard@users.sourceforge.net>
parents: 316
diff changeset
470 go along with a change.
e18dd7227780 Re-enabled login and registration access...
Richard Jones <richard@users.sourceforge.net>
parents: 316
diff changeset
471 '''
e18dd7227780 Re-enabled login and registration access...
Richard Jones <richard@users.sourceforge.net>
parents: 316
diff changeset
472 # TODO: pull the value from the form
342
0b7d62e414b6 Added the wrap="hard" attribute to the textarea of the note field...
Richard Jones <richard@users.sourceforge.net>
parents: 340
diff changeset
473 return '<textarea name="__note" wrap="hard" rows=%s cols=%s>'\
0b7d62e414b6 Added the wrap="hard" attribute to the textarea of the note field...
Richard Jones <richard@users.sourceforge.net>
parents: 340
diff changeset
474 '</textarea>'%(rows, cols)
25
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
475
318
e18dd7227780 Re-enabled login and registration access...
Richard Jones <richard@users.sourceforge.net>
parents: 316
diff changeset
476 # XXX new function
e18dd7227780 Re-enabled login and registration access...
Richard Jones <richard@users.sourceforge.net>
parents: 316
diff changeset
477 def do_list(self, property, reverse=0):
e18dd7227780 Re-enabled login and registration access...
Richard Jones <richard@users.sourceforge.net>
parents: 316
diff changeset
478 ''' list the items specified by property using the standard index for
e18dd7227780 Re-enabled login and registration access...
Richard Jones <richard@users.sourceforge.net>
parents: 316
diff changeset
479 the class
e18dd7227780 Re-enabled login and registration access...
Richard Jones <richard@users.sourceforge.net>
parents: 316
diff changeset
480 '''
e18dd7227780 Re-enabled login and registration access...
Richard Jones <richard@users.sourceforge.net>
parents: 316
diff changeset
481 propcl = self.properties[property]
e18dd7227780 Re-enabled login and registration access...
Richard Jones <richard@users.sourceforge.net>
parents: 316
diff changeset
482 if not isinstance(propcl, hyperdb.Multilink):
488
ab9e236cd524 I18N'ification
Richard Jones <richard@users.sourceforge.net>
parents: 467
diff changeset
483 return _('[List: not a Multilink]')
577
334ae707ebfc more HTML template cleanup and unit tests
Richard Jones <richard@users.sourceforge.net>
parents: 576
diff changeset
484
334ae707ebfc more HTML template cleanup and unit tests
Richard Jones <richard@users.sourceforge.net>
parents: 576
diff changeset
485 value = self.determine_value(property)
581
137d7fc5234d real (non-string, duh) sorting of lists by node id
Richard Jones <richard@users.sourceforge.net>
parents: 577
diff changeset
486 if not value:
137d7fc5234d real (non-string, duh) sorting of lists by node id
Richard Jones <richard@users.sourceforge.net>
parents: 577
diff changeset
487 return ''
577
334ae707ebfc more HTML template cleanup and unit tests
Richard Jones <richard@users.sourceforge.net>
parents: 576
diff changeset
488
581
137d7fc5234d real (non-string, duh) sorting of lists by node id
Richard Jones <richard@users.sourceforge.net>
parents: 577
diff changeset
489 # sort, possibly revers and then re-stringify
137d7fc5234d real (non-string, duh) sorting of lists by node id
Richard Jones <richard@users.sourceforge.net>
parents: 577
diff changeset
490 value = map(int, value)
576
f98f37697f4c More HTML template cleanup and unit tests.
Richard Jones <richard@users.sourceforge.net>
parents: 575
diff changeset
491 value.sort()
244
6bf584784e31 Fixed missing import in mailgw :(
Richard Jones <richard@users.sourceforge.net>
parents: 231
diff changeset
492 if reverse:
6bf584784e31 Fixed missing import in mailgw :(
Richard Jones <richard@users.sourceforge.net>
parents: 231
diff changeset
493 value.reverse()
581
137d7fc5234d real (non-string, duh) sorting of lists by node id
Richard Jones <richard@users.sourceforge.net>
parents: 577
diff changeset
494 value = map(str, value)
318
e18dd7227780 Re-enabled login and registration access...
Richard Jones <richard@users.sourceforge.net>
parents: 316
diff changeset
495
e18dd7227780 Re-enabled login and registration access...
Richard Jones <richard@users.sourceforge.net>
parents: 316
diff changeset
496 # render the sub-index into a string
e18dd7227780 Re-enabled login and registration access...
Richard Jones <richard@users.sourceforge.net>
parents: 316
diff changeset
497 fp = StringIO.StringIO()
e18dd7227780 Re-enabled login and registration access...
Richard Jones <richard@users.sourceforge.net>
parents: 316
diff changeset
498 try:
e18dd7227780 Re-enabled login and registration access...
Richard Jones <richard@users.sourceforge.net>
parents: 316
diff changeset
499 write_save = self.client.write
e18dd7227780 Re-enabled login and registration access...
Richard Jones <richard@users.sourceforge.net>
parents: 316
diff changeset
500 self.client.write = fp.write
e18dd7227780 Re-enabled login and registration access...
Richard Jones <richard@users.sourceforge.net>
parents: 316
diff changeset
501 index = IndexTemplate(self.client, self.templates, propcl.classname)
e18dd7227780 Re-enabled login and registration access...
Richard Jones <richard@users.sourceforge.net>
parents: 316
diff changeset
502 index.render(nodeids=value, show_display_form=0)
e18dd7227780 Re-enabled login and registration access...
Richard Jones <richard@users.sourceforge.net>
parents: 316
diff changeset
503 finally:
e18dd7227780 Re-enabled login and registration access...
Richard Jones <richard@users.sourceforge.net>
parents: 316
diff changeset
504 self.client.write = write_save
e18dd7227780 Re-enabled login and registration access...
Richard Jones <richard@users.sourceforge.net>
parents: 316
diff changeset
505
25
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
506 return fp.getvalue()
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
507
318
e18dd7227780 Re-enabled login and registration access...
Richard Jones <richard@users.sourceforge.net>
parents: 316
diff changeset
508 # XXX new function
552
0f8734a5a004 much nicer history display (actualy real handling of property types etc)
Richard Jones <richard@users.sourceforge.net>
parents: 548
diff changeset
509 def do_history(self, direction='descending'):
318
e18dd7227780 Re-enabled login and registration access...
Richard Jones <richard@users.sourceforge.net>
parents: 316
diff changeset
510 ''' list the history of the item
552
0f8734a5a004 much nicer history display (actualy real handling of property types etc)
Richard Jones <richard@users.sourceforge.net>
parents: 548
diff changeset
511
0f8734a5a004 much nicer history display (actualy real handling of property types etc)
Richard Jones <richard@users.sourceforge.net>
parents: 548
diff changeset
512 If "direction" is 'descending' then the most recent event will
0f8734a5a004 much nicer history display (actualy real handling of property types etc)
Richard Jones <richard@users.sourceforge.net>
parents: 548
diff changeset
513 be displayed first. If it is 'ascending' then the oldest event
0f8734a5a004 much nicer history display (actualy real handling of property types etc)
Richard Jones <richard@users.sourceforge.net>
parents: 548
diff changeset
514 will be displayed first.
318
e18dd7227780 Re-enabled login and registration access...
Richard Jones <richard@users.sourceforge.net>
parents: 316
diff changeset
515 '''
141
5e8da9d010bd Handles new node display now.
Richard Jones <richard@users.sourceforge.net>
parents: 131
diff changeset
516 if self.nodeid is None:
488
ab9e236cd524 I18N'ification
Richard Jones <richard@users.sourceforge.net>
parents: 467
diff changeset
517 return _("[History: node doesn't exist]")
141
5e8da9d010bd Handles new node display now.
Richard Jones <richard@users.sourceforge.net>
parents: 131
diff changeset
518
25
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
519 l = ['<table width=100% border=0 cellspacing=0 cellpadding=2>',
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
520 '<tr class="list-header">',
552
0f8734a5a004 much nicer history display (actualy real handling of property types etc)
Richard Jones <richard@users.sourceforge.net>
parents: 548
diff changeset
521 _('<th align=left><span class="list-item">Date</span></th>'),
0f8734a5a004 much nicer history display (actualy real handling of property types etc)
Richard Jones <richard@users.sourceforge.net>
parents: 548
diff changeset
522 _('<th align=left><span class="list-item">User</span></th>'),
0f8734a5a004 much nicer history display (actualy real handling of property types etc)
Richard Jones <richard@users.sourceforge.net>
parents: 548
diff changeset
523 _('<th align=left><span class="list-item">Action</span></th>'),
0f8734a5a004 much nicer history display (actualy real handling of property types etc)
Richard Jones <richard@users.sourceforge.net>
parents: 548
diff changeset
524 _('<th align=left><span class="list-item">Args</span></th>'),
0f8734a5a004 much nicer history display (actualy real handling of property types etc)
Richard Jones <richard@users.sourceforge.net>
parents: 548
diff changeset
525 '</tr>']
25
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
526
552
0f8734a5a004 much nicer history display (actualy real handling of property types etc)
Richard Jones <richard@users.sourceforge.net>
parents: 548
diff changeset
527 comments = {}
0f8734a5a004 much nicer history display (actualy real handling of property types etc)
Richard Jones <richard@users.sourceforge.net>
parents: 548
diff changeset
528 history = self.cl.history(self.nodeid)
576
f98f37697f4c More HTML template cleanup and unit tests.
Richard Jones <richard@users.sourceforge.net>
parents: 575
diff changeset
529 history.sort()
552
0f8734a5a004 much nicer history display (actualy real handling of property types etc)
Richard Jones <richard@users.sourceforge.net>
parents: 548
diff changeset
530 if direction == 'descending':
0f8734a5a004 much nicer history display (actualy real handling of property types etc)
Richard Jones <richard@users.sourceforge.net>
parents: 548
diff changeset
531 history.reverse()
0f8734a5a004 much nicer history display (actualy real handling of property types etc)
Richard Jones <richard@users.sourceforge.net>
parents: 548
diff changeset
532 for id, evt_date, user, action, args in history:
0f8734a5a004 much nicer history display (actualy real handling of property types etc)
Richard Jones <richard@users.sourceforge.net>
parents: 548
diff changeset
533 date_s = str(evt_date).replace("."," ")
0f8734a5a004 much nicer history display (actualy real handling of property types etc)
Richard Jones <richard@users.sourceforge.net>
parents: 548
diff changeset
534 arg_s = ''
0f8734a5a004 much nicer history display (actualy real handling of property types etc)
Richard Jones <richard@users.sourceforge.net>
parents: 548
diff changeset
535 if action == 'link' and type(args) == type(()):
547
e4ef6df2345c display links a html link in history.
Engelbert Gruber <grubert@users.sourceforge.net>
parents: 538
diff changeset
536 if len(args) == 3:
552
0f8734a5a004 much nicer history display (actualy real handling of property types etc)
Richard Jones <richard@users.sourceforge.net>
parents: 548
diff changeset
537 linkcl, linkid, key = args
0f8734a5a004 much nicer history display (actualy real handling of property types etc)
Richard Jones <richard@users.sourceforge.net>
parents: 548
diff changeset
538 arg_s += '<a href="%s%s">%s%s %s</a>'%(linkcl, linkid,
0f8734a5a004 much nicer history display (actualy real handling of property types etc)
Richard Jones <richard@users.sourceforge.net>
parents: 548
diff changeset
539 linkcl, linkid, key)
0f8734a5a004 much nicer history display (actualy real handling of property types etc)
Richard Jones <richard@users.sourceforge.net>
parents: 548
diff changeset
540 else:
0f8734a5a004 much nicer history display (actualy real handling of property types etc)
Richard Jones <richard@users.sourceforge.net>
parents: 548
diff changeset
541 arg_s = str(arg)
0f8734a5a004 much nicer history display (actualy real handling of property types etc)
Richard Jones <richard@users.sourceforge.net>
parents: 548
diff changeset
542
0f8734a5a004 much nicer history display (actualy real handling of property types etc)
Richard Jones <richard@users.sourceforge.net>
parents: 548
diff changeset
543 elif action == 'unlink' and type(args) == type(()):
0f8734a5a004 much nicer history display (actualy real handling of property types etc)
Richard Jones <richard@users.sourceforge.net>
parents: 548
diff changeset
544 if len(args) == 3:
0f8734a5a004 much nicer history display (actualy real handling of property types etc)
Richard Jones <richard@users.sourceforge.net>
parents: 548
diff changeset
545 linkcl, linkid, key = args
0f8734a5a004 much nicer history display (actualy real handling of property types etc)
Richard Jones <richard@users.sourceforge.net>
parents: 548
diff changeset
546 arg_s += '<a href="%s%s">%s%s %s</a>'%(linkcl, linkid,
0f8734a5a004 much nicer history display (actualy real handling of property types etc)
Richard Jones <richard@users.sourceforge.net>
parents: 548
diff changeset
547 linkcl, linkid, key)
547
e4ef6df2345c display links a html link in history.
Engelbert Gruber <grubert@users.sourceforge.net>
parents: 538
diff changeset
548 else:
e4ef6df2345c display links a html link in history.
Engelbert Gruber <grubert@users.sourceforge.net>
parents: 538
diff changeset
549 arg_s = str(arg)
552
0f8734a5a004 much nicer history display (actualy real handling of property types etc)
Richard Jones <richard@users.sourceforge.net>
parents: 548
diff changeset
550
0f8734a5a004 much nicer history display (actualy real handling of property types etc)
Richard Jones <richard@users.sourceforge.net>
parents: 548
diff changeset
551 elif type(args) == type({}):
0f8734a5a004 much nicer history display (actualy real handling of property types etc)
Richard Jones <richard@users.sourceforge.net>
parents: 548
diff changeset
552 cell = []
547
e4ef6df2345c display links a html link in history.
Engelbert Gruber <grubert@users.sourceforge.net>
parents: 538
diff changeset
553 for k in args.keys():
552
0f8734a5a004 much nicer history display (actualy real handling of property types etc)
Richard Jones <richard@users.sourceforge.net>
parents: 548
diff changeset
554 # try to get the relevant property and treat it
0f8734a5a004 much nicer history display (actualy real handling of property types etc)
Richard Jones <richard@users.sourceforge.net>
parents: 548
diff changeset
555 # specially
0f8734a5a004 much nicer history display (actualy real handling of property types etc)
Richard Jones <richard@users.sourceforge.net>
parents: 548
diff changeset
556 try:
0f8734a5a004 much nicer history display (actualy real handling of property types etc)
Richard Jones <richard@users.sourceforge.net>
parents: 548
diff changeset
557 prop = self.properties[k]
0f8734a5a004 much nicer history display (actualy real handling of property types etc)
Richard Jones <richard@users.sourceforge.net>
parents: 548
diff changeset
558 except:
0f8734a5a004 much nicer history display (actualy real handling of property types etc)
Richard Jones <richard@users.sourceforge.net>
parents: 548
diff changeset
559 prop = None
0f8734a5a004 much nicer history display (actualy real handling of property types etc)
Richard Jones <richard@users.sourceforge.net>
parents: 548
diff changeset
560 if prop is not None:
0f8734a5a004 much nicer history display (actualy real handling of property types etc)
Richard Jones <richard@users.sourceforge.net>
parents: 548
diff changeset
561 if args[k] and (isinstance(prop, hyperdb.Multilink) or
0f8734a5a004 much nicer history display (actualy real handling of property types etc)
Richard Jones <richard@users.sourceforge.net>
parents: 548
diff changeset
562 isinstance(prop, hyperdb.Link)):
0f8734a5a004 much nicer history display (actualy real handling of property types etc)
Richard Jones <richard@users.sourceforge.net>
parents: 548
diff changeset
563 # figure what the link class is
0f8734a5a004 much nicer history display (actualy real handling of property types etc)
Richard Jones <richard@users.sourceforge.net>
parents: 548
diff changeset
564 classname = prop.classname
0f8734a5a004 much nicer history display (actualy real handling of property types etc)
Richard Jones <richard@users.sourceforge.net>
parents: 548
diff changeset
565 try:
0f8734a5a004 much nicer history display (actualy real handling of property types etc)
Richard Jones <richard@users.sourceforge.net>
parents: 548
diff changeset
566 linkcl = self.db.classes[classname]
0f8734a5a004 much nicer history display (actualy real handling of property types etc)
Richard Jones <richard@users.sourceforge.net>
parents: 548
diff changeset
567 except KeyError, message:
0f8734a5a004 much nicer history display (actualy real handling of property types etc)
Richard Jones <richard@users.sourceforge.net>
parents: 548
diff changeset
568 labelprop = None
0f8734a5a004 much nicer history display (actualy real handling of property types etc)
Richard Jones <richard@users.sourceforge.net>
parents: 548
diff changeset
569 comments[classname] = _('''The linked class
0f8734a5a004 much nicer history display (actualy real handling of property types etc)
Richard Jones <richard@users.sourceforge.net>
parents: 548
diff changeset
570 %(classname)s no longer exists''')%locals()
0f8734a5a004 much nicer history display (actualy real handling of property types etc)
Richard Jones <richard@users.sourceforge.net>
parents: 548
diff changeset
571 labelprop = linkcl.labelprop()
0f8734a5a004 much nicer history display (actualy real handling of property types etc)
Richard Jones <richard@users.sourceforge.net>
parents: 548
diff changeset
572
0f8734a5a004 much nicer history display (actualy real handling of property types etc)
Richard Jones <richard@users.sourceforge.net>
parents: 548
diff changeset
573 if isinstance(prop, hyperdb.Multilink) and \
0f8734a5a004 much nicer history display (actualy real handling of property types etc)
Richard Jones <richard@users.sourceforge.net>
parents: 548
diff changeset
574 len(args[k]) > 0:
0f8734a5a004 much nicer history display (actualy real handling of property types etc)
Richard Jones <richard@users.sourceforge.net>
parents: 548
diff changeset
575 ml = []
0f8734a5a004 much nicer history display (actualy real handling of property types etc)
Richard Jones <richard@users.sourceforge.net>
parents: 548
diff changeset
576 for linkid in args[k]:
0f8734a5a004 much nicer history display (actualy real handling of property types etc)
Richard Jones <richard@users.sourceforge.net>
parents: 548
diff changeset
577 label = classname + linkid
0f8734a5a004 much nicer history display (actualy real handling of property types etc)
Richard Jones <richard@users.sourceforge.net>
parents: 548
diff changeset
578 # if we have a label property, try to use it
0f8734a5a004 much nicer history display (actualy real handling of property types etc)
Richard Jones <richard@users.sourceforge.net>
parents: 548
diff changeset
579 # TODO: test for node existence even when
0f8734a5a004 much nicer history display (actualy real handling of property types etc)
Richard Jones <richard@users.sourceforge.net>
parents: 548
diff changeset
580 # there's no labelprop!
0f8734a5a004 much nicer history display (actualy real handling of property types etc)
Richard Jones <richard@users.sourceforge.net>
parents: 548
diff changeset
581 try:
0f8734a5a004 much nicer history display (actualy real handling of property types etc)
Richard Jones <richard@users.sourceforge.net>
parents: 548
diff changeset
582 if labelprop is not None:
0f8734a5a004 much nicer history display (actualy real handling of property types etc)
Richard Jones <richard@users.sourceforge.net>
parents: 548
diff changeset
583 label = linkcl.get(linkid, labelprop)
0f8734a5a004 much nicer history display (actualy real handling of property types etc)
Richard Jones <richard@users.sourceforge.net>
parents: 548
diff changeset
584 except IndexError:
0f8734a5a004 much nicer history display (actualy real handling of property types etc)
Richard Jones <richard@users.sourceforge.net>
parents: 548
diff changeset
585 comments['no_link'] = _('''<strike>The
0f8734a5a004 much nicer history display (actualy real handling of property types etc)
Richard Jones <richard@users.sourceforge.net>
parents: 548
diff changeset
586 linked node no longer
0f8734a5a004 much nicer history display (actualy real handling of property types etc)
Richard Jones <richard@users.sourceforge.net>
parents: 548
diff changeset
587 exists</strike>''')
0f8734a5a004 much nicer history display (actualy real handling of property types etc)
Richard Jones <richard@users.sourceforge.net>
parents: 548
diff changeset
588 ml.append('<strike>%s</strike>'%label)
0f8734a5a004 much nicer history display (actualy real handling of property types etc)
Richard Jones <richard@users.sourceforge.net>
parents: 548
diff changeset
589 else:
0f8734a5a004 much nicer history display (actualy real handling of property types etc)
Richard Jones <richard@users.sourceforge.net>
parents: 548
diff changeset
590 ml.append('<a href="%s%s">%s</a>'%(
0f8734a5a004 much nicer history display (actualy real handling of property types etc)
Richard Jones <richard@users.sourceforge.net>
parents: 548
diff changeset
591 classname, linkid, label))
0f8734a5a004 much nicer history display (actualy real handling of property types etc)
Richard Jones <richard@users.sourceforge.net>
parents: 548
diff changeset
592 cell.append('%s:\n %s'%(k, ',\n '.join(ml)))
0f8734a5a004 much nicer history display (actualy real handling of property types etc)
Richard Jones <richard@users.sourceforge.net>
parents: 548
diff changeset
593 elif isinstance(prop, hyperdb.Link) and args[k]:
0f8734a5a004 much nicer history display (actualy real handling of property types etc)
Richard Jones <richard@users.sourceforge.net>
parents: 548
diff changeset
594 label = classname + args[k]
0f8734a5a004 much nicer history display (actualy real handling of property types etc)
Richard Jones <richard@users.sourceforge.net>
parents: 548
diff changeset
595 # if we have a label property, try to use it
0f8734a5a004 much nicer history display (actualy real handling of property types etc)
Richard Jones <richard@users.sourceforge.net>
parents: 548
diff changeset
596 # TODO: test for node existence even when
0f8734a5a004 much nicer history display (actualy real handling of property types etc)
Richard Jones <richard@users.sourceforge.net>
parents: 548
diff changeset
597 # there's no labelprop!
0f8734a5a004 much nicer history display (actualy real handling of property types etc)
Richard Jones <richard@users.sourceforge.net>
parents: 548
diff changeset
598 if labelprop is not None:
0f8734a5a004 much nicer history display (actualy real handling of property types etc)
Richard Jones <richard@users.sourceforge.net>
parents: 548
diff changeset
599 try:
0f8734a5a004 much nicer history display (actualy real handling of property types etc)
Richard Jones <richard@users.sourceforge.net>
parents: 548
diff changeset
600 label = linkcl.get(args[k], labelprop)
0f8734a5a004 much nicer history display (actualy real handling of property types etc)
Richard Jones <richard@users.sourceforge.net>
parents: 548
diff changeset
601 except IndexError:
0f8734a5a004 much nicer history display (actualy real handling of property types etc)
Richard Jones <richard@users.sourceforge.net>
parents: 548
diff changeset
602 comments['no_link'] = _('''<strike>The
0f8734a5a004 much nicer history display (actualy real handling of property types etc)
Richard Jones <richard@users.sourceforge.net>
parents: 548
diff changeset
603 linked node no longer
0f8734a5a004 much nicer history display (actualy real handling of property types etc)
Richard Jones <richard@users.sourceforge.net>
parents: 548
diff changeset
604 exists</strike>''')
0f8734a5a004 much nicer history display (actualy real handling of property types etc)
Richard Jones <richard@users.sourceforge.net>
parents: 548
diff changeset
605 cell.append(' <strike>%s</strike>,\n'%label)
556
50359de2800b Fixed up the HTML display of history so valid links are actually displayed.
Richard Jones <richard@users.sourceforge.net>
parents: 554
diff changeset
606 # "flag" this is done .... euwww
50359de2800b Fixed up the HTML display of history so valid links are actually displayed.
Richard Jones <richard@users.sourceforge.net>
parents: 554
diff changeset
607 label = None
50359de2800b Fixed up the HTML display of history so valid links are actually displayed.
Richard Jones <richard@users.sourceforge.net>
parents: 554
diff changeset
608 if label is not None:
558
Richard Jones <richard@users.sourceforge.net>
parents: 556
diff changeset
609 cell.append('%s: <a href="%s%s">%s</a>\n'%(k,
Richard Jones <richard@users.sourceforge.net>
parents: 556
diff changeset
610 classname, args[k], label))
552
0f8734a5a004 much nicer history display (actualy real handling of property types etc)
Richard Jones <richard@users.sourceforge.net>
parents: 548
diff changeset
611
0f8734a5a004 much nicer history display (actualy real handling of property types etc)
Richard Jones <richard@users.sourceforge.net>
parents: 548
diff changeset
612 elif isinstance(prop, hyperdb.Date) and args[k]:
0f8734a5a004 much nicer history display (actualy real handling of property types etc)
Richard Jones <richard@users.sourceforge.net>
parents: 548
diff changeset
613 d = date.Date(args[k])
0f8734a5a004 much nicer history display (actualy real handling of property types etc)
Richard Jones <richard@users.sourceforge.net>
parents: 548
diff changeset
614 cell.append('%s: %s'%(k, str(d)))
0f8734a5a004 much nicer history display (actualy real handling of property types etc)
Richard Jones <richard@users.sourceforge.net>
parents: 548
diff changeset
615
0f8734a5a004 much nicer history display (actualy real handling of property types etc)
Richard Jones <richard@users.sourceforge.net>
parents: 548
diff changeset
616 elif isinstance(prop, hyperdb.Interval) and args[k]:
0f8734a5a004 much nicer history display (actualy real handling of property types etc)
Richard Jones <richard@users.sourceforge.net>
parents: 548
diff changeset
617 d = date.Interval(args[k])
0f8734a5a004 much nicer history display (actualy real handling of property types etc)
Richard Jones <richard@users.sourceforge.net>
parents: 548
diff changeset
618 cell.append('%s: %s'%(k, str(d)))
0f8734a5a004 much nicer history display (actualy real handling of property types etc)
Richard Jones <richard@users.sourceforge.net>
parents: 548
diff changeset
619
0f8734a5a004 much nicer history display (actualy real handling of property types etc)
Richard Jones <richard@users.sourceforge.net>
parents: 548
diff changeset
620 elif not args[k]:
0f8734a5a004 much nicer history display (actualy real handling of property types etc)
Richard Jones <richard@users.sourceforge.net>
parents: 548
diff changeset
621 cell.append('%s: (no value)\n'%k)
0f8734a5a004 much nicer history display (actualy real handling of property types etc)
Richard Jones <richard@users.sourceforge.net>
parents: 548
diff changeset
622
0f8734a5a004 much nicer history display (actualy real handling of property types etc)
Richard Jones <richard@users.sourceforge.net>
parents: 548
diff changeset
623 else:
0f8734a5a004 much nicer history display (actualy real handling of property types etc)
Richard Jones <richard@users.sourceforge.net>
parents: 548
diff changeset
624 cell.append('%s: %s\n'%(k, str(args[k])))
548
3f25182ed425 display superseder as html link in history.
Engelbert Gruber <grubert@users.sourceforge.net>
parents: 547
diff changeset
625 else:
552
0f8734a5a004 much nicer history display (actualy real handling of property types etc)
Richard Jones <richard@users.sourceforge.net>
parents: 548
diff changeset
626 # property no longer exists
0f8734a5a004 much nicer history display (actualy real handling of property types etc)
Richard Jones <richard@users.sourceforge.net>
parents: 548
diff changeset
627 comments['no_exist'] = _('''<em>The indicated property
0f8734a5a004 much nicer history display (actualy real handling of property types etc)
Richard Jones <richard@users.sourceforge.net>
parents: 548
diff changeset
628 no longer exists</em>''')
0f8734a5a004 much nicer history display (actualy real handling of property types etc)
Richard Jones <richard@users.sourceforge.net>
parents: 548
diff changeset
629 cell.append('<em>%s: %s</em>\n'%(k, str(args[k])))
0f8734a5a004 much nicer history display (actualy real handling of property types etc)
Richard Jones <richard@users.sourceforge.net>
parents: 548
diff changeset
630 arg_s = '<br />'.join(cell)
547
e4ef6df2345c display links a html link in history.
Engelbert Gruber <grubert@users.sourceforge.net>
parents: 538
diff changeset
631 else:
552
0f8734a5a004 much nicer history display (actualy real handling of property types etc)
Richard Jones <richard@users.sourceforge.net>
parents: 548
diff changeset
632 # unkown event!!
0f8734a5a004 much nicer history display (actualy real handling of property types etc)
Richard Jones <richard@users.sourceforge.net>
parents: 548
diff changeset
633 comments['unknown'] = _('''<strong><em>This event is not
0f8734a5a004 much nicer history display (actualy real handling of property types etc)
Richard Jones <richard@users.sourceforge.net>
parents: 548
diff changeset
634 handled by the history display!</em></strong>''')
0f8734a5a004 much nicer history display (actualy real handling of property types etc)
Richard Jones <richard@users.sourceforge.net>
parents: 548
diff changeset
635 arg_s = '<strong><em>' + str(args) + '</em></strong>'
0f8734a5a004 much nicer history display (actualy real handling of property types etc)
Richard Jones <richard@users.sourceforge.net>
parents: 548
diff changeset
636 date_s = date_s.replace(' ', '&nbsp;')
554
7e7b4183a8bd add nowrap to history table date cell i.e. <td nowrap ...
Engelbert Gruber <grubert@users.sourceforge.net>
parents: 552
diff changeset
637 l.append('<tr><td nowrap valign=top>%s</td><td valign=top>%s</td>'
552
0f8734a5a004 much nicer history display (actualy real handling of property types etc)
Richard Jones <richard@users.sourceforge.net>
parents: 548
diff changeset
638 '<td valign=top>%s</td><td valign=top>%s</td></tr>'%(date_s,
0f8734a5a004 much nicer history display (actualy real handling of property types etc)
Richard Jones <richard@users.sourceforge.net>
parents: 548
diff changeset
639 user, action, arg_s))
0f8734a5a004 much nicer history display (actualy real handling of property types etc)
Richard Jones <richard@users.sourceforge.net>
parents: 548
diff changeset
640 if comments:
0f8734a5a004 much nicer history display (actualy real handling of property types etc)
Richard Jones <richard@users.sourceforge.net>
parents: 548
diff changeset
641 l.append(_('<tr><td colspan=4><strong>Note:</strong></td></tr>'))
0f8734a5a004 much nicer history display (actualy real handling of property types etc)
Richard Jones <richard@users.sourceforge.net>
parents: 548
diff changeset
642 for entry in comments.values():
0f8734a5a004 much nicer history display (actualy real handling of property types etc)
Richard Jones <richard@users.sourceforge.net>
parents: 548
diff changeset
643 l.append('<tr><td colspan=4>%s</td></tr>'%entry)
25
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
644 l.append('</table>')
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
645 return '\n'.join(l)
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
646
318
e18dd7227780 Re-enabled login and registration access...
Richard Jones <richard@users.sourceforge.net>
parents: 316
diff changeset
647 # XXX new function
e18dd7227780 Re-enabled login and registration access...
Richard Jones <richard@users.sourceforge.net>
parents: 316
diff changeset
648 def do_submit(self):
e18dd7227780 Re-enabled login and registration access...
Richard Jones <richard@users.sourceforge.net>
parents: 316
diff changeset
649 ''' add a submit button for the item
e18dd7227780 Re-enabled login and registration access...
Richard Jones <richard@users.sourceforge.net>
parents: 316
diff changeset
650 '''
25
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
651 if self.nodeid:
526
523b22a2c021 The submit buttons need a name attribute...
Richard Jones <richard@users.sourceforge.net>
parents: 525
diff changeset
652 return _('<input type="submit" name="submit" value="Submit Changes">')
25
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
653 elif self.form is not None:
526
523b22a2c021 The submit buttons need a name attribute...
Richard Jones <richard@users.sourceforge.net>
parents: 525
diff changeset
654 return _('<input type="submit" name="submit" value="Submit New Entry">')
25
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
655 else:
488
ab9e236cd524 I18N'ification
Richard Jones <richard@users.sourceforge.net>
parents: 467
diff changeset
656 return _('[Submit: not called from item]')
25
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
657
635
3d61b5d2243e Added popup help for classes using the classhelp html template function.
Richard Jones <richard@users.sourceforge.net>
parents: 634
diff changeset
658 def do_classhelp(self, classname, properties):
634
53549c6a7b33 *** empty log message ***
Richard Jones <richard@users.sourceforge.net>
parents: 627
diff changeset
659 '''pop up a javascript window with class help
53549c6a7b33 *** empty log message ***
Richard Jones <richard@users.sourceforge.net>
parents: 627
diff changeset
660 '''
53549c6a7b33 *** empty log message ***
Richard Jones <richard@users.sourceforge.net>
parents: 627
diff changeset
661 return '<a href="javascript:help_window(\'classhelp?classname=%s&' \
635
3d61b5d2243e Added popup help for classes using the classhelp html template function.
Richard Jones <richard@users.sourceforge.net>
parents: 634
diff changeset
662 'properties=%s\')"><b>(?)</b></a>'%(classname, properties)
25
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
663 #
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
664 # INDEX TEMPLATES
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
665 #
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
666 class IndexTemplateReplace:
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
667 def __init__(self, globals, locals, props):
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
668 self.globals = globals
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
669 self.locals = locals
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
670 self.props = props
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
671
318
e18dd7227780 Re-enabled login and registration access...
Richard Jones <richard@users.sourceforge.net>
parents: 316
diff changeset
672 replace=re.compile(
e18dd7227780 Re-enabled login and registration access...
Richard Jones <richard@users.sourceforge.net>
parents: 316
diff changeset
673 r'((<property\s+name="(?P<name>[^>]+)">(?P<text>.+?)</property>)|'
e18dd7227780 Re-enabled login and registration access...
Richard Jones <richard@users.sourceforge.net>
parents: 316
diff changeset
674 r'(?P<display><display\s+call="(?P<command>[^"]+)">))', re.I|re.S)
e18dd7227780 Re-enabled login and registration access...
Richard Jones <richard@users.sourceforge.net>
parents: 316
diff changeset
675 def go(self, text):
e18dd7227780 Re-enabled login and registration access...
Richard Jones <richard@users.sourceforge.net>
parents: 316
diff changeset
676 return self.replace.sub(self, text)
224
ad2c98faec97 using isinstance(blah, Foo) now instead of isFooType
Richard Jones <richard@users.sourceforge.net>
parents: 214
diff changeset
677
25
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
678 def __call__(self, m, filter=None, columns=None, sort=None, group=None):
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
679 if m.group('name'):
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
680 if m.group('name') in self.props:
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
681 text = m.group('text')
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
682 replace = IndexTemplateReplace(self.globals, {}, self.props)
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
683 return replace.go(m.group('text'))
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
684 else:
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
685 return ''
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
686 if m.group('display'):
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
687 command = m.group('command')
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
688 return eval(command, self.globals, self.locals)
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
689 print '*** unhandled match', m.groupdict()
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
690
318
e18dd7227780 Re-enabled login and registration access...
Richard Jones <richard@users.sourceforge.net>
parents: 316
diff changeset
691 class IndexTemplate(TemplateFunctions):
e18dd7227780 Re-enabled login and registration access...
Richard Jones <richard@users.sourceforge.net>
parents: 316
diff changeset
692 def __init__(self, client, templates, classname):
e18dd7227780 Re-enabled login and registration access...
Richard Jones <richard@users.sourceforge.net>
parents: 316
diff changeset
693 self.client = client
524
dce4c75bef5a changed all config accesses...
Richard Jones <richard@users.sourceforge.net>
parents: 515
diff changeset
694 self.instance = client.instance
318
e18dd7227780 Re-enabled login and registration access...
Richard Jones <richard@users.sourceforge.net>
parents: 316
diff changeset
695 self.templates = templates
e18dd7227780 Re-enabled login and registration access...
Richard Jones <richard@users.sourceforge.net>
parents: 316
diff changeset
696 self.classname = classname
e18dd7227780 Re-enabled login and registration access...
Richard Jones <richard@users.sourceforge.net>
parents: 316
diff changeset
697
e18dd7227780 Re-enabled login and registration access...
Richard Jones <richard@users.sourceforge.net>
parents: 316
diff changeset
698 # derived
e18dd7227780 Re-enabled login and registration access...
Richard Jones <richard@users.sourceforge.net>
parents: 316
diff changeset
699 self.db = self.client.db
e18dd7227780 Re-enabled login and registration access...
Richard Jones <richard@users.sourceforge.net>
parents: 316
diff changeset
700 self.cl = self.db.classes[self.classname]
e18dd7227780 Re-enabled login and registration access...
Richard Jones <richard@users.sourceforge.net>
parents: 316
diff changeset
701 self.properties = self.cl.getprops()
e18dd7227780 Re-enabled login and registration access...
Richard Jones <richard@users.sourceforge.net>
parents: 316
diff changeset
702
e18dd7227780 Re-enabled login and registration access...
Richard Jones <richard@users.sourceforge.net>
parents: 316
diff changeset
703 TemplateFunctions.__init__(self)
e18dd7227780 Re-enabled login and registration access...
Richard Jones <richard@users.sourceforge.net>
parents: 316
diff changeset
704
e18dd7227780 Re-enabled login and registration access...
Richard Jones <richard@users.sourceforge.net>
parents: 316
diff changeset
705 col_re=re.compile(r'<property\s+name="([^>]+)">')
e18dd7227780 Re-enabled login and registration access...
Richard Jones <richard@users.sourceforge.net>
parents: 316
diff changeset
706 def render(self, filterspec={}, filter=[], columns=[], sort=[], group=[],
e18dd7227780 Re-enabled login and registration access...
Richard Jones <richard@users.sourceforge.net>
parents: 316
diff changeset
707 show_display_form=1, nodeids=None, show_customization=1):
e18dd7227780 Re-enabled login and registration access...
Richard Jones <richard@users.sourceforge.net>
parents: 316
diff changeset
708 self.filterspec = filterspec
e18dd7227780 Re-enabled login and registration access...
Richard Jones <richard@users.sourceforge.net>
parents: 316
diff changeset
709
e18dd7227780 Re-enabled login and registration access...
Richard Jones <richard@users.sourceforge.net>
parents: 316
diff changeset
710 w = self.client.write
e18dd7227780 Re-enabled login and registration access...
Richard Jones <richard@users.sourceforge.net>
parents: 316
diff changeset
711
e18dd7227780 Re-enabled login and registration access...
Richard Jones <richard@users.sourceforge.net>
parents: 316
diff changeset
712 # get the filter template
e18dd7227780 Re-enabled login and registration access...
Richard Jones <richard@users.sourceforge.net>
parents: 316
diff changeset
713 try:
e18dd7227780 Re-enabled login and registration access...
Richard Jones <richard@users.sourceforge.net>
parents: 316
diff changeset
714 filter_template = open(os.path.join(self.templates,
e18dd7227780 Re-enabled login and registration access...
Richard Jones <richard@users.sourceforge.net>
parents: 316
diff changeset
715 self.classname+'.filter')).read()
e18dd7227780 Re-enabled login and registration access...
Richard Jones <richard@users.sourceforge.net>
parents: 316
diff changeset
716 all_filters = self.col_re.findall(filter_template)
e18dd7227780 Re-enabled login and registration access...
Richard Jones <richard@users.sourceforge.net>
parents: 316
diff changeset
717 except IOError, error:
332
1fe356fc3d3e Fixed ENOENT/WindowsError thing, thanks Juergen Hermann
Richard Jones <richard@users.sourceforge.net>
parents: 327
diff changeset
718 if error.errno not in (errno.ENOENT, errno.ESRCH): raise
318
e18dd7227780 Re-enabled login and registration access...
Richard Jones <richard@users.sourceforge.net>
parents: 316
diff changeset
719 filter_template = None
e18dd7227780 Re-enabled login and registration access...
Richard Jones <richard@users.sourceforge.net>
parents: 316
diff changeset
720 all_filters = []
e18dd7227780 Re-enabled login and registration access...
Richard Jones <richard@users.sourceforge.net>
parents: 316
diff changeset
721
e18dd7227780 Re-enabled login and registration access...
Richard Jones <richard@users.sourceforge.net>
parents: 316
diff changeset
722 # XXX deviate from spec here ...
e18dd7227780 Re-enabled login and registration access...
Richard Jones <richard@users.sourceforge.net>
parents: 316
diff changeset
723 # load the index section template and figure the default columns from it
627
952679be9e2c Added simple editing for classes that don't define a templated interface.
Richard Jones <richard@users.sourceforge.net>
parents: 623
diff changeset
724 try:
952679be9e2c Added simple editing for classes that don't define a templated interface.
Richard Jones <richard@users.sourceforge.net>
parents: 623
diff changeset
725 template = open(os.path.join(self.templates,
952679be9e2c Added simple editing for classes that don't define a templated interface.
Richard Jones <richard@users.sourceforge.net>
parents: 623
diff changeset
726 self.classname+'.index')).read()
952679be9e2c Added simple editing for classes that don't define a templated interface.
Richard Jones <richard@users.sourceforge.net>
parents: 623
diff changeset
727 except IOError, error:
952679be9e2c Added simple editing for classes that don't define a templated interface.
Richard Jones <richard@users.sourceforge.net>
parents: 623
diff changeset
728 if error.errno not in (errno.ENOENT, errno.ESRCH): raise
952679be9e2c Added simple editing for classes that don't define a templated interface.
Richard Jones <richard@users.sourceforge.net>
parents: 623
diff changeset
729 raise MissingTemplateError, self.classname+'.index'
318
e18dd7227780 Re-enabled login and registration access...
Richard Jones <richard@users.sourceforge.net>
parents: 316
diff changeset
730 all_columns = self.col_re.findall(template)
e18dd7227780 Re-enabled login and registration access...
Richard Jones <richard@users.sourceforge.net>
parents: 316
diff changeset
731 if not columns:
e18dd7227780 Re-enabled login and registration access...
Richard Jones <richard@users.sourceforge.net>
parents: 316
diff changeset
732 columns = []
e18dd7227780 Re-enabled login and registration access...
Richard Jones <richard@users.sourceforge.net>
parents: 316
diff changeset
733 for name in all_columns:
e18dd7227780 Re-enabled login and registration access...
Richard Jones <richard@users.sourceforge.net>
parents: 316
diff changeset
734 columns.append(name)
25
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
735 else:
318
e18dd7227780 Re-enabled login and registration access...
Richard Jones <richard@users.sourceforge.net>
parents: 316
diff changeset
736 # re-sort columns to be the same order as all_columns
e18dd7227780 Re-enabled login and registration access...
Richard Jones <richard@users.sourceforge.net>
parents: 316
diff changeset
737 l = []
e18dd7227780 Re-enabled login and registration access...
Richard Jones <richard@users.sourceforge.net>
parents: 316
diff changeset
738 for name in all_columns:
e18dd7227780 Re-enabled login and registration access...
Richard Jones <richard@users.sourceforge.net>
parents: 316
diff changeset
739 if name in columns:
e18dd7227780 Re-enabled login and registration access...
Richard Jones <richard@users.sourceforge.net>
parents: 316
diff changeset
740 l.append(name)
e18dd7227780 Re-enabled login and registration access...
Richard Jones <richard@users.sourceforge.net>
parents: 316
diff changeset
741 columns = l
25
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
742
320
61c42790c3f1 Bugfix in filter "widget" placement, thanks Roch'e
Richard Jones <richard@users.sourceforge.net>
parents: 318
diff changeset
743 # display the filter section
524
dce4c75bef5a changed all config accesses...
Richard Jones <richard@users.sourceforge.net>
parents: 515
diff changeset
744 if (show_display_form and
dce4c75bef5a changed all config accesses...
Richard Jones <richard@users.sourceforge.net>
parents: 515
diff changeset
745 self.instance.FILTER_POSITION in ('top and bottom', 'top')):
614
5fdf95e6c20a . All forms now have "double-submit" protection...
Richard Jones <richard@users.sourceforge.net>
parents: 581
diff changeset
746 w('<form onSubmit="return submit_once()" action="%s">\n'%self.classname)
320
61c42790c3f1 Bugfix in filter "widget" placement, thanks Roch'e
Richard Jones <richard@users.sourceforge.net>
parents: 318
diff changeset
747 self.filter_section(filter_template, filter, columns, group,
351
6932067a8f31 More HTML compliance fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 350
diff changeset
748 all_filters, all_columns, show_customization)
350
e8d244a98ffd Ahah! Fixed the lynx problem - there was a hidden input field misplaced.
Richard Jones <richard@users.sourceforge.net>
parents: 342
diff changeset
749 # make sure that the sorting doesn't get lost either
e8d244a98ffd Ahah! Fixed the lynx problem - there was a hidden input field misplaced.
Richard Jones <richard@users.sourceforge.net>
parents: 342
diff changeset
750 if sort:
e8d244a98ffd Ahah! Fixed the lynx problem - there was a hidden input field misplaced.
Richard Jones <richard@users.sourceforge.net>
parents: 342
diff changeset
751 w('<input type="hidden" name=":sort" value="%s">'%
e8d244a98ffd Ahah! Fixed the lynx problem - there was a hidden input field misplaced.
Richard Jones <richard@users.sourceforge.net>
parents: 342
diff changeset
752 ','.join(sort))
320
61c42790c3f1 Bugfix in filter "widget" placement, thanks Roch'e
Richard Jones <richard@users.sourceforge.net>
parents: 318
diff changeset
753 w('</form>\n')
61c42790c3f1 Bugfix in filter "widget" placement, thanks Roch'e
Richard Jones <richard@users.sourceforge.net>
parents: 318
diff changeset
754
61c42790c3f1 Bugfix in filter "widget" placement, thanks Roch'e
Richard Jones <richard@users.sourceforge.net>
parents: 318
diff changeset
755
318
e18dd7227780 Re-enabled login and registration access...
Richard Jones <richard@users.sourceforge.net>
parents: 316
diff changeset
756 # now display the index section
e18dd7227780 Re-enabled login and registration access...
Richard Jones <richard@users.sourceforge.net>
parents: 316
diff changeset
757 w('<table width=100% border=0 cellspacing=0 cellpadding=2>\n')
e18dd7227780 Re-enabled login and registration access...
Richard Jones <richard@users.sourceforge.net>
parents: 316
diff changeset
758 w('<tr class="list-header">\n')
e18dd7227780 Re-enabled login and registration access...
Richard Jones <richard@users.sourceforge.net>
parents: 316
diff changeset
759 for name in columns:
e18dd7227780 Re-enabled login and registration access...
Richard Jones <richard@users.sourceforge.net>
parents: 316
diff changeset
760 cname = name.capitalize()
e18dd7227780 Re-enabled login and registration access...
Richard Jones <richard@users.sourceforge.net>
parents: 316
diff changeset
761 if show_display_form:
e18dd7227780 Re-enabled login and registration access...
Richard Jones <richard@users.sourceforge.net>
parents: 316
diff changeset
762 sb = self.sortby(name, filterspec, columns, filter, group, sort)
e18dd7227780 Re-enabled login and registration access...
Richard Jones <richard@users.sourceforge.net>
parents: 316
diff changeset
763 anchor = "%s?%s"%(self.classname, sb)
e18dd7227780 Re-enabled login and registration access...
Richard Jones <richard@users.sourceforge.net>
parents: 316
diff changeset
764 w('<td><span class="list-header"><a href="%s">%s</a></span></td>\n'%(
e18dd7227780 Re-enabled login and registration access...
Richard Jones <richard@users.sourceforge.net>
parents: 316
diff changeset
765 anchor, cname))
e18dd7227780 Re-enabled login and registration access...
Richard Jones <richard@users.sourceforge.net>
parents: 316
diff changeset
766 else:
e18dd7227780 Re-enabled login and registration access...
Richard Jones <richard@users.sourceforge.net>
parents: 316
diff changeset
767 w('<td><span class="list-header">%s</span></td>\n'%cname)
e18dd7227780 Re-enabled login and registration access...
Richard Jones <richard@users.sourceforge.net>
parents: 316
diff changeset
768 w('</tr>\n')
e18dd7227780 Re-enabled login and registration access...
Richard Jones <richard@users.sourceforge.net>
parents: 316
diff changeset
769
e18dd7227780 Re-enabled login and registration access...
Richard Jones <richard@users.sourceforge.net>
parents: 316
diff changeset
770 # this stuff is used for group headings - optimise the group names
e18dd7227780 Re-enabled login and registration access...
Richard Jones <richard@users.sourceforge.net>
parents: 316
diff changeset
771 old_group = None
e18dd7227780 Re-enabled login and registration access...
Richard Jones <richard@users.sourceforge.net>
parents: 316
diff changeset
772 group_names = []
e18dd7227780 Re-enabled login and registration access...
Richard Jones <richard@users.sourceforge.net>
parents: 316
diff changeset
773 if group:
e18dd7227780 Re-enabled login and registration access...
Richard Jones <richard@users.sourceforge.net>
parents: 316
diff changeset
774 for name in group:
e18dd7227780 Re-enabled login and registration access...
Richard Jones <richard@users.sourceforge.net>
parents: 316
diff changeset
775 if name[0] == '-': group_names.append(name[1:])
e18dd7227780 Re-enabled login and registration access...
Richard Jones <richard@users.sourceforge.net>
parents: 316
diff changeset
776 else: group_names.append(name)
25
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
777
318
e18dd7227780 Re-enabled login and registration access...
Richard Jones <richard@users.sourceforge.net>
parents: 316
diff changeset
778 # now actually loop through all the nodes we get from the filter and
e18dd7227780 Re-enabled login and registration access...
Richard Jones <richard@users.sourceforge.net>
parents: 316
diff changeset
779 # apply the template
e18dd7227780 Re-enabled login and registration access...
Richard Jones <richard@users.sourceforge.net>
parents: 316
diff changeset
780 if nodeids is None:
e18dd7227780 Re-enabled login and registration access...
Richard Jones <richard@users.sourceforge.net>
parents: 316
diff changeset
781 nodeids = self.cl.filter(filterspec, sort, group)
e18dd7227780 Re-enabled login and registration access...
Richard Jones <richard@users.sourceforge.net>
parents: 316
diff changeset
782 for nodeid in nodeids:
e18dd7227780 Re-enabled login and registration access...
Richard Jones <richard@users.sourceforge.net>
parents: 316
diff changeset
783 # check for a group heading
e18dd7227780 Re-enabled login and registration access...
Richard Jones <richard@users.sourceforge.net>
parents: 316
diff changeset
784 if group_names:
621
f333f6decdc2 [SF#516854] "My Issues" and redisplay
Richard Jones <richard@users.sourceforge.net>
parents: 617
diff changeset
785 this_group = [self.cl.get(nodeid, name, _('[no value]'))
f333f6decdc2 [SF#516854] "My Issues" and redisplay
Richard Jones <richard@users.sourceforge.net>
parents: 617
diff changeset
786 for name in group_names]
318
e18dd7227780 Re-enabled login and registration access...
Richard Jones <richard@users.sourceforge.net>
parents: 316
diff changeset
787 if this_group != old_group:
e18dd7227780 Re-enabled login and registration access...
Richard Jones <richard@users.sourceforge.net>
parents: 316
diff changeset
788 l = []
e18dd7227780 Re-enabled login and registration access...
Richard Jones <richard@users.sourceforge.net>
parents: 316
diff changeset
789 for name in group_names:
e18dd7227780 Re-enabled login and registration access...
Richard Jones <richard@users.sourceforge.net>
parents: 316
diff changeset
790 prop = self.properties[name]
e18dd7227780 Re-enabled login and registration access...
Richard Jones <richard@users.sourceforge.net>
parents: 316
diff changeset
791 if isinstance(prop, hyperdb.Link):
e18dd7227780 Re-enabled login and registration access...
Richard Jones <richard@users.sourceforge.net>
parents: 316
diff changeset
792 group_cl = self.db.classes[prop.classname]
e18dd7227780 Re-enabled login and registration access...
Richard Jones <richard@users.sourceforge.net>
parents: 316
diff changeset
793 key = group_cl.getkey()
e18dd7227780 Re-enabled login and registration access...
Richard Jones <richard@users.sourceforge.net>
parents: 316
diff changeset
794 value = self.cl.get(nodeid, name)
e18dd7227780 Re-enabled login and registration access...
Richard Jones <richard@users.sourceforge.net>
parents: 316
diff changeset
795 if value is None:
488
ab9e236cd524 I18N'ification
Richard Jones <richard@users.sourceforge.net>
parents: 467
diff changeset
796 l.append(_('[unselected %(classname)s]')%{
ab9e236cd524 I18N'ification
Richard Jones <richard@users.sourceforge.net>
parents: 467
diff changeset
797 'classname': prop.classname})
318
e18dd7227780 Re-enabled login and registration access...
Richard Jones <richard@users.sourceforge.net>
parents: 316
diff changeset
798 else:
e18dd7227780 Re-enabled login and registration access...
Richard Jones <richard@users.sourceforge.net>
parents: 316
diff changeset
799 l.append(group_cl.get(self.cl.get(nodeid,
e18dd7227780 Re-enabled login and registration access...
Richard Jones <richard@users.sourceforge.net>
parents: 316
diff changeset
800 name), key))
e18dd7227780 Re-enabled login and registration access...
Richard Jones <richard@users.sourceforge.net>
parents: 316
diff changeset
801 elif isinstance(prop, hyperdb.Multilink):
e18dd7227780 Re-enabled login and registration access...
Richard Jones <richard@users.sourceforge.net>
parents: 316
diff changeset
802 group_cl = self.db.classes[prop.classname]
e18dd7227780 Re-enabled login and registration access...
Richard Jones <richard@users.sourceforge.net>
parents: 316
diff changeset
803 key = group_cl.getkey()
e18dd7227780 Re-enabled login and registration access...
Richard Jones <richard@users.sourceforge.net>
parents: 316
diff changeset
804 for value in self.cl.get(nodeid, name):
e18dd7227780 Re-enabled login and registration access...
Richard Jones <richard@users.sourceforge.net>
parents: 316
diff changeset
805 l.append(group_cl.get(value, key))
e18dd7227780 Re-enabled login and registration access...
Richard Jones <richard@users.sourceforge.net>
parents: 316
diff changeset
806 else:
488
ab9e236cd524 I18N'ification
Richard Jones <richard@users.sourceforge.net>
parents: 467
diff changeset
807 value = self.cl.get(nodeid, name, _('[no value]'))
318
e18dd7227780 Re-enabled login and registration access...
Richard Jones <richard@users.sourceforge.net>
parents: 316
diff changeset
808 if value is None:
488
ab9e236cd524 I18N'ification
Richard Jones <richard@users.sourceforge.net>
parents: 467
diff changeset
809 value = _('[empty %(name)s]')%locals()
318
e18dd7227780 Re-enabled login and registration access...
Richard Jones <richard@users.sourceforge.net>
parents: 316
diff changeset
810 else:
e18dd7227780 Re-enabled login and registration access...
Richard Jones <richard@users.sourceforge.net>
parents: 316
diff changeset
811 value = str(value)
e18dd7227780 Re-enabled login and registration access...
Richard Jones <richard@users.sourceforge.net>
parents: 316
diff changeset
812 l.append(value)
e18dd7227780 Re-enabled login and registration access...
Richard Jones <richard@users.sourceforge.net>
parents: 316
diff changeset
813 w('<tr class="section-bar">'
e18dd7227780 Re-enabled login and registration access...
Richard Jones <richard@users.sourceforge.net>
parents: 316
diff changeset
814 '<td align=middle colspan=%s><strong>%s</strong></td></tr>'%(
e18dd7227780 Re-enabled login and registration access...
Richard Jones <richard@users.sourceforge.net>
parents: 316
diff changeset
815 len(columns), ', '.join(l)))
e18dd7227780 Re-enabled login and registration access...
Richard Jones <richard@users.sourceforge.net>
parents: 316
diff changeset
816 old_group = this_group
e18dd7227780 Re-enabled login and registration access...
Richard Jones <richard@users.sourceforge.net>
parents: 316
diff changeset
817
e18dd7227780 Re-enabled login and registration access...
Richard Jones <richard@users.sourceforge.net>
parents: 316
diff changeset
818 # display this node's row
e18dd7227780 Re-enabled login and registration access...
Richard Jones <richard@users.sourceforge.net>
parents: 316
diff changeset
819 replace = IndexTemplateReplace(self.globals, locals(), columns)
e18dd7227780 Re-enabled login and registration access...
Richard Jones <richard@users.sourceforge.net>
parents: 316
diff changeset
820 self.nodeid = nodeid
e18dd7227780 Re-enabled login and registration access...
Richard Jones <richard@users.sourceforge.net>
parents: 316
diff changeset
821 w(replace.go(template))
e18dd7227780 Re-enabled login and registration access...
Richard Jones <richard@users.sourceforge.net>
parents: 316
diff changeset
822 self.nodeid = None
e18dd7227780 Re-enabled login and registration access...
Richard Jones <richard@users.sourceforge.net>
parents: 316
diff changeset
823
128
ce36f2962b94 Fixed handling of passed-in values in form elements (ie. during a drill-down)
Richard Jones <richard@users.sourceforge.net>
parents: 127
diff changeset
824 w('</table>')
ce36f2962b94 Fixed handling of passed-in values in form elements (ie. during a drill-down)
Richard Jones <richard@users.sourceforge.net>
parents: 127
diff changeset
825
318
e18dd7227780 Re-enabled login and registration access...
Richard Jones <richard@users.sourceforge.net>
parents: 316
diff changeset
826 # display the filter section
524
dce4c75bef5a changed all config accesses...
Richard Jones <richard@users.sourceforge.net>
parents: 515
diff changeset
827 if (show_display_form and hasattr(self.instance, 'FILTER_POSITION') and
dce4c75bef5a changed all config accesses...
Richard Jones <richard@users.sourceforge.net>
parents: 515
diff changeset
828 self.instance.FILTER_POSITION in ('top and bottom', 'bottom')):
614
5fdf95e6c20a . All forms now have "double-submit" protection...
Richard Jones <richard@users.sourceforge.net>
parents: 581
diff changeset
829 w('<form onSubmit="return submit_once()" action="%s">\n'%self.classname)
318
e18dd7227780 Re-enabled login and registration access...
Richard Jones <richard@users.sourceforge.net>
parents: 316
diff changeset
830 self.filter_section(filter_template, filter, columns, group,
351
6932067a8f31 More HTML compliance fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 350
diff changeset
831 all_filters, all_columns, show_customization)
350
e8d244a98ffd Ahah! Fixed the lynx problem - there was a hidden input field misplaced.
Richard Jones <richard@users.sourceforge.net>
parents: 342
diff changeset
832 # make sure that the sorting doesn't get lost either
e8d244a98ffd Ahah! Fixed the lynx problem - there was a hidden input field misplaced.
Richard Jones <richard@users.sourceforge.net>
parents: 342
diff changeset
833 if sort:
e8d244a98ffd Ahah! Fixed the lynx problem - there was a hidden input field misplaced.
Richard Jones <richard@users.sourceforge.net>
parents: 342
diff changeset
834 w('<input type="hidden" name=":sort" value="%s">'%
e8d244a98ffd Ahah! Fixed the lynx problem - there was a hidden input field misplaced.
Richard Jones <richard@users.sourceforge.net>
parents: 342
diff changeset
835 ','.join(sort))
318
e18dd7227780 Re-enabled login and registration access...
Richard Jones <richard@users.sourceforge.net>
parents: 316
diff changeset
836 w('</form>\n')
316
c0ca7f35e0c5 Added configuration for:
Richard Jones <richard@users.sourceforge.net>
parents: 313
diff changeset
837
312
5a2c43891c20 [SF#473124]: UI inconsistency with Link fields.
Richard Jones <richard@users.sourceforge.net>
parents: 307
diff changeset
838
318
e18dd7227780 Re-enabled login and registration access...
Richard Jones <richard@users.sourceforge.net>
parents: 316
diff changeset
839 def filter_section(self, template, filter, columns, group, all_filters,
351
6932067a8f31 More HTML compliance fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 350
diff changeset
840 all_columns, show_customization):
318
e18dd7227780 Re-enabled login and registration access...
Richard Jones <richard@users.sourceforge.net>
parents: 316
diff changeset
841
e18dd7227780 Re-enabled login and registration access...
Richard Jones <richard@users.sourceforge.net>
parents: 316
diff changeset
842 w = self.client.write
e18dd7227780 Re-enabled login and registration access...
Richard Jones <richard@users.sourceforge.net>
parents: 316
diff changeset
843
411
a6088556e9ba Features and fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 408
diff changeset
844 # wrap the template in a single table to ensure the whole widget
a6088556e9ba Features and fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 408
diff changeset
845 # is displayed at once
a6088556e9ba Features and fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 408
diff changeset
846 w('<table><tr><td>')
a6088556e9ba Features and fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 408
diff changeset
847
318
e18dd7227780 Re-enabled login and registration access...
Richard Jones <richard@users.sourceforge.net>
parents: 316
diff changeset
848 if template and filter:
e18dd7227780 Re-enabled login and registration access...
Richard Jones <richard@users.sourceforge.net>
parents: 316
diff changeset
849 # display the filter section
e18dd7227780 Re-enabled login and registration access...
Richard Jones <richard@users.sourceforge.net>
parents: 316
diff changeset
850 w('<table width=100% border=0 cellspacing=0 cellpadding=2>')
e18dd7227780 Re-enabled login and registration access...
Richard Jones <richard@users.sourceforge.net>
parents: 316
diff changeset
851 w('<tr class="location-bar">')
488
ab9e236cd524 I18N'ification
Richard Jones <richard@users.sourceforge.net>
parents: 467
diff changeset
852 w(_(' <th align="left" colspan="2">Filter specification...</th>'))
318
e18dd7227780 Re-enabled login and registration access...
Richard Jones <richard@users.sourceforge.net>
parents: 316
diff changeset
853 w('</tr>')
e18dd7227780 Re-enabled login and registration access...
Richard Jones <richard@users.sourceforge.net>
parents: 316
diff changeset
854 replace = IndexTemplateReplace(self.globals, locals(), filter)
e18dd7227780 Re-enabled login and registration access...
Richard Jones <richard@users.sourceforge.net>
parents: 316
diff changeset
855 w(replace.go(template))
e18dd7227780 Re-enabled login and registration access...
Richard Jones <richard@users.sourceforge.net>
parents: 316
diff changeset
856 w('<tr class="location-bar"><td width="1%%">&nbsp;</td>')
488
ab9e236cd524 I18N'ification
Richard Jones <richard@users.sourceforge.net>
parents: 467
diff changeset
857 w(_('<td><input type="submit" name="action" value="Redisplay"></td></tr>'))
318
e18dd7227780 Re-enabled login and registration access...
Richard Jones <richard@users.sourceforge.net>
parents: 316
diff changeset
858 w('</table>')
307
dac78e092228 CGI interface view customisation section may now be hidden
Richard Jones <richard@users.sourceforge.net>
parents: 306
diff changeset
859
318
e18dd7227780 Re-enabled login and registration access...
Richard Jones <richard@users.sourceforge.net>
parents: 316
diff changeset
860 # now add in the filter/columns/group/etc config table form
e18dd7227780 Re-enabled login and registration access...
Richard Jones <richard@users.sourceforge.net>
parents: 316
diff changeset
861 w('<input type="hidden" name="show_customization" value="%s">' %
e18dd7227780 Re-enabled login and registration access...
Richard Jones <richard@users.sourceforge.net>
parents: 316
diff changeset
862 show_customization )
e18dd7227780 Re-enabled login and registration access...
Richard Jones <richard@users.sourceforge.net>
parents: 316
diff changeset
863 w('<table width=100% border=0 cellspacing=0 cellpadding=2>\n')
e18dd7227780 Re-enabled login and registration access...
Richard Jones <richard@users.sourceforge.net>
parents: 316
diff changeset
864 names = []
623
Richard Jones <richard@users.sourceforge.net>
parents: 622
diff changeset
865 seen = {}
622
1b16ddd69f31 [SF#517906] Attribute order in "View customisation"
Richard Jones <richard@users.sourceforge.net>
parents: 621
diff changeset
866 for name in all_filters + all_columns:
1b16ddd69f31 [SF#517906] Attribute order in "View customisation"
Richard Jones <richard@users.sourceforge.net>
parents: 621
diff changeset
867 if self.properties.has_key(name) and not seen.has_key(name):
318
e18dd7227780 Re-enabled login and registration access...
Richard Jones <richard@users.sourceforge.net>
parents: 316
diff changeset
868 names.append(name)
622
1b16ddd69f31 [SF#517906] Attribute order in "View customisation"
Richard Jones <richard@users.sourceforge.net>
parents: 621
diff changeset
869 seen[name] = 1
307
dac78e092228 CGI interface view customisation section may now be hidden
Richard Jones <richard@users.sourceforge.net>
parents: 306
diff changeset
870 if show_customization:
318
e18dd7227780 Re-enabled login and registration access...
Richard Jones <richard@users.sourceforge.net>
parents: 316
diff changeset
871 action = '-'
e18dd7227780 Re-enabled login and registration access...
Richard Jones <richard@users.sourceforge.net>
parents: 316
diff changeset
872 else:
e18dd7227780 Re-enabled login and registration access...
Richard Jones <richard@users.sourceforge.net>
parents: 316
diff changeset
873 action = '+'
e18dd7227780 Re-enabled login and registration access...
Richard Jones <richard@users.sourceforge.net>
parents: 316
diff changeset
874 # hide the values for filters, columns and grouping in the form
e18dd7227780 Re-enabled login and registration access...
Richard Jones <richard@users.sourceforge.net>
parents: 316
diff changeset
875 # if the customization widget is not visible
307
dac78e092228 CGI interface view customisation section may now be hidden
Richard Jones <richard@users.sourceforge.net>
parents: 306
diff changeset
876 for name in names:
318
e18dd7227780 Re-enabled login and registration access...
Richard Jones <richard@users.sourceforge.net>
parents: 316
diff changeset
877 if all_filters and name in filter:
e18dd7227780 Re-enabled login and registration access...
Richard Jones <richard@users.sourceforge.net>
parents: 316
diff changeset
878 w('<input type="hidden" name=":filter" value="%s">' % name)
e18dd7227780 Re-enabled login and registration access...
Richard Jones <richard@users.sourceforge.net>
parents: 316
diff changeset
879 if all_columns and name in columns:
e18dd7227780 Re-enabled login and registration access...
Richard Jones <richard@users.sourceforge.net>
parents: 316
diff changeset
880 w('<input type="hidden" name=":columns" value="%s">' % name)
e18dd7227780 Re-enabled login and registration access...
Richard Jones <richard@users.sourceforge.net>
parents: 316
diff changeset
881 if all_columns and name in group:
e18dd7227780 Re-enabled login and registration access...
Richard Jones <richard@users.sourceforge.net>
parents: 316
diff changeset
882 w('<input type="hidden" name=":group" value="%s">' % name)
307
dac78e092228 CGI interface view customisation section may now be hidden
Richard Jones <richard@users.sourceforge.net>
parents: 306
diff changeset
883
351
6932067a8f31 More HTML compliance fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 350
diff changeset
884 # TODO: The widget style can go into the stylesheet
488
ab9e236cd524 I18N'ification
Richard Jones <richard@users.sourceforge.net>
parents: 467
diff changeset
885 w(_('<th align="left" colspan=%s>'
351
6932067a8f31 More HTML compliance fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 350
diff changeset
886 '<input style="height : 1em; width : 1em; font-size: 12pt" type="submit" name="action" value="%s">&nbsp;View '
488
ab9e236cd524 I18N'ification
Richard Jones <richard@users.sourceforge.net>
parents: 467
diff changeset
887 'customisation...</th></tr>\n')%(len(names)+1, action))
351
6932067a8f31 More HTML compliance fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 350
diff changeset
888
6932067a8f31 More HTML compliance fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 350
diff changeset
889 if not show_customization:
6932067a8f31 More HTML compliance fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 350
diff changeset
890 w('</table>\n')
392
a9edec536e0a missing "return" in filter_section (thanks Roch'e Compaan)
Richard Jones <richard@users.sourceforge.net>
parents: 351
diff changeset
891 return
351
6932067a8f31 More HTML compliance fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 350
diff changeset
892
6932067a8f31 More HTML compliance fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 350
diff changeset
893 w('<tr class="location-bar"><th>&nbsp;</th>')
6932067a8f31 More HTML compliance fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 350
diff changeset
894 for name in names:
6932067a8f31 More HTML compliance fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 350
diff changeset
895 w('<th>%s</th>'%name.capitalize())
6932067a8f31 More HTML compliance fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 350
diff changeset
896 w('</tr>\n')
307
dac78e092228 CGI interface view customisation section may now be hidden
Richard Jones <richard@users.sourceforge.net>
parents: 306
diff changeset
897
351
6932067a8f31 More HTML compliance fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 350
diff changeset
898 # Filter
6932067a8f31 More HTML compliance fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 350
diff changeset
899 if all_filters:
488
ab9e236cd524 I18N'ification
Richard Jones <richard@users.sourceforge.net>
parents: 467
diff changeset
900 w(_('<tr><th width="1%" align=right class="location-bar">Filters</th>\n'))
351
6932067a8f31 More HTML compliance fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 350
diff changeset
901 for name in names:
6932067a8f31 More HTML compliance fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 350
diff changeset
902 if name not in all_filters:
6932067a8f31 More HTML compliance fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 350
diff changeset
903 w('<td>&nbsp;</td>')
6932067a8f31 More HTML compliance fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 350
diff changeset
904 continue
6932067a8f31 More HTML compliance fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 350
diff changeset
905 if name in filter: checked=' checked'
6932067a8f31 More HTML compliance fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 350
diff changeset
906 else: checked=''
6932067a8f31 More HTML compliance fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 350
diff changeset
907 w('<td align=middle>\n')
6932067a8f31 More HTML compliance fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 350
diff changeset
908 w(' <input type="checkbox" name=":filter" value="%s" '
6932067a8f31 More HTML compliance fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 350
diff changeset
909 '%s></td>\n'%(name, checked))
6932067a8f31 More HTML compliance fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 350
diff changeset
910 w('</tr>\n')
318
e18dd7227780 Re-enabled login and registration access...
Richard Jones <richard@users.sourceforge.net>
parents: 316
diff changeset
911
351
6932067a8f31 More HTML compliance fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 350
diff changeset
912 # Columns
6932067a8f31 More HTML compliance fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 350
diff changeset
913 if all_columns:
488
ab9e236cd524 I18N'ification
Richard Jones <richard@users.sourceforge.net>
parents: 467
diff changeset
914 w(_('<tr><th width="1%" align=right class="location-bar">Columns</th>\n'))
351
6932067a8f31 More HTML compliance fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 350
diff changeset
915 for name in names:
6932067a8f31 More HTML compliance fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 350
diff changeset
916 if name not in all_columns:
6932067a8f31 More HTML compliance fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 350
diff changeset
917 w('<td>&nbsp;</td>')
6932067a8f31 More HTML compliance fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 350
diff changeset
918 continue
6932067a8f31 More HTML compliance fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 350
diff changeset
919 if name in columns: checked=' checked'
6932067a8f31 More HTML compliance fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 350
diff changeset
920 else: checked=''
6932067a8f31 More HTML compliance fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 350
diff changeset
921 w('<td align=middle>\n')
6932067a8f31 More HTML compliance fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 350
diff changeset
922 w(' <input type="checkbox" name=":columns" value="%s"'
6932067a8f31 More HTML compliance fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 350
diff changeset
923 '%s></td>\n'%(name, checked))
6932067a8f31 More HTML compliance fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 350
diff changeset
924 w('</tr>\n')
318
e18dd7227780 Re-enabled login and registration access...
Richard Jones <richard@users.sourceforge.net>
parents: 316
diff changeset
925
351
6932067a8f31 More HTML compliance fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 350
diff changeset
926 # Grouping
488
ab9e236cd524 I18N'ification
Richard Jones <richard@users.sourceforge.net>
parents: 467
diff changeset
927 w(_('<tr><th width="1%" align=right class="location-bar">Grouping</th>\n'))
351
6932067a8f31 More HTML compliance fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 350
diff changeset
928 for name in names:
6932067a8f31 More HTML compliance fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 350
diff changeset
929 prop = self.properties[name]
6932067a8f31 More HTML compliance fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 350
diff changeset
930 if name not in all_columns:
6932067a8f31 More HTML compliance fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 350
diff changeset
931 w('<td>&nbsp;</td>')
6932067a8f31 More HTML compliance fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 350
diff changeset
932 continue
6932067a8f31 More HTML compliance fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 350
diff changeset
933 if name in group: checked=' checked'
6932067a8f31 More HTML compliance fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 350
diff changeset
934 else: checked=''
6932067a8f31 More HTML compliance fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 350
diff changeset
935 w('<td align=middle>\n')
6932067a8f31 More HTML compliance fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 350
diff changeset
936 w(' <input type="checkbox" name=":group" value="%s"'
6932067a8f31 More HTML compliance fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 350
diff changeset
937 '%s></td>\n'%(name, checked))
6932067a8f31 More HTML compliance fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 350
diff changeset
938 w('</tr>\n')
318
e18dd7227780 Re-enabled login and registration access...
Richard Jones <richard@users.sourceforge.net>
parents: 316
diff changeset
939
351
6932067a8f31 More HTML compliance fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 350
diff changeset
940 w('<tr class="location-bar"><td width="1%">&nbsp;</td>')
6932067a8f31 More HTML compliance fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 350
diff changeset
941 w('<td colspan="%s">'%len(names))
488
ab9e236cd524 I18N'ification
Richard Jones <richard@users.sourceforge.net>
parents: 467
diff changeset
942 w(_('<input type="submit" name="action" value="Redisplay"></td>'))
351
6932067a8f31 More HTML compliance fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 350
diff changeset
943 w('</tr>\n')
6932067a8f31 More HTML compliance fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 350
diff changeset
944 w('</table>\n')
307
dac78e092228 CGI interface view customisation section may now be hidden
Richard Jones <richard@users.sourceforge.net>
parents: 306
diff changeset
945
411
a6088556e9ba Features and fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 408
diff changeset
946 # and the outer table
a6088556e9ba Features and fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 408
diff changeset
947 w('</td></tr></table>')
a6088556e9ba Features and fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 408
diff changeset
948
307
dac78e092228 CGI interface view customisation section may now be hidden
Richard Jones <richard@users.sourceforge.net>
parents: 306
diff changeset
949
318
e18dd7227780 Re-enabled login and registration access...
Richard Jones <richard@users.sourceforge.net>
parents: 316
diff changeset
950 def sortby(self, sort_name, filterspec, columns, filter, group, sort):
e18dd7227780 Re-enabled login and registration access...
Richard Jones <richard@users.sourceforge.net>
parents: 316
diff changeset
951 l = []
e18dd7227780 Re-enabled login and registration access...
Richard Jones <richard@users.sourceforge.net>
parents: 316
diff changeset
952 w = l.append
e18dd7227780 Re-enabled login and registration access...
Richard Jones <richard@users.sourceforge.net>
parents: 316
diff changeset
953 for k, v in filterspec.items():
e18dd7227780 Re-enabled login and registration access...
Richard Jones <richard@users.sourceforge.net>
parents: 316
diff changeset
954 k = urllib.quote(k)
e18dd7227780 Re-enabled login and registration access...
Richard Jones <richard@users.sourceforge.net>
parents: 316
diff changeset
955 if type(v) == type([]):
e18dd7227780 Re-enabled login and registration access...
Richard Jones <richard@users.sourceforge.net>
parents: 316
diff changeset
956 w('%s=%s'%(k, ','.join(map(urllib.quote, v))))
e18dd7227780 Re-enabled login and registration access...
Richard Jones <richard@users.sourceforge.net>
parents: 316
diff changeset
957 else:
e18dd7227780 Re-enabled login and registration access...
Richard Jones <richard@users.sourceforge.net>
parents: 316
diff changeset
958 w('%s=%s'%(k, urllib.quote(v)))
e18dd7227780 Re-enabled login and registration access...
Richard Jones <richard@users.sourceforge.net>
parents: 316
diff changeset
959 if columns:
e18dd7227780 Re-enabled login and registration access...
Richard Jones <richard@users.sourceforge.net>
parents: 316
diff changeset
960 w(':columns=%s'%','.join(map(urllib.quote, columns)))
e18dd7227780 Re-enabled login and registration access...
Richard Jones <richard@users.sourceforge.net>
parents: 316
diff changeset
961 if filter:
e18dd7227780 Re-enabled login and registration access...
Richard Jones <richard@users.sourceforge.net>
parents: 316
diff changeset
962 w(':filter=%s'%','.join(map(urllib.quote, filter)))
e18dd7227780 Re-enabled login and registration access...
Richard Jones <richard@users.sourceforge.net>
parents: 316
diff changeset
963 if group:
e18dd7227780 Re-enabled login and registration access...
Richard Jones <richard@users.sourceforge.net>
parents: 316
diff changeset
964 w(':group=%s'%','.join(map(urllib.quote, group)))
e18dd7227780 Re-enabled login and registration access...
Richard Jones <richard@users.sourceforge.net>
parents: 316
diff changeset
965 m = []
e18dd7227780 Re-enabled login and registration access...
Richard Jones <richard@users.sourceforge.net>
parents: 316
diff changeset
966 s_dir = ''
e18dd7227780 Re-enabled login and registration access...
Richard Jones <richard@users.sourceforge.net>
parents: 316
diff changeset
967 for name in sort:
e18dd7227780 Re-enabled login and registration access...
Richard Jones <richard@users.sourceforge.net>
parents: 316
diff changeset
968 dir = name[0]
e18dd7227780 Re-enabled login and registration access...
Richard Jones <richard@users.sourceforge.net>
parents: 316
diff changeset
969 if dir == '-':
e18dd7227780 Re-enabled login and registration access...
Richard Jones <richard@users.sourceforge.net>
parents: 316
diff changeset
970 name = name[1:]
e18dd7227780 Re-enabled login and registration access...
Richard Jones <richard@users.sourceforge.net>
parents: 316
diff changeset
971 else:
e18dd7227780 Re-enabled login and registration access...
Richard Jones <richard@users.sourceforge.net>
parents: 316
diff changeset
972 dir = ''
e18dd7227780 Re-enabled login and registration access...
Richard Jones <richard@users.sourceforge.net>
parents: 316
diff changeset
973 if sort_name == name:
e18dd7227780 Re-enabled login and registration access...
Richard Jones <richard@users.sourceforge.net>
parents: 316
diff changeset
974 if dir == '-':
e18dd7227780 Re-enabled login and registration access...
Richard Jones <richard@users.sourceforge.net>
parents: 316
diff changeset
975 s_dir = ''
e18dd7227780 Re-enabled login and registration access...
Richard Jones <richard@users.sourceforge.net>
parents: 316
diff changeset
976 else:
e18dd7227780 Re-enabled login and registration access...
Richard Jones <richard@users.sourceforge.net>
parents: 316
diff changeset
977 s_dir = '-'
e18dd7227780 Re-enabled login and registration access...
Richard Jones <richard@users.sourceforge.net>
parents: 316
diff changeset
978 else:
e18dd7227780 Re-enabled login and registration access...
Richard Jones <richard@users.sourceforge.net>
parents: 316
diff changeset
979 m.append(dir+urllib.quote(name))
e18dd7227780 Re-enabled login and registration access...
Richard Jones <richard@users.sourceforge.net>
parents: 316
diff changeset
980 m.insert(0, s_dir+urllib.quote(sort_name))
e18dd7227780 Re-enabled login and registration access...
Richard Jones <richard@users.sourceforge.net>
parents: 316
diff changeset
981 # so things don't get completely out of hand, limit the sort to
e18dd7227780 Re-enabled login and registration access...
Richard Jones <richard@users.sourceforge.net>
parents: 316
diff changeset
982 # two columns
e18dd7227780 Re-enabled login and registration access...
Richard Jones <richard@users.sourceforge.net>
parents: 316
diff changeset
983 w(':sort=%s'%','.join(m[:2]))
e18dd7227780 Re-enabled login and registration access...
Richard Jones <richard@users.sourceforge.net>
parents: 316
diff changeset
984 return '&'.join(l)
307
dac78e092228 CGI interface view customisation section may now be hidden
Richard Jones <richard@users.sourceforge.net>
parents: 306
diff changeset
985
25
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
986 #
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
987 # ITEM TEMPLATES
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
988 #
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
989 class ItemTemplateReplace:
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
990 def __init__(self, globals, locals, cl, nodeid):
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
991 self.globals = globals
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
992 self.locals = locals
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
993 self.cl = cl
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
994 self.nodeid = nodeid
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
995
318
e18dd7227780 Re-enabled login and registration access...
Richard Jones <richard@users.sourceforge.net>
parents: 316
diff changeset
996 replace=re.compile(
e18dd7227780 Re-enabled login and registration access...
Richard Jones <richard@users.sourceforge.net>
parents: 316
diff changeset
997 r'((<property\s+name="(?P<name>[^>]+)">(?P<text>.+?)</property>)|'
e18dd7227780 Re-enabled login and registration access...
Richard Jones <richard@users.sourceforge.net>
parents: 316
diff changeset
998 r'(?P<display><display\s+call="(?P<command>[^"]+)">))', re.I|re.S)
e18dd7227780 Re-enabled login and registration access...
Richard Jones <richard@users.sourceforge.net>
parents: 316
diff changeset
999 def go(self, text):
e18dd7227780 Re-enabled login and registration access...
Richard Jones <richard@users.sourceforge.net>
parents: 316
diff changeset
1000 return self.replace.sub(self, text)
25
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
1001
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
1002 def __call__(self, m, filter=None, columns=None, sort=None, group=None):
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
1003 if m.group('name'):
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
1004 if self.nodeid and self.cl.get(self.nodeid, m.group('name')):
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
1005 replace = ItemTemplateReplace(self.globals, {}, self.cl,
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
1006 self.nodeid)
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
1007 return replace.go(m.group('text'))
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
1008 else:
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
1009 return ''
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
1010 if m.group('display'):
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
1011 command = m.group('command')
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
1012 return eval(command, self.globals, self.locals)
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
1013 print '*** unhandled match', m.groupdict()
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
1014
318
e18dd7227780 Re-enabled login and registration access...
Richard Jones <richard@users.sourceforge.net>
parents: 316
diff changeset
1015
e18dd7227780 Re-enabled login and registration access...
Richard Jones <richard@users.sourceforge.net>
parents: 316
diff changeset
1016 class ItemTemplate(TemplateFunctions):
e18dd7227780 Re-enabled login and registration access...
Richard Jones <richard@users.sourceforge.net>
parents: 316
diff changeset
1017 def __init__(self, client, templates, classname):
e18dd7227780 Re-enabled login and registration access...
Richard Jones <richard@users.sourceforge.net>
parents: 316
diff changeset
1018 self.client = client
524
dce4c75bef5a changed all config accesses...
Richard Jones <richard@users.sourceforge.net>
parents: 515
diff changeset
1019 self.instance = client.instance
318
e18dd7227780 Re-enabled login and registration access...
Richard Jones <richard@users.sourceforge.net>
parents: 316
diff changeset
1020 self.templates = templates
e18dd7227780 Re-enabled login and registration access...
Richard Jones <richard@users.sourceforge.net>
parents: 316
diff changeset
1021 self.classname = classname
e18dd7227780 Re-enabled login and registration access...
Richard Jones <richard@users.sourceforge.net>
parents: 316
diff changeset
1022
e18dd7227780 Re-enabled login and registration access...
Richard Jones <richard@users.sourceforge.net>
parents: 316
diff changeset
1023 # derived
e18dd7227780 Re-enabled login and registration access...
Richard Jones <richard@users.sourceforge.net>
parents: 316
diff changeset
1024 self.db = self.client.db
e18dd7227780 Re-enabled login and registration access...
Richard Jones <richard@users.sourceforge.net>
parents: 316
diff changeset
1025 self.cl = self.db.classes[self.classname]
e18dd7227780 Re-enabled login and registration access...
Richard Jones <richard@users.sourceforge.net>
parents: 316
diff changeset
1026 self.properties = self.cl.getprops()
e18dd7227780 Re-enabled login and registration access...
Richard Jones <richard@users.sourceforge.net>
parents: 316
diff changeset
1027
e18dd7227780 Re-enabled login and registration access...
Richard Jones <richard@users.sourceforge.net>
parents: 316
diff changeset
1028 TemplateFunctions.__init__(self)
25
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
1029
318
e18dd7227780 Re-enabled login and registration access...
Richard Jones <richard@users.sourceforge.net>
parents: 316
diff changeset
1030 def render(self, nodeid):
e18dd7227780 Re-enabled login and registration access...
Richard Jones <richard@users.sourceforge.net>
parents: 316
diff changeset
1031 self.nodeid = nodeid
25
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
1032
318
e18dd7227780 Re-enabled login and registration access...
Richard Jones <richard@users.sourceforge.net>
parents: 316
diff changeset
1033 if (self.properties.has_key('type') and
e18dd7227780 Re-enabled login and registration access...
Richard Jones <richard@users.sourceforge.net>
parents: 316
diff changeset
1034 self.properties.has_key('content')):
e18dd7227780 Re-enabled login and registration access...
Richard Jones <richard@users.sourceforge.net>
parents: 316
diff changeset
1035 pass
e18dd7227780 Re-enabled login and registration access...
Richard Jones <richard@users.sourceforge.net>
parents: 316
diff changeset
1036 # XXX we really want to return this as a downloadable...
e18dd7227780 Re-enabled login and registration access...
Richard Jones <richard@users.sourceforge.net>
parents: 316
diff changeset
1037 # currently I handle this at a higher level by detecting 'file'
e18dd7227780 Re-enabled login and registration access...
Richard Jones <richard@users.sourceforge.net>
parents: 316
diff changeset
1038 # designators...
25
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
1039
318
e18dd7227780 Re-enabled login and registration access...
Richard Jones <richard@users.sourceforge.net>
parents: 316
diff changeset
1040 w = self.client.write
614
5fdf95e6c20a . All forms now have "double-submit" protection...
Richard Jones <richard@users.sourceforge.net>
parents: 581
diff changeset
1041 w('<form onSubmit="return submit_once()" action="%s%s" method="POST" enctype="multipart/form-data">'%(
411
a6088556e9ba Features and fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 408
diff changeset
1042 self.classname, nodeid))
318
e18dd7227780 Re-enabled login and registration access...
Richard Jones <richard@users.sourceforge.net>
parents: 316
diff changeset
1043 s = open(os.path.join(self.templates, self.classname+'.item')).read()
e18dd7227780 Re-enabled login and registration access...
Richard Jones <richard@users.sourceforge.net>
parents: 316
diff changeset
1044 replace = ItemTemplateReplace(self.globals, locals(), self.cl, nodeid)
e18dd7227780 Re-enabled login and registration access...
Richard Jones <richard@users.sourceforge.net>
parents: 316
diff changeset
1045 w(replace.go(s))
e18dd7227780 Re-enabled login and registration access...
Richard Jones <richard@users.sourceforge.net>
parents: 316
diff changeset
1046 w('</form>')
25
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
1047
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
1048
318
e18dd7227780 Re-enabled login and registration access...
Richard Jones <richard@users.sourceforge.net>
parents: 316
diff changeset
1049 class NewItemTemplate(TemplateFunctions):
e18dd7227780 Re-enabled login and registration access...
Richard Jones <richard@users.sourceforge.net>
parents: 316
diff changeset
1050 def __init__(self, client, templates, classname):
e18dd7227780 Re-enabled login and registration access...
Richard Jones <richard@users.sourceforge.net>
parents: 316
diff changeset
1051 self.client = client
524
dce4c75bef5a changed all config accesses...
Richard Jones <richard@users.sourceforge.net>
parents: 515
diff changeset
1052 self.instance = client.instance
318
e18dd7227780 Re-enabled login and registration access...
Richard Jones <richard@users.sourceforge.net>
parents: 316
diff changeset
1053 self.templates = templates
e18dd7227780 Re-enabled login and registration access...
Richard Jones <richard@users.sourceforge.net>
parents: 316
diff changeset
1054 self.classname = classname
e18dd7227780 Re-enabled login and registration access...
Richard Jones <richard@users.sourceforge.net>
parents: 316
diff changeset
1055
e18dd7227780 Re-enabled login and registration access...
Richard Jones <richard@users.sourceforge.net>
parents: 316
diff changeset
1056 # derived
e18dd7227780 Re-enabled login and registration access...
Richard Jones <richard@users.sourceforge.net>
parents: 316
diff changeset
1057 self.db = self.client.db
e18dd7227780 Re-enabled login and registration access...
Richard Jones <richard@users.sourceforge.net>
parents: 316
diff changeset
1058 self.cl = self.db.classes[self.classname]
e18dd7227780 Re-enabled login and registration access...
Richard Jones <richard@users.sourceforge.net>
parents: 316
diff changeset
1059 self.properties = self.cl.getprops()
e18dd7227780 Re-enabled login and registration access...
Richard Jones <richard@users.sourceforge.net>
parents: 316
diff changeset
1060
e18dd7227780 Re-enabled login and registration access...
Richard Jones <richard@users.sourceforge.net>
parents: 316
diff changeset
1061 TemplateFunctions.__init__(self)
25
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
1062
318
e18dd7227780 Re-enabled login and registration access...
Richard Jones <richard@users.sourceforge.net>
parents: 316
diff changeset
1063 def render(self, form):
e18dd7227780 Re-enabled login and registration access...
Richard Jones <richard@users.sourceforge.net>
parents: 316
diff changeset
1064 self.form = form
e18dd7227780 Re-enabled login and registration access...
Richard Jones <richard@users.sourceforge.net>
parents: 316
diff changeset
1065 w = self.client.write
e18dd7227780 Re-enabled login and registration access...
Richard Jones <richard@users.sourceforge.net>
parents: 316
diff changeset
1066 c = self.classname
e18dd7227780 Re-enabled login and registration access...
Richard Jones <richard@users.sourceforge.net>
parents: 316
diff changeset
1067 try:
e18dd7227780 Re-enabled login and registration access...
Richard Jones <richard@users.sourceforge.net>
parents: 316
diff changeset
1068 s = open(os.path.join(self.templates, c+'.newitem')).read()
408
424bfccd4118 "except:" is bad, bad , bad!
Jürgen Hermann <jhermann@users.sourceforge.net>
parents: 406
diff changeset
1069 except IOError:
318
e18dd7227780 Re-enabled login and registration access...
Richard Jones <richard@users.sourceforge.net>
parents: 316
diff changeset
1070 s = open(os.path.join(self.templates, c+'.item')).read()
614
5fdf95e6c20a . All forms now have "double-submit" protection...
Richard Jones <richard@users.sourceforge.net>
parents: 581
diff changeset
1071 w('<form onSubmit="return submit_once()" action="new%s" method="POST" enctype="multipart/form-data">'%c)
318
e18dd7227780 Re-enabled login and registration access...
Richard Jones <richard@users.sourceforge.net>
parents: 316
diff changeset
1072 for key in form.keys():
e18dd7227780 Re-enabled login and registration access...
Richard Jones <richard@users.sourceforge.net>
parents: 316
diff changeset
1073 if key[0] == ':':
e18dd7227780 Re-enabled login and registration access...
Richard Jones <richard@users.sourceforge.net>
parents: 316
diff changeset
1074 value = form[key].value
e18dd7227780 Re-enabled login and registration access...
Richard Jones <richard@users.sourceforge.net>
parents: 316
diff changeset
1075 if type(value) != type([]): value = [value]
e18dd7227780 Re-enabled login and registration access...
Richard Jones <richard@users.sourceforge.net>
parents: 316
diff changeset
1076 for value in value:
e18dd7227780 Re-enabled login and registration access...
Richard Jones <richard@users.sourceforge.net>
parents: 316
diff changeset
1077 w('<input type="hidden" name="%s" value="%s">'%(key, value))
e18dd7227780 Re-enabled login and registration access...
Richard Jones <richard@users.sourceforge.net>
parents: 316
diff changeset
1078 replace = ItemTemplateReplace(self.globals, locals(), None, None)
e18dd7227780 Re-enabled login and registration access...
Richard Jones <richard@users.sourceforge.net>
parents: 316
diff changeset
1079 w(replace.go(s))
e18dd7227780 Re-enabled login and registration access...
Richard Jones <richard@users.sourceforge.net>
parents: 316
diff changeset
1080 w('</form>')
25
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
1081
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
1082 #
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
1083 # $Log: not supported by cvs2svn $
635
3d61b5d2243e Added popup help for classes using the classhelp html template function.
Richard Jones <richard@users.sourceforge.net>
parents: 634
diff changeset
1084 # Revision 1.78 2002/02/21 06:23:00 richard
3d61b5d2243e Added popup help for classes using the classhelp html template function.
Richard Jones <richard@users.sourceforge.net>
parents: 634
diff changeset
1085 # *** empty log message ***
3d61b5d2243e Added popup help for classes using the classhelp html template function.
Richard Jones <richard@users.sourceforge.net>
parents: 634
diff changeset
1086 #
634
53549c6a7b33 *** empty log message ***
Richard Jones <richard@users.sourceforge.net>
parents: 627
diff changeset
1087 # Revision 1.77 2002/02/20 05:05:29 richard
53549c6a7b33 *** empty log message ***
Richard Jones <richard@users.sourceforge.net>
parents: 627
diff changeset
1088 # . Added simple editing for classes that don't define a templated interface.
53549c6a7b33 *** empty log message ***
Richard Jones <richard@users.sourceforge.net>
parents: 627
diff changeset
1089 # - access using the admin "class list" interface
53549c6a7b33 *** empty log message ***
Richard Jones <richard@users.sourceforge.net>
parents: 627
diff changeset
1090 # - limited to admin-only
53549c6a7b33 *** empty log message ***
Richard Jones <richard@users.sourceforge.net>
parents: 627
diff changeset
1091 # - requires the csv module from object-craft (url given if it's missing)
53549c6a7b33 *** empty log message ***
Richard Jones <richard@users.sourceforge.net>
parents: 627
diff changeset
1092 #
627
952679be9e2c Added simple editing for classes that don't define a templated interface.
Richard Jones <richard@users.sourceforge.net>
parents: 623
diff changeset
1093 # Revision 1.76 2002/02/16 09:10:52 richard
952679be9e2c Added simple editing for classes that don't define a templated interface.
Richard Jones <richard@users.sourceforge.net>
parents: 623
diff changeset
1094 # oops
952679be9e2c Added simple editing for classes that don't define a templated interface.
Richard Jones <richard@users.sourceforge.net>
parents: 623
diff changeset
1095 #
623
Richard Jones <richard@users.sourceforge.net>
parents: 622
diff changeset
1096 # Revision 1.75 2002/02/16 08:43:23 richard
Richard Jones <richard@users.sourceforge.net>
parents: 622
diff changeset
1097 # . #517906 ] Attribute order in "View customisation"
Richard Jones <richard@users.sourceforge.net>
parents: 622
diff changeset
1098 #
622
1b16ddd69f31 [SF#517906] Attribute order in "View customisation"
Richard Jones <richard@users.sourceforge.net>
parents: 621
diff changeset
1099 # Revision 1.74 2002/02/16 08:39:42 richard
1b16ddd69f31 [SF#517906] Attribute order in "View customisation"
Richard Jones <richard@users.sourceforge.net>
parents: 621
diff changeset
1100 # . #516854 ] "My Issues" and redisplay
1b16ddd69f31 [SF#517906] Attribute order in "View customisation"
Richard Jones <richard@users.sourceforge.net>
parents: 621
diff changeset
1101 #
621
f333f6decdc2 [SF#516854] "My Issues" and redisplay
Richard Jones <richard@users.sourceforge.net>
parents: 617
diff changeset
1102 # Revision 1.73 2002/02/15 07:08:44 richard
f333f6decdc2 [SF#516854] "My Issues" and redisplay
Richard Jones <richard@users.sourceforge.net>
parents: 617
diff changeset
1103 # . Alternate email addresses are now available for users. See the MIGRATION
f333f6decdc2 [SF#516854] "My Issues" and redisplay
Richard Jones <richard@users.sourceforge.net>
parents: 617
diff changeset
1104 # file for info on how to activate the feature.
f333f6decdc2 [SF#516854] "My Issues" and redisplay
Richard Jones <richard@users.sourceforge.net>
parents: 617
diff changeset
1105 #
617
edd210915e64 Alternate email addresses are now available for users.
Richard Jones <richard@users.sourceforge.net>
parents: 614
diff changeset
1106 # Revision 1.72 2002/02/14 23:39:18 richard
edd210915e64 Alternate email addresses are now available for users.
Richard Jones <richard@users.sourceforge.net>
parents: 614
diff changeset
1107 # . All forms now have "double-submit" protection when Javascript is enabled
edd210915e64 Alternate email addresses are now available for users.
Richard Jones <richard@users.sourceforge.net>
parents: 614
diff changeset
1108 # on the client-side.
edd210915e64 Alternate email addresses are now available for users.
Richard Jones <richard@users.sourceforge.net>
parents: 614
diff changeset
1109 #
614
5fdf95e6c20a . All forms now have "double-submit" protection...
Richard Jones <richard@users.sourceforge.net>
parents: 581
diff changeset
1110 # Revision 1.71 2002/01/23 06:15:24 richard
5fdf95e6c20a . All forms now have "double-submit" protection...
Richard Jones <richard@users.sourceforge.net>
parents: 581
diff changeset
1111 # real (non-string, duh) sorting of lists by node id
5fdf95e6c20a . All forms now have "double-submit" protection...
Richard Jones <richard@users.sourceforge.net>
parents: 581
diff changeset
1112 #
581
137d7fc5234d real (non-string, duh) sorting of lists by node id
Richard Jones <richard@users.sourceforge.net>
parents: 577
diff changeset
1113 # Revision 1.70 2002/01/23 05:47:57 richard
137d7fc5234d real (non-string, duh) sorting of lists by node id
Richard Jones <richard@users.sourceforge.net>
parents: 577
diff changeset
1114 # more HTML template cleanup and unit tests
137d7fc5234d real (non-string, duh) sorting of lists by node id
Richard Jones <richard@users.sourceforge.net>
parents: 577
diff changeset
1115 #
577
334ae707ebfc more HTML template cleanup and unit tests
Richard Jones <richard@users.sourceforge.net>
parents: 576
diff changeset
1116 # Revision 1.69 2002/01/23 05:10:27 richard
334ae707ebfc more HTML template cleanup and unit tests
Richard Jones <richard@users.sourceforge.net>
parents: 576
diff changeset
1117 # More HTML template cleanup and unit tests.
334ae707ebfc more HTML template cleanup and unit tests
Richard Jones <richard@users.sourceforge.net>
parents: 576
diff changeset
1118 # - download() now implemented correctly, replacing link(is_download=1) [fixed in the
334ae707ebfc more HTML template cleanup and unit tests
Richard Jones <richard@users.sourceforge.net>
parents: 576
diff changeset
1119 # templates, but link(is_download=1) will still work for existing templates]
334ae707ebfc more HTML template cleanup and unit tests
Richard Jones <richard@users.sourceforge.net>
parents: 576
diff changeset
1120 #
576
f98f37697f4c More HTML template cleanup and unit tests.
Richard Jones <richard@users.sourceforge.net>
parents: 575
diff changeset
1121 # Revision 1.68 2002/01/22 22:55:28 richard
f98f37697f4c More HTML template cleanup and unit tests.
Richard Jones <richard@users.sourceforge.net>
parents: 575
diff changeset
1122 # . htmltemplate list() wasn't sorting...
f98f37697f4c More HTML template cleanup and unit tests.
Richard Jones <richard@users.sourceforge.net>
parents: 575
diff changeset
1123 #
575
2df17627528d htmltemplate list() wasn't sorting...
Richard Jones <richard@users.sourceforge.net>
parents: 574
diff changeset
1124 # Revision 1.67 2002/01/22 22:46:22 richard
2df17627528d htmltemplate list() wasn't sorting...
Richard Jones <richard@users.sourceforge.net>
parents: 574
diff changeset
1125 # more htmltemplate cleanups and unit tests
2df17627528d htmltemplate list() wasn't sorting...
Richard Jones <richard@users.sourceforge.net>
parents: 574
diff changeset
1126 #
574
d41d94511170 more htmltemplate cleanups and unit tests
Richard Jones <richard@users.sourceforge.net>
parents: 568
diff changeset
1127 # Revision 1.66 2002/01/22 06:35:40 richard
d41d94511170 more htmltemplate cleanups and unit tests
Richard Jones <richard@users.sourceforge.net>
parents: 568
diff changeset
1128 # more htmltemplate tests and cleanup
d41d94511170 more htmltemplate cleanups and unit tests
Richard Jones <richard@users.sourceforge.net>
parents: 568
diff changeset
1129 #
568
c7ead967db85 more htmltemplate tests and cleanup
Richard Jones <richard@users.sourceforge.net>
parents: 563
diff changeset
1130 # Revision 1.65 2002/01/22 00:12:06 richard
c7ead967db85 more htmltemplate tests and cleanup
Richard Jones <richard@users.sourceforge.net>
parents: 563
diff changeset
1131 # Wrote more unit tests for htmltemplate, and while I was at it, I polished
c7ead967db85 more htmltemplate tests and cleanup
Richard Jones <richard@users.sourceforge.net>
parents: 563
diff changeset
1132 # off the implementation of some of the functions so they behave sanely.
c7ead967db85 more htmltemplate tests and cleanup
Richard Jones <richard@users.sourceforge.net>
parents: 563
diff changeset
1133 #
563
0f58d6a35a8b Wrote more unit tests for htmltemplate...
Richard Jones <richard@users.sourceforge.net>
parents: 558
diff changeset
1134 # Revision 1.64 2002/01/21 03:25:59 richard
0f58d6a35a8b Wrote more unit tests for htmltemplate...
Richard Jones <richard@users.sourceforge.net>
parents: 558
diff changeset
1135 # oops
0f58d6a35a8b Wrote more unit tests for htmltemplate...
Richard Jones <richard@users.sourceforge.net>
parents: 558
diff changeset
1136 #
558
Richard Jones <richard@users.sourceforge.net>
parents: 556
diff changeset
1137 # Revision 1.63 2002/01/21 02:59:10 richard
Richard Jones <richard@users.sourceforge.net>
parents: 556
diff changeset
1138 # Fixed up the HTML display of history so valid links are actually displayed.
Richard Jones <richard@users.sourceforge.net>
parents: 556
diff changeset
1139 # Oh for some unit tests! :(
Richard Jones <richard@users.sourceforge.net>
parents: 556
diff changeset
1140 #
556
50359de2800b Fixed up the HTML display of history so valid links are actually displayed.
Richard Jones <richard@users.sourceforge.net>
parents: 554
diff changeset
1141 # Revision 1.62 2002/01/18 08:36:12 grubert
50359de2800b Fixed up the HTML display of history so valid links are actually displayed.
Richard Jones <richard@users.sourceforge.net>
parents: 554
diff changeset
1142 # . add nowrap to history table date cell i.e. <td nowrap ...
50359de2800b Fixed up the HTML display of history so valid links are actually displayed.
Richard Jones <richard@users.sourceforge.net>
parents: 554
diff changeset
1143 #
554
7e7b4183a8bd add nowrap to history table date cell i.e. <td nowrap ...
Engelbert Gruber <grubert@users.sourceforge.net>
parents: 552
diff changeset
1144 # Revision 1.61 2002/01/17 23:04:53 richard
7e7b4183a8bd add nowrap to history table date cell i.e. <td nowrap ...
Engelbert Gruber <grubert@users.sourceforge.net>
parents: 552
diff changeset
1145 # . much nicer history display (actualy real handling of property types etc)
7e7b4183a8bd add nowrap to history table date cell i.e. <td nowrap ...
Engelbert Gruber <grubert@users.sourceforge.net>
parents: 552
diff changeset
1146 #
552
0f8734a5a004 much nicer history display (actualy real handling of property types etc)
Richard Jones <richard@users.sourceforge.net>
parents: 548
diff changeset
1147 # Revision 1.60 2002/01/17 08:48:19 grubert
0f8734a5a004 much nicer history display (actualy real handling of property types etc)
Richard Jones <richard@users.sourceforge.net>
parents: 548
diff changeset
1148 # . display superseder as html link in history.
0f8734a5a004 much nicer history display (actualy real handling of property types etc)
Richard Jones <richard@users.sourceforge.net>
parents: 548
diff changeset
1149 #
548
3f25182ed425 display superseder as html link in history.
Engelbert Gruber <grubert@users.sourceforge.net>
parents: 547
diff changeset
1150 # Revision 1.59 2002/01/17 07:58:24 grubert
3f25182ed425 display superseder as html link in history.
Engelbert Gruber <grubert@users.sourceforge.net>
parents: 547
diff changeset
1151 # . display links a html link in history.
3f25182ed425 display superseder as html link in history.
Engelbert Gruber <grubert@users.sourceforge.net>
parents: 547
diff changeset
1152 #
547
e4ef6df2345c display links a html link in history.
Engelbert Gruber <grubert@users.sourceforge.net>
parents: 538
diff changeset
1153 # Revision 1.58 2002/01/15 00:50:03 richard
e4ef6df2345c display links a html link in history.
Engelbert Gruber <grubert@users.sourceforge.net>
parents: 538
diff changeset
1154 # #502949 ] index view for non-issues and redisplay
e4ef6df2345c display links a html link in history.
Engelbert Gruber <grubert@users.sourceforge.net>
parents: 538
diff changeset
1155 #
538
67379bcc5da4 [SF#502949] index view for non-issues and redisplay
Richard Jones <richard@users.sourceforge.net>
parents: 535
diff changeset
1156 # Revision 1.57 2002/01/14 23:31:21 richard
67379bcc5da4 [SF#502949] index view for non-issues and redisplay
Richard Jones <richard@users.sourceforge.net>
parents: 535
diff changeset
1157 # reverted the change that had plain() hyperlinking the link displays -
67379bcc5da4 [SF#502949] index view for non-issues and redisplay
Richard Jones <richard@users.sourceforge.net>
parents: 535
diff changeset
1158 # that's what link() is for!
67379bcc5da4 [SF#502949] index view for non-issues and redisplay
Richard Jones <richard@users.sourceforge.net>
parents: 535
diff changeset
1159 #
535
78711b29c746 reverted the change that had plain() hyperlinking the link displays
Richard Jones <richard@users.sourceforge.net>
parents: 531
diff changeset
1160 # Revision 1.56 2002/01/14 07:04:36 richard
78711b29c746 reverted the change that had plain() hyperlinking the link displays
Richard Jones <richard@users.sourceforge.net>
parents: 531
diff changeset
1161 # . plain rendering of links in the htmltemplate now generate a hyperlink to
78711b29c746 reverted the change that had plain() hyperlinking the link displays
Richard Jones <richard@users.sourceforge.net>
parents: 531
diff changeset
1162 # the linked node's page.
78711b29c746 reverted the change that had plain() hyperlinking the link displays
Richard Jones <richard@users.sourceforge.net>
parents: 531
diff changeset
1163 # ... this allows a display very similar to bugzilla's where you can actually
78711b29c746 reverted the change that had plain() hyperlinking the link displays
Richard Jones <richard@users.sourceforge.net>
parents: 531
diff changeset
1164 # find out information about the linked node.
78711b29c746 reverted the change that had plain() hyperlinking the link displays
Richard Jones <richard@users.sourceforge.net>
parents: 531
diff changeset
1165 #
531
32c1dd156605 plain rendering of links in the htmltemplate now generate a hyperlink...
Richard Jones <richard@users.sourceforge.net>
parents: 528
diff changeset
1166 # Revision 1.55 2002/01/14 06:45:03 richard
32c1dd156605 plain rendering of links in the htmltemplate now generate a hyperlink...
Richard Jones <richard@users.sourceforge.net>
parents: 528
diff changeset
1167 # . #502953 ] nosy-like treatment of other multilinks
32c1dd156605 plain rendering of links in the htmltemplate now generate a hyperlink...
Richard Jones <richard@users.sourceforge.net>
parents: 528
diff changeset
1168 # ... had to revert most of the previous change to the multilink field
32c1dd156605 plain rendering of links in the htmltemplate now generate a hyperlink...
Richard Jones <richard@users.sourceforge.net>
parents: 528
diff changeset
1169 # display... not good.
32c1dd156605 plain rendering of links in the htmltemplate now generate a hyperlink...
Richard Jones <richard@users.sourceforge.net>
parents: 528
diff changeset
1170 #
528
72fe808ff5b8 [SF#502953] nosy-like treatment of other multilinks
Richard Jones <richard@users.sourceforge.net>
parents: 526
diff changeset
1171 # Revision 1.54 2002/01/14 05:16:51 richard
72fe808ff5b8 [SF#502953] nosy-like treatment of other multilinks
Richard Jones <richard@users.sourceforge.net>
parents: 526
diff changeset
1172 # The submit buttons need a name attribute or mozilla won't submit without a
72fe808ff5b8 [SF#502953] nosy-like treatment of other multilinks
Richard Jones <richard@users.sourceforge.net>
parents: 526
diff changeset
1173 # file upload. Yeah, that's bloody obscure. Grr.
72fe808ff5b8 [SF#502953] nosy-like treatment of other multilinks
Richard Jones <richard@users.sourceforge.net>
parents: 526
diff changeset
1174 #
526
523b22a2c021 The submit buttons need a name attribute...
Richard Jones <richard@users.sourceforge.net>
parents: 525
diff changeset
1175 # Revision 1.53 2002/01/14 04:03:32 richard
523b22a2c021 The submit buttons need a name attribute...
Richard Jones <richard@users.sourceforge.net>
parents: 525
diff changeset
1176 # How about that ... date fields have never worked ...
523b22a2c021 The submit buttons need a name attribute...
Richard Jones <richard@users.sourceforge.net>
parents: 525
diff changeset
1177 #
525
d046cc4ba7d3 How about that ... date fields have never worked ...
Richard Jones <richard@users.sourceforge.net>
parents: 524
diff changeset
1178 # Revision 1.52 2002/01/14 02:20:14 richard
d046cc4ba7d3 How about that ... date fields have never worked ...
Richard Jones <richard@users.sourceforge.net>
parents: 524
diff changeset
1179 # . changed all config accesses so they access either the instance or the
d046cc4ba7d3 How about that ... date fields have never worked ...
Richard Jones <richard@users.sourceforge.net>
parents: 524
diff changeset
1180 # config attriubute on the db. This means that all config is obtained from
d046cc4ba7d3 How about that ... date fields have never worked ...
Richard Jones <richard@users.sourceforge.net>
parents: 524
diff changeset
1181 # instance_config instead of the mish-mash of classes. This will make
d046cc4ba7d3 How about that ... date fields have never worked ...
Richard Jones <richard@users.sourceforge.net>
parents: 524
diff changeset
1182 # switching to a ConfigParser setup easier too, I hope.
d046cc4ba7d3 How about that ... date fields have never worked ...
Richard Jones <richard@users.sourceforge.net>
parents: 524
diff changeset
1183 #
d046cc4ba7d3 How about that ... date fields have never worked ...
Richard Jones <richard@users.sourceforge.net>
parents: 524
diff changeset
1184 # At a minimum, this makes migration a _little_ easier (a lot easier in the
d046cc4ba7d3 How about that ... date fields have never worked ...
Richard Jones <richard@users.sourceforge.net>
parents: 524
diff changeset
1185 # 0.5.0 switch, I hope!)
d046cc4ba7d3 How about that ... date fields have never worked ...
Richard Jones <richard@users.sourceforge.net>
parents: 524
diff changeset
1186 #
524
dce4c75bef5a changed all config accesses...
Richard Jones <richard@users.sourceforge.net>
parents: 515
diff changeset
1187 # Revision 1.51 2002/01/10 10:02:15 grubert
dce4c75bef5a changed all config accesses...
Richard Jones <richard@users.sourceforge.net>
parents: 515
diff changeset
1188 # In do_history: replace "." in date by " " so html wraps more sensible.
dce4c75bef5a changed all config accesses...
Richard Jones <richard@users.sourceforge.net>
parents: 515
diff changeset
1189 # Should this be done in date's string converter ?
dce4c75bef5a changed all config accesses...
Richard Jones <richard@users.sourceforge.net>
parents: 515
diff changeset
1190 #
515
59e721a72a30 In do_history: replace "." in date by " " so html wraps more sensible.
Engelbert Gruber <grubert@users.sourceforge.net>
parents: 488
diff changeset
1191 # Revision 1.50 2002/01/05 02:35:10 richard
59e721a72a30 In do_history: replace "." in date by " " so html wraps more sensible.
Engelbert Gruber <grubert@users.sourceforge.net>
parents: 488
diff changeset
1192 # I18N'ification
59e721a72a30 In do_history: replace "." in date by " " so html wraps more sensible.
Engelbert Gruber <grubert@users.sourceforge.net>
parents: 488
diff changeset
1193 #
488
ab9e236cd524 I18N'ification
Richard Jones <richard@users.sourceforge.net>
parents: 467
diff changeset
1194 # Revision 1.49 2001/12/20 15:43:01 rochecompaan
ab9e236cd524 I18N'ification
Richard Jones <richard@users.sourceforge.net>
parents: 467
diff changeset
1195 # Features added:
ab9e236cd524 I18N'ification
Richard Jones <richard@users.sourceforge.net>
parents: 467
diff changeset
1196 # . Multilink properties are now displayed as comma separated values in
ab9e236cd524 I18N'ification
Richard Jones <richard@users.sourceforge.net>
parents: 467
diff changeset
1197 # a textbox
ab9e236cd524 I18N'ification
Richard Jones <richard@users.sourceforge.net>
parents: 467
diff changeset
1198 # . The add user link is now only visible to the admin user
ab9e236cd524 I18N'ification
Richard Jones <richard@users.sourceforge.net>
parents: 467
diff changeset
1199 # . Modified the mail gateway to reject submissions from unknown
ab9e236cd524 I18N'ification
Richard Jones <richard@users.sourceforge.net>
parents: 467
diff changeset
1200 # addresses if ANONYMOUS_ACCESS is denied
ab9e236cd524 I18N'ification
Richard Jones <richard@users.sourceforge.net>
parents: 467
diff changeset
1201 #
467
103f521810f7 Features added:
Roche Compaan <rochecompaan@users.sourceforge.net>
parents: 466
diff changeset
1202 # Revision 1.48 2001/12/20 06:13:24 rochecompaan
103f521810f7 Features added:
Roche Compaan <rochecompaan@users.sourceforge.net>
parents: 466
diff changeset
1203 # Bugs fixed:
103f521810f7 Features added:
Roche Compaan <rochecompaan@users.sourceforge.net>
parents: 466
diff changeset
1204 # . Exception handling in hyperdb for strings-that-look-like numbers got
103f521810f7 Features added:
Roche Compaan <rochecompaan@users.sourceforge.net>
parents: 466
diff changeset
1205 # lost somewhere
103f521810f7 Features added:
Roche Compaan <rochecompaan@users.sourceforge.net>
parents: 466
diff changeset
1206 # . Internet Explorer submits full path for filename - we now strip away
103f521810f7 Features added:
Roche Compaan <rochecompaan@users.sourceforge.net>
parents: 466
diff changeset
1207 # the path
103f521810f7 Features added:
Roche Compaan <rochecompaan@users.sourceforge.net>
parents: 466
diff changeset
1208 # Features added:
103f521810f7 Features added:
Roche Compaan <rochecompaan@users.sourceforge.net>
parents: 466
diff changeset
1209 # . Link and multilink properties are now displayed sorted in the cgi
103f521810f7 Features added:
Roche Compaan <rochecompaan@users.sourceforge.net>
parents: 466
diff changeset
1210 # interface
103f521810f7 Features added:
Roche Compaan <rochecompaan@users.sourceforge.net>
parents: 466
diff changeset
1211 #
466
a3548136f7bb Two bug fixes and a feature.
Roche Compaan <rochecompaan@users.sourceforge.net>
parents: 411
diff changeset
1212 # Revision 1.47 2001/11/26 22:55:56 richard
a3548136f7bb Two bug fixes and a feature.
Roche Compaan <rochecompaan@users.sourceforge.net>
parents: 411
diff changeset
1213 # Feature:
a3548136f7bb Two bug fixes and a feature.
Roche Compaan <rochecompaan@users.sourceforge.net>
parents: 411
diff changeset
1214 # . Added INSTANCE_NAME to configuration - used in web and email to identify
a3548136f7bb Two bug fixes and a feature.
Roche Compaan <rochecompaan@users.sourceforge.net>
parents: 411
diff changeset
1215 # the instance.
a3548136f7bb Two bug fixes and a feature.
Roche Compaan <rochecompaan@users.sourceforge.net>
parents: 411
diff changeset
1216 # . Added EMAIL_SIGNATURE_POSITION to indicate where to place the roundup
a3548136f7bb Two bug fixes and a feature.
Roche Compaan <rochecompaan@users.sourceforge.net>
parents: 411
diff changeset
1217 # signature info in e-mails.
a3548136f7bb Two bug fixes and a feature.
Roche Compaan <rochecompaan@users.sourceforge.net>
parents: 411
diff changeset
1218 # . Some more flexibility in the mail gateway and more error handling.
a3548136f7bb Two bug fixes and a feature.
Roche Compaan <rochecompaan@users.sourceforge.net>
parents: 411
diff changeset
1219 # . Login now takes you to the page you back to the were denied access to.
a3548136f7bb Two bug fixes and a feature.
Roche Compaan <rochecompaan@users.sourceforge.net>
parents: 411
diff changeset
1220 #
a3548136f7bb Two bug fixes and a feature.
Roche Compaan <rochecompaan@users.sourceforge.net>
parents: 411
diff changeset
1221 # Fixed:
a3548136f7bb Two bug fixes and a feature.
Roche Compaan <rochecompaan@users.sourceforge.net>
parents: 411
diff changeset
1222 # . Lots of bugs, thanks Roché and others on the devel mailing list!
a3548136f7bb Two bug fixes and a feature.
Roche Compaan <rochecompaan@users.sourceforge.net>
parents: 411
diff changeset
1223 #
411
a6088556e9ba Features and fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 408
diff changeset
1224 # Revision 1.46 2001/11/24 00:53:12 jhermann
a6088556e9ba Features and fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 408
diff changeset
1225 # "except:" is bad, bad , bad!
a6088556e9ba Features and fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 408
diff changeset
1226 #
408
424bfccd4118 "except:" is bad, bad , bad!
Jürgen Hermann <jhermann@users.sourceforge.net>
parents: 406
diff changeset
1227 # Revision 1.45 2001/11/22 15:46:42 jhermann
424bfccd4118 "except:" is bad, bad , bad!
Jürgen Hermann <jhermann@users.sourceforge.net>
parents: 406
diff changeset
1228 # Added module docstrings to all modules.
424bfccd4118 "except:" is bad, bad , bad!
Jürgen Hermann <jhermann@users.sourceforge.net>
parents: 406
diff changeset
1229 #
406
bdc2ea127ae9 Added module docstrings to all modules.
Jürgen Hermann <jhermann@users.sourceforge.net>
parents: 401
diff changeset
1230 # Revision 1.44 2001/11/21 23:35:45 jhermann
bdc2ea127ae9 Added module docstrings to all modules.
Jürgen Hermann <jhermann@users.sourceforge.net>
parents: 401
diff changeset
1231 # Added globbing for win32, and sample marking in a 2nd file to test it
bdc2ea127ae9 Added module docstrings to all modules.
Jürgen Hermann <jhermann@users.sourceforge.net>
parents: 401
diff changeset
1232 #
401
a930feb07dc4 Added globbing for win32, and sample marking in a 2nd file to test it
Jürgen Hermann <jhermann@users.sourceforge.net>
parents: 398
diff changeset
1233 # Revision 1.43 2001/11/21 04:04:43 richard
a930feb07dc4 Added globbing for win32, and sample marking in a 2nd file to test it
Jürgen Hermann <jhermann@users.sourceforge.net>
parents: 398
diff changeset
1234 # *sigh* more missing value handling
a930feb07dc4 Added globbing for win32, and sample marking in a 2nd file to test it
Jürgen Hermann <jhermann@users.sourceforge.net>
parents: 398
diff changeset
1235 #
398
bbbcdee47762 *sigh* more missing value handling
Richard Jones <richard@users.sourceforge.net>
parents: 397
diff changeset
1236 # Revision 1.42 2001/11/21 03:40:54 richard
bbbcdee47762 *sigh* more missing value handling
Richard Jones <richard@users.sourceforge.net>
parents: 397
diff changeset
1237 # more new property handling
bbbcdee47762 *sigh* more missing value handling
Richard Jones <richard@users.sourceforge.net>
parents: 397
diff changeset
1238 #
397
d47818b09265 more new property handling
Richard Jones <richard@users.sourceforge.net>
parents: 392
diff changeset
1239 # Revision 1.41 2001/11/15 10:26:01 richard
d47818b09265 more new property handling
Richard Jones <richard@users.sourceforge.net>
parents: 392
diff changeset
1240 # . missing "return" in filter_section (thanks Roch'e Compaan)
d47818b09265 more new property handling
Richard Jones <richard@users.sourceforge.net>
parents: 392
diff changeset
1241 #
392
a9edec536e0a missing "return" in filter_section (thanks Roch'e Compaan)
Richard Jones <richard@users.sourceforge.net>
parents: 351
diff changeset
1242 # Revision 1.40 2001/11/03 01:56:51 richard
a9edec536e0a missing "return" in filter_section (thanks Roch'e Compaan)
Richard Jones <richard@users.sourceforge.net>
parents: 351
diff changeset
1243 # More HTML compliance fixes. This will probably fix the Netscape problem
a9edec536e0a missing "return" in filter_section (thanks Roch'e Compaan)
Richard Jones <richard@users.sourceforge.net>
parents: 351
diff changeset
1244 # too.
a9edec536e0a missing "return" in filter_section (thanks Roch'e Compaan)
Richard Jones <richard@users.sourceforge.net>
parents: 351
diff changeset
1245 #
351
6932067a8f31 More HTML compliance fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 350
diff changeset
1246 # Revision 1.39 2001/11/03 01:43:47 richard
6932067a8f31 More HTML compliance fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 350
diff changeset
1247 # Ahah! Fixed the lynx problem - there was a hidden input field misplaced.
6932067a8f31 More HTML compliance fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 350
diff changeset
1248 #
350
e8d244a98ffd Ahah! Fixed the lynx problem - there was a hidden input field misplaced.
Richard Jones <richard@users.sourceforge.net>
parents: 342
diff changeset
1249 # Revision 1.38 2001/10/31 06:58:51 richard
e8d244a98ffd Ahah! Fixed the lynx problem - there was a hidden input field misplaced.
Richard Jones <richard@users.sourceforge.net>
parents: 342
diff changeset
1250 # Added the wrap="hard" attribute to the textarea of the note field so the
e8d244a98ffd Ahah! Fixed the lynx problem - there was a hidden input field misplaced.
Richard Jones <richard@users.sourceforge.net>
parents: 342
diff changeset
1251 # messages wrap sanely.
e8d244a98ffd Ahah! Fixed the lynx problem - there was a hidden input field misplaced.
Richard Jones <richard@users.sourceforge.net>
parents: 342
diff changeset
1252 #
342
0b7d62e414b6 Added the wrap="hard" attribute to the textarea of the note field...
Richard Jones <richard@users.sourceforge.net>
parents: 340
diff changeset
1253 # Revision 1.37 2001/10/31 06:24:35 richard
0b7d62e414b6 Added the wrap="hard" attribute to the textarea of the note field...
Richard Jones <richard@users.sourceforge.net>
parents: 340
diff changeset
1254 # Added do_stext to htmltemplate, thanks Brad Clements.
0b7d62e414b6 Added the wrap="hard" attribute to the textarea of the note field...
Richard Jones <richard@users.sourceforge.net>
parents: 340
diff changeset
1255 #
340
9311fa91f478 Added do_stext to htmltemplate, thanks Brad Clements.
Richard Jones <richard@users.sourceforge.net>
parents: 332
diff changeset
1256 # Revision 1.36 2001/10/28 22:51:38 richard
9311fa91f478 Added do_stext to htmltemplate, thanks Brad Clements.
Richard Jones <richard@users.sourceforge.net>
parents: 332
diff changeset
1257 # Fixed ENOENT/WindowsError thing, thanks Juergen Hermann
9311fa91f478 Added do_stext to htmltemplate, thanks Brad Clements.
Richard Jones <richard@users.sourceforge.net>
parents: 332
diff changeset
1258 #
332
1fe356fc3d3e Fixed ENOENT/WindowsError thing, thanks Juergen Hermann
Richard Jones <richard@users.sourceforge.net>
parents: 327
diff changeset
1259 # Revision 1.35 2001/10/24 00:04:41 richard
1fe356fc3d3e Fixed ENOENT/WindowsError thing, thanks Juergen Hermann
Richard Jones <richard@users.sourceforge.net>
parents: 327
diff changeset
1260 # Removed the "infinite authentication loop", thanks Roch'e
1fe356fc3d3e Fixed ENOENT/WindowsError thing, thanks Juergen Hermann
Richard Jones <richard@users.sourceforge.net>
parents: 327
diff changeset
1261 #
327
ee8882029150 Removed the "infinite authentication loop", thanks Roch'e
Richard Jones <richard@users.sourceforge.net>
parents: 320
diff changeset
1262 # Revision 1.34 2001/10/23 22:56:36 richard
ee8882029150 Removed the "infinite authentication loop", thanks Roch'e
Richard Jones <richard@users.sourceforge.net>
parents: 320
diff changeset
1263 # Bugfix in filter "widget" placement, thanks Roch'e
ee8882029150 Removed the "infinite authentication loop", thanks Roch'e
Richard Jones <richard@users.sourceforge.net>
parents: 320
diff changeset
1264 #
320
61c42790c3f1 Bugfix in filter "widget" placement, thanks Roch'e
Richard Jones <richard@users.sourceforge.net>
parents: 318
diff changeset
1265 # Revision 1.33 2001/10/23 01:00:18 richard
61c42790c3f1 Bugfix in filter "widget" placement, thanks Roch'e
Richard Jones <richard@users.sourceforge.net>
parents: 318
diff changeset
1266 # Re-enabled login and registration access after lopping them off via
61c42790c3f1 Bugfix in filter "widget" placement, thanks Roch'e
Richard Jones <richard@users.sourceforge.net>
parents: 318
diff changeset
1267 # disabling access for anonymous users.
61c42790c3f1 Bugfix in filter "widget" placement, thanks Roch'e
Richard Jones <richard@users.sourceforge.net>
parents: 318
diff changeset
1268 # Major re-org of the htmltemplate code, cleaning it up significantly. Fixed
61c42790c3f1 Bugfix in filter "widget" placement, thanks Roch'e
Richard Jones <richard@users.sourceforge.net>
parents: 318
diff changeset
1269 # a couple of bugs while I was there. Probably introduced a couple, but
61c42790c3f1 Bugfix in filter "widget" placement, thanks Roch'e
Richard Jones <richard@users.sourceforge.net>
parents: 318
diff changeset
1270 # things seem to work OK at the moment.
61c42790c3f1 Bugfix in filter "widget" placement, thanks Roch'e
Richard Jones <richard@users.sourceforge.net>
parents: 318
diff changeset
1271 #
318
e18dd7227780 Re-enabled login and registration access...
Richard Jones <richard@users.sourceforge.net>
parents: 316
diff changeset
1272 # Revision 1.32 2001/10/22 03:25:01 richard
e18dd7227780 Re-enabled login and registration access...
Richard Jones <richard@users.sourceforge.net>
parents: 316
diff changeset
1273 # Added configuration for:
e18dd7227780 Re-enabled login and registration access...
Richard Jones <richard@users.sourceforge.net>
parents: 316
diff changeset
1274 # . anonymous user access and registration (deny/allow)
e18dd7227780 Re-enabled login and registration access...
Richard Jones <richard@users.sourceforge.net>
parents: 316
diff changeset
1275 # . filter "widget" location on index page (top, bottom, both)
e18dd7227780 Re-enabled login and registration access...
Richard Jones <richard@users.sourceforge.net>
parents: 316
diff changeset
1276 # Updated some documentation.
e18dd7227780 Re-enabled login and registration access...
Richard Jones <richard@users.sourceforge.net>
parents: 316
diff changeset
1277 #
316
c0ca7f35e0c5 Added configuration for:
Richard Jones <richard@users.sourceforge.net>
parents: 313
diff changeset
1278 # Revision 1.31 2001/10/21 07:26:35 richard
c0ca7f35e0c5 Added configuration for:
Richard Jones <richard@users.sourceforge.net>
parents: 313
diff changeset
1279 # feature #473127: Filenames. I modified the file.index and htmltemplate
c0ca7f35e0c5 Added configuration for:
Richard Jones <richard@users.sourceforge.net>
parents: 313
diff changeset
1280 # source so that the filename is used in the link and the creation
c0ca7f35e0c5 Added configuration for:
Richard Jones <richard@users.sourceforge.net>
parents: 313
diff changeset
1281 # information is displayed.
c0ca7f35e0c5 Added configuration for:
Richard Jones <richard@users.sourceforge.net>
parents: 313
diff changeset
1282 #
313
489b70c37f32 feature [SF#473127]: Filenames.
Richard Jones <richard@users.sourceforge.net>
parents: 312
diff changeset
1283 # Revision 1.30 2001/10/21 04:44:50 richard
489b70c37f32 feature [SF#473127]: Filenames.
Richard Jones <richard@users.sourceforge.net>
parents: 312
diff changeset
1284 # bug #473124: UI inconsistency with Link fields.
489b70c37f32 feature [SF#473127]: Filenames.
Richard Jones <richard@users.sourceforge.net>
parents: 312
diff changeset
1285 # This also prompted me to fix a fairly long-standing usability issue -
489b70c37f32 feature [SF#473127]: Filenames.
Richard Jones <richard@users.sourceforge.net>
parents: 312
diff changeset
1286 # that of being able to turn off certain filters.
489b70c37f32 feature [SF#473127]: Filenames.
Richard Jones <richard@users.sourceforge.net>
parents: 312
diff changeset
1287 #
312
5a2c43891c20 [SF#473124]: UI inconsistency with Link fields.
Richard Jones <richard@users.sourceforge.net>
parents: 307
diff changeset
1288 # Revision 1.29 2001/10/21 00:17:56 richard
5a2c43891c20 [SF#473124]: UI inconsistency with Link fields.
Richard Jones <richard@users.sourceforge.net>
parents: 307
diff changeset
1289 # CGI interface view customisation section may now be hidden (patch from
5a2c43891c20 [SF#473124]: UI inconsistency with Link fields.
Richard Jones <richard@users.sourceforge.net>
parents: 307
diff changeset
1290 # Roch'e Compaan.)
5a2c43891c20 [SF#473124]: UI inconsistency with Link fields.
Richard Jones <richard@users.sourceforge.net>
parents: 307
diff changeset
1291 #
307
dac78e092228 CGI interface view customisation section may now be hidden
Richard Jones <richard@users.sourceforge.net>
parents: 306
diff changeset
1292 # Revision 1.28 2001/10/21 00:00:16 richard
dac78e092228 CGI interface view customisation section may now be hidden
Richard Jones <richard@users.sourceforge.net>
parents: 306
diff changeset
1293 # Fixed Checklist function - wasn't always working on a list.
dac78e092228 CGI interface view customisation section may now be hidden
Richard Jones <richard@users.sourceforge.net>
parents: 306
diff changeset
1294 #
306
36ae7ffb8a42 Fixed Checklist function - wasn't always working on a list.
Richard Jones <richard@users.sourceforge.net>
parents: 303
diff changeset
1295 # Revision 1.27 2001/10/20 12:13:44 richard
36ae7ffb8a42 Fixed Checklist function - wasn't always working on a list.
Richard Jones <richard@users.sourceforge.net>
parents: 303
diff changeset
1296 # Fixed grouping of non-str properties (thanks Roch'e Compaan)
36ae7ffb8a42 Fixed Checklist function - wasn't always working on a list.
Richard Jones <richard@users.sourceforge.net>
parents: 303
diff changeset
1297 #
303
3d5031f834f0 Fixed grouping of non-str properties (thanks Roch'e Compaan)
Richard Jones <richard@users.sourceforge.net>
parents: 292
diff changeset
1298 # Revision 1.26 2001/10/14 10:55:00 richard
3d5031f834f0 Fixed grouping of non-str properties (thanks Roch'e Compaan)
Richard Jones <richard@users.sourceforge.net>
parents: 292
diff changeset
1299 # Handle empty strings in HTML template Link function
3d5031f834f0 Fixed grouping of non-str properties (thanks Roch'e Compaan)
Richard Jones <richard@users.sourceforge.net>
parents: 292
diff changeset
1300 #
292
4340cdc694d4 Handle empty strings in HTML template Link function
Richard Jones <richard@users.sourceforge.net>
parents: 270
diff changeset
1301 # Revision 1.25 2001/10/09 07:25:59 richard
4340cdc694d4 Handle empty strings in HTML template Link function
Richard Jones <richard@users.sourceforge.net>
parents: 270
diff changeset
1302 # Added the Password property type. See "pydoc roundup.password" for
4340cdc694d4 Handle empty strings in HTML template Link function
Richard Jones <richard@users.sourceforge.net>
parents: 270
diff changeset
1303 # implementation details. Have updated some of the documentation too.
4340cdc694d4 Handle empty strings in HTML template Link function
Richard Jones <richard@users.sourceforge.net>
parents: 270
diff changeset
1304 #
270
a4241ddd22d7 Added the Password property type.
Richard Jones <richard@users.sourceforge.net>
parents: 250
diff changeset
1305 # Revision 1.24 2001/09/27 06:45:58 richard
a4241ddd22d7 Added the Password property type.
Richard Jones <richard@users.sourceforge.net>
parents: 250
diff changeset
1306 # *gak* ... xmp is Old Skool apparently. Am using pre again by have the option
a4241ddd22d7 Added the Password property type.
Richard Jones <richard@users.sourceforge.net>
parents: 250
diff changeset
1307 # on the plain() template function to escape the text for HTML.
a4241ddd22d7 Added the Password property type.
Richard Jones <richard@users.sourceforge.net>
parents: 250
diff changeset
1308 #
250
1d428068485c *gak* ... xmp is Old Skool apparently.
Richard Jones <richard@users.sourceforge.net>
parents: 245
diff changeset
1309 # Revision 1.23 2001/09/10 09:47:18 richard
1d428068485c *gak* ... xmp is Old Skool apparently.
Richard Jones <richard@users.sourceforge.net>
parents: 245
diff changeset
1310 # Fixed bug in the generation of links to Link/Multilink in indexes.
1d428068485c *gak* ... xmp is Old Skool apparently.
Richard Jones <richard@users.sourceforge.net>
parents: 245
diff changeset
1311 # (thanks Hubert Hoegl)
1d428068485c *gak* ... xmp is Old Skool apparently.
Richard Jones <richard@users.sourceforge.net>
parents: 245
diff changeset
1312 # Added AssignedTo to the "classic" schema's item page.
1d428068485c *gak* ... xmp is Old Skool apparently.
Richard Jones <richard@users.sourceforge.net>
parents: 245
diff changeset
1313 #
245
8a0d548c07a1 Fixed bug in the generation of links to Link/Multilink in indexes.
Richard Jones <richard@users.sourceforge.net>
parents: 244
diff changeset
1314 # Revision 1.22 2001/08/30 06:01:17 richard
8a0d548c07a1 Fixed bug in the generation of links to Link/Multilink in indexes.
Richard Jones <richard@users.sourceforge.net>
parents: 244
diff changeset
1315 # Fixed missing import in mailgw :(
8a0d548c07a1 Fixed bug in the generation of links to Link/Multilink in indexes.
Richard Jones <richard@users.sourceforge.net>
parents: 244
diff changeset
1316 #
244
6bf584784e31 Fixed missing import in mailgw :(
Richard Jones <richard@users.sourceforge.net>
parents: 231
diff changeset
1317 # Revision 1.21 2001/08/16 07:34:59 richard
6bf584784e31 Fixed missing import in mailgw :(
Richard Jones <richard@users.sourceforge.net>
parents: 231
diff changeset
1318 # better CGI text searching - but hidden filter fields are disappearing...
6bf584784e31 Fixed missing import in mailgw :(
Richard Jones <richard@users.sourceforge.net>
parents: 231
diff changeset
1319 #
231
afd428ba6523 better CGI text searching - but hidden filter fields are disappearing...
Richard Jones <richard@users.sourceforge.net>
parents: 228
diff changeset
1320 # Revision 1.20 2001/08/15 23:43:18 richard
afd428ba6523 better CGI text searching - but hidden filter fields are disappearing...
Richard Jones <richard@users.sourceforge.net>
parents: 228
diff changeset
1321 # Fixed some isFooTypes that I missed.
afd428ba6523 better CGI text searching - but hidden filter fields are disappearing...
Richard Jones <richard@users.sourceforge.net>
parents: 228
diff changeset
1322 # Refactored some code in the CGI code.
afd428ba6523 better CGI text searching - but hidden filter fields are disappearing...
Richard Jones <richard@users.sourceforge.net>
parents: 228
diff changeset
1323 #
228
1d1848c99abe Fixed some isFooTypes that I missed.
Richard Jones <richard@users.sourceforge.net>
parents: 224
diff changeset
1324 # Revision 1.19 2001/08/12 06:32:36 richard
1d1848c99abe Fixed some isFooTypes that I missed.
Richard Jones <richard@users.sourceforge.net>
parents: 224
diff changeset
1325 # using isinstance(blah, Foo) now instead of isFooType
1d1848c99abe Fixed some isFooTypes that I missed.
Richard Jones <richard@users.sourceforge.net>
parents: 224
diff changeset
1326 #
224
ad2c98faec97 using isinstance(blah, Foo) now instead of isFooType
Richard Jones <richard@users.sourceforge.net>
parents: 214
diff changeset
1327 # Revision 1.18 2001/08/07 00:24:42 richard
ad2c98faec97 using isinstance(blah, Foo) now instead of isFooType
Richard Jones <richard@users.sourceforge.net>
parents: 214
diff changeset
1328 # stupid typo
ad2c98faec97 using isinstance(blah, Foo) now instead of isFooType
Richard Jones <richard@users.sourceforge.net>
parents: 214
diff changeset
1329 #
214
18134bffab37 stupid typo
Richard Jones <richard@users.sourceforge.net>
parents: 213
diff changeset
1330 # Revision 1.17 2001/08/07 00:15:51 richard
18134bffab37 stupid typo
Richard Jones <richard@users.sourceforge.net>
parents: 213
diff changeset
1331 # Added the copyright/license notice to (nearly) all files at request of
18134bffab37 stupid typo
Richard Jones <richard@users.sourceforge.net>
parents: 213
diff changeset
1332 # Bizar Software.
18134bffab37 stupid typo
Richard Jones <richard@users.sourceforge.net>
parents: 213
diff changeset
1333 #
213
d45384bc6420 Added the copyright/license notice to (nearly) all files...
Richard Jones <richard@users.sourceforge.net>
parents: 171
diff changeset
1334 # Revision 1.16 2001/08/01 03:52:23 richard
d45384bc6420 Added the copyright/license notice to (nearly) all files...
Richard Jones <richard@users.sourceforge.net>
parents: 171
diff changeset
1335 # Checklist was using wrong name.
d45384bc6420 Added the copyright/license notice to (nearly) all files...
Richard Jones <richard@users.sourceforge.net>
parents: 171
diff changeset
1336 #
171
3c19bc818711 Checklist was using wrong name.
Richard Jones <richard@users.sourceforge.net>
parents: 167
diff changeset
1337 # Revision 1.15 2001/07/30 08:12:17 richard
3c19bc818711 Checklist was using wrong name.
Richard Jones <richard@users.sourceforge.net>
parents: 167
diff changeset
1338 # Added time logging and file uploading to the templates.
3c19bc818711 Checklist was using wrong name.
Richard Jones <richard@users.sourceforge.net>
parents: 167
diff changeset
1339 #
167
a49c8a2ddd26 Added time logging and file uploading to the templates.
Richard Jones <richard@users.sourceforge.net>
parents: 162
diff changeset
1340 # Revision 1.14 2001/07/30 06:17:45 richard
a49c8a2ddd26 Added time logging and file uploading to the templates.
Richard Jones <richard@users.sourceforge.net>
parents: 162
diff changeset
1341 # Features:
a49c8a2ddd26 Added time logging and file uploading to the templates.
Richard Jones <richard@users.sourceforge.net>
parents: 162
diff changeset
1342 # . Added ability for cgi newblah forms to indicate that the new node
a49c8a2ddd26 Added time logging and file uploading to the templates.
Richard Jones <richard@users.sourceforge.net>
parents: 162
diff changeset
1343 # should be linked somewhere.
a49c8a2ddd26 Added time logging and file uploading to the templates.
Richard Jones <richard@users.sourceforge.net>
parents: 162
diff changeset
1344 # Fixed:
a49c8a2ddd26 Added time logging and file uploading to the templates.
Richard Jones <richard@users.sourceforge.net>
parents: 162
diff changeset
1345 # . Fixed the agument handling for the roundup-admin find command.
a49c8a2ddd26 Added time logging and file uploading to the templates.
Richard Jones <richard@users.sourceforge.net>
parents: 162
diff changeset
1346 # . Fixed handling of summary when no note supplied for newblah. Again.
a49c8a2ddd26 Added time logging and file uploading to the templates.
Richard Jones <richard@users.sourceforge.net>
parents: 162
diff changeset
1347 # . Fixed detection of no form in htmltemplate Field display.
a49c8a2ddd26 Added time logging and file uploading to the templates.
Richard Jones <richard@users.sourceforge.net>
parents: 162
diff changeset
1348 #
162
717f12e6ccf2 Features and fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 155
diff changeset
1349 # Revision 1.13 2001/07/30 02:37:53 richard
717f12e6ccf2 Features and fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 155
diff changeset
1350 # Temporary measure until we have decent schema migration.
717f12e6ccf2 Features and fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 155
diff changeset
1351 #
155
03bdef2d645b Temporary measure until we have decent schema migration.
Richard Jones <richard@users.sourceforge.net>
parents: 141
diff changeset
1352 # Revision 1.12 2001/07/30 01:24:33 richard
03bdef2d645b Temporary measure until we have decent schema migration.
Richard Jones <richard@users.sourceforge.net>
parents: 141
diff changeset
1353 # Handles new node display now.
03bdef2d645b Temporary measure until we have decent schema migration.
Richard Jones <richard@users.sourceforge.net>
parents: 141
diff changeset
1354 #
141
5e8da9d010bd Handles new node display now.
Richard Jones <richard@users.sourceforge.net>
parents: 131
diff changeset
1355 # Revision 1.11 2001/07/29 09:31:35 richard
5e8da9d010bd Handles new node display now.
Richard Jones <richard@users.sourceforge.net>
parents: 131
diff changeset
1356 # oops
5e8da9d010bd Handles new node display now.
Richard Jones <richard@users.sourceforge.net>
parents: 131
diff changeset
1357 #
131
Richard Jones <richard@users.sourceforge.net>
parents: 130
diff changeset
1358 # Revision 1.10 2001/07/29 09:28:23 richard
Richard Jones <richard@users.sourceforge.net>
parents: 130
diff changeset
1359 # Fixed sorting by clicking on column headings.
Richard Jones <richard@users.sourceforge.net>
parents: 130
diff changeset
1360 #
130
204f99944de0 Fixed sorting by clicking on column headings.
Richard Jones <richard@users.sourceforge.net>
parents: 128
diff changeset
1361 # Revision 1.9 2001/07/29 08:27:40 richard
204f99944de0 Fixed sorting by clicking on column headings.
Richard Jones <richard@users.sourceforge.net>
parents: 128
diff changeset
1362 # Fixed handling of passed-in values in form elements (ie. during a
204f99944de0 Fixed sorting by clicking on column headings.
Richard Jones <richard@users.sourceforge.net>
parents: 128
diff changeset
1363 # drill-down)
204f99944de0 Fixed sorting by clicking on column headings.
Richard Jones <richard@users.sourceforge.net>
parents: 128
diff changeset
1364 #
128
ce36f2962b94 Fixed handling of passed-in values in form elements (ie. during a drill-down)
Richard Jones <richard@users.sourceforge.net>
parents: 127
diff changeset
1365 # Revision 1.8 2001/07/29 07:01:39 richard
ce36f2962b94 Fixed handling of passed-in values in form elements (ie. during a drill-down)
Richard Jones <richard@users.sourceforge.net>
parents: 127
diff changeset
1366 # Added vim command to all source so that we don't get no steenkin' tabs :)
ce36f2962b94 Fixed handling of passed-in values in form elements (ie. during a drill-down)
Richard Jones <richard@users.sourceforge.net>
parents: 127
diff changeset
1367 #
127
0791d13baea7 Added vim command to all source so that we don't get no steenkin' tabs :)
Richard Jones <richard@users.sourceforge.net>
parents: 123
diff changeset
1368 # Revision 1.7 2001/07/29 05:36:14 richard
0791d13baea7 Added vim command to all source so that we don't get no steenkin' tabs :)
Richard Jones <richard@users.sourceforge.net>
parents: 123
diff changeset
1369 # Cleanup of the link label generation.
0791d13baea7 Added vim command to all source so that we don't get no steenkin' tabs :)
Richard Jones <richard@users.sourceforge.net>
parents: 123
diff changeset
1370 #
123
51cce9671db0 Cleanup of the link label generation.
Richard Jones <richard@users.sourceforge.net>
parents: 119
diff changeset
1371 # Revision 1.6 2001/07/29 04:06:42 richard
51cce9671db0 Cleanup of the link label generation.
Richard Jones <richard@users.sourceforge.net>
parents: 119
diff changeset
1372 # Fixed problem in link display when Link value is None.
51cce9671db0 Cleanup of the link label generation.
Richard Jones <richard@users.sourceforge.net>
parents: 119
diff changeset
1373 #
119
ad64dade1769 Fixed problem in link display when Link value is None.
Richard Jones <richard@users.sourceforge.net>
parents: 116
diff changeset
1374 # Revision 1.5 2001/07/28 08:17:09 richard
ad64dade1769 Fixed problem in link display when Link value is None.
Richard Jones <richard@users.sourceforge.net>
parents: 116
diff changeset
1375 # fixed use of stylesheet
ad64dade1769 Fixed problem in link display when Link value is None.
Richard Jones <richard@users.sourceforge.net>
parents: 116
diff changeset
1376 #
116
c73f727208b0 fixed use of stylesheet
Richard Jones <richard@users.sourceforge.net>
parents: 113
diff changeset
1377 # Revision 1.4 2001/07/28 07:59:53 richard
c73f727208b0 fixed use of stylesheet
Richard Jones <richard@users.sourceforge.net>
parents: 113
diff changeset
1378 # Replaced errno integers with their module values.
c73f727208b0 fixed use of stylesheet
Richard Jones <richard@users.sourceforge.net>
parents: 113
diff changeset
1379 # De-tabbed templatebuilder.py
c73f727208b0 fixed use of stylesheet
Richard Jones <richard@users.sourceforge.net>
parents: 113
diff changeset
1380 #
113
2ab86442799a Replaced errno integers with their module values.
Richard Jones <richard@users.sourceforge.net>
parents: 72
diff changeset
1381 # Revision 1.3 2001/07/25 03:39:47 richard
2ab86442799a Replaced errno integers with their module values.
Richard Jones <richard@users.sourceforge.net>
parents: 72
diff changeset
1382 # Hrm - displaying links to classes that don't specify a key property. I've
2ab86442799a Replaced errno integers with their module values.
Richard Jones <richard@users.sourceforge.net>
parents: 72
diff changeset
1383 # got it defaulting to 'name', then 'title' and then a "random" property (first
2ab86442799a Replaced errno integers with their module values.
Richard Jones <richard@users.sourceforge.net>
parents: 72
diff changeset
1384 # one returned by getprops().keys().
2ab86442799a Replaced errno integers with their module values.
Richard Jones <richard@users.sourceforge.net>
parents: 72
diff changeset
1385 # Needs to be moved onto the Class I think...
2ab86442799a Replaced errno integers with their module values.
Richard Jones <richard@users.sourceforge.net>
parents: 72
diff changeset
1386 #
72
c186b637fee0 Hrm - displaying links to classes that don't specify a key property.
Richard Jones <richard@users.sourceforge.net>
parents: 26
diff changeset
1387 # Revision 1.2 2001/07/22 12:09:32 richard
c186b637fee0 Hrm - displaying links to classes that don't specify a key property.
Richard Jones <richard@users.sourceforge.net>
parents: 26
diff changeset
1388 # Final commit of Grande Splite
c186b637fee0 Hrm - displaying links to classes that don't specify a key property.
Richard Jones <richard@users.sourceforge.net>
parents: 26
diff changeset
1389 #
26
c7c14960f413 Final commit of Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents: 25
diff changeset
1390 # Revision 1.1 2001/07/22 11:58:35 richard
c7c14960f413 Final commit of Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents: 25
diff changeset
1391 # More Grande Splite
25
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
1392 #
127
0791d13baea7 Added vim command to all source so that we don't get no steenkin' tabs :)
Richard Jones <richard@users.sourceforge.net>
parents: 123
diff changeset
1393 #
0791d13baea7 Added vim command to all source so that we don't get no steenkin' tabs :)
Richard Jones <richard@users.sourceforge.net>
parents: 123
diff changeset
1394 # vim: set filetype=python ts=4 sw=4 et si

Roundup Issue Tracker: http://roundup-tracker.org/