web/views/basecontrollers.py
branchstable
changeset 2852 858b33162e9d
parent 2681 eda37d59f6d4
child 2862 08d214ffa514
equal deleted inserted replaced
2851:d3b80a4faf3f 2852:858b33162e9d
   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     @xhtmlize
   301     def _call_view(self, view, **kwargs):
   302     def js_view(self):
       
   303         # XXX try to use the page-content template
       
   304         req = self.req
   302         req = self.req
   305         rql = req.form.get('rql')
       
   306         if rql:
       
   307             rset = self._exec(rql)
       
   308         else:
       
   309             rset = None
       
   310         vid = req.form.get('vid') or vid_from_rset(req, rset, self.schema)
       
   311         try:
       
   312             view = self.vreg['views'].select(vid, req, rset=rset)
       
   313         except NoSelectableObject:
       
   314             vid = req.form.get('fallbackvid', 'noresult')
       
   315             view = self.vreg['views'].select(vid, req, rset=rset)
       
   316         divid = req.form.get('divid', 'pageContent')
   303         divid = req.form.get('divid', 'pageContent')
   317         # we need to call pagination before with the stream set
   304         # we need to call pagination before with the stream set
   318         stream = view.set_stream()
   305         stream = view.set_stream()
   319         if req.form.get('paginate'):
   306         if req.form.get('paginate'):
   320             if divid == 'pageContent':
   307             if divid == 'pageContent':
   324                 if vtitle:
   311                 if vtitle:
   325                     stream.write(u'<h1 class="vtitle">%s</h1>\n' % vtitle)
   312                     stream.write(u'<h1 class="vtitle">%s</h1>\n' % vtitle)
   326             view.pagination(req, rset, view.w, not view.need_navigation)
   313             view.pagination(req, rset, view.w, not view.need_navigation)
   327             if divid == 'pageContent':
   314             if divid == 'pageContent':
   328                 stream.write(u'<div id="contentmain">')
   315                 stream.write(u'<div id="contentmain">')
   329         view.render()
   316         view.render(**kwargs)
   330         extresources = req.html_headers.getvalue(skiphead=True)
   317         extresources = req.html_headers.getvalue(skiphead=True)
   331         if extresources:
   318         if extresources:
   332             stream.write(u'<div class="ajaxHtmlHead">\n') # XXX use a widget ?
   319             stream.write(u'<div class="ajaxHtmlHead">\n') # XXX use a widget ?
   333             stream.write(extresources)
   320             stream.write(extresources)
   334             stream.write(u'</div>\n')
   321             stream.write(u'</div>\n')
   335         if req.form.get('paginate') and divid == 'pageContent':
   322         if req.form.get('paginate') and divid == 'pageContent':
   336             stream.write(u'</div></div>')
   323             stream.write(u'</div></div>')
   337         return stream.getvalue()
   324         return stream.getvalue()
       
   325 
       
   326     @xhtmlize
       
   327     def js_view(self):
       
   328         # XXX try to use the page-content template
       
   329         req = self.req
       
   330         rql = req.form.get('rql')
       
   331         if rql:
       
   332             rset = self._exec(rql)
       
   333         else:
       
   334             rset = None
       
   335         vid = req.form.get('vid') or vid_from_rset(req, rset, self.schema)
       
   336         try:
       
   337             view = self.vreg['views'].select(vid, req, rset=rset)
       
   338         except NoSelectableObject:
       
   339             vid = req.form.get('fallbackvid', 'noresult')
       
   340             view = self.vreg['views'].select(vid, req, rset=rset)
       
   341         return self._call_view(view)
   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