summaryrefslogtreecommitdiffstats
path: root/models/cards.js
diff options
context:
space:
mode:
authorLauri Ojansivu <x@xet7.org>2019-02-28 00:54:29 +0200
committerLauri Ojansivu <x@xet7.org>2019-02-28 00:54:29 +0200
commiteeb8d4b3de39658f1ed9927cc85a968a9b9fe8c4 (patch)
treef46123f64a068ee1d6ed6c2f05ac990abdc7a1a5 /models/cards.js
parent82a728df7111413e4a1b106f4cd18265da5f397b (diff)
parentad75c541cff2c27c441a0fb67d52c57180020594 (diff)
downloadwekan-eeb8d4b3de39658f1ed9927cc85a968a9b9fe8c4.tar.gz
wekan-eeb8d4b3de39658f1ed9927cc85a968a9b9fe8c4.tar.bz2
wekan-eeb8d4b3de39658f1ed9927cc85a968a9b9fe8c4.zip
Merge branch 'edge' into meteor-1.8
Diffstat (limited to 'models/cards.js')
-rw-r--r--models/cards.js32
1 files changed, 31 insertions, 1 deletions
diff --git a/models/cards.js b/models/cards.js
index c733c7f8..cf64cd9b 100644
--- a/models/cards.js
+++ b/models/cards.js
@@ -272,13 +272,41 @@ Cards.allow({
});
Cards.helpers({
- copy() {
+ copy(boardId, swimlaneId, listId) {
+ const oldBoard = Boards.findOne(this.boardId);
+ const oldBoardLabels = oldBoard.labels;
+ // Get old label names
+ const oldCardLabels = _.pluck(_.filter(oldBoardLabels, (label) => {
+ return _.contains(this.labelIds, label._id);
+ }), 'name');
+
+ const newBoard = Boards.findOne(boardId);
+ const newBoardLabels = newBoard.labels;
+ const newCardLabels = _.pluck(_.filter(newBoardLabels, (label) => {
+ return _.contains(oldCardLabels, label.name);
+ }), '_id');
+
const oldId = this._id;
+ const oldCard = Cards.findOne(oldId);
+
delete this._id;
+ delete this.labelIds;
+ this.labelIds= newCardLabels;
+ this.boardId = boardId;
+ this.swimlaneId = swimlaneId;
+ this.listId = listId;
const _id = Cards.insert(this);
+ // Copy attachments
+ oldCard.attachments().forEach((att) => {
+ att.cardId = _id;
+ delete att._id;
+ return Attachments.insert(att);
+ });
+
// copy checklists
Checklists.find({cardId: oldId}).forEach((ch) => {
+ // REMOVE verify copy with arguments
ch.copy(_id);
});
@@ -286,11 +314,13 @@ Cards.helpers({
Cards.find({parentId: oldId}).forEach((subtask) => {
subtask.parentId = _id;
subtask._id = null;
+ // REMOVE verify copy with arguments instead of insert?
Cards.insert(subtask);
});
// copy card comments
CardComments.find({cardId: oldId}).forEach((cmt) => {
+ // REMOVE verify copy with arguments
cmt.copy(_id);
});