Fixed rule allows

This commit is contained in:
Angelo Gallarello 2018-09-12 00:52:29 +02:00
parent 1f5f429fc4
commit 34b37116cf
25 changed files with 345 additions and 260 deletions

View file

@ -67,9 +67,6 @@ BlazeComponent.extendComponent({
lastLabel(){ lastLabel(){
const lastLabelId = this.currentData().labelId; const lastLabelId = this.currentData().labelId;
const lastLabel = Boards.findOne(Session.get('currentBoard')).getLabelById(lastLabelId); const lastLabel = Boards.findOne(Session.get('currentBoard')).getLabelById(lastLabelId);
console.log("LAST");
console.log(lastLabel);
if(lastLabel.name == undefined || lastLabel.name == ""){ if(lastLabel.name == undefined || lastLabel.name == ""){
return lastLabel.color; return lastLabel.color;
}else{ }else{

View file

@ -89,7 +89,7 @@ template(name="boardHeaderBar")
i.fa.fa-times-thin i.fa.fa-times-thin
a.board-header-btn.js-open-rules-view(title="{{_ 'rules'}}") a.board-header-btn.js-open-rules-view(title="{{_ 'rules'}}")
i.fa.fa-cutlery i.fa.fa-magic
span {{_ 'rules'}} span {{_ 'rules'}}
a.board-header-btn.js-open-search-view(title="{{_ 'search'}}") a.board-header-btn.js-open-search-view(title="{{_ 'search'}}")

View file

@ -64,7 +64,7 @@ body
.modal-content-wide .modal-content-wide
width: 800px width: 800px
min-height: 160px min-height: 0px
margin: 42px auto margin: 42px auto
padding: 12px padding: 12px
border-radius: 4px border-radius: 4px

View file

@ -2,28 +2,28 @@ template(name="boardActions")
div.trigger-item div.trigger-item
div.trigger-content div.trigger-content
div.trigger-text div.trigger-text
| Move card to | {{{_'r-move-card-to'}}}
div.trigger-dropdown div.trigger-dropdown
select(id="move-gen-action") select(id="move-gen-action")
option(value="top") Top of option(value="top") {{{_'r-top-of'}}}
option(value="bottom") Bottom of option(value="bottom") {{{_'r-bottom-of'}}}
div.trigger-text div.trigger-text
| its list | {{{_'r-its-list'}}}
div.trigger-button.js-add-gen-move-action.js-goto-rules div.trigger-button.js-add-gen-move-action.js-goto-rules
i.fa.fa-plus i.fa.fa-plus
div.trigger-item div.trigger-item
div.trigger-content div.trigger-content
div.trigger-text div.trigger-text
| Move card to | {{{_'r-move-card-to'}}}
div.trigger-dropdown div.trigger-dropdown
select(id="move-spec-action") select(id="move-spec-action")
option(value="top") Top of option(value="top") {{{_'r-top-of'}}}
option(value="bottom") Bottom of option(value="bottom") {{{_'r-bottom-of'}}}
div.trigger-text div.trigger-text
| list | {{{_'r-list'}}}
div.trigger-dropdown div.trigger-dropdown
input(id="listName",type=text,placeholder="List Name") input(id="listName",type=text,placeholder="{{{_'r-name'}}}")
div.trigger-button.js-add-spec-move-action.js-goto-rules div.trigger-button.js-add-spec-move-action.js-goto-rules
i.fa.fa-plus i.fa.fa-plus
@ -31,10 +31,10 @@ template(name="boardActions")
div.trigger-content div.trigger-content
div.trigger-dropdown div.trigger-dropdown
select(id="arch-action") select(id="arch-action")
option(value="archive") Archive option(value="archive") {{{_'r-archive'}}}
option(value="unarchive") Unarchive option(value="unarchive") {{{_'r-unarchive'}}}
div.trigger-text div.trigger-text
| card | {{{_'r-card'}}}
div.trigger-button.js-add-arch-action.js-goto-rules div.trigger-button.js-add-arch-action.js-goto-rules
i.fa.fa-plus i.fa.fa-plus

View file

@ -12,48 +12,53 @@ BlazeComponent.extendComponent({
const trigger = this.data().triggerVar.get(); const trigger = this.data().triggerVar.get();
const actionSelected = this.find('#move-spec-action').value; const actionSelected = this.find('#move-spec-action').value;
const listTitle = this.find('#listName').value; const listTitle = this.find('#listName').value;
const boardId = Session.get('currentBoard');
if(actionSelected == "top"){ if(actionSelected == "top"){
const triggerId = Triggers.insert(trigger); const triggerId = Triggers.insert(trigger);
const actionId = Actions.insert({actionType: "moveCardToTop","listTitle":listTitle}); const actionId = Actions.insert({actionType: "moveCardToTop","listTitle":listTitle,"boardId":boardId});
Rules.insert({title: ruleName, triggerId: triggerId, actionId: actionId}); console.log("Action inserted");
Rules.insert({title: ruleName, triggerId: triggerId, actionId: actionId,"boardId":boardId});
} }
if(actionSelected == "bottom"){ if(actionSelected == "bottom"){
const triggerId = Triggers.insert(trigger); const triggerId = Triggers.insert(trigger);
const actionId = Actions.insert({actionType: "moveCardToBottom","listTitle":listTitle}); const actionId = Actions.insert({actionType: "moveCardToBottom","listTitle":listTitle,"boardId":boardId});
Rules.insert({title: ruleName, triggerId: triggerId, actionId: actionId}); Rules.insert({title: ruleName, triggerId: triggerId, actionId: actionId,"boardId":boardId});
} }
}, },
'click .js-add-gen-move-action'(event) { 'click .js-add-gen-move-action'(event) {
const ruleName = this.data().ruleName.get(); const boardId = Session.get('currentBoard');
const trigger = this.data().triggerVar.get(); const ruleName = this.data().ruleName.get();
const actionSelected = this.find('#move-gen-action').value; const trigger = this.data().triggerVar.get();
if(actionSelected == "top"){ const actionSelected = this.find('#move-gen-action').value;
const triggerId = Triggers.insert(trigger); if(actionSelected == "top"){
const actionId = Actions.insert({actionType: "moveCardToTop","listTitle":"*"}); const triggerId = Triggers.insert(trigger);
Rules.insert({title: ruleName, triggerId: triggerId, actionId: actionId}); const actionId = Actions.insert({actionType: "moveCardToTop","listTitle":"*","boardId":boardId});
} Rules.insert({title: ruleName, triggerId: triggerId, actionId: actionId,"boardId":boardId});
if(actionSelected == "bottom"){ }
const triggerId = Triggers.insert(trigger); if(actionSelected == "bottom"){
const actionId = Actions.insert({actionType: "moveCardToBottom","listTitle":"*"}); const triggerId = Triggers.insert(trigger);
Rules.insert({title: ruleName, triggerId: triggerId, actionId: actionId}); const actionId = Actions.insert({actionType: "moveCardToBottom","listTitle":"*","boardId":boardId});
} Rules.insert({title: ruleName, triggerId: triggerId, actionId: actionId,"boardId":boardId});
}, }
'click .js-add-arch-action'(event) { },
const ruleName = this.data().ruleName.get(); 'click .js-add-arch-action'(event) {
const trigger = this.data().triggerVar.get(); const boardId = Session.get('currentBoard');
const actionSelected = this.find('#arch-action').value; const ruleName = this.data().ruleName.get();
if(actionSelected == "archive"){ const trigger = this.data().triggerVar.get();
const triggerId = Triggers.insert(trigger); const actionSelected = this.find('#arch-action').value;
const actionId = Actions.insert({actionType: "archive"}); if(actionSelected == "archive"){
Rules.insert({title: ruleName, triggerId: triggerId, actionId: actionId}); const triggerId = Triggers.insert(trigger);
} const actionId = Actions.insert({actionType: "archive"});
if(actionSelected == "unarchive"){ Rules.insert({title: ruleName, triggerId: triggerId, actionId: actionId,"boardId":boardId});
const triggerId = Triggers.insert(trigger); }
const actionId = Actions.insert({actionType: "unarchive"}); if(actionSelected == "unarchive"){
Rules.insert({title: ruleName, triggerId: triggerId, actionId: actionId}); const triggerId = Triggers.insert(trigger);
} const actionId = Actions.insert({actionType: "unarchive"});
}, Rules.insert({title: ruleName, triggerId: triggerId, actionId: actionId,"boardId":boardId});
}]; }
},
}];
}, },
}).register('boardActions'); }).register('boardActions');

