From 6d6bb8fc5745300dedef85d4500e0a5ee3f9017f Mon Sep 17 00:00:00 2001 From: Benjamin Tissoires Date: Fri, 8 Mar 2019 11:28:21 +0100 Subject: Activities: register customFields changed in the activities This stores the updates to the custom fields in the activities side bar. Only manual updates to the custom fields are currently registered. --- models/cards.js | 55 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 55 insertions(+) (limited to 'models/cards.js') diff --git a/models/cards.js b/models/cards.js index 43d2bbfe..eef62be1 100644 --- a/models/cards.js +++ b/models/cards.js @@ -1400,6 +1400,56 @@ function cardLabels(userId, doc, fieldNames, modifier) { } } +function cardCustomFields(userId, doc, fieldNames, modifier) { + if (!_.contains(fieldNames, 'customFields')) + return; + + // Say hello to the new customField value + if (modifier.$set) { + _.each(modifier.$set, (value, key) => { + if (key.startsWith('customFields')) { + const dotNotation = key.split('.'); + + // only individual changes are registered + if (dotNotation.length > 1) { + const customFieldId = doc.customFields[dot_notation[1]]._id; + const act = { + userId, + customFieldId, + value, + activityType: 'setCustomField', + boardId: doc.boardId, + cardId: doc._id, + }; + Activities.insert(act); + } + } + }); + } + + // Say goodbye to the former customField value + if (modifier.$unset) { + _.each(modifier.$unset, (value, key) => { + if (key.startsWith('customFields')) { + const dotNotation = key.split('.'); + + // only individual changes are registered + if (dotNotation.length > 1) { + const customFieldId = doc.customFields[dot_notation[1]]._id; + const act = { + userId, + customFieldId, + activityType: 'unsetCustomField', + boardId: doc.boardId, + cardId: doc._id, + }; + Activities.insert(act); + } + } + }); + } +} + function cardCreation(userId, doc) { Activities.insert({ userId, @@ -1471,6 +1521,11 @@ if (Meteor.isServer) { cardLabels(userId, doc, fieldNames, modifier); }); + // Add a new activity if we edit a custom field + Cards.before.update((userId, doc, fieldNames, modifier) => { + cardCustomFields(userId, doc, fieldNames, modifier); + }); + // Remove all activities associated with a card if we remove the card // Remove also card_comments / checklists / attachments Cards.after.remove((userId, doc) => { -- cgit v1.2.3-1-g7c22