summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMarc Hartmayer <hello@hartmayer.com>2020-04-29 22:38:50 +0200
committerMarc Hartmayer <hello@hartmayer.com>2020-04-30 01:59:04 +0200
commit2691f033cbd072864cf79e95d131a93449d3c84d (patch)
tree0e60c2677518b04e8b744b72b2cfd44bb18f92b7
parentc7d4a90d5cacb8dab205f122a6e2d9bca88e767b (diff)
downloadwekan-2691f033cbd072864cf79e95d131a93449d3c84d.tar.gz
wekan-2691f033cbd072864cf79e95d131a93449d3c84d.tar.bz2
wekan-2691f033cbd072864cf79e95d131a93449d3c84d.zip
Fix creation of card links
Without this fix, orphaned card links are created and therefore this leads to problems as described in https://github.com/wekan/wekan/issues/2785.
-rw-r--r--client/components/lists/listBody.js5
-rw-r--r--models/cards.js15
2 files changed, 16 insertions, 4 deletions
diff --git a/client/components/lists/listBody.js b/client/components/lists/listBody.js
index 88f88db0..1bcd41c4 100644
--- a/client/components/lists/listBody.js
+++ b/client/components/lists/listBody.js
@@ -658,10 +658,7 @@ BlazeComponent.extendComponent({
_id = element.copy(this.boardId, this.swimlaneId, this.listId);
// 1.B Linked card
} else {
- delete element._id;
- element.type = 'cardType-linkedCard';
- element.linkedId = element.linkedId || element._id;
- _id = Cards.insert(element);
+ _id = element.link(this.boardId, this.swimlaneId, this.listId);
}
Filter.addException(_id);
// List insertion
diff --git a/models/cards.js b/models/cards.js
index 4197f7ab..498140b9 100644
--- a/models/cards.js
+++ b/models/cards.js
@@ -428,6 +428,21 @@ Cards.helpers({
return _id;
},
+ link(boardId, swimlaneId, listId) {
+ // TODO is there a better method to create a deepcopy?
+ linkCard = JSON.parse(JSON.stringify(this));
+ // TODO is this how it is meant to be?
+ linkCard.linkedId = linkCard.linkedId || linkCard._id;
+ linkCard.boardId = boardId;
+ linkCard.swimlaneId = swimlaneId;
+ linkCard.listId = listId;
+ linkCard.type = 'cardType-linkedCard';
+ delete linkCard._id;
+ // TODO shall we copy the labels for a linked card?!
+ delete linkCard.labelIds;
+ return Cards.insert(linkCard);
+ },
+
list() {
return Lists.findOne(this.listId);
},