From 2691f033cbd072864cf79e95d131a93449d3c84d Mon Sep 17 00:00:00 2001 From: Marc Hartmayer Date: Wed, 29 Apr 2020 22:38:50 +0200 Subject: 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. --- client/components/lists/listBody.js | 5 +---- models/cards.js | 15 +++++++++++++++ 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); }, -- cgit v1.2.3-1-g7c22