web/component.py
changeset 10075 136b5f995f8e
parent 10044 5907c2b0acd7
child 10510 51321946da37
equal deleted inserted replaced
10074:ab956b780d4e 10075:136b5f995f8e
   596 
   596 
   597     def render_title(self, w):
   597     def render_title(self, w):
   598         w(self.rdef.rtype.display_name(self._cw, self.role,
   598         w(self.rdef.rtype.display_name(self._cw, self.role,
   599                                        context=self.entity.cw_etype))
   599                                        context=self.entity.cw_etype))
   600 
   600 
       
   601     def add_js_css(self):
       
   602         self._cw.add_js(('jquery.ui.js', 'cubicweb.widgets.js'))
       
   603         self._cw.add_js(('cubicweb.ajax.js', 'cubicweb.ajax.box.js'))
       
   604         self._cw.add_css('jquery.ui.css')
       
   605         return True
       
   606 
   601     def render_body(self, w):
   607     def render_body(self, w):
   602         req = self._cw
   608         req = self._cw
   603         entity = self.entity
   609         entity = self.entity
   604         related = entity.related(self.rtype, self.role)
   610         related = entity.related(self.rtype, self.role)
   605         if self.role == 'subject':
   611         if self.role == 'subject':
   606             mayadd = self.rdef.has_perm(req, 'add', fromeid=entity.eid)
   612             mayadd = self.rdef.has_perm(req, 'add', fromeid=entity.eid)
   607             maydel = self.rdef.has_perm(req, 'delete', fromeid=entity.eid)
       
   608         else:
   613         else:
   609             mayadd = self.rdef.has_perm(req, 'add', toeid=entity.eid)
   614             mayadd = self.rdef.has_perm(req, 'add', toeid=entity.eid)
   610             maydel = self.rdef.has_perm(req, 'delete', toeid=entity.eid)
   615         js_css_added = False
   611         if mayadd or maydel:
   616         if mayadd:
   612             req.add_js(('jquery.ui.js', 'cubicweb.widgets.js'))
   617             js_css_added = self.add_js_css()
   613             req.add_js(('cubicweb.ajax.js', 'cubicweb.ajax.box.js'))
       
   614             req.add_css('jquery.ui.css')
       
   615         _ = req._
   618         _ = req._
   616         if related:
   619         if related:
       
   620             maydel = None
   617             w(u'<table class="ajaxEditRelationTable">')
   621             w(u'<table class="ajaxEditRelationTable">')
   618             for rentity in related.entities():
   622             for rentity in related.entities():
       
   623                 if maydel is None:
       
   624                     # Only check permission for the first related.
       
   625                     if self.role == 'subject':
       
   626                         fromeid, toeid = entity.eid, rentity.eid
       
   627                     else:
       
   628                         fromeid, toeid = rentity.eid, entity.eid
       
   629                     maydel = self.rdef.has_perm(
       
   630                             req, 'delete', fromeid=fromeid, toeid=toeid)
   619                 # for each related entity, provide a link to remove the relation
   631                 # for each related entity, provide a link to remove the relation
   620                 subview = rentity.view(self.item_vid)
   632                 subview = rentity.view(self.item_vid)
   621                 if maydel:
   633                 if maydel:
       
   634                     if not js_css_added:
       
   635                         js_css_added = self.add_js_css()
   622                     jscall = unicode(js.ajaxBoxRemoveLinkedEntity(
   636                     jscall = unicode(js.ajaxBoxRemoveLinkedEntity(
   623                         self.__regid__, entity.eid, rentity.eid,
   637                         self.__regid__, entity.eid, rentity.eid,
   624                         self.fname_remove,
   638                         self.fname_remove,
   625                         self.removed_msg and _(self.removed_msg)))
   639                         self.removed_msg and _(self.removed_msg)))
   626                     w(u'<tr><td class="dellink">[<a href="javascript: %s">-</a>]</td>'
   640                     w(u'<tr><td class="dellink">[<a href="javascript: %s">-</a>]</td>'