View file

@ -3,10 +3,10 @@ template(name="cardActions")
div.trigger-content div.trigger-content
div.trigger-dropdown div.trigger-dropdown
select(id="label-action") select(id="label-action")
option(value="add") Add option(value="add") {{{_'r-add'}}}
option(value="remove") Remove option(value="remove") {{{_'r-remove'}}}
div.trigger-text div.trigger-text
| label | {{{_'r-label'}}}
div.trigger-dropdown div.trigger-dropdown
select(id="label-id") select(id="label-id")
each labels each labels
@ -19,19 +19,19 @@ template(name="cardActions")
div.trigger-content div.trigger-content
div.trigger-dropdown div.trigger-dropdown
select(id="member-action") select(id="member-action")
option(value="add") Add option(value="add") {{{_'r-add'}}}
option(value="remove") Removed option(value="remove") {{{_'r-remove'}}}
div.trigger-text div.trigger-text
| member | {{{_'r-member'}}}
div.trigger-dropdown div.trigger-dropdown
input(id="member-name",type=text,placeholder="Member name") input(id="member-name",type=text,placeholder="{{{_'r-name'}}}")
div.trigger-button.js-add-member-action.js-goto-rules div.trigger-button.js-add-member-action.js-goto-rules
i.fa.fa-plus i.fa.fa-plus
div.trigger-item div.trigger-item
div.trigger-content div.trigger-content
div.trigger-text div.trigger-text
| Remove all member from the card | {{{_'r-remove-all'}}}
div.trigger-button.js-add-removeall-action.js-goto-rules div.trigger-button.js-add-removeall-action.js-goto-rules
i.fa.fa-plus i.fa.fa-plus

View file

