From 2ce1ba37a1d0a09f8b3d2a1db4c8a11d1f98caa0 Mon Sep 17 00:00:00 2001 From: Benjamin Tissoires Date: Tue, 26 Jun 2018 20:59:04 +0200 Subject: [PATCH 1/2] models: cards: allow singletons to be assigned to members and labelIds If we need to set only one member or one label, the data provided will not give us an array, but the only element as a string. We need to detect that and convert the parameter into an array. --- models/cards.js | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/models/cards.js b/models/cards.js index 9bb67f418..a9745f929 100644 --- a/models/cards.js +++ b/models/cards.js @@ -1457,7 +1457,10 @@ if (Meteor.isServer) { }); } if (req.body.hasOwnProperty('labelIds')) { - const newlabelIds = req.body.labelIds; + let newlabelIds = req.body.labelIds; + if (_.isString(newlabelIds)) { + newlabelIds = [newlabelIds]; + } Cards.direct.update({ _id: paramCardId, listId: paramListId, @@ -1515,7 +1518,10 @@ if (Meteor.isServer) { {$set: {customFields: newcustomFields}}); } if (req.body.hasOwnProperty('members')) { - const newmembers = req.body.members; + let newmembers = req.body.members; + if (_.isString(newmembers)) { + newmembers = [newmembers]; + } Cards.direct.update({_id: paramCardId, listId: paramListId, boardId: paramBoardId, archived: false}, {$set: {members: newmembers}}); } From e5949504b7ed42ad59742d2a0aa001fe6c762873 Mon Sep 17 00:00:00 2001 From: Benjamin Tissoires Date: Wed, 27 Jun 2018 16:44:58 +0200 Subject: [PATCH 2/2] models: cards: an empty string in members or label deletes the list There is currently no way to remove all members or all labels attached to a card. If an empty string is provided, we can consider as a hint to remove the list from the card. --- models/cards.js | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/models/cards.js b/models/cards.js index a9745f929..bcd16ece6 100644 --- a/models/cards.js +++ b/models/cards.js @@ -1459,7 +1459,12 @@ if (Meteor.isServer) { if (req.body.hasOwnProperty('labelIds')) { let newlabelIds = req.body.labelIds; if (_.isString(newlabelIds)) { - newlabelIds = [newlabelIds]; + if (newlabelIds === '') { + newlabelIds = null; + } + else { + newlabelIds = [newlabelIds]; + } } Cards.direct.update({ _id: paramCardId, @@ -1520,7 +1525,12 @@ if (Meteor.isServer) { if (req.body.hasOwnProperty('members')) { let newmembers = req.body.members; if (_.isString(newmembers)) { - newmembers = [newmembers]; + if (newmembers === '') { + newmembers = null; + } + else { + newmembers = [newmembers]; + } } Cards.direct.update({_id: paramCardId, listId: paramListId, boardId: paramBoardId, archived: false}, {$set: {members: newmembers}});