web/views/basecontrollers.py
changeset 2867 e8581a4f1bae
parent 2792 135580d15d42
parent 2862 08d214ffa514
child 2880 bfc8e1831290
equal deleted inserted replaced
2855:1d9be3dffa94 2867:e8581a4f1bae
   296         except Exception, ex:
   296         except Exception, ex:
   297             self.exception("error in _exec(rql=%s): %s", rql, ex)
   297             self.exception("error in _exec(rql=%s): %s", rql, ex)
   298             return None
   298             return None
   299         return None
   299         return None
   300 
   300 
       
   301     def _call_view(self, view, **kwargs):
       
   302         req = self.req
       
   303         divid = req.form.get('divid', 'pageContent')
       
   304         # we need to call pagination before with the stream set
       
   305         stream = view.set_stream()
       
   306         if req.form.get('paginate'):
       
   307             if divid == 'pageContent':
       
   308                 # mimick main template behaviour
       
   309                 stream.write(u'<div id="pageContent">')
       
   310                 vtitle = self.req.form.get('vtitle')
       
   311                 if vtitle:
       
   312                     stream.write(u'<h1 class="vtitle">%s</h1>\n' % vtitle)
       
   313             view.pagination(req, self.rset, view.w, not view.need_navigation)
       
   314             if divid == 'pageContent':
       
   315                 stream.write(u'<div id="contentmain">')
       
   316         view.render(**kwargs)
       
   317         extresources = req.html_headers.getvalue(skiphead=True)
       
   318         if extresources:
       
   319             stream.write(u'<div class="ajaxHtmlHead">\n') # XXX use a widget ?
       
   320             stream.write(extresources)
       
   321             stream.write(u'</div>\n')
       
   322         if req.form.get('paginate') and divid == 'pageContent':
       
   323             stream.write(u'</div></div>')
       
   324         return stream.getvalue()
       
   325 
   301     @xhtmlize
   326     @xhtmlize
   302     def js_view(self):
   327     def js_view(self):
   303         # XXX try to use the page-content template
   328         # XXX try to use the page-content template
   304         req = self.req
   329         req = self.req
   305         rql = req.form.get('rql')
   330         rql = req.form.get('rql')
   311         try:
   336         try:
   312             view = self.vreg['views'].select(vid, req, rset=rset)
   337             view = self.vreg['views'].select(vid, req, rset=rset)
   313         except NoSelectableObject:
   338         except NoSelectableObject:
   314             vid = req.form.get('fallbackvid', 'noresult')
   339             vid = req.form.get('fallbackvid', 'noresult')
   315             view = self.vreg['views'].select(vid, req, rset=rset)
   340             view = self.vreg['views'].select(vid, req, rset=rset)
   316         divid = req.form.get('divid', 'pageContent')
   341         return self._call_view(view)
   317         # we need to call pagination before with the stream set
       
   318         stream = view.set_stream()
       
   319         if req.form.get('paginate'):
       
   320             if divid == 'pageContent':
       
   321                 # mimick main template behaviour
       
   322                 stream.write(u'<div id="pageContent">')
       
   323                 vtitle = self.req.form.get('vtitle')
       
   324                 if vtitle:
       
   325                     stream.write(u'<h1 class="vtitle">%s</h1>\n' % vtitle)
       
   326             view.pagination(req, rset, view.w, not view.need_navigation)
       
   327             if divid == 'pageContent':
       
   328                 stream.write(u'<div id="contentmain">')
       
   329         view.render()
       
   330         extresources = req.html_headers.getvalue(skiphead=True)
       
   331         if extresources:
       
   332             stream.write(u'<div class="ajaxHtmlHead">\n') # XXX use a widget ?
       
   333             stream.write(extresources)
       
   334             stream.write(u'</div>\n')
       
   335         if req.form.get('paginate') and divid == 'pageContent':
       
   336             stream.write(u'</div></div>')
       
   337         return stream.getvalue()
       
   338 
   342 
   339     @xhtmlize
   343     @xhtmlize
   340     def js_prop_widget(self, propkey, varname, tabindex=None):
   344     def js_prop_widget(self, propkey, varname, tabindex=None):
   341         """specific method for CWProperty handling"""
   345         """specific method for CWProperty handling"""
   342         entity = self.vreg['etypes'].etype_class('CWProperty')(self.req)
   346         entity = self.vreg['etypes'].etype_class('CWProperty')(self.req)
   368     @xhtmlize
   372     @xhtmlize
   369     def js_inline_creation_form(self, peid, ttype, rtype, role):
   373     def js_inline_creation_form(self, peid, ttype, rtype, role):
   370         view = self.vreg['views'].select('inline-creation', self.req,
   374         view = self.vreg['views'].select('inline-creation', self.req,
   371                                          etype=ttype, peid=peid, rtype=rtype,
   375                                          etype=ttype, peid=peid, rtype=rtype,
   372                                          role=role)
   376                                          role=role)
   373         return view.render(etype=ttype, peid=peid, rtype=rtype, role=role)
   377         return self._call_view(view, etype=ttype, peid=peid,
       
   378                                rtype=rtype, role=role)
   374 
   379 
   375     @jsonize
   380     @jsonize
   376     def js_validate_form(self, action, names, values):
   381     def js_validate_form(self, action, names, values):
   377         return self.validate_form(action, names, values)
   382         return self.validate_form(action, names, values)
   378 
   383