21 _ = unicode |
21 _ = unicode |
22 |
22 |
23 from cStringIO import StringIO |
23 from cStringIO import StringIO |
24 from warnings import warn |
24 from warnings import warn |
25 |
25 |
26 from cubicweb.utils import json |
|
27 from logilab.common.deprecation import deprecated |
26 from logilab.common.deprecation import deprecated |
28 from logilab.mtconverter import xml_escape |
27 from logilab.mtconverter import xml_escape |
29 |
28 |
30 from rql import nodes |
29 from rql import nodes |
31 |
30 |
32 from cubicweb import NotAnEntity |
31 from cubicweb import NotAnEntity |
33 from cubicweb.selectors import yes, non_final_entity, nonempty_rset, none_rset |
32 from cubicweb.selectors import yes, non_final_entity, nonempty_rset, none_rset |
34 from cubicweb.appobject import AppObject |
33 from cubicweb.appobject import AppObject |
35 from cubicweb.utils import UStringIO, HTMLStream |
34 from cubicweb.utils import UStringIO, HTMLStream |
|
35 from cubicweb.uilib import domid, js |
36 from cubicweb.schema import display_name |
36 from cubicweb.schema import display_name |
37 from cubicweb.vregistry import classid |
37 from cubicweb.vregistry import classid |
38 |
38 |
39 # robots control |
39 # robots control |
40 NOINDEX = u'<meta name="ROBOTS" content="NOINDEX" />' |
40 NOINDEX = u'<meta name="ROBOTS" content="NOINDEX" />' |
323 def create_url(self, etype, **kwargs): |
323 def create_url(self, etype, **kwargs): |
324 """ return the url of the entity creation form for a given entity type""" |
324 """ return the url of the entity creation form for a given entity type""" |
325 return self._cw.vreg["etypes"].etype_class(etype).cw_create_url( |
325 return self._cw.vreg["etypes"].etype_class(etype).cw_create_url( |
326 self._cw, **kwargs) |
326 self._cw, **kwargs) |
327 |
327 |
328 def field(self, label, value, row=True, show_label=True, w=None, tr=True, table=False): |
328 def field(self, label, value, row=True, show_label=True, w=None, tr=True, |
|
329 table=False): |
329 """read-only field""" |
330 """read-only field""" |
330 if w is None: |
331 if w is None: |
331 w = self.w |
332 w = self.w |
332 if table: |
333 if table: |
333 w(u'<tr class="entityfield">') |
334 w(u'<tr class="entityfield">') |
493 cbname = self._cw.register_onetime_callback(cb, *args) |
494 cbname = self._cw.register_onetime_callback(cb, *args) |
494 return self.build_js(cbname, xml_escape(msg or '')) |
495 return self.build_js(cbname, xml_escape(msg or '')) |
495 |
496 |
496 def build_update_js_call(self, cbname, msg): |
497 def build_update_js_call(self, cbname, msg): |
497 rql = self.cw_rset.printable_rql() |
498 rql = self.cw_rset.printable_rql() |
498 return "javascript:userCallbackThenUpdateUI('%s', '%s', %s, %s, '%s', '%s')" % ( |
499 return "javascript: %s" % js.userCallbackThenUpdateUI( |
499 cbname, self.id, json.dumps(rql), json.dumps(msg), |
500 cbname, self.__regid__, rql, msg, self.__registry__, self.domid) |
500 self.__registry__, self.div_id()) |
|
501 |
501 |
502 def build_reload_js_call(self, cbname, msg): |
502 def build_reload_js_call(self, cbname, msg): |
503 return "javascript:userCallbackThenReloadPage('%s', %s)" % (cbname, json.dumps(msg)) |
503 return "javascript: %s" % js.userCallbackThenReloadPage(cbname, msg) |
504 |
504 |
505 build_js = build_update_js_call # expect updatable component by default |
505 build_js = build_update_js_call # expect updatable component by default |
506 |
506 |
507 def div_id(self): |
507 def div_id(self): |
508 return '' |
508 return '' |