Utils of canModifyCard and canModifyBoard + move this general functions to Utils class

This commit is contained in:
Martin Filser 2022-01-11 19:26:59 +01:00
parent b29ec93c34
commit 583f114c68
10 changed files with 28 additions and 135 deletions

View file

@ -212,18 +212,10 @@ BlazeComponent.extendComponent({
); );
}); });
function userIsMember() {
return (
Meteor.user() &&
Meteor.user().isBoardMember() &&
!Meteor.user().isCommentOnly()
);
}
// If there is no data in the board (ie, no lists) we autofocus the list // If there is no data in the board (ie, no lists) we autofocus the list
// creation form by clicking on the corresponding element. // creation form by clicking on the corresponding element.
const currentBoard = Boards.findOne(Session.get('currentBoard')); const currentBoard = Boards.findOne(Session.get('currentBoard'));
if (userIsMember() && currentBoard.lists().count() === 0) { if (Utils.canModifyBoard() && currentBoard.lists().count() === 0) {
boardComponent.openNewListForm(); boardComponent.openNewListForm();
} }
}, },

View file

@ -158,13 +158,6 @@ BlazeComponent.extendComponent({
}).register('boardHeaderBar'); }).register('boardHeaderBar');
Template.boardHeaderBar.helpers({ Template.boardHeaderBar.helpers({
canModifyBoard() {
return (
Meteor.user() &&
Meteor.user().isBoardMember() &&
!Meteor.user().isCommentOnly()
);
},
boardView() { boardView() {
return Utils.boardView(); return Utils.boardView();
}, },

View file

@ -37,14 +37,6 @@ const CardCustomField = BlazeComponent.extendComponent({
self.card = Utils.getCurrentCard(); self.card = Utils.getCurrentCard();
self.customFieldId = this.data()._id; self.customFieldId = this.data()._id;
}, },
canModifyCard() {
return (
Meteor.user() &&
Meteor.user().isBoardMember() &&
!Meteor.user().isCommentOnly()
);
},
}); });
CardCustomField.register('cardCustomField'); CardCustomField.register('cardCustomField');

View file

