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>' |