when one is adding an inline entity for a relation of a single card, stable
authorSylvain Thénault <sylvain.thenault@logilab.fr>
Mon, 30 Nov 2009 10:24:01 +0100
branchstable
changeset 3947 8d06bce45c02
parent 3946 9530e1cf9d49
child 3948 24a25b676671
when one is adding an inline entity for a relation of a single card, the 'add a new xxx' link disappears. If the user then cancel the addition, we have to make this link appears back. This is done by giving add new link id to removeInlineForm.
web/data/cubicweb.edition.js
web/views/editforms.py
--- a/web/data/cubicweb.edition.js	Sun Nov 29 23:48:22 2009 +0100
+++ b/web/data/cubicweb.edition.js	Mon Nov 30 10:24:01 2009 +0100
@@ -270,11 +270,14 @@
 /*
  * removes the part of the form used to edit an inlined entity
  */
-function removeInlineForm(peid, rtype, eid) {
+function removeInlineForm(peid, rtype, eid, showaddnewlink) {
     jqNode(['div', peid, rtype, eid].join('-')).slideUp('fast', function() {
 	$(this).remove();
 	updateInlinedEntitiesCounters(rtype);
     });
+    if (showaddnewlink) {
+	toggleVisibility(showaddnewlink);
+    }
 }
 
 /*
--- a/web/views/editforms.py	Sun Nov 29 23:48:22 2009 +0100
+++ b/web/views/editforms.py	Mon Nov 30 10:24:01 2009 +0100
@@ -559,7 +559,20 @@
     __select__ = (match_kwargs('peid', 'rtype')
                   & specified_etype_implements('Any'))
     _select_attrs = InlineEntityEditionFormView._select_attrs + ('etype',)
-    removejs = "removeInlineForm('%s', '%s', '%s')"
+
+    @property
+    def removejs(self):
+        entity = self._entity()
+        card = entity.e_schema.role_rproperty(neg_role(self.role), self.rtype, 'cardinality')
+        card = card[self.role == 'object']
+        # when one is adding an inline entity for a relation of a single card,
+        # the 'add a new xxx' link disappears. If the user then cancel the addition,
+        # we have to make this link appears back. This is done by giving add new link
+        # id to removeInlineForm.
+        if card not in '?1':
+            return "removeInlineForm('%s', '%s', '%s')"
+        divid = "addNew%s%s%s:%s" % (self.etype, self.rtype, self.role, self.peid)
+        return "removeInlineForm('%%s', '%%s', '%%s', '%s')" % divid
 
     @cached
     def _entity(self):