@ -24,16 +24,17 @@ BlazeComponent.extendComponent({
const trigger = this.data().triggerVar.get(); const trigger = this.data().triggerVar.get();
const actionSelected = this.find('#label-action').value; const actionSelected = this.find('#label-action').value;
const labelId = this.find('#label-id').value; const labelId = this.find('#label-id').value;
const boardId = Session.get('currentBoard');
if(actionSelected == "add"){ if(actionSelected == "add"){
const triggerId = Triggers.insert(trigger); const triggerId = Triggers.insert(trigger);
const actionId = Actions.insert({actionType: "addLabel","labelId":labelId}); const actionId = Actions.insert({actionType: "addLabel","labelId":labelId,"boardId":boardId});
Rules.insert({title: ruleName, triggerId: triggerId, actionId: actionId}); Rules.insert({title: ruleName, triggerId: triggerId, actionId: actionId,"boardId":boardId});
} }
if(actionSelected == "remove"){ if(actionSelected == "remove"){
const triggerId = Triggers.insert(trigger); const triggerId = Triggers.insert(trigger);
const actionId = Actions.insert({actionType: "removeLabel","labelId":labelId}); const actionId = Actions.insert({actionType: "removeLabel","labelId":labelId,"boardId":boardId});
Rules.insert({title: ruleName, triggerId: triggerId, actionId: actionId}); Rules.insert({title: ruleName, triggerId: triggerId, actionId: actionId,"boardId":boardId});
} }
}, },
@ -42,23 +43,25 @@ BlazeComponent.extendComponent({
const trigger = this.data().triggerVar.get(); const trigger = this.data().triggerVar.get();
const actionSelected = this.find('#member-action').value; const actionSelected = this.find('#member-action').value;
const memberName = this.find('#member-name').value; const memberName = this.find('#member-name').value;
const boardId = Session.get('currentBoard');
if(actionSelected == "add"){ if(actionSelected == "add"){
const triggerId = Triggers.insert(trigger); const triggerId = Triggers.insert(trigger);
const actionId = Actions.insert({actionType: "addMember","memberName":memberName}); const actionId = Actions.insert({actionType: "addMember","memberName":memberName,"boardId":boardId});
Rules.insert({title: ruleName, triggerId: triggerId, actionId: actionId}); Rules.insert({title: ruleName, triggerId: triggerId, actionId: actionId,"boardId":boardId});
} }
if(actionSelected == "remove"){ if(actionSelected == "remove"){
const triggerId = Triggers.insert(trigger); const triggerId = Triggers.insert(trigger);
const actionId = Actions.insert({actionType: "removeMember","memberName":memberName}); const actionId = Actions.insert({actionType: "removeMember","memberName":memberName,"boardId":boardId});
Rules.insert({title: ruleName, triggerId: triggerId, actionId: actionId}); Rules.insert({title: ruleName, triggerId: triggerId, actionId: actionId,"boardId":boardId});
} }
}, },
'click .js-add-removeall-action'(event) { 'click .js-add-removeall-action'(event) {
const ruleName = this.data().ruleName.get(); const ruleName = this.data().ruleName.get();
const trigger = this.data().triggerVar.get(); const trigger = this.data().triggerVar.get();
const triggerId = Triggers.insert(trigger); const triggerId = Triggers.insert(trigger);
const actionId = Actions.insert({actionType: "removeMember","memberName":"*"}); const boardId = Session.get('currentBoard');
Rules.insert({title: ruleName, triggerId: triggerId, actionId: actionId}); const actionId = Actions.insert({actionType: "removeMember","memberName":"*","boardId":boardId});
Rules.insert({title: ruleName, triggerId: triggerId, actionId: actionId,"boardId":boardId});
}, },
}]; }];
}, },

View file

@ -3,12 +3,12 @@ template(name="checklistActions")
div.trigger-content div.trigger-content
div.trigger-dropdown div.trigger-dropdown
select(id="check-action") select(id="check-action")
option(value="add") Add option(value="add") {{{_'r-add'}}}
option(value="remove") Remove option(value="remove") {{{_'r-remove'}}}
div.trigger-text div.trigger-text
| checklist | {{{_'r-checklist'}}}
div.trigger-dropdown div.trigger-dropdown
input(id="checklist-name",type=text,placeholder="name") input(id="checklist-name",type=text,placeholder="{{{_'r-name'}}}")
div.trigger-button.js-add-checklist-action.js-goto-rules div.trigger-button.js-add-checklist-action.js-goto-rules
i.fa.fa-plus i.fa.fa-plus
@ -16,12 +16,12 @@ template(name="checklistActions")
div.trigger-content div.trigger-content
div.trigger-dropdown div.trigger-dropdown
select(id="checkall-action") select(id="checkall-action")
option(value="check") Check all option(value="check") {{{_'r-check-all'}}}
option(value="uncheck") Unchek all option(value="uncheck") {{{_'r-uncheck-all'}}}
div.trigger-text div.trigger-text
| items of checklist | {{{_'r-items-check'}}}
div.trigger-dropdown div.trigger-dropdown
input(id="checklist-name2",type=text,placeholder="name") input(id="checklist-name2",type=text,placeholder="{{{_'r-name'}}}")
div.trigger-button.js-add-checkall-action.js-goto-rules div.trigger-button.js-add-checkall-action.js-goto-rules
i.fa.fa-plus i.fa.fa-plus
@ -30,16 +30,16 @@ template(name="checklistActions")
div.trigger-content div.trigger-content
div.trigger-dropdown div.trigger-dropdown
select(id="check-item-action") select(id="check-item-action")
option(value="check") Check option(value="check") {{{_'r-check'}}}
option(value="uncheck") Unchek option(value="uncheck") {{{_'r-uncheck'}}}
div.trigger-text div.trigger-text
| item | {{{_'r-item'}}}
div.trigger-dropdown div.trigger-dropdown
input(id="checkitem-name",type=text,placeholder="name") input(id="checkitem-name",type=text,placeholder="{{{_'r-name'}}}")
div.trigger-text div.trigger-text
| of checklist | {{{_'r-of-checklist'}}}
div.trigger-dropdown div.trigger-dropdown
input(id="checklist-name3",type=text,placeholder="name") input(id="checklist-name3",type=text,placeholder="{{{_'r-name'}}}")
div.trigger-button.js-add-check-item-action.js-goto-rules div.trigger-button.js-add-check-item-action.js-goto-rules
i.fa.fa-plus i.fa.fa-plus

View file

