web/views/basetemplates.py
changeset 3890 d7a270f50f54
parent 3661 12ea53a4c0da
parent 3818 9522e51d8644
child 4252 6c4f109c2b03
equal deleted inserted replaced
3810:5b75fd66c80e 3890:d7a270f50f54
    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