@ -2,17 +2,6 @@ import moment from 'moment/min/moment-with-locales';
import { TAPi18n } from '/imports/i18n'; import { TAPi18n } from '/imports/i18n';
import { DatePicker } from '/client/lib/datepicker'; import { DatePicker } from '/client/lib/datepicker';
Template.dateBadge.helpers({
canModifyCard() {
return (
Meteor.user() &&
Meteor.user().isBoardMember() &&
!Meteor.user().isCommentOnly() &&
!Meteor.user().isWorker()
);
},
});
// editCardReceivedDatePopup // editCardReceivedDatePopup
(class extends DatePicker { (class extends DatePicker {
onCreated() { onCreated() {

View file

@ -75,15 +75,6 @@ BlazeComponent.extendComponent({
return !Utils.getPopupCardId() && Meteor.user().hasCardMaximized(); return !Utils.getPopupCardId() && Meteor.user().hasCardMaximized();
}, },
canModifyCard() {
return (
Meteor.user() &&
Meteor.user().isBoardMember() &&
!Meteor.user().isCommentOnly() &&
!Meteor.user().isWorker()
);
},
scrollParentContainer() { scrollParentContainer() {
const cardPanelWidth = 600; const cardPanelWidth = 600;
const parentComponent = this.parentComponent(); const parentComponent = this.parentComponent();
@ -662,14 +653,6 @@ Template.cardDetailsActionsPopup.helpers({
isBoardAdmin() { isBoardAdmin() {
return Meteor.user().isBoardAdmin(); return Meteor.user().isBoardAdmin();
}, },
canModifyCard() {
return (
Meteor.user() &&
Meteor.user().isBoardMember() &&
!Meteor.user().isCommentOnly()
);
},
}); });
Template.cardDetailsActionsPopup.events({ Template.cardDetailsActionsPopup.events({

View file

@ -83,13 +83,3 @@ BlazeComponent.extendComponent({
]; ];
}, },
}).register('cardSpentTime'); }).register('cardSpentTime');
Template.timeBadge.helpers({
canModifyCard() {
return (
Meteor.user() &&
Meteor.user().isBoardMember() &&
!Meteor.user().isCommentOnly()
);
},
});

View file

@ -71,15 +71,6 @@ BlazeComponent.extendComponent({
}); });
}, },
canModifyCard() {
return (
Meteor.user() &&
Meteor.user().isBoardMember() &&
!Meteor.user().isCommentOnly() &&
!Meteor.user().isWorker()
);
},
/** returns the finished percent of the checklist */ /** returns the finished percent of the checklist */
finishedPercent() { finishedPercent() {
const ret = this.data().checklist.finishedPercent(); const ret = this.data().checklist.finishedPercent();
@ -156,15 +147,6 @@ BlazeComponent.extendComponent({
textarea.focus(); textarea.focus();
}, },
canModifyCard() {
return (
Meteor.user() &&
Meteor.user().isBoardMember() &&
!Meteor.user().isCommentOnly() &&
!Meteor.user().isWorker()
);
},
deleteItem() { deleteItem() {
const checklist = this.currentData().checklist; const checklist = this.currentData().checklist;
const item = this.currentData().item; const item = this.currentData().item;
@ -299,14 +281,6 @@ BlazeComponent.extendComponent({
onRendered() { onRendered() {
autosize(this.$('textarea.js-add-checklist-item')); autosize(this.$('textarea.js-add-checklist-item'));
}, },
canModifyCard() {
return (
Meteor.user() &&
Meteor.user().isBoardMember() &&
!Meteor.user().isCommentOnly() &&
!Meteor.user().isWorker()
);
},
events() { events() {
return [ return [
{ {
@ -344,14 +318,6 @@ BlazeComponent.extendComponent({
onRendered() { onRendered() {
autosize(this.$('textarea.js-edit-checklist-item')); autosize(this.$('textarea.js-edit-checklist-item'));
}, },
canModifyCard() {
return (
Meteor.user() &&
Meteor.user().isBoardMember() &&
!Meteor.user().isCommentOnly() &&
!Meteor.user().isWorker()
);
},
events() { events() {
return [ return [
{ {
@ -368,14 +334,6 @@ BlazeComponent.extendComponent({
}).register('editChecklistItemForm'); }).register('editChecklistItemForm');
Template.checklistItemDetail.helpers({ Template.checklistItemDetail.helpers({
canModifyCard() {
return (
Meteor.user() &&
Meteor.user().isBoardMember() &&
!Meteor.user().isCommentOnly() &&
!Meteor.user().isWorker()
);
},
hideCheckedItems() { hideCheckedItems() {
const user = Meteor.user(); const user = Meteor.user();
if (user) return user.hasHideCheckedItems(); if (user) return user.hasHideCheckedItems();

View file

@ -1,14 +1,3 @@
BlazeComponent.extendComponent({
canModifyCard() {
return (
Meteor.user() &&
Meteor.user().isBoardMember() &&
!Meteor.user().isCommentOnly() &&
!Meteor.user().isWorker()
);
},
}).register('subtaskDetail');
BlazeComponent.extendComponent({ BlazeComponent.extendComponent({
addSubtask(event) { addSubtask(event) {
event.preventDefault(); event.preventDefault();
@ -70,15 +59,6 @@ BlazeComponent.extendComponent({
textarea.focus(); textarea.focus();
}, },
canModifyCard() {
return (
Meteor.user() &&
Meteor.user().isBoardMember() &&
!Meteor.user().isCommentOnly() &&
!Meteor.user().isWorker()
);
},
deleteSubtask() { deleteSubtask() {
const subtask = this.currentData().subtask; const subtask = this.currentData().subtask;
if (subtask && subtask._id) { if (subtask && subtask._id) {
@ -117,17 +97,6 @@ BlazeComponent.extendComponent({
}, },
}).register('subtasks'); }).register('subtasks');
Template.subtaskItemDetail.helpers({
canModifyCard() {
return (
Meteor.user() &&
Meteor.user().isBoardMember() &&
!Meteor.user().isCommentOnly() &&
!Meteor.user().isWorker()
);
},
});
BlazeComponent.extendComponent({ BlazeComponent.extendComponent({
// ... // ...
}).register('subtaskItemDetail'); }).register('subtaskItemDetail');

View file

@ -42,3 +42,11 @@ Blaze.registerHelper('moment', (...args) => {
const [date, format] = args; const [date, format] = args;
return moment(date).format(format); return moment(date).format(format);
}); });
Blaze.registerHelper('canModifyCard', () =>
Utils.canModifyCard(),
);
Blaze.registerHelper('canModifyBoard', () =>
Utils.canModifyBoard(),
);

View file

@ -58,6 +58,25 @@ Utils = {
const ret = Cards.findOne(cardId); const ret = Cards.findOne(cardId);
return ret; return ret;
}, },
canModifyCard() {
const currentUser = Meteor.user();
const ret = (
currentUser &&
currentUser.isBoardMember() &&
!currentUser.isCommentOnly() &&
!currentUser.isWorker()
);
return ret;
},
canModifyBoard() {
const currentUser = Meteor.user();
const ret = (
currentUser &&
currentUser.isBoardMember() &&
!currentUser.isCommentOnly()
);
return ret;
},
reload() { reload() {
// we move all window.location.reload calls into this function // we move all window.location.reload calls into this function
// so we can disable it when running tests. // so we can disable it when running tests.