@ -9,16 +9,17 @@ BlazeComponent.extendComponent({
const trigger = this.data().triggerVar.get(); const trigger = this.data().triggerVar.get();
const actionSelected = this.find('#check-action').value; const actionSelected = this.find('#check-action').value;
const checklistName = this.find('#checklist-name').value; const checklistName = this.find('#checklist-name').value;
const boardId = Session.get('currentBoard');
if(actionSelected == "add"){ if(actionSelected == "add"){
const triggerId = Triggers.insert(trigger); const triggerId = Triggers.insert(trigger);
const actionId = Actions.insert({actionType: "addChecklist","checklistName":checklistName}); const actionId = Actions.insert({actionType: "addChecklist","checklistName":checklistName,"boardId":boardId});
Rules.insert({title: ruleName, triggerId: triggerId, actionId: actionId}); Rules.insert({title: ruleName, triggerId: triggerId, actionId: actionId,"boardId":boardId});
} }
if(actionSelected == "remove"){ if(actionSelected == "remove"){
const triggerId = Triggers.insert(trigger); const triggerId = Triggers.insert(trigger);
const actionId = Actions.insert({actionType: "removeChecklist","checklistName":checklistName}); const actionId = Actions.insert({actionType: "removeChecklist","checklistName":checklistName,"boardId":boardId});
Rules.insert({title: ruleName, triggerId: triggerId, actionId: actionId}); Rules.insert({title: ruleName, triggerId: triggerId, actionId: actionId,"boardId":boardId});
} }
}, },
@ -27,15 +28,16 @@ BlazeComponent.extendComponent({
const trigger = this.data().triggerVar.get(); const trigger = this.data().triggerVar.get();
const actionSelected = this.find('#checkall-action').value; const actionSelected = this.find('#checkall-action').value;
const checklistName = this.find('#checklist-name2').value; const checklistName = this.find('#checklist-name2').value;
const boardId = Session.get('currentBoard');
if(actionSelected == "check"){ if(actionSelected == "check"){
const triggerId = Triggers.insert(trigger); const triggerId = Triggers.insert(trigger);
const actionId = Actions.insert({actionType: "checkAll","checklistName":checklistName}); const actionId = Actions.insert({actionType: "checkAll","checklistName":checklistName,"boardId":boardId});
Rules.insert({title: ruleName, triggerId: triggerId, actionId: actionId}); Rules.insert({title: ruleName, triggerId: triggerId, actionId: actionId,"boardId":boardId});
} }
if(actionSelected == "uncheck"){ if(actionSelected == "uncheck"){
const triggerId = Triggers.insert(trigger); const triggerId = Triggers.insert(trigger);
const actionId = Actions.insert({actionType: "uncheckAll","checklistName":checklistName}); const actionId = Actions.insert({actionType: "uncheckAll","checklistName":checklistName,"boardId":boardId});
Rules.insert({title: ruleName, triggerId: triggerId, actionId: actionId}); Rules.insert({title: ruleName, triggerId: triggerId, actionId: actionId,"boardId":boardId});
} }
}, },
'click .js-add-check-item-action'(event) { 'click .js-add-check-item-action'(event) {
@ -44,15 +46,16 @@ BlazeComponent.extendComponent({
const checkItemName = this.find("#checkitem-name"); const checkItemName = this.find("#checkitem-name");
const checklistName = this.find("#checklist-name3"); const checklistName = this.find("#checklist-name3");
const actionSelected = this.find('#check-item-action').value; const actionSelected = this.find('#check-item-action').value;
const boardId = Session.get('currentBoard');
if(actionSelected == "check"){ if(actionSelected == "check"){
const triggerId = Triggers.insert(trigger); const triggerId = Triggers.insert(trigger);
const actionId = Actions.insert({actionType: "checkItem","checklistName":checklistName,"checkItemName":checkItemName}); const actionId = Actions.insert({actionType: "checkItem","checklistName":checklistName,"checkItemName":checkItemName,"boardId":boardId});
Rules.insert({title: ruleName, triggerId: triggerId, actionId: actionId}); Rules.insert({title: ruleName, triggerId: triggerId, actionId: actionId,"boardId":boardId});
} }
if(actionSelected == "uncheck"){ if(actionSelected == "uncheck"){
const triggerId = Triggers.insert(trigger); const triggerId = Triggers.insert(trigger);
const actionId = Actions.insert({actionType: "uncheckItem","checklistName":checklistName,"checkItemName":checkItemName}); const actionId = Actions.insert({actionType: "uncheckItem","checklistName":checklistName,"checkItemName":checkItemName,"boardId":boardId});
Rules.insert({title: ruleName, triggerId: triggerId, actionId: actionId}); Rules.insert({title: ruleName, triggerId: triggerId, actionId: actionId,"boardId":boardId});
} }
}, },
}]; }];

View file

@ -2,10 +2,10 @@ template(name="mailActions")
div.trigger-item.trigger-item-mail div.trigger-item.trigger-item-mail
div.trigger-content.trigger-content-mail div.trigger-content.trigger-content-mail
div.trigger-text.trigger-text-email div.trigger-text.trigger-text-email
| Send an email | {{{_'r-send-email'}}}
div.trigger-dropdown-mail div.trigger-dropdown-mail
input(id="email-to",type=text,placeholder="to") input(id="email-to",type=text,placeholder="{{{_'r-to'}}}")
input(id="email-subject",type=text,placeholder="subject") input(id="email-subject",type=text,placeholder="{{{_'r-subject'}}}")
textarea(id="email-msg") textarea(id="email-msg")
div.trigger-button.trigger-button-email.js-mail-action.js-goto-rules div.trigger-button.trigger-button-email.js-mail-action.js-goto-rules
i.fa.fa-plus i.fa.fa-plus

View file

@ -12,8 +12,9 @@ BlazeComponent.extendComponent({
const trigger = this.data().triggerVar.get(); const trigger = this.data().triggerVar.get();
const ruleName = this.data().ruleName.get(); const ruleName = this.data().ruleName.get();
const triggerId = Triggers.insert(trigger); const triggerId = Triggers.insert(trigger);
const actionId = Actions.insert({actionType: "sendEmail","emailTo":emailTo,"emailSubject":emailSubject,"emailMsg":emailMsg}); const boardId = Session.get('currentBoard');
Rules.insert({title: ruleName, triggerId: triggerId, actionId: actionId}); const actionId = Actions.insert({actionType: "sendEmail","emailTo":emailTo,"emailSubject":emailSubject,"emailMsg":emailMsg,"boardId":boardId});
Rules.insert({title: ruleName, triggerId: triggerId, actionId: actionId,"boardId":boardId});
}, },
}]; }];
}, },

