web/views/basetemplates.py
changeset 2650 18aec79ec3a3
parent 2580 6e9453fd11ef
child 2657 de974465d381
equal deleted inserted replaced
2649:5d4a943695d1 2650:18aec79ec3a3
   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>')