From 583f114c68718fe773ff98f310e244045c4060ff Mon Sep 17 00:00:00 2001 From: Martin Filser Date: Tue, 11 Jan 2022 19:26:59 +0100 Subject: [PATCH] Utils of canModifyCard and canModifyBoard + move this general functions to Utils class --- client/components/boards/boardBody.js | 10 +---- client/components/boards/boardHeader.js | 7 ---- client/components/cards/cardCustomFields.js | 8 ---- client/components/cards/cardDate.js | 11 ------ client/components/cards/cardDetails.js | 17 --------- client/components/cards/cardTime.js | 10 ----- client/components/cards/checklists.js | 42 --------------------- client/components/cards/subtasks.js | 31 --------------- client/config/blazeHelpers.js | 8 ++++ client/lib/utils.js | 19 ++++++++++ 10 files changed, 28 insertions(+), 135 deletions(-) diff --git a/client/components/boards/boardBody.js b/client/components/boards/boardBody.js index 8b70649f9..2ed40bbe7 100644 --- a/client/components/boards/boardBody.js +++ b/client/components/boards/boardBody.js @@ -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 // creation form by clicking on the corresponding element. const currentBoard = Boards.findOne(Session.get('currentBoard')); - if (userIsMember() && currentBoard.lists().count() === 0) { + if (Utils.canModifyBoard() && currentBoard.lists().count() === 0) { boardComponent.openNewListForm(); } }, diff --git a/client/components/boards/boardHeader.js b/client/components/boards/boardHeader.js index b2a9d4c65..a2141f37f 100644 --- a/client/components/boards/boardHeader.js +++ b/client/components/boards/boardHeader.js @@ -158,13 +158,6 @@ BlazeComponent.extendComponent({ }).register('boardHeaderBar'); Template.boardHeaderBar.helpers({ - canModifyBoard() { - return ( - Meteor.user() && - Meteor.user().isBoardMember() && - !Meteor.user().isCommentOnly() - ); - }, boardView() { return Utils.boardView(); }, diff --git a/client/components/cards/cardCustomFields.js b/client/components/cards/cardCustomFields.js index 00f627e16..14d675683 100644 --- a/client/components/cards/cardCustomFields.js +++ b/client/components/cards/cardCustomFields.js @@ -37,14 +37,6 @@ const CardCustomField = BlazeComponent.extendComponent({ self.card = Utils.getCurrentCard(); self.customFieldId = this.data()._id; }, - - canModifyCard() { - return ( - Meteor.user() && - Meteor.user().isBoardMember() && - !Meteor.user().isCommentOnly() - ); - }, }); CardCustomField.register('cardCustomField'); diff --git a/client/components/cards/cardDate.js b/client/components/cards/cardDate.js index 01abe9279..22cc91d78 100644 --- a/client/components/cards/cardDate.js +++ b/client/components/cards/cardDate.js @@ -2,17 +2,6 @@ import moment from 'moment/min/moment-with-locales'; import { TAPi18n } from '/imports/i18n'; import { DatePicker } from '/client/lib/datepicker'; -Template.dateBadge.helpers({ - canModifyCard() { - return ( - Meteor.user() && - Meteor.user().isBoardMember() && - !Meteor.user().isCommentOnly() && - !Meteor.user().isWorker() - ); - }, -}); - // editCardReceivedDatePopup (class extends DatePicker { onCreated() { diff --git a/client/components/cards/cardDetails.js b/client/components/cards/cardDetails.js index 7433786d4..541539d0d 100644 --- a/client/components/cards/cardDetails.js +++ b/client/components/cards/cardDetails.js @@ -75,15 +75,6 @@ BlazeComponent.extendComponent({ return !Utils.getPopupCardId() && Meteor.user().hasCardMaximized(); }, - canModifyCard() { - return ( - Meteor.user() && - Meteor.user().isBoardMember() && - !Meteor.user().isCommentOnly() && - !Meteor.user().isWorker() - ); - }, - scrollParentContainer() { const cardPanelWidth = 600; const parentComponent = this.parentComponent(); @@ -662,14 +653,6 @@ Template.cardDetailsActionsPopup.helpers({ isBoardAdmin() { return Meteor.user().isBoardAdmin(); }, - - canModifyCard() { - return ( - Meteor.user() && - Meteor.user().isBoardMember() && - !Meteor.user().isCommentOnly() - ); - }, }); Template.cardDetailsActionsPopup.events({ diff --git a/client/components/cards/cardTime.js b/client/components/cards/cardTime.js index b9a24c0a4..fe6b7b03c 100644 --- a/client/components/cards/cardTime.js +++ b/client/components/cards/cardTime.js @@ -83,13 +83,3 @@ BlazeComponent.extendComponent({ ]; }, }).register('cardSpentTime'); - -Template.timeBadge.helpers({ - canModifyCard() { - return ( - Meteor.user() && - Meteor.user().isBoardMember() && - !Meteor.user().isCommentOnly() - ); - }, -}); diff --git a/client/components/cards/checklists.js b/client/components/cards/checklists.js index c5be6a1a8..fb2093030 100644 --- a/client/components/cards/checklists.js +++ b/client/components/cards/checklists.js @@ -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 */ finishedPercent() { const ret = this.data().checklist.finishedPercent(); @@ -156,15 +147,6 @@ BlazeComponent.extendComponent({ textarea.focus(); }, - canModifyCard() { - return ( - Meteor.user() && - Meteor.user().isBoardMember() && - !Meteor.user().isCommentOnly() && - !Meteor.user().isWorker() - ); - }, - deleteItem() { const checklist = this.currentData().checklist; const item = this.currentData().item; @@ -299,14 +281,6 @@ BlazeComponent.extendComponent({ onRendered() { autosize(this.$('textarea.js-add-checklist-item')); }, - canModifyCard() { - return ( - Meteor.user() && - Meteor.user().isBoardMember() && - !Meteor.user().isCommentOnly() && - !Meteor.user().isWorker() - ); - }, events() { return [ { @@ -344,14 +318,6 @@ BlazeComponent.extendComponent({ onRendered() { autosize(this.$('textarea.js-edit-checklist-item')); }, - canModifyCard() { - return ( - Meteor.user() && - Meteor.user().isBoardMember() && - !Meteor.user().isCommentOnly() && - !Meteor.user().isWorker() - ); - }, events() { return [ { @@ -368,14 +334,6 @@ BlazeComponent.extendComponent({ }).register('editChecklistItemForm'); Template.checklistItemDetail.helpers({ - canModifyCard() { - return ( - Meteor.user() && - Meteor.user().isBoardMember() && - !Meteor.user().isCommentOnly() && - !Meteor.user().isWorker() - ); - }, hideCheckedItems() { const user = Meteor.user(); if (user) return user.hasHideCheckedItems(); diff --git a/client/components/cards/subtasks.js b/client/components/cards/subtasks.js index 7ee398d6d..2b1615729 100644 --- a/client/components/cards/subtasks.js +++ b/client/components/cards/subtasks.js @@ -1,14 +1,3 @@ -BlazeComponent.extendComponent({ - canModifyCard() { - return ( - Meteor.user() && - Meteor.user().isBoardMember() && - !Meteor.user().isCommentOnly() && - !Meteor.user().isWorker() - ); - }, -}).register('subtaskDetail'); - BlazeComponent.extendComponent({ addSubtask(event) { event.preventDefault(); @@ -70,15 +59,6 @@ BlazeComponent.extendComponent({ textarea.focus(); }, - canModifyCard() { - return ( - Meteor.user() && - Meteor.user().isBoardMember() && - !Meteor.user().isCommentOnly() && - !Meteor.user().isWorker() - ); - }, - deleteSubtask() { const subtask = this.currentData().subtask; if (subtask && subtask._id) { @@ -117,17 +97,6 @@ BlazeComponent.extendComponent({ }, }).register('subtasks'); -Template.subtaskItemDetail.helpers({ - canModifyCard() { - return ( - Meteor.user() && - Meteor.user().isBoardMember() && - !Meteor.user().isCommentOnly() && - !Meteor.user().isWorker() - ); - }, -}); - BlazeComponent.extendComponent({ // ... }).register('subtaskItemDetail'); diff --git a/client/config/blazeHelpers.js b/client/config/blazeHelpers.js index 7a487b442..34d22d410 100644 --- a/client/config/blazeHelpers.js +++ b/client/config/blazeHelpers.js @@ -42,3 +42,11 @@ Blaze.registerHelper('moment', (...args) => { const [date, format] = args; return moment(date).format(format); }); + +Blaze.registerHelper('canModifyCard', () => + Utils.canModifyCard(), +); + +Blaze.registerHelper('canModifyBoard', () => + Utils.canModifyBoard(), +); diff --git a/client/lib/utils.js b/client/lib/utils.js index 8cfd30426..e77f33d01 100644 --- a/client/lib/utils.js +++ b/client/lib/utils.js @@ -58,6 +58,25 @@ Utils = { const ret = Cards.findOne(cardId); 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() { // we move all window.location.reload calls into this function // so we can disable it when running tests.