summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAndrés Manelli <andresmanelli@gmail.com>2019-02-27 20:45:58 +0100
committerAndrés Manelli <andresmanelli@gmail.com>2019-02-27 21:50:08 +0100
commitda21a2a410c9b905de89d66236748e0c8f5357ea (patch)
tree631efc1954e7be787576284ea55321dd7c424d97
parent904b5bf0f5f6e36131bf2d081a5d08fef408ac81 (diff)
downloadwekan-da21a2a410c9b905de89d66236748e0c8f5357ea.tar.gz
wekan-da21a2a410c9b905de89d66236748e0c8f5357ea.tar.bz2
wekan-da21a2a410c9b905de89d66236748e0c8f5357ea.zip
Standarize copy functions. Match labels by name
-rw-r--r--client/components/lists/listBody.js12
-rw-r--r--models/cards.js23
-rw-r--r--models/lists.js13
-rw-r--r--models/swimlanes.js8
4 files changed, 36 insertions, 20 deletions
diff --git a/client/components/lists/listBody.js b/client/components/lists/listBody.js
index 04c7eede..598f2130 100644
--- a/client/components/lists/listBody.js
+++ b/client/components/lists/listBody.js
@@ -621,15 +621,12 @@ BlazeComponent.extendComponent({
if (!this.isTemplateSearch || this.isCardTemplateSearch) {
// Card insertion
// 1. Common
- element.boardId = this.boardId;
- element.listId = this.listId;
- element.swimlaneId = this.swimlaneId;
element.sort = Lists.findOne(this.listId).cards().count();
// 1.A From template
if (this.isTemplateSearch) {
element.type = 'cardType-card';
element.linkedId = '';
- _id = element.copy();
+ _id = element.copy(this.boardId, this.swimlaneId, this.listId);
// 1.B Linked card
} else {
delete element._id;
@@ -640,21 +637,18 @@ BlazeComponent.extendComponent({
Filter.addException(_id);
// List insertion
} else if (this.isListTemplateSearch) {
- element.boardId = this.boardId;
element.sort = Swimlanes.findOne(this.swimlaneId).lists().count();
element.type = 'list';
- _id = element.copy(this.swimlaneId);
+ _id = element.copy(this.boardId, this.swimlaneId);
} else if (this.isSwimlaneTemplateSearch) {
- element.boardId = this.boardId;
element.sort = Boards.findOne(this.boardId).swimlanes().count();
element.type = 'swimlalne';
- _id = element.copy();
+ _id = element.copy(this.boardId);
} else if (this.isBoardTemplateSearch) {
board = Boards.findOne(element.linkedId);
board.sort = Boards.find({archived: false}).count();
board.type = 'board';
delete board.slug;
- delete board.members;
_id = board.copy();
}
Popup.close();
diff --git a/models/cards.js b/models/cards.js
index c733c7f8..9dda6dae 100644
--- a/models/cards.js
+++ b/models/cards.js
@@ -272,13 +272,32 @@ 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;
delete this._id;
+ delete this.labelIds;
+ this.labelIds= newCardLabels;
+ this.boardId = boardId;
+ this.swimlaneId = swimlaneId;
+ this.listId = listId;
const _id = Cards.insert(this);
// copy checklists
Checklists.find({cardId: oldId}).forEach((ch) => {
+ // REMOVE verify copy with arguments
ch.copy(_id);
});
@@ -286,11 +305,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);
});
diff --git a/models/lists.js b/models/lists.js
index d76c961c..a8e597ee 100644
--- a/models/lists.js
+++ b/models/lists.js
@@ -137,12 +137,15 @@ Lists.allow({
});
Lists.helpers({
- copy(swimlaneId) {
+ copy(boardId, swimlaneId) {
const oldId = this._id;
const oldSwimlaneId = this.swimlaneId || null;
+ this.boardId = boardId;
+ this.swimlaneId = swimlaneId;
+
let _id = null;
existingListWithSameName = Lists.findOne({
- boardId: this.boardId,
+ boardId,
title: this.title,
archived: false,
});
@@ -160,11 +163,7 @@ Lists.helpers({
listId: oldId,
archived: false,
}).forEach((card) => {
- card.type = 'cardType-card';
- card.listId = _id;
- card.boardId = this.boardId;
- card.swimlaneId = swimlaneId;
- card.copy();
+ card.copy(boardId, swimlaneId, _id);
});
},
diff --git a/models/swimlanes.js b/models/swimlanes.js
index a3427fc6..1b18ba5d 100644
--- a/models/swimlanes.js
+++ b/models/swimlanes.js
@@ -101,8 +101,10 @@ Swimlanes.allow({
});
Swimlanes.helpers({
- copy(oldBoardId) {
+ copy(boardId) {
const oldId = this._id;
+ const oldBoardId = this.boardId;
+ this.boardId = boardId;
delete this._id;
const _id = Swimlanes.insert(this);
@@ -118,8 +120,8 @@ Swimlanes.helpers({
Lists.find(query).forEach((list) => {
list.type = 'list';
list.swimlaneId = oldId;
- list.boardId = this.boardId;
- list.copy(_id);
+ list.boardId = boardId;
+ list.copy(boardId, _id);
});
},