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 |