111 w(u'<div id="pageContent">\n') |
111 w(u'<div id="pageContent">\n') |
112 vtitle = self.req.form.get('vtitle') |
112 vtitle = self.req.form.get('vtitle') |
113 if vtitle: |
113 if vtitle: |
114 w(u'<h1 class="vtitle">%s</h1>\n' % xml_escape(vtitle)) |
114 w(u'<h1 class="vtitle">%s</h1>\n' % xml_escape(vtitle)) |
115 # display entity type restriction component |
115 # display entity type restriction component |
116 etypefilter = self.vreg.select_vobject('components', 'etypenavigation', |
116 etypefilter = self.vreg['components'].select_vobject( |
117 self.req, rset=self.rset) |
117 'etypenavigation', self.req, rset=self.rset) |
118 if etypefilter: |
118 if etypefilter: |
119 etypefilter.render(w=w) |
119 etypefilter.render(w=w) |
120 self.nav_html = UStringIO() |
120 self.nav_html = UStringIO() |
121 if view and view.need_navigation: |
121 if view and view.need_navigation: |
122 view.paginate(w=self.nav_html.write) |
122 view.paginate(w=self.nav_html.write) |
152 w(u'<body>\n') |
152 w(u'<body>\n') |
153 self.wview('header', rset=self.rset, view=view) |
153 self.wview('header', rset=self.rset, view=view) |
154 w(u'<div id="page"><table width="100%" border="0" id="mainLayout"><tr>\n') |
154 w(u'<div id="page"><table width="100%" border="0" id="mainLayout"><tr>\n') |
155 self.nav_column(view, 'left') |
155 self.nav_column(view, 'left') |
156 w(u'<td id="contentcol">\n') |
156 w(u'<td id="contentcol">\n') |
157 rqlcomp = self.vreg.select_object('components', 'rqlinput', self.req, |
157 rqlcomp = self.vreg['components'].select_object('rqlinput', self.req, |
158 rset=self.rset) |
158 rset=self.rset) |
159 if rqlcomp: |
159 if rqlcomp: |
160 rqlcomp.render(w=self.w, view=view) |
160 rqlcomp.render(w=self.w, view=view) |
161 msgcomp = self.vreg.select_object('components', 'applmessages', |
161 msgcomp = self.vreg['components'].select_object('applmessages', |
162 self.req, rset=self.rset) |
162 self.req, rset=self.rset) |
163 if msgcomp: |
163 if msgcomp: |
164 msgcomp.render(w=self.w) |
164 msgcomp.render(w=self.w) |
165 self.content_header(view) |
165 self.content_header(view) |
166 |
166 |
167 def template_footer(self, view=None): |
167 def template_footer(self, view=None): |
171 self.w(u'</tr></table></div>\n') |
171 self.w(u'</tr></table></div>\n') |
172 self.wview('footer', rset=self.rset) |
172 self.wview('footer', rset=self.rset) |
173 self.w(u'</body>') |
173 self.w(u'</body>') |
174 |
174 |
175 def nav_column(self, view, context): |
175 def nav_column(self, view, context): |
176 boxes = list(self.vreg.possible_vobjects('boxes', self.req, rset=self.rset, |
176 boxes = list(self.vreg['boxes'].possible_vobjects( |
177 view=view, context=context)) |
177 self.req, rset=self.rset, view=view, context=context)) |
178 if boxes: |
178 if boxes: |
179 self.w(u'<td class="navcol"><div class="navboxes">\n') |
179 self.w(u'<td class="navcol"><div class="navboxes">\n') |
180 for box in boxes: |
180 for box in boxes: |
181 box.render(w=self.w, view=view) |
181 box.render(w=self.w, view=view) |
182 self.w(u'</div></td>\n') |
182 self.w(u'</div></td>\n') |
198 |
198 |
199 def call(self): |
199 def call(self): |
200 """display an unexpected error""" |
200 """display an unexpected error""" |
201 self.set_request_content_type() |
201 self.set_request_content_type() |
202 self.req.reset_headers() |
202 self.req.reset_headers() |
203 view = self.vreg.select('views', 'error', self.req, rset=self.rset) |
203 view = self.vreg['views'].select('error', self.req, rset=self.rset) |
204 self.template_header(self.content_type, view, self.req._('an error occured'), |
204 self.template_header(self.content_type, view, self.req._('an error occured'), |
205 [NOINDEX, NOFOLLOW]) |
205 [NOINDEX, NOFOLLOW]) |
206 view.render(w=self.w) |
206 view.render(w=self.w) |
207 self.template_footer(view) |
207 self.template_footer(view) |
208 |
208 |
240 w(u'<body>\n') |
240 w(u'<body>\n') |
241 w(u'<div id="page">') |
241 w(u'<div id="page">') |
242 w(u'<table width="100%" height="100%" border="0"><tr>\n') |
242 w(u'<table width="100%" height="100%" border="0"><tr>\n') |
243 w(u'<td class="navcol">\n') |
243 w(u'<td class="navcol">\n') |
244 self.topleft_header() |
244 self.topleft_header() |
245 boxes = list(self.vreg.possible_vobjects('boxes', self.req, rset=self.rset, |
245 boxes = list(self.vreg['boxes'].possible_vobjects( |
246 view=view, context='left')) |
246 self.req, rset=self.rset, view=view, context='left')) |
247 if boxes: |
247 if boxes: |
248 w(u'<div class="navboxes">\n') |
248 w(u'<div class="navboxes">\n') |
249 for box in boxes: |
249 for box in boxes: |
250 box.render(w=w) |
250 box.render(w=w) |
251 self.w(u'</div>\n') |
251 self.w(u'</div>\n') |
255 vtitle = self.req.form.get('vtitle') |
255 vtitle = self.req.form.get('vtitle') |
256 if vtitle: |
256 if vtitle: |
257 w(u'<h1 class="vtitle">%s</h1>' % xml_escape(vtitle)) |
257 w(u'<h1 class="vtitle">%s</h1>' % xml_escape(vtitle)) |
258 |
258 |
259 def topleft_header(self): |
259 def topleft_header(self): |
260 logo = self.vreg.select_vobject('components', 'logo', self.req, |
260 logo = self.vreg['components'].select_vobject('logo', self.req, |
261 rset=self.rset) |
261 rset=self.rset) |
262 if logo: |
262 if logo: |
263 self.w(u'<table id="header"><tr>\n') |
263 self.w(u'<table id="header"><tr>\n') |
264 self.w(u'<td>') |
264 self.w(u'<td>') |
265 logo.render(w=self.w) |
265 logo.render(w=self.w) |
266 self.w(u'</td>\n') |
266 self.w(u'</td>\n') |
297 def javascripts(self): |
297 def javascripts(self): |
298 for jscript in self.req.external_resource('JAVASCRIPTS'): |
298 for jscript in self.req.external_resource('JAVASCRIPTS'): |
299 self.req.add_js(jscript, localfile=False) |
299 self.req.add_js(jscript, localfile=False) |
300 |
300 |
301 def alternates(self): |
301 def alternates(self): |
302 urlgetter = self.vreg.select_object('components', 'rss_feed_url', |
302 urlgetter = self.vreg['components'].select_object('rss_feed_url', |
303 self.req, rset=self.rset) |
303 self.req, rset=self.rset) |
304 if urlgetter is not None: |
304 if urlgetter is not None: |
305 self.whead(u'<link rel="alternate" type="application/rss+xml" title="RSS feed" href="%s"/>\n' |
305 self.whead(u'<link rel="alternate" type="application/rss+xml" title="RSS feed" href="%s"/>\n' |
306 % xml_escape(urlgetter.feed_url())) |
306 % xml_escape(urlgetter.feed_url())) |
307 |
307 |
327 |
327 |
328 def main_header(self, view): |
328 def main_header(self, view): |
329 """build the top menu with authentification info and the rql box""" |
329 """build the top menu with authentification info and the rql box""" |
330 self.w(u'<table id="header"><tr>\n') |
330 self.w(u'<table id="header"><tr>\n') |
331 self.w(u'<td id="firstcolumn">') |
331 self.w(u'<td id="firstcolumn">') |
332 logo = self.vreg.select_vobject('components', 'logo', |
332 logo = self.vreg['components'].select_vobject( |
333 self.req, rset=self.rset) |
333 'logo', self.req, rset=self.rset) |
334 if logo: |
334 if logo: |
335 logo.render(w=self.w) |
335 logo.render(w=self.w) |
336 self.w(u'</td>\n') |
336 self.w(u'</td>\n') |
337 # appliname and breadcrumbs |
337 # appliname and breadcrumbs |
338 self.w(u'<td id="headtext">') |
338 self.w(u'<td id="headtext">') |
339 for cid in ('appliname', 'breadcrumbs'): |
339 for cid in ('appliname', 'breadcrumbs'): |
340 comp = self.vreg.select_vobject('components', cid, |
340 comp = self.vreg['components'].select_vobject( |
341 self.req, rset=self.rset) |
341 cid, self.req, rset=self.rset) |
342 if comp: |
342 if comp: |
343 comp.render(w=self.w) |
343 comp.render(w=self.w) |
344 self.w(u'</td>') |
344 self.w(u'</td>') |
345 # logged user and help |
345 # logged user and help |
346 self.w(u'<td>\n') |
346 self.w(u'<td>\n') |
347 comp = self.vreg.select_vobject('components', 'loggeduserlink', |
347 comp = self.vreg['components'].select_vobject( |
348 self.req, rset=self.rset) |
348 'loggeduserlink', self.req, rset=self.rset) |
349 if comp: |
349 if comp: |
350 comp.render(w=self.w) |
350 comp.render(w=self.w) |
351 self.w(u'</td><td>') |
351 self.w(u'</td><td>') |
352 helpcomp = self.vreg.select_vobject('components', 'help', |
352 helpcomp = self.vreg['components'].select_vobject( |
353 self.req, rset=self.rset) |
353 'help', self.req, rset=self.rset) |
354 if helpcomp: |
354 if helpcomp: |
355 helpcomp.render(w=self.w) |
355 helpcomp.render(w=self.w) |
356 self.w(u'</td>') |
356 self.w(u'</td>') |
357 # lastcolumn |
357 # lastcolumn |
358 self.w(u'<td id="lastcolumn">') |
358 self.w(u'<td id="lastcolumn">') |
403 """ |
403 """ |
404 id = 'contentheader' |
404 id = 'contentheader' |
405 |
405 |
406 def call(self, view, **kwargs): |
406 def call(self, view, **kwargs): |
407 """by default, display informal messages in content header""" |
407 """by default, display informal messages in content header""" |
408 components = self.vreg.possible_vobjects('contentnavigation', |
408 components = self.vreg['contentnavigation'].possible_vobjects( |
409 self.req, rset=self.rset, |
409 self.req, rset=self.rset, view=view, context='navtop') |
410 view=view, context='navtop') |
|
411 if components: |
410 if components: |
412 self.w(u'<div id="contentheader">') |
411 self.w(u'<div id="contentheader">') |
413 for comp in components: |
412 for comp in components: |
414 comp.render(w=self.w, view=view) |
413 comp.render(w=self.w, view=view) |
415 self.w(u'</div><div class="clear"></div>') |
414 self.w(u'</div><div class="clear"></div>') |
420 components |
419 components |
421 """ |
420 """ |
422 id = 'contentfooter' |
421 id = 'contentfooter' |
423 |
422 |
424 def call(self, view, **kwargs): |
423 def call(self, view, **kwargs): |
425 components = self.vreg.possible_vobjects('contentnavigation', |
424 components = self.vreg['contentnavigation'].possible_vobjects( |
426 self.req, rset=self.rset, |
425 self.req, rset=self.rset, view=view, context='navbottom') |
427 view=view, context='navbottom') |
|
428 if components: |
426 if components: |
429 self.w(u'<div id="contentfooter">') |
427 self.w(u'<div id="contentfooter">') |
430 for comp in components: |
428 for comp in components: |
431 comp.render(w=self.w, view=view) |
429 comp.render(w=self.w, view=view) |
432 self.w(u'</div>') |
430 self.w(u'</div>') |