summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAngelo Gallarello <angelo.gallarell@gmail.com>2018-08-16 21:49:56 +0200
committerAngelo Gallarello <angelo.gallarell@gmail.com>2018-08-16 21:49:56 +0200
commitcc285afd5939dbc251ac0f5f64116d0dc17592bb (patch)
tree833f802a2f47f9b8eada6623e967342ad32ea7d7
parentf7446ba9346d52431a9d37c8b4c856daf2c73621 (diff)
downloadwekan-cc285afd5939dbc251ac0f5f64116d0dc17592bb.tar.gz
wekan-cc285afd5939dbc251ac0f5f64116d0dc17592bb.tar.bz2
wekan-cc285afd5939dbc251ac0f5f64116d0dc17592bb.zip
Complete checklist activities
-rw-r--r--client/components/activities/activities.jade18
-rw-r--r--client/components/activities/activities.js6
-rw-r--r--i18n/en.i18n.json6
-rw-r--r--models/checklistItems.js76
-rw-r--r--models/checklists.js9
-rw-r--r--server/triggersDef.js9
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"]
},