annotate doc/templating.txt @ 959:81d860e61f0b

tweak
author Richard Jones <richard@users.sourceforge.net>
date Tue, 20 Aug 2002 05:47:47 +0000
parents 715121d05b1f
children 6b6be8818bdd
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
955
84281f7f2900 templating redesign
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
1 ==========================
84281f7f2900 templating redesign
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
2 HTML Templating Mechanisms
84281f7f2900 templating redesign
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
3 ==========================
84281f7f2900 templating redesign
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
4
959
Richard Jones <richard@users.sourceforge.net>
parents: 958
diff changeset
5 :Version: $Revision: 1.6 $
955
84281f7f2900 templating redesign
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
6
84281f7f2900 templating redesign
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
7 Current Situation and Issues
84281f7f2900 templating redesign
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
8 ============================
84281f7f2900 templating redesign
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
9
84281f7f2900 templating redesign
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
10 Syntax
84281f7f2900 templating redesign
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
11 ------
84281f7f2900 templating redesign
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
12
84281f7f2900 templating redesign
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
13 Roundup currently uses an element-based HTML-tag-alike templating syntax::
84281f7f2900 templating redesign
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
14
84281f7f2900 templating redesign
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
15 <display call="checklist('status')">
84281f7f2900 templating redesign
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
16
84281f7f2900 templating redesign
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
17 The templates were initially parsed using recursive regular expression
84281f7f2900 templating redesign
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
18 parsing, and since no template tag could be encapsulate itself, the parser
84281f7f2900 templating redesign
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
19 worked just fine. Then we got the ``<require>`` tag, which could have other
84281f7f2900 templating redesign
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
20 ``<require>`` tags inside. This forced us to move towards a more complete
84281f7f2900 templating redesign
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
21 parser, using the standard python sgmllib/htmllib parser. The downside of this
84281f7f2900 templating redesign
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
22 switch is that constructs of the form::
84281f7f2900 templating redesign
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
23
84281f7f2900 templating redesign
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
24 <tr class="row-<display call="plain('status')">">
84281f7f2900 templating redesign
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
25
84281f7f2900 templating redesign
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
26 don't parse as we'd hope. It would be almost impossible to modify the sgmllib
84281f7f2900 templating redesign
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
27 parser to parse the above "correctly", so a wholly new parser would be
84281f7f2900 templating redesign
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
28 required. That is a large undertaking, and doesn't address another couple of
84281f7f2900 templating redesign
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
29 issues that have arisen:
84281f7f2900 templating redesign
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
30
956
Richard Jones <richard@users.sourceforge.net>
parents: 955
diff changeset
31 1. the template syntax is not well-formed, and therefore is a pain to parse
Richard Jones <richard@users.sourceforge.net>
parents: 955
diff changeset
32 and doesn't play well with other tools, and
955
84281f7f2900 templating redesign
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
33 2. user requirements generally have to be anticipated and accounted for in
84281f7f2900 templating redesign
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
34 templating functions (like ``plain()`` and ``checklist()`` above), and
84281f7f2900 templating redesign
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
35 we are therefore artificially restrictive.
84281f7f2900 templating redesign
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
36
84281f7f2900 templating redesign
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
37 Arguments for switching templating systems:
84281f7f2900 templating redesign
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
38
84281f7f2900 templating redesign
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
39 *Pros*
84281f7f2900 templating redesign
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
40
84281f7f2900 templating redesign
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
41 - more flexibility in templating control and content
956
Richard Jones <richard@users.sourceforge.net>
parents: 955
diff changeset
42 - we can be well-formed
955
84281f7f2900 templating redesign
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
43
84281f7f2900 templating redesign
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
44 *Cons*
84281f7f2900 templating redesign
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
45
84281f7f2900 templating redesign
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
46 - installed user base (though they'd have to edit their templates with the
84281f7f2900 templating redesign
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
47 next release anyway)
84281f7f2900 templating redesign
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
48 - current templating system is pretty trivial, and a more flexible system
84281f7f2900 templating redesign
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
49 is likely to be more complex
84281f7f2900 templating redesign
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
50
84281f7f2900 templating redesign
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
51
84281f7f2900 templating redesign
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
52 Templates
84281f7f2900 templating redesign
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
53 ---------
84281f7f2900 templating redesign
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
54
957
Richard Jones <richard@users.sourceforge.net>
parents: 956
diff changeset
55 We should also take this opportunity to open up the flexibility of the
955
84281f7f2900 templating redesign
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
56 templates through:
84281f7f2900 templating redesign
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
57
84281f7f2900 templating redesign
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
58 1. allowing the instance to define a "page" template, which holds the overall
84281f7f2900 templating redesign
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
59 page structure, including header and footer
84281f7f2900 templating redesign
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
60
84281f7f2900 templating redesign
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
61
84281f7f2900 templating redesign
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
62
84281f7f2900 templating redesign
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
63 Possible approaches
84281f7f2900 templating redesign
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
64 ===================
84281f7f2900 templating redesign
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
65
84281f7f2900 templating redesign
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
66 Zope's PageTemplates
84281f7f2900 templating redesign
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
67 --------------------
84281f7f2900 templating redesign
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
68
84281f7f2900 templating redesign
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
69 Using Zope's PageTemplates seems to be the best approach of the lot.
84281f7f2900 templating redesign
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
70 In my opinion, it's the peak of HTML templating technology at present. With
84281f7f2900 templating redesign
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
71 appropriate infrastructure, the above two examples would read:
84281f7f2900 templating redesign
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
72
84281f7f2900 templating redesign
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
73 <span tal:replace="item/status/checklist">status checklist</span>
84281f7f2900 templating redesign
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
74
84281f7f2900 templating redesign
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
75 <tr tal:attributes="class string:row-${item/status/name}">
84281f7f2900 templating redesign
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
76
84281f7f2900 templating redesign
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
77 ... which doesn't look that much more complicated... honest...
84281f7f2900 templating redesign
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
78
84281f7f2900 templating redesign
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
79 Other fun can be had when you start playing with stuff like:
84281f7f2900 templating redesign
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
80
84281f7f2900 templating redesign
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
81 <table>
84281f7f2900 templating redesign
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
82 <tr tal:repeat="message item/msg/list">
84281f7f2900 templating redesign
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
83 <td tal:define="from message/from">
84281f7f2900 templating redesign
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
84 <a href="" tal:attributes="href string:mailto:${from/address}"
84281f7f2900 templating redesign
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
85 tal:content="from/name">mailto link</a>
84281f7f2900 templating redesign
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
86 </td>
84281f7f2900 templating redesign
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
87 <td tal:content="message/title">subject</td>
84281f7f2900 templating redesign
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
88 <td tal:content="message/created">received date</td>
84281f7f2900 templating redesign
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
89 </tr>
84281f7f2900 templating redesign
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
90 </table>
84281f7f2900 templating redesign
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
91
84281f7f2900 templating redesign
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
92
84281f7f2900 templating redesign
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
93 Implementation
84281f7f2900 templating redesign
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
94 ~~~~~~~~~~~~~~
84281f7f2900 templating redesign
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
95
84281f7f2900 templating redesign
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
96 I'm envisaging an infrastructure layer where each template has the following
84281f7f2900 templating redesign
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
97 variables defined:
84281f7f2900 templating redesign
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
98
84281f7f2900 templating redesign
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
99 *class*
84281f7f2900 templating redesign
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
100 the current class of node being displayed
84281f7f2900 templating redesign
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
101 *item*
84281f7f2900 templating redesign
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
102 the current node from the database, if we're viewing a specific node
84281f7f2900 templating redesign
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
103 (*classname*)
84281f7f2900 templating redesign
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
104 the current node is also available under its classname, so a *user* node
84281f7f2900 templating redesign
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
105 would also be available under the name *user*.
84281f7f2900 templating redesign
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
106 *form*
84281f7f2900 templating redesign
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
107 the current CGI form information
84281f7f2900 templating redesign
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
108 *instance*
84281f7f2900 templating redesign
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
109 the current instance
84281f7f2900 templating redesign
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
110 *db*
84281f7f2900 templating redesign
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
111 the current open database
84281f7f2900 templating redesign
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
112 *config*
84281f7f2900 templating redesign
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
113 the current instance config
84281f7f2900 templating redesign
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
114 *util*
84281f7f2900 templating redesign
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
115 utility methods
84281f7f2900 templating redesign
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
116
958
Richard Jones <richard@users.sourceforge.net>
parents: 957
diff changeset
117 Accesses through a class (either through *class* or *db.<classname>*):
Richard Jones <richard@users.sourceforge.net>
parents: 957
diff changeset
118
959
Richard Jones <richard@users.sourceforge.net>
parents: 958
diff changeset
119 class HTMLClass:
958
Richard Jones <richard@users.sourceforge.net>
parents: 957
diff changeset
120 def __getattr__(self, attr):
Richard Jones <richard@users.sourceforge.net>
parents: 957
diff changeset
121 ''' return an HTMLItem instance '''
Richard Jones <richard@users.sourceforge.net>
parents: 957
diff changeset
122 def classhelp(self, ...)
Richard Jones <richard@users.sourceforge.net>
parents: 957
diff changeset
123 def list(self, ...)
955
84281f7f2900 templating redesign
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
124
958
Richard Jones <richard@users.sourceforge.net>
parents: 957
diff changeset
125 Accesses through an *item*::
Richard Jones <richard@users.sourceforge.net>
parents: 957
diff changeset
126
Richard Jones <richard@users.sourceforge.net>
parents: 957
diff changeset
127 class HTMLItem:
Richard Jones <richard@users.sourceforge.net>
parents: 957
diff changeset
128 def __getattr__(self, attr):
Richard Jones <richard@users.sourceforge.net>
parents: 957
diff changeset
129 ''' return an HTMLItem instance '''
Richard Jones <richard@users.sourceforge.net>
parents: 957
diff changeset
130 def history(self, ...)
Richard Jones <richard@users.sourceforge.net>
parents: 957
diff changeset
131 def classhelp(self, ...)
Richard Jones <richard@users.sourceforge.net>
parents: 957
diff changeset
132 def remove(self, ...)
955
84281f7f2900 templating redesign
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
133
84281f7f2900 templating redesign
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
134 String, Number, Date, Interval HTMLProperty
84281f7f2900 templating redesign
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
135 a wrapper object which may be stringified for the current plain() behaviour
84281f7f2900 templating redesign
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
136 and has methods emulating all the current display functions, so
84281f7f2900 templating redesign
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
137 ``item/name/plain`` would emulate the current ``call="plain()``". Also,
84281f7f2900 templating redesign
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
138 ``python:item.name.plain(name=value)`` would work just fine::
84281f7f2900 templating redesign
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
139
958
Richard Jones <richard@users.sourceforge.net>
parents: 957
diff changeset
140 class HTMLProperty:
Richard Jones <richard@users.sourceforge.net>
parents: 957
diff changeset
141 def __init__(self, instance, db, ...)
Richard Jones <richard@users.sourceforge.net>
parents: 957
diff changeset
142 def __str__(self):
Richard Jones <richard@users.sourceforge.net>
parents: 957
diff changeset
143 return self.plain()
955
84281f7f2900 templating redesign
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
144
958
Richard Jones <richard@users.sourceforge.net>
parents: 957
diff changeset
145 class StringHTMLProperty(HTLProperty):
Richard Jones <richard@users.sourceforge.net>
parents: 957
diff changeset
146 def plain(self, ...)
Richard Jones <richard@users.sourceforge.net>
parents: 957
diff changeset
147 def field(self, ...)
Richard Jones <richard@users.sourceforge.net>
parents: 957
diff changeset
148 def stext(self, ...)
Richard Jones <richard@users.sourceforge.net>
parents: 957
diff changeset
149 def multiline(self, ...)
Richard Jones <richard@users.sourceforge.net>
parents: 957
diff changeset
150 def email(self, ...)
955
84281f7f2900 templating redesign
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
151
958
Richard Jones <richard@users.sourceforge.net>
parents: 957
diff changeset
152 class NumberHTMLProperty(HTMLProperty):
Richard Jones <richard@users.sourceforge.net>
parents: 957
diff changeset
153 def plain(self, ...)
Richard Jones <richard@users.sourceforge.net>
parents: 957
diff changeset
154 def field(self, ...)
955
84281f7f2900 templating redesign
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
155
958
Richard Jones <richard@users.sourceforge.net>
parents: 957
diff changeset
156 class BooleanHTMLProperty(HTMLProperty):
Richard Jones <richard@users.sourceforge.net>
parents: 957
diff changeset
157 def plain(self, ...)
Richard Jones <richard@users.sourceforge.net>
parents: 957
diff changeset
158 def field(self, ...)
955
84281f7f2900 templating redesign
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
159
958
Richard Jones <richard@users.sourceforge.net>
parents: 957
diff changeset
160 class DateHTMLProperty(HTMLProperty):
Richard Jones <richard@users.sourceforge.net>
parents: 957
diff changeset
161 def plain(self, ...)
Richard Jones <richard@users.sourceforge.net>
parents: 957
diff changeset
162 def field(self, ...)
Richard Jones <richard@users.sourceforge.net>
parents: 957
diff changeset
163 def reldate(self, ...)
955
84281f7f2900 templating redesign
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
164
958
Richard Jones <richard@users.sourceforge.net>
parents: 957
diff changeset
165 class IntervalHTMLProperty(HTMLProperty):
Richard Jones <richard@users.sourceforge.net>
parents: 957
diff changeset
166 def plain(self, ...)
Richard Jones <richard@users.sourceforge.net>
parents: 957
diff changeset
167 def field(self, ...)
955
84281f7f2900 templating redesign
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
168
84281f7f2900 templating redesign
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
169 Link HTMLProperty
84281f7f2900 templating redesign
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
170 the wrapper object would include the above as well as being able to access
84281f7f2900 templating redesign
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
171 the class information. Stringifying the object itself would result in the
84281f7f2900 templating redesign
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
172 value from the item being displayed. Accessing attributes of this object
84281f7f2900 templating redesign
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
173 would result in the appropriate entry from the class being queried for the
84281f7f2900 templating redesign
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
174 property accessed (so item/assignedto/name would look up the user entry
84281f7f2900 templating redesign
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
175 identified by the assignedto property on item, and then the name property of
84281f7f2900 templating redesign
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
176 that user)::
84281f7f2900 templating redesign
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
177
958
Richard Jones <richard@users.sourceforge.net>
parents: 957
diff changeset
178 class LinkHTMLProperty(HTMLProperty):
Richard Jones <richard@users.sourceforge.net>
parents: 957
diff changeset
179 ''' Be a HTMLItem too '''
Richard Jones <richard@users.sourceforge.net>
parents: 957
diff changeset
180 def __getattr__(self, attr):
Richard Jones <richard@users.sourceforge.net>
parents: 957
diff changeset
181 ''' return a new HTMLProperty '''
Richard Jones <richard@users.sourceforge.net>
parents: 957
diff changeset
182 def download(self, ...)
Richard Jones <richard@users.sourceforge.net>
parents: 957
diff changeset
183 def checklist(self, ...)
955
84281f7f2900 templating redesign
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
184
84281f7f2900 templating redesign
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
185 Multilink HTMLProperty
84281f7f2900 templating redesign
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
186 the wrapper would also be iterable, returning a wrapper object like the Link
84281f7f2900 templating redesign
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
187 case for each entry in the multilink::
84281f7f2900 templating redesign
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
188
958
Richard Jones <richard@users.sourceforge.net>
parents: 957
diff changeset
189 class MultilinkHTMLProperty(HTMLProperty):
Richard Jones <richard@users.sourceforge.net>
parents: 957
diff changeset
190 def __len__(self):
Richard Jones <richard@users.sourceforge.net>
parents: 957
diff changeset
191 ''' length of the multilink '''
Richard Jones <richard@users.sourceforge.net>
parents: 957
diff changeset
192 def __getitem(self, num):
Richard Jones <richard@users.sourceforge.net>
parents: 957
diff changeset
193 ''' return a new HTMLItem '''
Richard Jones <richard@users.sourceforge.net>
parents: 957
diff changeset
194 def checklist(self, ...)
Richard Jones <richard@users.sourceforge.net>
parents: 957
diff changeset
195 def list(self, ...)
955
84281f7f2900 templating redesign
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
196
84281f7f2900 templating redesign
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
197 *util*
84281f7f2900 templating redesign
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
198 the util object will handle::
84281f7f2900 templating redesign
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
199
958
Richard Jones <richard@users.sourceforge.net>
parents: 957
diff changeset
200 class Util:
Richard Jones <richard@users.sourceforge.net>
parents: 957
diff changeset
201 def __init__(self, ...)
Richard Jones <richard@users.sourceforge.net>
parents: 957
diff changeset
202 def filterspec(self, ...)
Richard Jones <richard@users.sourceforge.net>
parents: 957
diff changeset
203 def note(self, ...)
Richard Jones <richard@users.sourceforge.net>
parents: 957
diff changeset
204 def submit(self, ...)
955
84281f7f2900 templating redesign
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
205
84281f7f2900 templating redesign
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
206 Action
84281f7f2900 templating redesign
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
207 ======
84281f7f2900 templating redesign
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
208
84281f7f2900 templating redesign
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
209 1. Investigate how PageTemplates would be integrated into Roundup:
84281f7f2900 templating redesign
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
210
84281f7f2900 templating redesign
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
211 - we could go for a fully-divorced-from-Zope approach, which would involve
84281f7f2900 templating redesign
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
212 bundling PageTemplates/TAL/ZTUtils in with Roundup, with all the
84281f7f2900 templating redesign
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
213 Zope-specific bits removed.
84281f7f2900 templating redesign
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
214 - we could try to coexist with a Zope installation, but there the problem
84281f7f2900 templating redesign
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
215 would be that Zope includes its own copy of PageTemplates/TAL/ZTUtils and
84281f7f2900 templating redesign
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
216 we'd be installing a version in site-packages, which would be bad.
84281f7f2900 templating redesign
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
217
84281f7f2900 templating redesign
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
218 The latter may allow nicer integration with Zope itself, giving Zope
958
Richard Jones <richard@users.sourceforge.net>
parents: 957
diff changeset
219 Roundup users access to acquired information in their templates. We could
Richard Jones <richard@users.sourceforge.net>
parents: 957
diff changeset
220 get around that by modifying the ZRoundup interface to use the "real Zope"
Richard Jones <richard@users.sourceforge.net>
parents: 957
diff changeset
221 ZPT. Maybe.
955
84281f7f2900 templating redesign
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
222
958
Richard Jones <richard@users.sourceforge.net>
parents: 957
diff changeset
223 2. Implement the Roundup infrastructure described in the `implementation`_
Richard Jones <richard@users.sourceforge.net>
parents: 957
diff changeset
224 above.
955
84281f7f2900 templating redesign
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
225
958
Richard Jones <richard@users.sourceforge.net>
parents: 957
diff changeset
226

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