瀏覽代碼

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

Martin Filser 3 年之前
父節點
當前提交
583f114c68

+ 1 - 9
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();
     }
   },

+ 0 - 7
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();
   },

+ 0 - 8
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');
 

+ 0 - 11
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() {

+ 0 - 17
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({

+ 0 - 10
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()
-    );
-  },
-});

+ 0 - 42
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();

+ 0 - 31
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');

+ 8 - 0
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(),
+);

+ 19 - 0
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.