499 # concrete component base classes ############################################# |
499 # concrete component base classes ############################################# |
500 |
500 |
501 class ReloadableMixIn(object): |
501 class ReloadableMixIn(object): |
502 """simple mixin for reloadable parts of UI""" |
502 """simple mixin for reloadable parts of UI""" |
503 |
503 |
504 def user_callback(self, cb, args, msg=None, nonify=False): |
|
505 """register the given user callback and return an url to call it ready to be |
|
506 inserted in html |
|
507 """ |
|
508 self._cw.add_js('cubicweb.ajax.js') |
|
509 if nonify: |
|
510 _cb = cb |
|
511 def cb(*args): |
|
512 _cb(*args) |
|
513 cbname = self._cw.register_onetime_callback(cb, *args) |
|
514 return self.build_js(cbname, xml_escape(msg or '')) |
|
515 |
|
516 def build_update_js_call(self, cbname, msg): |
|
517 rql = self.cw_rset.printable_rql() |
|
518 return "javascript: %s" % js.userCallbackThenUpdateUI( |
|
519 cbname, self.__regid__, rql, msg, self.__registry__, self.domid) |
|
520 |
|
521 def build_reload_js_call(self, cbname, msg): |
|
522 return "javascript: %s" % js.userCallbackThenReloadPage(cbname, msg) |
|
523 |
|
524 build_js = build_update_js_call # expect updatable component by default |
|
525 |
|
526 @property |
504 @property |
527 def domid(self): |
505 def domid(self): |
528 return domid(self.__regid__) |
506 return domid(self.__regid__) |
529 |
507 |
530 @deprecated('[3.10] use .domid property') |
508 @deprecated('[3.10] use .domid property') |