View file

@ -0,0 +1,8 @@
template(name="ruleDetails")
.rules
h2
i.fa.fa-magic
| {{{_ 'r-rule-details' }}}
| trigger
| action

View file

@ -0,0 +1,28 @@
BlazeComponent.extendComponent({
onCreated() {
this.subscribe('allRules');
},
trigger(){
const rule = Rules.findOne({_id:ruleId});
return Triggers.findOne({_id:rule.triggerId});
},
action(){
const rule = Rules.findOne({_id:ruleId});
return Triggers.findOne({_id:rule.actionId});
},
events() {
return [{
}];
},
}).register('ruleDetails');

View file

@ -1,7 +1,7 @@
template(name="rulesActions") template(name="rulesActions")
h2 h2
i.fa.fa-cutlery i.fa.fa-magic
| Rule "#{data.ruleName.get}" - Add action | {{{_ 'r-rule' }}} "#{data.ruleName.get}" - {{{_ 'r-add-action'}}}
.triggers-content .triggers-content
.triggers-body .triggers-body
.triggers-side-menu .triggers-side-menu

View file

@ -1,8 +1,8 @@
template(name="rulesList") template(name="rulesList")
.rules .rules
h2 h2
i.fa.fa-cutlery i.fa.fa-magic
| Project rules | {{{_ 'r-board-rules' }}}
ul.rules-list ul.rules-list
each rules each rules
@ -12,14 +12,16 @@ template(name="rulesList")
div.rules-btns-group div.rules-btns-group
button button
i.fa.fa-eye i.fa.fa-eye
| View rule | {{{_ 'r-view-rule'}}}
button.js-delete-rule if currentUser.isAdmin
i.fa.fa-trash-o button.js-delete-rule
| Delete rule i.fa.fa-trash-o
| {{{_ 'r-delete-rule'}}}
else else
li.no-items-message No rules li.no-items-message {{{_ 'r-no-rules' }}}
div.rules-add if currentUser.isAdmin
button.js-goto-trigger div.rules-add
i.fa.fa-plus button.js-goto-trigger
| Add rule i.fa.fa-plus
input(type=text,placeholder="New rule name",id="ruleTitle") | {{{_ 'r-add-rule'}}}
input(type=text,placeholder="{{{_ 'r-new-rule-name' }}}",id="ruleTitle")

View file

@ -1,7 +1,7 @@
template(name="rulesMain") template(name="rulesMain")
if rulesListVar.get if($eq rulesCurrentTab.get 'rulesList')
+rulesList +rulesList
else if rulesTriggerVar.get if($eq rulesCurrentTab.get 'trigger')
+rulesTriggers(ruleName=ruleName triggerVar=triggerVar) +rulesTriggers(ruleName=ruleName triggerVar=triggerVar)
else if rulesActionVar.get if($eq rulesCurrentTab.get 'action')
+rulesActions(ruleName=ruleName triggerVar=triggerVar) +rulesActions(ruleName=ruleName triggerVar=triggerVar)

View file

