summaryrefslogtreecommitdiffstats
path: root/models
diff options
context:
space:
mode:
authorBenjamin Tissoires <benjamin.tissoires@redhat.com>2019-03-08 11:28:21 +0100
committerBenjamin Tissoires <benjamin.tissoires@redhat.com>2019-03-08 11:32:59 +0100
commit6d6bb8fc5745300dedef85d4500e0a5ee3f9017f (patch)
tree1c63971d9ebece44daeac7a2991d9cd044b44ce6 /models
parent7836ab83d02adc40bc59bc4393191abec0a4f636 (diff)
downloadwekan-6d6bb8fc5745300dedef85d4500e0a5ee3f9017f.tar.gz
wekan-6d6bb8fc5745300dedef85d4500e0a5ee3f9017f.tar.bz2
wekan-6d6bb8fc5745300dedef85d4500e0a5ee3f9017f.zip
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.
Diffstat (limited to 'models')
-rw-r--r--models/cards.js55
1 files changed, 55 insertions, 0 deletions
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) => {