338 except Exception, ex: |
338 except Exception, ex: |
339 self.exception("error in _exec(rql=%s): %s", rql, ex) |
339 self.exception("error in _exec(rql=%s): %s", rql, ex) |
340 return None |
340 return None |
341 return None |
341 return None |
342 |
342 |
343 def _call_view(self, view, **kwargs): |
343 def _call_view(self, view, paginate=False, **kwargs): |
344 req = self._cw |
344 divid = self._cw.form.get('divid', 'pageContent') |
345 divid = req.form.get('divid', 'pageContent') |
|
346 # we need to call pagination before with the stream set |
345 # we need to call pagination before with the stream set |
347 stream = view.set_stream() |
346 stream = view.set_stream() |
348 if req.form.get('paginate'): |
347 if paginate: |
349 if divid == 'pageContent': |
348 if divid == 'pageContent': |
350 # mimick main template behaviour |
349 # mimick main template behaviour |
351 stream.write(u'<div id="pageContent">') |
350 stream.write(u'<div id="pageContent">') |
352 vtitle = self._cw.form.get('vtitle') |
351 vtitle = self._cw.form.get('vtitle') |
353 if vtitle: |
352 if vtitle: |
354 stream.write(u'<h1 class="vtitle">%s</h1>\n' % vtitle) |
353 stream.write(u'<h1 class="vtitle">%s</h1>\n' % vtitle) |
355 view.paginate() |
354 view.paginate() |
356 if divid == 'pageContent': |
355 if divid == 'pageContent': |
357 stream.write(u'<div id="contentmain">') |
356 stream.write(u'<div id="contentmain">') |
358 view.render(**kwargs) |
357 view.render(**kwargs) |
359 extresources = req.html_headers.getvalue(skiphead=True) |
358 extresources = self._cw.html_headers.getvalue(skiphead=True) |
360 if extresources: |
359 if extresources: |
361 stream.write(u'<div class="ajaxHtmlHead">\n') # XXX use a widget ? |
360 stream.write(u'<div class="ajaxHtmlHead">\n') # XXX use a widget ? |
362 stream.write(extresources) |
361 stream.write(extresources) |
363 stream.write(u'</div>\n') |
362 stream.write(u'</div>\n') |
364 if req.form.get('paginate') and divid == 'pageContent': |
363 if paginate and divid == 'pageContent': |
365 stream.write(u'</div></div>') |
364 stream.write(u'</div></div>') |
366 return stream.getvalue() |
365 return stream.getvalue() |
367 |
366 |
368 @xhtmlize |
367 @xhtmlize |
369 def js_view(self): |
368 def js_view(self): |
379 view = self._cw.vreg['views'].select(vid, req, rset=rset) |
378 view = self._cw.vreg['views'].select(vid, req, rset=rset) |
380 except NoSelectableObject: |
379 except NoSelectableObject: |
381 vid = req.form.get('fallbackvid', 'noresult') |
380 vid = req.form.get('fallbackvid', 'noresult') |
382 view = self._cw.vreg['views'].select(vid, req, rset=rset) |
381 view = self._cw.vreg['views'].select(vid, req, rset=rset) |
383 self.validate_cache(view) |
382 self.validate_cache(view) |
384 return self._call_view(view) |
383 return self._call_view(view, paginate=req.form.get('paginate')) |
385 |
384 |
386 @xhtmlize |
385 @xhtmlize |
387 def js_prop_widget(self, propkey, varname, tabindex=None): |
386 def js_prop_widget(self, propkey, varname, tabindex=None): |
388 """specific method for CWProperty handling""" |
387 """specific method for CWProperty handling""" |
389 entity = self._cw.vreg['etypes'].etype_class('CWProperty')(self._cw) |
388 entity = self._cw.vreg['etypes'].etype_class('CWProperty')(self._cw) |
417 #try: |
416 #try: |
418 comp = self._cw.vreg[registry].select(compid, self._cw, rset=rset, |
417 comp = self._cw.vreg[registry].select(compid, self._cw, rset=rset, |
419 **extraargs) |
418 **extraargs) |
420 #except NoSelectableObject: |
419 #except NoSelectableObject: |
421 # raise RemoteCallFailed('unselectable') |
420 # raise RemoteCallFailed('unselectable') |
422 extraargs = extraargs or {} |
421 return self._call_view(comp, **extraargs) |
423 stream = comp.set_stream() |
|
424 comp.render(**extraargs) |
|
425 # XXX why not _call_view ? |
|
426 extresources = self._cw.html_headers.getvalue(skiphead=True) |
|
427 if extresources: |
|
428 stream.write(u'<div class="ajaxHtmlHead">\n') |
|
429 stream.write(extresources) |
|
430 stream.write(u'</div>\n') |
|
431 return stream.getvalue() |
|
432 |
422 |
433 @check_pageid |
423 @check_pageid |
434 @xhtmlize |
424 @xhtmlize |
435 def js_inline_creation_form(self, peid, petype, ttype, rtype, role, i18nctx): |
425 def js_inline_creation_form(self, peid, petype, ttype, rtype, role, i18nctx): |
436 view = self._cw.vreg['views'].select('inline-creation', self._cw, |
426 view = self._cw.vreg['views'].select('inline-creation', self._cw, |
455 # note: default is reserved in js land |
445 # note: default is reserved in js land |
456 args['default'] = self._cw.form['default_value'] |
446 args['default'] = self._cw.form['default_value'] |
457 args['reload'] = json.loads(args['reload']) |
447 args['reload'] = json.loads(args['reload']) |
458 rset = req.eid_rset(int(self._cw.form['eid'])) |
448 rset = req.eid_rset(int(self._cw.form['eid'])) |
459 view = req.vreg['views'].select('doreledit', req, rset=rset, rtype=args['rtype']) |
449 view = req.vreg['views'].select('doreledit', req, rset=rset, rtype=args['rtype']) |
460 stream = view.set_stream() |
450 return self._call_view(view, **args) |
461 view.render(**args) |
|
462 # XXX why not _call_view ? |
|
463 extresources = req.html_headers.getvalue(skiphead=True) |
|
464 if extresources: |
|
465 stream.write(u'<div class="ajaxHtmlHead">\n') |
|
466 stream.write(extresources) |
|
467 stream.write(u'</div>\n') |
|
468 return stream.getvalue() |
|
469 |
451 |
470 @jsonize |
452 @jsonize |
471 def js_i18n(self, msgids): |
453 def js_i18n(self, msgids): |
472 """returns the translation of `msgid`""" |
454 """returns the translation of `msgid`""" |
473 return [self._cw._(msgid) for msgid in msgids] |
455 return [self._cw._(msgid) for msgid in msgids] |