@ -1,28 +1,24 @@
BlazeComponent.extendComponent({ BlazeComponent.extendComponent({
onCreated() { onCreated() {
this.rulesListVar = new ReactiveVar(true); this.rulesCurrentTab = new ReactiveVar("rulesList")
this.rulesTriggerVar = new ReactiveVar(false);
this.rulesActionVar = new ReactiveVar(false);
this.ruleName = new ReactiveVar(""); this.ruleName = new ReactiveVar("");
this.triggerVar = new ReactiveVar(); this.triggerVar = new ReactiveVar();
this.ruleId = new ReactiveVar();
}, },
setTrigger() { setTrigger() {
this.rulesListVar.set(false); this.rulesCurrentTab.set("trigger")
this.rulesTriggerVar.set(true);
this.rulesActionVar.set(false);
}, },
setRulesList() { setRulesList() {
this.rulesListVar.set(true); this.rulesCurrentTab.set("rulesList")
this.rulesTriggerVar.set(false);
this.rulesActionVar.set(false);
}, },
setAction() { setAction() {
this.rulesListVar.set(false); this.rulesCurrentTab.set("action")
this.rulesTriggerVar.set(false); },
this.rulesActionVar.set(true); setRuleDetails() {
this.rulesCurrentTab.set("ruleDetails")
}, },
events() { events() {
@ -48,6 +44,10 @@ BlazeComponent.extendComponent({
event.preventDefault(); event.preventDefault();
this.setRulesList(); this.setRulesList();
}, },
'click .js-goto-details'(event) {
event.preventDefault();
this.setRuleDetails();
},
}]; }];

View file

@ -1,7 +1,7 @@
template(name="rulesTriggers") template(name="rulesTriggers")
h2 h2
i.fa.fa-cutlery i.fa.fa-magic
| Rule "#{data.ruleName.get}" - Add trigger | {{{_ 'r-rule' }}} "#{data.ruleName.get}" - {{{_ 'r-add-trigger'}}}
.triggers-content .triggers-content
.triggers-body .triggers-body
.triggers-side-menu .triggers-side-menu

View file

@ -2,54 +2,54 @@ template(name="boardTriggers")
div.trigger-item div.trigger-item
div.trigger-content div.trigger-content
div.trigger-text div.trigger-text
| When a card is | {{{_'r-when-a-card-is'}}}
div.trigger-dropdown div.trigger-dropdown
select(id="gen-action") select(id="gen-action")
option(value="created") Added to option(value="created") {{{_'r-added-to'}}}
option(value="removed") Removed from option(value="removed") {{{_'r-added-to'}}}
div.trigger-text div.trigger-text
| the board | {{{_'r-the-board'}}}
div.trigger-button.js-add-gen-trigger.js-goto-action div.trigger-button.js-add-gen-trigger.js-goto-action
i.fa.fa-plus i.fa.fa-plus
div.trigger-item div.trigger-item
div.trigger-content div.trigger-content
div.trigger-text div.trigger-text
| When a card is | {{{_'r-when-a-card-is'}}}
div.trigger-dropdown div.trigger-dropdown
select(id="create-action") select(id="create-action")
option(value="created") Added to option(value="created") {{{_'r-added-to'}}}
option(value="removed") Removed from option(value="removed") {{{_'r-added-to'}}}
div.trigger-text div.trigger-text
| list | {{{_'r-list'}}}
div.trigger-dropdown div.trigger-dropdown
input(id="create-list-name",type=text,placeholder="List Name") input(id="create-list-name",type=text,placeholder="{{{_'r-list-name'}}}")
div.trigger-button.js-add-create-trigger.js-goto-action div.trigger-button.js-add-create-trigger.js-goto-action
i.fa.fa-plus i.fa.fa-plus
div.trigger-item div.trigger-item
div.trigger-content div.trigger-content
div.trigger-text div.trigger-text
| When a card is | {{{_'r-when-a-card-is'}}}
div.trigger-dropdown div.trigger-dropdown
select(id="move-action") select(id="move-action")
option(value="moved-to") Moved to option(value="moved-to") {{{_'r-moved-to'}}}
option(value="moved-from") Moved from option(value="moved-from") {{{_'r-moved-from'}}}
div.trigger-text div.trigger-text
| list | {{{_'r-list'}}}
div.trigger-dropdown div.trigger-dropdown
input(id="move-list-name",type=text,placeholder="List Name") input(id="move-list-name",type=text,placeholder="{{{_'r-list-name'}}}")
div.trigger-button.js-add-moved-trigger.js-goto-action div.trigger-button.js-add-moved-trigger.js-goto-action
i.fa.fa-plus i.fa.fa-plus
div.trigger-item div.trigger-item
div.trigger-content div.trigger-content
div.trigger-text div.trigger-text
| When a card is | {{{_'r-when-a-card-is'}}}
div.trigger-dropdown div.trigger-dropdown
select(id="arch-action") select(id="arch-action")
option(value="archived") Archived option(value="archived") {{{_'r-archived'}}}
option(value="unarchived") Unarchived option(value="unarchived") {{{_'r-unarchived'}}}
div.trigger-button.js-add-arch-trigger.js-goto-action div.trigger-button.js-add-arch-trigger.js-goto-action
i.fa.fa-plus i.fa.fa-plus

View file

@ -2,20 +2,20 @@ template(name="cardTriggers")
div.trigger-item div.trigger-item
div.trigger-content div.trigger-content
div.trigger-text div.trigger-text
| When a label is | {{{_'r-when-a-label-is'}}}
div.trigger-dropdown div.trigger-dropdown
select(id="label-action") select(id="label-action")
option(value="added") Added to option(value="added") {{{_'r-added-to'}}}
option(value="removed") Removed from option(value="removed") {{{_'r-removed-from'}}}
div.trigger-text div.trigger-text
| a card | {{{_'r-a-card'}}}
div.trigger-button.js-add-gen-label-trigger.js-goto-action div.trigger-button.js-add-gen-label-trigger.js-goto-action
i.fa.fa-plus i.fa.fa-plus
div.trigger-item div.trigger-item
div.trigger-content div.trigger-content
div.trigger-text div.trigger-text
| When the label | {{{_'r-when-the-label-is'}}}
div.trigger-dropdown div.trigger-dropdown
select(id="spec-label") select(id="spec-label")
each labels each labels
@ -25,23 +25,23 @@ template(name="cardTriggers")
| is | is
div.trigger-dropdown div.trigger-dropdown
select(id="spec-label-action") select(id="spec-label-action")
option(value="added") Added to option(value="added") {{{_'r-added-to'}}}
option(value="removed") Removed from option(value="removed") {{{_'r-removed-from'}}}
div.trigger-text div.trigger-text
| a card | {{{_'r-a-card'}}}
div.trigger-button.js-add-spec-label-trigger.js-goto-action div.trigger-button.js-add-spec-label-trigger.js-goto-action
i.fa.fa-plus i.fa.fa-plus
div.trigger-item div.trigger-item
div.trigger-content div.trigger-content
div.trigger-text div.trigger-text
| When a member is | {{{_'r-when-a-member'}}}
div.trigger-dropdown div.trigger-dropdown
select(id="gen-member-action") select(id="gen-member-action")
option(value="added") Added to option(value="added") {{{_'r-added-to'}}}
option(value="removed") Removed from option(value="removed") {{{_'r-removed-from'}}}
div.trigger-text div.trigger-text
| a card | {{{_'r-a-card'}}}
div.trigger-button.js-add-gen-member-trigger.js-goto-action div.trigger-button.js-add-gen-member-trigger.js-goto-action
i.fa.fa-plus i.fa.fa-plus
@ -49,31 +49,31 @@ template(name="cardTriggers")
div.trigger-item div.trigger-item
div.trigger-content div.trigger-content
div.trigger-text div.trigger-text
| When the member | {{{_'r-when-the-member'}}}
div.trigger-dropdown div.trigger-dropdown
input(id="spec-member",type=text,placeholder="name") input(id="spec-member",type=text,placeholder="{{{_'r-name'}}}")
div.trigger-text div.trigger-text
| is | {{{_'r-is'}}}
div.trigger-dropdown div.trigger-dropdown
select(id="spec-member-action") select(id="spec-member-action")
option(value="added") Added to option(value="added") {{{_'r-added-to'}}}
option(value="removed") Removed from option(value="removed") {{{_'r-removed-from'}}}
div.trigger-text div.trigger-text
| a card | {{{_'r-a-card'}}}
div.trigger-button.js-add-spec-member-trigger.js-goto-action div.trigger-button.js-add-spec-member-trigger.js-goto-action
i.fa.fa-plus i.fa.fa-plus
div.trigger-item div.trigger-item
div.trigger-content div.trigger-content
div.trigger-text div.trigger-text
| When an attachment | {{{_'r-when-a-attach'}}}
div.trigger-text div.trigger-text
| is | {{{_'r-is'}}}
div.trigger-dropdown div.trigger-dropdown
select(id="attach-action") select(id="attach-action")
option(value="added") Added to option(value="added") {{{_'r-added-to'}}}
option(value="removed") Removed from option(value="removed") {{{_'r-removed-from'}}}
div.trigger-text div.trigger-text
| a card | {{{_'r-a-card'}}}
div.trigger-button.js-add-attachment-trigger.js-goto-action div.trigger-button.js-add-attachment-trigger.js-goto-action
i.fa.fa-plus i.fa.fa-plus

View file

@ -2,13 +2,13 @@ template(name="checklistTriggers")
div.trigger-item div.trigger-item
div.trigger-content div.trigger-content
div.trigger-text div.trigger-text
| When a checklist is | {{{_'r-when-a-checklist'}}}
div.trigger-dropdown div.trigger-dropdown
select(id="gen-check-action") select(id="gen-check-action")
option(value="created") Added to option(value="created") {{{_'r-added-to'}}}
option(value="removed") Removed from option(value="removed") {{{_'r-removed-from'}}}
div.trigger-text div.trigger-text
| a card | {{{_'r-a-card'}}}
div.trigger-button.js-add-gen-check-trigger.js-goto-action div.trigger-button.js-add-gen-check-trigger.js-goto-action
i.fa.fa-plus i.fa.fa-plus
@ -16,68 +16,68 @@ template(name="checklistTriggers")
div.trigger-item div.trigger-item
div.trigger-content div.trigger-content
div.trigger-text div.trigger-text
| When the checklist | {{{_'r-when-the-checklist'}}}
div.trigger-dropdown div.trigger-dropdown
input(id="check-name",type=text,placeholder="Name") input(id="check-name",type=text,placeholder="{{{_'r-name'}}}")
div.trigger-text div.trigger-text
| is | {{{_'r-is'}}}
div.trigger-dropdown div.trigger-dropdown
select(id="spec-check-action") select(id="spec-check-action")
option(value="created") Added to option(value="created") {{{_'r-added-to'}}}
option(value="removed") Removed from option(value="removed") {{{_'r-removed-from'}}}
div.trigger-text div.trigger-text
| a card | {{{_'r-a-card'}}}
div.trigger-button.js-add-spec-check-trigger.js-goto-action div.trigger-button.js-add-spec-check-trigger.js-goto-action
i.fa.fa-plus i.fa.fa-plus
div.trigger-item div.trigger-item
div.trigger-content div.trigger-content
div.trigger-text div.trigger-text
| When a checklist is | {{{_'r-when-a-checklist'}}}
div.trigger-dropdown div.trigger-dropdown
select(id="gen-comp-check-action") select(id="gen-comp-check-action")
option(value="completed") Completed option(value="completed") {{{_'r-completed'}}}
option(value="uncompleted") Made incomplete option(value="uncompleted") {{{_'r-made-incomplete'}}}
div.trigger-button.js-add-gen-comp-trigger.js-goto-action div.trigger-button.js-add-gen-comp-trigger.js-goto-action
i.fa.fa-plus i.fa.fa-plus
div.trigger-item div.trigger-item
div.trigger-content div.trigger-content
div.trigger-text div.trigger-text
| When the checklist | {{{_'r-when-the-checklist'}}}
div.trigger-dropdown div.trigger-dropdown
input(id="spec-comp-check-name",type=text,placeholder="Name") input(id="spec-comp-check-name",type=text,placeholder="{{{_'r-name'}}}")
div.trigger-text div.trigger-text
| is | {{{_'r-is'}}}
div.trigger-dropdown div.trigger-dropdown
select(id="spec-comp-check-action") select(id="spec-comp-check-action")
option(value="completed") Completed option(value="completed") {{{_'r-completed'}}}
option(value="uncompleted") Made incomplete option(value="uncompleted") {{{_'r-made-incomplete'}}}
div.trigger-button.js-add-spec-comp-trigger.js-goto-action div.trigger-button.js-add-spec-comp-trigger.js-goto-action
i.fa.fa-plus i.fa.fa-plus
div.trigger-item div.trigger-item
div.trigger-content div.trigger-content
div.trigger-text div.trigger-text
| When a checklist item is | {{{_'r-when-a-item'}}}
div.trigger-dropdown div.trigger-dropdown
select(id="check-item-gen-action") select(id="check-item-gen-action")
option(value="checked") Checked option(value="checked") {{{_'r-checked'}}}
option(value="unchecked") Unchecked option(value="unchecked") {{{_'r-unchecked'}}}
div.trigger-button.js-add-gen-check-item-trigger.js-goto-action div.trigger-button.js-add-gen-check-item-trigger.js-goto-action
i.fa.fa-plus i.fa.fa-plus
div.trigger-item div.trigger-item
div.trigger-content div.trigger-content
div.trigger-text div.trigger-text
| When the checklist item | {{{_'r-when-the-item'}}}
div.trigger-dropdown div.trigger-dropdown
input(id="check-item-name",type=text,placeholder="Name") input(id="check-item-name",type=text,placeholder="{{{_'r-name'}}}")
div.trigger-text div.trigger-text
| is | {{{_'r-is'}}}
div.trigger-dropdown div.trigger-dropdown
select(id="check-item-spec-action") select(id="check-item-spec-action")
option(value="checked") Checked option(value="checked") {{{_'r-checked'}}}
option(value="unchecked") Unchecked option(value="unchecked") {{{_'r-unchecked'}}}
div.trigger-button.js-add-spec-check-item-trigger.js-goto-action div.trigger-button.js-add-spec-check-item-trigger.js-goto-action
i.fa.fa-plus i.fa.fa-plus

View file

@ -515,6 +515,77 @@
"activity-delete-attach": "deleted an attachment from %s", "activity-delete-attach": "deleted an attachment from %s",
"activity-added-label-card": "added label '%s'", "activity-added-label-card": "added label '%s'",
"activity-removed-label-card": "removed label '%s'", "activity-removed-label-card": "removed label '%s'",
"activity-delete-attach-card": "deleted an attachment" "activity-delete-attach-card": "deleted an attachment",
"r-rule": "Rule",
"r-add-trigger": "Add trigger",
"r-add-action": "Add action",
"r-board-rules": "Board rules",
"r-add-rule": "Add rule",
"r-view-rule": "View rule",
"r-delete-rule": "Delete rule",
"r-new-rule-name": "Add new rule",
"r-no-rules": "No rules",
"r-when-a-card-is": "When a card is",
"r-added-to": "Added to",
"r-removed-from": "Removed from",
"r-the-board": "the board",
"r-list": "list",
"r-moved-to": "Moved to",
"r-moved-from": "Moved from",
"r-archived": "Archived",
"r-unarchived": "Unarchived",
"r-a-card": "a card",
"r-when-a-label-is": "When a label is",
"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-name": "name",
"r-is": "is",
"r-when-a-attach": "When an attachment",
"r-when-a-checklist": "When a checklist is",
"r-when-the-checklist": "When the checklist",
"r-completed": "Completed",
"r-made-incomplete": "Made incomplete",
"r-when-a-item": "When a checklist item is",
"r-when-the-item": "When the checklist item is",
"r-checked": "Checked",
"r-unchecked": "Unchecked",
"r-move-card-to": "Move card to",
"r-top-of": "Top of",
"r-bottom-of": "Bottom of",
"r-its-list": "its list",
"r-list": "list",
"r-archive": "Archive",
"r-unarchive": "Unarchive",
"r-card": "card",
"r-add": "Add",
"r-remove": "Remove",
"r-label": "label",
"r-member": "member",
"r-remove-all": "Remove all members from the card",
"r-checklist": "checklist",
"r-check-all": "Check all",
"r-uncheck-all": "Uncheck all",
"r-item-check": "Items of checklist",
"r-check": "Check",
"r-uncheck": "Uncheck",
"r-item": "item",
"r-of-checklist": "of checlist",
"r-send-email": "Send an email",
"r-to": "to",
"r-subject": "subject",
"r-rule-details": "Rule details"
} }

