diff --git a/client/src/components/activities/Activities/Item.jsx b/client/src/components/activities/Activities/Item.jsx
index e1901076..e4d34acb 100755
--- a/client/src/components/activities/Activities/Item.jsx
+++ b/client/src/components/activities/Activities/Item.jsx
@@ -143,6 +143,44 @@ const Item = React.memo(({ id }) => {
);
+ break;
+ case ActivityTypes.COMPLETE_TASK:
+ contentNode = (
+
+ {userName}
+
+ {' completed '}
+ {activity.data.task.name}
+ {' on this card'}
+
+
+ );
+
+ break;
+ case ActivityTypes.UNCOMPLETE_TASK:
+ contentNode = (
+
+ {userName}
+
+ {' marked '}
+ {activity.data.task.name}
+ {' incomplete on this card'}
+
+
+ );
+
break;
default:
contentNode = null;
diff --git a/client/src/constants/Enums.js b/client/src/constants/Enums.js
index 02f591cf..9da896a2 100755
--- a/client/src/constants/Enums.js
+++ b/client/src/constants/Enums.js
@@ -92,6 +92,8 @@ export const ActivityTypes = {
MOVE_CARD: 'moveCard',
ADD_MEMBER_TO_CARD: 'addMemberToCard',
REMOVE_MEMBER_FROM_CARD: 'removeMemberFromCard',
+ COMPLETE_TASK: 'completeTask',
+ UNCOMPLETE_TASK: 'uncompleteTask',
};
export const NotificationTypes = {
diff --git a/client/src/locales/en-GB/core.js b/client/src/locales/en-GB/core.js
index 688eebf2..2cb913e3 100644
--- a/client/src/locales/en-GB/core.js
+++ b/client/src/locales/en-GB/core.js
@@ -289,9 +289,12 @@ export default {
userAddedThisCardToList: '<0>{{user}}0><1> added this card to {{list}}1>',
userAddedUserToThisCard: '<0>{{actorUser}}0><1> added {{addedUser}} to this card1>',
userAddedYouToCard: '{{user}} added you to <2>{{card}}2>',
+ userCompletedTaskOnThisCard: '<0>{{user}}0><1> completed {{task}} on this card1>',
userJoinedThisCard: `<0>{{user}}0><1> joined this card1>`,
userLeftNewCommentToCard: '{{user}} left a new comment «{{comment}}» to <2>{{card}}2>',
userLeftThisCard: '<0>{{user}}0><1> left this card1>',
+ userMarkedTaskIncompleteOnThisCard:
+ '<0>{{user}}0><1> marked {{task}} incomplete on this card1>',
userMovedCardFromListToList: '{{user}} moved <2>{{card}}2> from {{fromList}} to {{toList}}',
userMovedThisCardFromListToList:
'<0>{{user}}0><1> moved this card from {{fromList}} to {{toList}}1>',
diff --git a/client/src/locales/en-US/core.js b/client/src/locales/en-US/core.js
index 50487bd3..28cae078 100644
--- a/client/src/locales/en-US/core.js
+++ b/client/src/locales/en-US/core.js
@@ -284,9 +284,12 @@ export default {
userAddedThisCardToList: '<0>{{user}}0><1> added this card to {{list}}1>',
userAddedUserToThisCard: '<0>{{actorUser}}0><1> added {{addedUser}} to this card1>',
userAddedYouToCard: '{{user}} added you to <2>{{card}}2>',
+ userCompletedTaskOnThisCard: '<0>{{user}}0><1> completed {{task}} on this card1>',
userJoinedThisCard: `<0>{{user}}0><1> joined this card1>`,
userLeftNewCommentToCard: '{{user}} left a new comment «{{comment}}» to <2>{{card}}2>',
userLeftThisCard: '<0>{{user}}0><1> left this card1>',
+ userMarkedTaskIncompleteOnThisCard:
+ '<0>{{user}}0><1> marked {{task}} incomplete on this card1>',
userMovedCardFromListToList: '{{user}} moved <2>{{card}}2> from {{fromList}} to {{toList}}',
userMovedThisCardFromListToList:
'<0>{{user}}0><1> moved this card from {{fromList}} to {{toList}}1>',
diff --git a/server/api/helpers/tasks/update-one.js b/server/api/helpers/tasks/update-one.js
index 84cd13e4..6261398f 100644
--- a/server/api/helpers/tasks/update-one.js
+++ b/server/api/helpers/tasks/update-one.js
@@ -132,6 +132,22 @@ module.exports = {
}),
user: inputs.actorUser,
});
+
+ if (inputs.record.isCompleted !== task.isCompleted) {
+ await sails.helpers.actions.createOne.with({
+ values: {
+ type: task.isCompleted ? Action.Types.COMPLETE_TASK : Action.Types.UNCOMPLETE_TASK,
+ data: {
+ task: _.pick(task, ['id', 'name']),
+ },
+ user: inputs.actorUser,
+ card: inputs.card,
+ },
+ project: inputs.project,
+ board: inputs.board,
+ list: inputs.list,
+ });
+ }
}
return task;
diff --git a/server/api/models/Action.js b/server/api/models/Action.js
index 888d34f1..955bf812 100755
--- a/server/api/models/Action.js
+++ b/server/api/models/Action.js
@@ -15,6 +15,8 @@ const Types = {
MOVE_CARD: 'moveCard',
ADD_MEMBER_TO_CARD: 'addMemberToCard',
REMOVE_MEMBER_FROM_CARD: 'removeMemberFromCard',
+ COMPLETE_TASK: 'completeTask',
+ UNCOMPLETE_TASK: 'uncompleteTask',
};
const INTERNAL_NOTIFIABLE_TYPES = [Types.MOVE_CARD, Types.ADD_MEMBER_TO_CARD];