From 37a53e7466107d229a67a4c2efc4b25708bbe93d Mon Sep 17 00:00:00 2001 From: Angelo Gallarello Date: Fri, 21 Sep 2018 14:22:00 +0200 Subject: [PATCH 1/7] Fixed some rules --- client/components/rules/triggers/checklistTriggers.js | 4 ++-- models/checklistItems.js | 4 ++-- server/rulesHelper.js | 8 ++++---- 3 files changed, 8 insertions(+), 8 deletions(-) diff --git a/client/components/rules/triggers/checklistTriggers.js b/client/components/rules/triggers/checklistTriggers.js index 01f3effed..2272be298 100644 --- a/client/components/rules/triggers/checklistTriggers.js +++ b/client/components/rules/triggers/checklistTriggers.js @@ -78,7 +78,7 @@ BlazeComponent.extendComponent({ const actionSelected = this.find('#spec-comp-check-action').value; const checklistId = this.find('#spec-comp-check-name').value; const boardId = Session.get('currentBoard'); - if (actionSelected === 'added') { + if (actionSelected === 'completed') { datas.triggerVar.set({ activityType: 'completeChecklist', boardId, @@ -86,7 +86,7 @@ BlazeComponent.extendComponent({ desc, }); } - if (actionSelected === 'removed') { + if (actionSelected === 'uncompleted') { datas.triggerVar.set({ activityType: 'uncompleteChecklist', boardId, diff --git a/models/checklistItems.js b/models/checklistItems.js index 8380bda72..7132bc7cc 100644 --- a/models/checklistItems.js +++ b/models/checklistItems.js @@ -130,7 +130,7 @@ function publishChekListCompleted(userId, doc, fieldNames, modifier){ cardId: doc.cardId, boardId, checklistId: doc.checklistId, - checklistName:doc.title, + checklistName:checkList.title, }; Activities.insert(act); } @@ -148,7 +148,7 @@ function publishChekListUncompleted(userId, doc, fieldNames, modifier){ cardId: doc.cardId, boardId, checklistId: doc.checklistId, - checklistName:doc.title, + checklistName:checkList.title, }; Activities.insert(act); } diff --git a/server/rulesHelper.js b/server/rulesHelper.js index e7e19b96c..175af9538 100644 --- a/server/rulesHelper.js +++ b/server/rulesHelper.js @@ -36,8 +36,8 @@ RulesHelper = { if(action.actionType === 'moveCardToTop'){ let listId; let list; - if(activity.listTitle === '*'){ - listId = card.swimlaneId; + if(action.listTitle === '*'){ + listId = card.listId; list = card.list(); }else{ list = Lists.findOne({title: action.listTitle, boardId }); @@ -49,8 +49,8 @@ RulesHelper = { if(action.actionType === 'moveCardToBottom'){ let listId; let list; - if(activity.listTitle === '*'){ - listId = card.swimlaneId; + if(action.listTitle === '*'){ + listId = card.listId; list = card.list(); }else{ list = Lists.findOne({title: action.listTitle, boardId}); From 1f02321e2767a4772a35f512fa29798b6aeadb9a Mon Sep 17 00:00:00 2001 From: Angelo Gallarello Date: Fri, 21 Sep 2018 14:53:04 +0200 Subject: [PATCH 2/7] Fixed rules about member and box dropdowns width --- client/components/rules/actions/cardActions.js | 8 ++++---- client/components/rules/rules.styl | 2 +- client/components/rules/triggers/cardTriggers.js | 10 +++++----- i18n/en.i18n.json | 2 +- models/cards.js | 6 ++++-- server/rulesHelper.js | 4 ++-- server/triggersDef.js | 4 ++-- 7 files changed, 19 insertions(+), 17 deletions(-) diff --git a/client/components/rules/actions/cardActions.js b/client/components/rules/actions/cardActions.js index a65407c1c..b04440bd0 100644 --- a/client/components/rules/actions/cardActions.js +++ b/client/components/rules/actions/cardActions.js @@ -58,14 +58,14 @@ BlazeComponent.extendComponent({ const ruleName = this.data().ruleName.get(); const trigger = this.data().triggerVar.get(); const actionSelected = this.find('#member-action').value; - const memberName = this.find('#member-name').value; + const username = this.find('#member-name').value; const boardId = Session.get('currentBoard'); const desc = Utils.getTriggerActionDesc(event, this); if (actionSelected === 'add') { const triggerId = Triggers.insert(trigger); const actionId = Actions.insert({ actionType: 'addMember', - memberName, + username, boardId, desc, }); @@ -81,7 +81,7 @@ BlazeComponent.extendComponent({ const triggerId = Triggers.insert(trigger); const actionId = Actions.insert({ actionType: 'removeMember', - memberName, + username, boardId, desc, }); @@ -101,7 +101,7 @@ BlazeComponent.extendComponent({ const boardId = Session.get('currentBoard'); const actionId = Actions.insert({ actionType: 'removeMember', - 'memberName': '*', + 'username': '*', boardId, desc, }); diff --git a/client/components/rules/rules.styl b/client/components/rules/rules.styl index 68d74d324..45ce4003a 100644 --- a/client/components/rules/rules.styl +++ b/client/components/rules/rules.styl @@ -116,7 +116,7 @@ .trigger-dropdown display:inline-block select - width:100px + width:auto height:30px margin:0px margin-left:5px diff --git a/client/components/rules/triggers/cardTriggers.js b/client/components/rules/triggers/cardTriggers.js index 704c76905..2303a85bd 100644 --- a/client/components/rules/triggers/cardTriggers.js +++ b/client/components/rules/triggers/cardTriggers.js @@ -67,7 +67,7 @@ BlazeComponent.extendComponent({ datas.triggerVar.set({ activityType: 'joinMember', boardId, - 'memberId': '*', + 'username': '*', desc, }); } @@ -75,7 +75,7 @@ BlazeComponent.extendComponent({ datas.triggerVar.set({ activityType: 'unjoinMember', boardId, - 'memberId': '*', + 'username': '*', desc, }); } @@ -84,13 +84,13 @@ BlazeComponent.extendComponent({ const desc = Utils.getTriggerActionDesc(event, this); const datas = this.data(); const actionSelected = this.find('#spec-member-action').value; - const memberId = this.find('#spec-member').value; + const username = this.find('#spec-member').value; const boardId = Session.get('currentBoard'); if (actionSelected === 'added') { datas.triggerVar.set({ activityType: 'joinMember', boardId, - memberId, + username, desc, }); } @@ -98,7 +98,7 @@ BlazeComponent.extendComponent({ datas.triggerVar.set({ activityType: 'unjoinMember', boardId, - memberId, + username, desc, }); } diff --git a/i18n/en.i18n.json b/i18n/en.i18n.json index 81206ae33..a459be36a 100644 --- a/i18n/en.i18n.json +++ b/i18n/en.i18n.json @@ -548,7 +548,7 @@ "r-when-the-label-is": "When the label is", "r-list-name": "List name", "r-when-a-member": "When a member is", - "r-when-the-member": "When the member is", + "r-when-the-member": "When the member", "r-name": "name", "r-is": "is", "r-when-a-attach": "When an attachment", diff --git a/models/cards.js b/models/cards.js index 346b4bddc..d91b90509 100644 --- a/models/cards.js +++ b/models/cards.js @@ -1165,10 +1165,11 @@ function cardMembers(userId, doc, fieldNames, modifier) { // Say hello to the new member if (modifier.$addToSet && modifier.$addToSet.members) { memberId = modifier.$addToSet.members; + let username = Users.findOne(memberId).username; if (!_.contains(doc.members, memberId)) { Activities.insert({ userId, - memberId, + username, activityType: 'joinMember', boardId: doc.boardId, cardId: doc._id, @@ -1179,11 +1180,12 @@ function cardMembers(userId, doc, fieldNames, modifier) { // Say goodbye to the former member if (modifier.$pull && modifier.$pull.members) { memberId = modifier.$pull.members; + let username = Users.findOne(memberId).username; // Check that the former member is member of the card if (_.contains(doc.members, memberId)) { Activities.insert({ userId, - memberId, + username, activityType: 'unjoinMember', boardId: doc.boardId, cardId: doc._id, diff --git a/server/rulesHelper.js b/server/rulesHelper.js index 175af9538..631ad4e99 100644 --- a/server/rulesHelper.js +++ b/server/rulesHelper.js @@ -87,7 +87,7 @@ RulesHelper = { card.removeLabel(action.labelId); } if(action.actionType === 'addMember'){ - const memberId = Users.findOne({username:action.memberName})._id; + const memberId = Users.findOne({username:action.username})._id; card.assignMember(memberId); } if(action.actionType === 'removeMember'){ @@ -97,7 +97,7 @@ RulesHelper = { card.unassignMember(members[i]); } }else{ - const memberId = Users.findOne({username:action.memberName})._id; + const memberId = Users.findOne({username:action.username})._id; card.unassignMember(memberId); } } diff --git a/server/triggersDef.js b/server/triggersDef.js index 81dc946fb..f6d5333bf 100644 --- a/server/triggersDef.js +++ b/server/triggersDef.js @@ -12,10 +12,10 @@ TriggersDef = { matchingFields: ['boardId'], }, joinMember:{ - matchingFields: ['boardId', 'memberId'], + matchingFields: ['boardId', 'username'], }, unjoinMember:{ - matchingFields: ['boardId', 'memberId'], + matchingFields: ['boardId', 'username'], }, addChecklist:{ matchingFields: ['boardId', 'checklistName'], From 93e69c94a2c75f4526c98f30ff43c113f37da754 Mon Sep 17 00:00:00 2001 From: Angelo Gallarello Date: Fri, 21 Sep 2018 15:32:38 +0200 Subject: [PATCH 3/7] Fixed card filter --- models/lists.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/models/lists.js b/models/lists.js index bf5aae3ca..9bcb9ba17 100644 --- a/models/lists.js +++ b/models/lists.js @@ -82,7 +82,7 @@ Lists.helpers({ }; if (swimlaneId) selector.swimlaneId = swimlaneId; - return Cards.find(selector, + return Cards.find(Filter.mongoSelector(selector), { sort: ['sort'] }); }, From 80e06b8ffc7b9440b9e46ba43200a91c1b617cb0 Mon Sep 17 00:00:00 2001 From: Angelo Gallarello Date: Fri, 21 Sep 2018 17:02:43 +0200 Subject: [PATCH 4/7] Rules hidden from non admin --- client/components/boards/boardHeader.jade | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/client/components/boards/boardHeader.jade b/client/components/boards/boardHeader.jade index dfd281ded..75b2f02b0 100644 --- a/client/components/boards/boardHeader.jade +++ b/client/components/boards/boardHeader.jade @@ -87,10 +87,10 @@ template(name="boardHeaderBar") if Filter.isActive a.board-header-btn-close.js-filter-reset(title="{{_ 'filter-clear'}}") i.fa.fa-times-thin - - a.board-header-btn.js-open-rules-view(title="{{_ 'rules'}}") - i.fa.fa-magic - span {{_ 'rules'}} + if currentUser.isAdmin + a.board-header-btn.js-open-rules-view(title="{{_ 'rules'}}") + i.fa.fa-magic + span {{_ 'rules'}} a.board-header-btn.js-open-search-view(title="{{_ 'search'}}") i.fa.fa-search From 99d38f2d61527f599f3246ea5f02ec482841ab0e Mon Sep 17 00:00:00 2001 From: Angelo Gallarello Date: Fri, 21 Sep 2018 17:06:22 +0200 Subject: [PATCH 5/7] Fixed card move to top/bottom --- models/lists.js | 11 +++++++++++ server/rulesHelper.js | 4 ++-- 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/models/lists.js b/models/lists.js index 9bcb9ba17..b99fe8f58 100644 --- a/models/lists.js +++ b/models/lists.js @@ -86,6 +86,17 @@ Lists.helpers({ { sort: ['sort'] }); }, + cardsUnfiltered(swimlaneId) { + const selector = { + listId: this._id, + archived: false, + }; + if (swimlaneId) + selector.swimlaneId = swimlaneId; + return Cards.find(selector, + { sort: ['sort'] }); + }, + allCards() { return Cards.find({ listId: this._id }); }, diff --git a/server/rulesHelper.js b/server/rulesHelper.js index 631ad4e99..e9139933b 100644 --- a/server/rulesHelper.js +++ b/server/rulesHelper.js @@ -43,7 +43,7 @@ RulesHelper = { list = Lists.findOne({title: action.listTitle, boardId }); listId = list._id; } - const minOrder = _.min(list.cards(card.swimlaneId).map((c) => c.sort)); + const minOrder = _.min(list.cardsUnfiltered(card.swimlaneId).map((c) => c.sort)); card.move(card.swimlaneId, listId, minOrder - 1); } if(action.actionType === 'moveCardToBottom'){ @@ -56,7 +56,7 @@ RulesHelper = { list = Lists.findOne({title: action.listTitle, boardId}); listId = list._id; } - const maxOrder = _.max(list.cards(card.swimlaneId).map((c) => c.sort)); + const maxOrder = _.max(list.cardsUnfiltered(card.swimlaneId).map((c) => c.sort)); card.move(card.swimlaneId, listId, maxOrder + 1); } if(action.actionType === 'sendEmail'){ From 620180981050e2db4e2fe69c968c529951a02fdc Mon Sep 17 00:00:00 2001 From: Angelo Gallarello Date: Fri, 21 Sep 2018 17:20:45 +0200 Subject: [PATCH 6/7] Added general move trigger --- client/components/rules/triggers/boardTriggers.jade | 7 +++++++ client/components/rules/triggers/boardTriggers.js | 13 +++++++++++++ i18n/en.i18n.json | 3 ++- 3 files changed, 22 insertions(+), 1 deletion(-) diff --git a/client/components/rules/triggers/boardTriggers.jade b/client/components/rules/triggers/boardTriggers.jade index 266f11f8d..48b9345c5 100644 --- a/client/components/rules/triggers/boardTriggers.jade +++ b/client/components/rules/triggers/boardTriggers.jade @@ -27,6 +27,13 @@ template(name="boardTriggers") div.trigger-button.js-add-create-trigger.js-goto-action i.fa.fa-plus + div.trigger-item + div.trigger-content + div.trigger-text + | {{_'r-when-a-card-is-moved'}} + div.trigger-button.js-add-gen-moved-trigger.js-goto-action + i.fa.fa-plus + div.trigger-item div.trigger-content div.trigger-text diff --git a/client/components/rules/triggers/boardTriggers.js b/client/components/rules/triggers/boardTriggers.js index e47536420..562d84a91 100644 --- a/client/components/rules/triggers/boardTriggers.js +++ b/client/components/rules/triggers/boardTriggers.js @@ -76,6 +76,19 @@ BlazeComponent.extendComponent({ }); } }, + 'click .js-add-gen-moved-trigger' (event){ + const datas = this.data(); + const desc = Utils.getTriggerActionDesc(event, this); + const boardId = Session.get('currentBoard'); + + datas.triggerVar.set({ + activityType: 'moveCard', + boardId, + 'listName':'*', + 'oldListName': '*', + desc, + }); + }, 'click .js-add-arc-trigger' (event) { const datas = this.data(); const desc = Utils.getTriggerActionDesc(event, this); diff --git a/i18n/en.i18n.json b/i18n/en.i18n.json index a459be36a..896c10a3f 100644 --- a/i18n/en.i18n.json +++ b/i18n/en.i18n.json @@ -606,5 +606,6 @@ "r-d-uncheck-one": "Uncheck item", "r-d-check-of-list": "of checklist", "r-d-add-checklist": "Add checklist", - "r-d-remove-checklist": "Remove checklist" + "r-d-remove-checklist": "Remove checklist", + "r-when-a-card-is-moved": "When a card is moved to another list" } From dba5de18828313711b245792d5c6da81fd60031e Mon Sep 17 00:00:00 2001 From: Angelo Gallarello Date: Fri, 21 Sep 2018 20:19:47 +0200 Subject: [PATCH 7/7] Lint fix --- client/components/rules/triggers/boardTriggers.js | 14 +++++++------- models/cards.js | 4 ++-- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/client/components/rules/triggers/boardTriggers.js b/client/components/rules/triggers/boardTriggers.js index 562d84a91..40c5b07ea 100644 --- a/client/components/rules/triggers/boardTriggers.js +++ b/client/components/rules/triggers/boardTriggers.js @@ -81,13 +81,13 @@ BlazeComponent.extendComponent({ const desc = Utils.getTriggerActionDesc(event, this); const boardId = Session.get('currentBoard'); - datas.triggerVar.set({ - activityType: 'moveCard', - boardId, - 'listName':'*', - 'oldListName': '*', - desc, - }); + datas.triggerVar.set({ + activityType: 'moveCard', + boardId, + 'listName':'*', + 'oldListName': '*', + desc, + }); }, 'click .js-add-arc-trigger' (event) { const datas = this.data(); diff --git a/models/cards.js b/models/cards.js index d91b90509..66bfbcf38 100644 --- a/models/cards.js +++ b/models/cards.js @@ -1165,7 +1165,7 @@ function cardMembers(userId, doc, fieldNames, modifier) { // Say hello to the new member if (modifier.$addToSet && modifier.$addToSet.members) { memberId = modifier.$addToSet.members; - let username = Users.findOne(memberId).username; + const username = Users.findOne(memberId).username; if (!_.contains(doc.members, memberId)) { Activities.insert({ userId, @@ -1180,7 +1180,7 @@ function cardMembers(userId, doc, fieldNames, modifier) { // Say goodbye to the former member if (modifier.$pull && modifier.$pull.members) { memberId = modifier.$pull.members; - let username = Users.findOne(memberId).username; + const username = Users.findOne(memberId).username; // Check that the former member is member of the card if (_.contains(doc.members, memberId)) { Activities.insert({