annotate doc/templating.txt @ 957:e8aa903cbaa5

typo
author Richard Jones <richard@users.sourceforge.net>
date Tue, 20 Aug 2002 04:42:11 +0000
parents 846f2a79807d
children 715121d05b1f
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
957
Richard Jones <richard@users.sourceforge.net>
parents: 956
diff changeset
5 :Version: $Revision: 1.4 $
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
84281f7f2900 templating redesign
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
117 Then accesses through an *item*::
84281f7f2900 templating redesign
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
118
84281f7f2900 templating redesign
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
119 class HTMLItem:
84281f7f2900 templating redesign
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
120 def __getattr__(self, attr):
84281f7f2900 templating redesign
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
121 ''' return an HTMLItem instance '''
84281f7f2900 templating redesign
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
122 def history(self, ...)
84281f7f2900 templating redesign
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
123 def classhelp(self, ...)
84281f7f2900 templating redesign
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
124 def remove(self, ...)
84281f7f2900 templating redesign
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
125
84281f7f2900 templating redesign
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
126 String, Number, Date, Interval HTMLProperty
84281f7f2900 templating redesign
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
127 a wrapper object which may be stringified for the current plain() behaviour
84281f7f2900 templating redesign
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
128 and has methods emulating all the current display functions, so
84281f7f2900 templating redesign
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
129 ``item/name/plain`` would emulate the current ``call="plain()``". Also,
84281f7f2900 templating redesign
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
130 ``python:item.name.plain(name=value)`` would work just fine::
84281f7f2900 templating redesign
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
131
84281f7f2900 templating redesign
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
132 class HTMLProperty:
84281f7f2900 templating redesign
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
133 def __init__(self, instance, db, ...)
84281f7f2900 templating redesign
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
134 def __str__(self):
84281f7f2900 templating redesign
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
135 return self.plain()
84281f7f2900 templating redesign
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
136
84281f7f2900 templating redesign
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
137 class StringHTMLProperty(HTLProperty):
84281f7f2900 templating redesign
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
138 def plain(self, ...)
84281f7f2900 templating redesign
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
139 def field(self, ...)
84281f7f2900 templating redesign
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
140 def stext(self, ...)
84281f7f2900 templating redesign
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
141 def multiline(self, ...)
84281f7f2900 templating redesign
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
142 def email(self, ...)
84281f7f2900 templating redesign
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
143
84281f7f2900 templating redesign
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
144 class NumberHTMLProperty(HTMLProperty):
84281f7f2900 templating redesign
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
145 def plain(self, ...)
84281f7f2900 templating redesign
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
146 def field(self, ...)
84281f7f2900 templating redesign
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
147
84281f7f2900 templating redesign
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
148 class BooleanHTMLProperty(HTMLProperty):
84281f7f2900 templating redesign
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
149 def plain(self, ...)
84281f7f2900 templating redesign
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
150 def field(self, ...)
84281f7f2900 templating redesign
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
151
84281f7f2900 templating redesign
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
152 class DateHTMLProperty(HTMLProperty):
84281f7f2900 templating redesign
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
153 def plain(self, ...)
84281f7f2900 templating redesign
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
154 def field(self, ...)
84281f7f2900 templating redesign
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
155 def reldate(self, ...)
84281f7f2900 templating redesign
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
156
84281f7f2900 templating redesign
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
157 class IntervalHTMLProperty(HTMLProperty):
84281f7f2900 templating redesign
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
158 def plain(self, ...)
84281f7f2900 templating redesign
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
159 def field(self, ...)
84281f7f2900 templating redesign
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
160
84281f7f2900 templating redesign
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
161 Link HTMLProperty
84281f7f2900 templating redesign
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
162 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
163 the class information. Stringifying the object itself would result in the
84281f7f2900 templating redesign
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
164 value from the item being displayed. Accessing attributes of this object
84281f7f2900 templating redesign
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
165 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
166 property accessed (so item/assignedto/name would look up the user entry
84281f7f2900 templating redesign
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
167 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
168 that user)::
84281f7f2900 templating redesign
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
169
84281f7f2900 templating redesign
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
170 class LinkHTMLProperty(HTMLProperty):
84281f7f2900 templating redesign
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
171 ''' Be a HTMLItem too '''
84281f7f2900 templating redesign
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
172 def __getattr__(self, attr):
84281f7f2900 templating redesign
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
173 ''' return a new HTMLProperty '''
84281f7f2900 templating redesign
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
174 def download(self, ...)
84281f7f2900 templating redesign
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
175 def checklist(self, ...)
84281f7f2900 templating redesign
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
176
84281f7f2900 templating redesign
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
177 Multilink HTMLProperty
84281f7f2900 templating redesign
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
178 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
179 case for each entry in the multilink::
84281f7f2900 templating redesign
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
180
84281f7f2900 templating redesign
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
181 class MultilinkHTMLProperty(HTMLProperty):
84281f7f2900 templating redesign
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
182 def __len__(self):
84281f7f2900 templating redesign
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
183 ''' length of the multilink '''
84281f7f2900 templating redesign
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
184 def __getitem(self, num):
84281f7f2900 templating redesign
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
185 ''' return a new HTMLItem '''
84281f7f2900 templating redesign
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
186 def checklist(self, ...)
84281f7f2900 templating redesign
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
187 def list(self, ...)
84281f7f2900 templating redesign
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
188
84281f7f2900 templating redesign
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
189 *util*
84281f7f2900 templating redesign
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
190 the util object will handle::
84281f7f2900 templating redesign
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
191
84281f7f2900 templating redesign
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
192 class Util:
84281f7f2900 templating redesign
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
193 def __init__(self, ...)
84281f7f2900 templating redesign
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
194 def filterspec(self, ...)
84281f7f2900 templating redesign
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
195 def note(self, ...)
84281f7f2900 templating redesign
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
196 def submit(self, ...)
84281f7f2900 templating redesign
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
197
84281f7f2900 templating redesign
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
198 Action
84281f7f2900 templating redesign
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
199 ======
84281f7f2900 templating redesign
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
200
84281f7f2900 templating redesign
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
201 1. Investigate how PageTemplates would be integrated into Roundup:
84281f7f2900 templating redesign
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
202
84281f7f2900 templating redesign
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
203 - 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
204 bundling PageTemplates/TAL/ZTUtils in with Roundup, with all the
84281f7f2900 templating redesign
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
205 Zope-specific bits removed.
84281f7f2900 templating redesign
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
206 - 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
207 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
208 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
209
84281f7f2900 templating redesign
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
210 The latter may allow nicer integration with Zope itself, giving Zope
84281f7f2900 templating redesign
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
211 Roundup users access to acquired information in their templates.
84281f7f2900 templating redesign
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
212
84281f7f2900 templating redesign
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
213 2. Implement the Roundup infrastructure detailed in the `implementation`_ above.
84281f7f2900 templating redesign
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
214

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