summaryrefslogtreecommitdiffstats
path: root/models
diff options
context:
space:
mode:
authorLauri Ojansivu <x@xet7.org>2019-03-08 20:51:57 +0200
committerLauri Ojansivu <x@xet7.org>2019-03-08 20:51:57 +0200
commitc5e72d1a2b7326ba21e5e0f01b370d37e59c67f7 (patch)
tree6b410ef99dfdcddd55d0d98ad1de7da873531b71 /models
parent117c9e069ecc5e5fcf52838062b53781bdb59f27 (diff)
parent951a9f81d6d98fda465c7dc724e7554353788956 (diff)
downloadwekan-c5e72d1a2b7326ba21e5e0f01b370d37e59c67f7.tar.gz
wekan-c5e72d1a2b7326ba21e5e0f01b370d37e59c67f7.tar.bz2
wekan-c5e72d1a2b7326ba21e5e0f01b370d37e59c67f7.zip
Merge branch 'edge' of github.com:wekan/wekan into edge
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) => {