equal
deleted
inserted
replaced
11 from logilab.mtconverter import xml_escape |
11 from logilab.mtconverter import xml_escape |
12 |
12 |
13 from cubicweb.appobject import objectify_selector |
13 from cubicweb.appobject import objectify_selector |
14 from cubicweb.selectors import match_kwargs |
14 from cubicweb.selectors import match_kwargs |
15 from cubicweb.view import View, MainTemplate, NOINDEX, NOFOLLOW |
15 from cubicweb.view import View, MainTemplate, NOINDEX, NOFOLLOW |
16 from cubicweb.utils import make_uid, UStringIO, can_do_pdf_conversion |
16 from cubicweb.utils import UStringIO, can_do_pdf_conversion |
17 from cubicweb.schema import display_name |
17 from cubicweb.schema import display_name |
18 |
18 |
19 # main templates ############################################################## |
19 # main templates ############################################################## |
20 |
20 |
21 class LogInOutTemplate(MainTemplate): |
21 class LogInOutTemplate(MainTemplate): |
313 def call(self, **kwargs): |
313 def call(self, **kwargs): |
314 self.favicon() |
314 self.favicon() |
315 self.stylesheets() |
315 self.stylesheets() |
316 self.javascripts() |
316 self.javascripts() |
317 self.alternates() |
317 self.alternates() |
318 self.pageid() |
|
319 |
318 |
320 def favicon(self): |
319 def favicon(self): |
321 favicon = self._cw.external_resource('FAVICON', None) |
320 favicon = self._cw.external_resource('FAVICON', None) |
322 if favicon: |
321 if favicon: |
323 self.whead(u'<link rel="shortcut icon" href="%s"/>\n' % favicon) |
322 self.whead(u'<link rel="shortcut icon" href="%s"/>\n' % favicon) |
340 urlgetter = self._cw.vreg['components'].select_or_none('rss_feed_url', |
339 urlgetter = self._cw.vreg['components'].select_or_none('rss_feed_url', |
341 self._cw, rset=self.cw_rset) |
340 self._cw, rset=self.cw_rset) |
342 if urlgetter is not None: |
341 if urlgetter is not None: |
343 self.whead(u'<link rel="alternate" type="application/rss+xml" title="RSS feed" href="%s"/>\n' |
342 self.whead(u'<link rel="alternate" type="application/rss+xml" title="RSS feed" href="%s"/>\n' |
344 % xml_escape(urlgetter.feed_url())) |
343 % xml_escape(urlgetter.feed_url())) |
345 |
|
346 def pageid(self): |
|
347 req = self._cw |
|
348 pid = make_uid(id(req)) |
|
349 req.pageid = pid |
|
350 req.html_headers.define_var('pageid', pid) |
|
351 |
344 |
352 |
345 |
353 class HTMLPageHeader(View): |
346 class HTMLPageHeader(View): |
354 """default html page header""" |
347 """default html page header""" |
355 __regid__ = 'header' |
348 __regid__ = 'header' |
385 self.w(u'<td>\n') |
378 self.w(u'<td>\n') |
386 comp = self._cw.vreg['components'].select_or_none( |
379 comp = self._cw.vreg['components'].select_or_none( |
387 'loggeduserlink', self._cw, rset=self.cw_rset) |
380 'loggeduserlink', self._cw, rset=self.cw_rset) |
388 if comp and comp.cw_propval('visible'): |
381 if comp and comp.cw_propval('visible'): |
389 comp.render(w=self.w) |
382 comp.render(w=self.w) |
390 self.w(u'</td><td>') |
|
391 helpcomp = self._cw.vreg['components'].select_or_none( |
|
392 'help', self._cw, rset=self.cw_rset) |
|
393 if helpcomp and helpcomp.cw_propval('visible'): |
|
394 helpcomp.render(w=self.w) |
|
395 self.w(u'</td>') |
383 self.w(u'</td>') |
396 # lastcolumn |
384 # lastcolumn |
397 self.w(u'<td id="lastcolumn">') |
385 self.w(u'<td id="lastcolumn">') |
398 self.w(u'</td>\n') |
386 self.w(u'</td>\n') |
399 self.w(u'</tr></table>\n') |
387 self.w(u'</tr></table>\n') |
415 return self.w(u'<div class="stateMessage">%s</div>' % msg) |
403 return self.w(u'<div class="stateMessage">%s</div>' % msg) |
416 |
404 |
417 |
405 |
418 |
406 |
419 class HTMLPageFooter(View): |
407 class HTMLPageFooter(View): |
420 """default html page footer: include logo if any, and close the HTML body |
408 """default html page footer: include footer actions |
421 """ |
409 """ |
422 __regid__ = 'footer' |
410 __regid__ = 'footer' |
423 |
411 |
424 def call(self, **kwargs): |
412 def call(self, **kwargs): |
425 req = self._cw |
413 req = self._cw |