View file

@ -1,52 +1,19 @@
Actions = new Mongo.Collection('actions'); Actions = new Mongo.Collection('actions');
Actions.mutations({
rename(description) {
return { $set: { description } };
},
});
Actions.allow({ Actions.allow({
update: function () { insert(userId, doc) {
// add custom authentication code here return allowIsBoardAdmin(userId, Boards.findOne(doc.boardId));
return true;
}, },
insert: function () { update(userId, doc) {
// add custom authentication code here return allowIsBoardAdmin(userId, Boards.findOne(doc.boardId));
return true;
}, },
remove: function () { remove(userId, doc) {
// add custom authentication code here return allowIsBoardAdmin(userId, Boards.findOne(doc.boardId));
return true;
} }
}); });
Actions.helpers({
fromList() {
return Lists.findOne(this.fromId);
},
toList() {
return Lists.findOne(this.toId);
},
findList(title) {
return Lists.findOne({title:title});
},
labels() {
const boardLabels = this.board().labels;
const cardLabels = _.filter(boardLabels, (label) => {
return _.contains(this.labelIds, label._id);
});
return cardLabels;
}});

View file

@ -3,15 +3,19 @@ Rules = new Mongo.Collection('rules');
Rules.attachSchema(new SimpleSchema({ Rules.attachSchema(new SimpleSchema({
title: { title: {
type: String, type: String,
optional: true, optional: false,
}, },
triggerId: { triggerId: {
type: String, type: String,
optional: true, optional: false,
}, },
actionId: { actionId: {
type: String, type: String,
optional: true, optional: false,
},
boardId: {
type: String,
optional: false,
}, },
})); }));
@ -25,22 +29,21 @@ Rules.helpers({
getAction(){ getAction(){
return Actions.findOne({_id:this.actionId}); return Actions.findOne({_id:this.actionId});
}, },
getTrigger(){
return Triggers.findOne({_id:this.triggerId});
}
}); });
Rules.allow({ Rules.allow({
update: function () { insert(userId, doc) {
// add custom authentication code here return allowIsBoardAdmin(userId, Boards.findOne(doc.boardId));
return true;
}, },
remove: function () { update(userId, doc) {
// add custom authentication code here return allowIsBoardAdmin(userId, Boards.findOne(doc.boardId));
return true;
},
insert: function () {
// add custom authentication code here
return true;
}, },
remove(userId, doc) {
return allowIsBoardAdmin(userId, Boards.findOne(doc.boardId));
}
}); });

View file

@ -9,17 +9,14 @@ Triggers.mutations({
}); });
Triggers.allow({ Triggers.allow({
update: function () { insert(userId, doc) {
// add custom authentication code here return allowIsBoardAdmin(userId, Boards.findOne(doc.boardId));
return true;
}, },
insert: function () { update(userId, doc) {
// add custom authentication code here return allowIsBoardAdmin(userId, Boards.findOne(doc.boardId));
return true;
}, },
remove: function () { remove(userId, doc) {
// add custom authentication code here return allowIsBoardAdmin(userId, Boards.findOne(doc.boardId));
return true;
} }
}); });