diff options
author | Angelo Gallarello <angelo.gallarell@gmail.com> | 2018-08-16 21:49:56 +0200 |
---|---|---|
committer | Angelo Gallarello <angelo.gallarell@gmail.com> | 2018-08-16 21:49:56 +0200 |
commit | cc285afd5939dbc251ac0f5f64116d0dc17592bb (patch) | |
tree | 833f802a2f47f9b8eada6623e967342ad32ea7d7 | |
parent | f7446ba9346d52431a9d37c8b4c856daf2c73621 (diff) | |
download | wekan-cc285afd5939dbc251ac0f5f64116d0dc17592bb.tar.gz wekan-cc285afd5939dbc251ac0f5f64116d0dc17592bb.tar.bz2 wekan-cc285afd5939dbc251ac0f5f64116d0dc17592bb.zip |
Complete checklist activities
-rw-r--r-- | client/components/activities/activities.jade | 18 | ||||
-rw-r--r-- | client/components/activities/activities.js | 6 | ||||
-rw-r--r-- | i18n/en.i18n.json | 6 | ||||
-rw-r--r-- | models/checklistItems.js | 76 | ||||
-rw-r--r-- | models/checklists.js | 9 | ||||
-rw-r--r-- | server/triggersDef.js | 9 |
6 files changed, 124 insertions, 0 deletions
diff --git a/client/components/activities/activities.jade b/client/components/activities/activities.jade index 68d225f3..fae1a51a 100644 --- a/client/components/activities/activities.jade +++ b/client/components/activities/activities.jade @@ -34,12 +34,30 @@ template(name="boardActivities") .activity-checklist(href="{{ card.absoluteUrl }}") +viewer = checklist.title + if($eq activityType 'removeChecklist') + | {{{_ 'activity-checklist-removed' cardLink}}} + + if($eq activityType 'checkedItem') + | {{{_ 'activity-checked-item' checkItem checklist.title cardLink}}} + + if($eq activityType 'uncheckedItem') + | {{{_ 'activity-unchecked-item' checkItem checklist.title cardLink}}} + + if($eq activityType 'checklistCompleted') + | {{{_ 'activity-checklist-completed' checklist.title cardLink}}} + + if($eq activityType 'checklistUncompleted') + | {{{_ 'activity-checklist-uncompleted' checklist.title cardLink}}} + + if($eq activityType 'addChecklistItem') | {{{_ 'activity-checklist-item-added' checklist.title cardLink}}}. .activity-checklist(href="{{ card.absoluteUrl }}") +viewer = checklistItem.title + if($eq activityType 'removedChecklistItem') + | {{{_ 'activity-checklist-item-removed' checklist.title cardLink}}} if($eq activityType 'archivedCard') | {{{_ 'activity-archived' cardLink}}}. diff --git a/client/components/activities/activities.js b/client/components/activities/activities.js index 93bbb469..11b39126 100644 --- a/client/components/activities/activities.js +++ b/client/components/activities/activities.js @@ -41,6 +41,12 @@ BlazeComponent.extendComponent({ this.loadNextPageLocked = true; } }, + + checkItem(){ + const checkItemId = this.currentData().checklistItemId; + const checkItem = ChecklistItems.findOne({_id:checkItemId}); + return checkItem.title; + }, boardLabel() { return TAPi18n.__('this-board'); diff --git a/i18n/en.i18n.json b/i18n/en.i18n.json index b54787b9..2b3e6c4d 100644 --- a/i18n/en.i18n.json +++ b/i18n/en.i18n.json @@ -43,8 +43,14 @@ "activity-sent": "sent %s to %s", "activity-unjoined": "unjoined %s", "activity-subtask-added": "added subtask to %s", + "activity-checked-item": "checked %s in checklist %s of %s", + "activity-unchecked-item": "unchecked %s in checklist %s of %s", "activity-checklist-added": "added checklist to %s", + "activity-checklist-removed": "removed a checklist from %s", + "activity-checklist-completed": "completed the checklist %s of %s", + "activity-checklist-uncompleted": "uncompleted the checklist %s of %s", "activity-checklist-item-added": "added checklist item to '%s' in %s", + "activity-checklist-item-removed": "removed a checklist item from '%s' in %s", "add": "Add", "add-attachment": "Add Attachment", "add-board": "Add Board", diff --git a/models/checklistItems.js b/models/checklistItems.js index e075eda2..1378e0f5 100644 --- a/models/checklistItems.js +++ b/models/checklistItems.js @@ -74,17 +74,93 @@ function itemCreation(userId, doc) { } function itemRemover(userId, doc) { + const card = Cards.findOne(doc.cardId); + const boardId = card.boardId; + Activities.insert({ + userId, + activityType: 'removedChecklistItem', + cardId: doc.cardId, + boardId, + checklistId: doc.checklistId, + checklistItemId: doc._id, + }); Activities.remove({ checklistItemId: doc._id, }); } +function publishCheckActivity(userId,doc){ + const card = Cards.findOne(doc.cardId); + const boardId = card.boardId; + let activityType; + if(doc.isFinished){ + activityType = "checkedItem"; + }else{ + activityType = "uncheckedItem"; + } + let act = { + userId, + activityType: activityType, + cardId: doc.cardId, + boardId, + checklistId: doc.checklistId, + checklistItemId: doc._id, + } + console.log(act); + Activities.insert(act); +} + +function publishChekListCompleted(userId,doc,fieldNames,modifier){ + const card = Cards.findOne(doc.cardId); + const boardId = card.boardId; + const checklistId = doc.checklistId; + const checkList = Checklists.findOne({_id:checklistId}); + if(checkList.isFinished()){ + let act = { + userId, + activityType: "checklistCompleted", + cardId: doc.cardId, + boardId, + checklistId: doc.checklistId, + } + Activities.insert(act); + } +} + +function publishChekListUncompleted(userId,doc,fieldNames,modifier){ + const card = Cards.findOne(doc.cardId); + const boardId = card.boardId; + const checklistId = doc.checklistId; + const checkList = Checklists.findOne({_id:checklistId}); + if(checkList.isFinished()){ + let act = { + userId, + activityType: "checklistUncompleted", + cardId: doc.cardId, + boardId, + checklistId: doc.checklistId, + } + Activities.insert(act); + } +} + // Activities if (Meteor.isServer) { Meteor.startup(() => { ChecklistItems._collection._ensureIndex({ checklistId: 1 }); }); + ChecklistItems.after.update((userId, doc, fieldNames, modifier) => { + publishCheckActivity(userId,doc); + publishChekListCompleted(userId,doc,fieldNames,modifier) + }); + + ChecklistItems.before.update((userId, doc, fieldNames, modifier) => { + publishChekListUncompleted(userId,doc,fieldNames,modifier) + }); + + + ChecklistItems.after.insert((userId, doc) => { itemCreation(userId, doc); }); diff --git a/models/checklists.js b/models/checklists.js index c58453ef..3f07c858 100644 --- a/models/checklists.js +++ b/models/checklists.js @@ -101,6 +101,15 @@ if (Meteor.isServer) { Activities.remove(activity._id); }); } + Activities.insert({ + userId, + activityType: 'removeChecklist', + cardId: doc.cardId, + boardId: Cards.findOne(doc.cardId).boardId, + checklistId: doc._id, + }); + + }); } diff --git a/server/triggersDef.js b/server/triggersDef.js index 8a3dcb6f..41136a78 100644 --- a/server/triggersDef.js +++ b/server/triggersDef.js @@ -20,9 +20,18 @@ TriggersDef = { addChecklist:{ matchingFields: ["boardId","checklistId"] }, + removeChecklist:{ + matchingFields: ["boardId","checklistId"] + }, addChecklistItem:{ matchingFields: ["boardId","checklistItemId"] }, + checkedItem:{ + matchingFields: ["boardId","checklistId"] + }, + uncheckedItem:{ + matchingFields: ["boardId","checklistItemId"] + }, addAttachment:{ matchingFields: ["boardId","checklistId"] }, |