Переглянути джерело

Remove export button if WITH_API is not enabled
#2938
https://github.com/wekan/wekan/issues/2938#issuecomment-589782402

Nico 5 роки тому
батько
коміт
f09219cbfd

+ 0 - 16
client/components/boards/boardHeader.js

@@ -33,22 +33,6 @@ Template.boardMenuPopup.events({
   'click .js-card-settings': Popup.open('boardCardSettings'),
 });
 
-Template.boardMenuPopup.helpers({
-  exportUrl() {
-    const params = {
-      boardId: Session.get('currentBoard'),
-    };
-    const queryParams = {
-      authToken: Accounts._storedLoginToken(),
-    };
-    return FlowRouter.path('/api/boards/:boardId/export', params, queryParams);
-  },
-  exportFilename() {
-    const boardId = Session.get('currentBoard');
-    return `wekan-export-board-${boardId}.json`;
-  },
-});
-
 Template.boardChangeTitlePopup.events({
   submit(event, templateInstance) {
     const newTitle = templateInstance

+ 11 - 9
client/components/sidebar/sidebar.jade

@@ -298,10 +298,11 @@ template(name="boardMenuPopup")
     if currentUser.isBoardAdmin
       hr
       ul.pop-over-list
-        li
-          a(href="{{exportUrl}}", download="{{exportFilename}}")
-            i.fa.fa-share-alt
-            | {{_ 'export-board'}}
+        if withApi
+          li
+            a(href="{{exportUrl}}", download="{{exportFilename}}")
+              i.fa.fa-share-alt
+              | {{_ 'export-board'}}
         li
           a.js-outgoing-webhooks
             i.fa.fa-globe
@@ -326,11 +327,12 @@ template(name="boardMenuPopup")
   if isSandstorm
     hr
     ul.pop-over-list
-      li
-        a(href="{{exportUrl}}", download="{{exportFilename}}")
-          i.fa.fa-share-alt
-          i.fa.fa-sign-out
-          | {{_ 'export-board'}}
+      if withApi
+        li
+          a(href="{{exportUrl}}", download="{{exportFilename}}")
+            i.fa.fa-share-alt
+            i.fa.fa-sign-out
+            | {{_ 'export-board'}}
       li
         a.js-import-board
           i.fa.fa-share-alt

+ 15 - 4
client/components/sidebar/sidebar.js

@@ -196,14 +196,14 @@ Template.boardMenuPopup.events({
   },
   'click .js-change-board-color': Popup.open('boardChangeColor'),
   'click .js-change-language': Popup.open('changeLanguage'),
-  'click .js-archive-board ': Popup.afterConfirm('archiveBoard', function() {
+  'click .js-archive-board ': Popup.afterConfirm('archiveBoard', function () {
     const currentBoard = Boards.findOne(Session.get('currentBoard'));
     currentBoard.archive();
     // XXX We should have some kind of notification on top of the page to
     // confirm that the board was successfully archived.
     FlowRouter.go('home');
   }),
-  'click .js-delete-board': Popup.afterConfirm('deleteBoard', function() {
+  'click .js-delete-board': Popup.afterConfirm('deleteBoard', function () {
     const currentBoard = Boards.findOne(Session.get('currentBoard'));
     Popup.close();
     Boards.remove(currentBoard._id);
@@ -215,7 +215,18 @@ Template.boardMenuPopup.events({
   'click .js-card-settings': Popup.open('boardCardSettings'),
 });
 
+
+Template.boardMenuPopup.onCreated(function () {
+  this.apiEnabled = new ReactiveVar(false);
+  Meteor.call('_isApiEnabled', (e, result) => {
+    this.apiEnabled.set(result)
+  })
+})
+
 Template.boardMenuPopup.helpers({
+  withApi() {
+    return Template.instance().apiEnabled.get()
+  },
   exportUrl() {
     const params = {
       boardId: Session.get('currentBoard'),
@@ -237,7 +248,7 @@ Template.memberPopup.events({
     Popup.close();
   },
   'click .js-change-role': Popup.open('changePermissions'),
-  'click .js-remove-member': Popup.afterConfirm('removeMember', function() {
+  'click .js-remove-member': Popup.afterConfirm('removeMember', function () {
     const boardId = Session.get('currentBoard');
     const memberId = this.userId;
     Cards.find({ boardId, members: memberId }).forEach(card => {
@@ -578,7 +589,7 @@ BlazeComponent.extendComponent({
             'subtext-with-parent',
             'no-parent',
           ];
-          options.forEach(function(element) {
+          options.forEach(function (element) {
             if (element !== value) {
               $(`#${element} ${MCB}`).toggleClass(CKCLS, false);
               $(`#${element}`).toggleClass(CKCLS, false);

+ 8 - 0
models/settings.js

@@ -198,6 +198,10 @@ if (Meteor.isServer) {
     return process.env.CAS_ENABLED === 'true';
   }
 
+  function isApiEnabled() {
+    return process.env.WITH_API === 'true';
+  }
+
   Meteor.methods({
     sendInvitation(emails, boards) {
       check(emails, [String]);
@@ -314,6 +318,10 @@ if (Meteor.isServer) {
       return isCasEnabled();
     },
 
+    _isApiEnabled() {
+      return isApiEnabled();
+    },
+
     // Gets all connection methods to use it in the Template
     getAuthenticationsEnabled() {
       return {